Pandora Pandora Panic


Re: suggestions for Penjin3D:

I think a standardized "skip" key would be great. To skip screens with delays. E.g., I display a special message to those who lose in BadVista. I put in a 4-second delay so people have time to read it. But clicking on "Z" will cause it to exit immediately. I think I remember seeing such things on console games growing up. Also an "abort" key to automatically lose the game and quickly exit out would be easy to implement in each game or perhaps even in the engine itself.

I don't think a "Pause" button, even available mid-game, would be all that detrimental. It's only that much harder to start playing again when paused in a tight spot. I usually wait for a lull to pause anyhow. And if I'm playing this thing on the move (e.g., on a train or bus, in line: places for which the Pandora was made), then a pause button that works instantly at any point in the game is important.

For that matter, will the Pandora sleep or suspend or something when the screen is closed? In any case, the game should be paused when the clamshell is closed, and not unpaused until the user does so manually. My $0.02.

ALSO -- it could be nice to make available to the minigames some kind of level information. I had an idea for another game today. I was almost laughing to myself at work as I thought of ways to play with peoples' minds. I could definitely make it harder as they get to higher levels, but would not want to do that from the start. :) Either pass in an overall level number or (even better!) which time running my particular game.

OTOH, I suppose I could just track that myself with a static counter...

Just some thoughts.

--Todd
 
todd said:
Pausing Stuff

Level Counter
--Todd
OK... I had a thought how to make a pause feasible... I need to add it to the base state... I have to think a little more about how to implement neatly and simply...

you can get the level information! I just didn't want to confuse people too much, but if you want it here it is:
CODE

int stageNo = variables[2].getInt(); /// 2 - CurrentStageNo for score purposes



I was actually thinking difficulty could be something that would come in later versions of the game. If you look in StateTitle.cpp:
CODE

// The game needs to pass the following variables
/// 0 - PASS / FAIL 0 is fail 1 is pass
/// 1 - Game mode
/// 2 - CurrentStageNo for score purposes
/// 3 - Next stage for ordered progression
/// 4 - RemainingLives
variables.resize(7);
variables[0].setInt(1); // Pass/fail
variables[1].setInt(0); // 0 random, 1 ordered,2 selection
variables[2].setInt(0); // currentstage 0 :)
variables[3].setInt(0); // Start at beginning
variables[4].setInt(3); // Start with 4 lives
variables[5].setInt(1); // difficulty?
variables[6].setInt(1); // First run?



EDIT: As for tracking on a per game basis... the only way I can think of would be to add a counter for each game that requires it onto the variables vector... it could get rather confusing to know which slot is which.
EDIT: Duh I just realised you mentioned a static counter... yeah static variables could be used too... actually they are something I have overlooked until recently. :S (There are always gaps in your knowledge you should try to plug.)
EDIT:mcobit:
I listened to your track, and I already added it to the build. I say it does need a little more work (you did say it's a rough draft :)) but I've included it into the build as it's better to fill the gaps with something, and I can update when you have updated, but all contributions are appreciated :)
 
Last edited by a moderator:
PokeParadox said:
you can get the level information! I just didn't want to confuse people too much, but if you want it here it is:
CODE

int stageNo = variables[2].getInt(); /// 2 - CurrentStageNo for score purposes

Ok, that is interesting. I could easily make the math game hard or easy according to lvl. either more rounds or higher numbers would increase the difficulty.

And a request for input: I could make the input multi number to allow for addition and multiplication operators, but i think that would affect the fast paced flow of the game. thoughts?

Thanks! MarkoeZ
 
Last edited by a moderator:
PokeParadox said:
On a similar note I'm interested in some suggestions of what needs doing engine-wise.
  • What are you annoyed with that you can't currently do?
  • What could use some improvement?
  • What is missing from PandoraPanic! ?
Any suggestions would be great, both for Penjin and PandoraPanic specificially. I must also say thanks again guys, because through using the framework, you've helped me find bugs and such, which have now been fixed. Keep the minigames coming :D
- can't quit easily when developing on win32
- somehow no breakpoint/debugger works although my install is fresh ( worked in codeblocks simple sdl project )

remark on pandora panic:
- wario ware puts the player "in the zone", and any gap in rythm is bad for that.
the current build I play is already really entertaining ,
but for instance the victory state duration is much too big in the typing tutor game
( game is otherwise very entertaining I like it ;) )
 
Last edited by a moderator:
trabitboy said:
- can't quit easily when developing on win32
- somehow no breakpoint/debugger works although my install is fresh ( worked in codeblocks simple sdl project )

remark on pandora panic:
- wario ware puts the player "in the zone", and any gap in rythm is bad for that.
the current build I play is already really entertaining ,
but for instance the victory state duration is much too big in the typing tutor game
( game is otherwise very entertaining I like it ;) )
-Ah yes... The quitting bug... I'll see if I can figure out why it's not working (you are supposed to be able to click the X box...)
-I'm unsure about this... only thing I can suggest is check your coy of the project is creating debug symbols in the project build options... it's strange since break points are working fine for me here...

PandoraPanic
- the sound clip needs shortening, and you've reminded me that I need a timeout check in place for if the sound hasn't loaded too!

I'll probably get an update uploaded tonight or tomorrow night after work... I'll try to incorporate what has been suggested!
 
Last edited by a moderator:
Hey, been following this thread for a while just have not got an idea on something yet. :(

I do have a new state up and running now though, so it should not take long at all to get started. Thanks for setting up the framework nicely, things were pretty straight forward even for me :D.

I have coded very little using C++ but for the x quit bug it looks like you are expecting the input.isQuit() to return whether the user clicked the x to close the program. This happens when the event type is SDL_QUIT, but you are checking it as a key press(Event.key.keysym.sym) when instead it is a seperate event stored in Event.type.

I just put this in GP2XJoy::update() function and it works now for me :)
#ifdef PLATFORM_PC
case SDL_KEYDOWN: keyDown(Event.key.keysym.sym); break;
case SDL_KEYUP: keyUp(Event.key.keysym.sym); break;
case SDL_QUIT: Quit = true; break;
#endif
 
Pokeparadox, any chance of an update of the framework? i'd like to work the latest official version, been using one of the earlier ones


Edit2: Somehow my backgrounds get (i think) a transparancy in the framework. in the big colored pieces there is some black with rough edges that does not show up in any of the editors/viewers i used


Edit1: Woohoo! 100th post :D
 
MarkoeZ said:
Pokeparadox, any chance of an update of the framework? i'd like to work the latest official version, been using one of the earlier ones
Edit2: Somehow my backgrounds get (i think) a transparancy in the framework. in the big colored pieces there is some black with rough edges that does not show up in any of the editors/viewers i used


Edit1: Woohoo! 100th post :D


Sure but you'll have to wait a little longer. I want to add a global basic pause system (can be over-ridden if you need something more fancy) I've started it and I should eb able to finish it tomorrow after work. Please bear with me.

Hmm Magenta is set to the transparent colour... currently I have no way to change this... what you could do is clear the screen with with the missing colour... then draw. The cleared screen fills the missing pixels for you.
I will add a way to set the transparent colour (defaulting to Magenta...)

Grats!
 
Last edited by a moderator:
PokeParadox said:
Sure but you'll have to wait a little longer. I want to add a global basic pause system (can be over-ridden if you need something more fancy) I've started it and I should eb able to finish it tomorrow after work. Please bear with me.

Hmm Magenta is set to the transparent colour... currently I have no way to change this... what you could do is clear the screen with with the missing colour... then draw. The cleared screen fills the missing pixels for you.
I will add a way to set the transparent colour (defaulting to Magenta...)

Grats!
np, it's that i just got home from work at 01am and had too much coffee so eager to get going on a new game, with some moving sprites this time ;) . but this setup will work for the time being.

Ok sounds good, ill try it.

Thanks!
 
Last edited by a moderator:
I've got an idea for a game, and i'd like to use the nubs for that. For now i can program using the arrow keys but i was wondering how the value of the nub range would be configured in the framework.

Would it be something like:

Input.nubA (x,y) where nubA (x) for instance would be a value between -1 and 1 to correspond to the horizontal range
Input.nubB (x,y)



note: This is just a rough situation, i'm well aware that this in no way resembles cpp programming :rolleyes:
 
trabitboy said:
but for instance the victory state duration is much too big in the typing tutor game


I agree. That clip should only last for a second or two.
MarkoeZ said:
I've got an idea for a game, and i'd like to use the nubs for that. For now i can program using the arrow keys but i was wondering how the value of the nub range would be configured in the framework.

Would it be something like:

Input.nubA (x,y) where nubA (x) for instance would be a value between -1 and 1 to correspond to the horizontal range
Input.nubB (x,y)
note: This is just a rough situation, i'm well aware that this in no way resembles cpp programming :rolleyes:


AFAIK it hasn't been finalised yet, how to acces the analog sticks (or touch screen) through SDL. I'm also interested in making some mini games using those controllers, but until I know how to acces them, I'll just make something else.

@PokeParadox
Is there a bug in you're scaling methods for images. I tried flipping a sprite with setScaleX(-1). the sprite got flipped, but the coordinates got messed up. And when I tried to flip it back using setScaleX(1) the sprite disappeared.
 
Last edited by a moderator:
Another thing about rotation, when I call sprite.setRotation(0), then sprite.render(screen), the sprite does not draw, if I set it even slightly off 0 though (0.001) it does. Is this a known issue? I'm using the latest framework as far as I can tell, rotation works fine otherwise.

Also, what are the functions to manipulate the clipping rect for a sprite? When I rotate the sprite I'm using it visibly clips the edges.

Edit: ignore the following, unless you want the solution also :D

One other thing, I'm storing the angle of the sprite in a float (probably should be a double now that I think of it...) and I extract the x and y components of the angle and move the sprite with:
CODE

x = sin(angle*M_PI/180);
y = cos(angle*M_PI/180);
sprite.setX(sprite.getX() + x);
sprite.setY(sprite.getY + y);



When I use these components to move the sprite, it seems to be off by about 10 degrees counter-clockwise. In other words, if the sprite is pointing due "north" and I tell it to move, it moves "north by north-west" or so. Not sure the second issue is a framework thing, I might still be doing something wrong, but thought I'd mention it since I was posting the first thing.

EDIT: solution, I was assuming that the sprite x and y coordinates were floats for some reason. since they are ints, they would accumulate noise from the float conversion very rapidly (along with me only having approximately 16 degrees of motion). I fixed it by making my own float (double actually) variables and doing the following:
CODE

/*trig stuff as above to extract x and y*/
sprite_x += x;
sprite_y += y;
sprite.setX(sprite_x);
sprite.setY(sprite_y);



Now movement in every direction is smooth.
 
Any Devs that want to talk to me about artwork/music please drop me a PM. I volunteered to help, but would prefer to work with individual games. I think the best way to do this would be to correlate one piece at a time.
 
UPDATE: I have an update coming soon, it addresses pausing the game, and adds the titlescreen music by mcobit.
It also fixes the quitting bug... and adds MarkoeZ Distracted Maths game.
There may be other fixes too...

I haven't had chance to look into the scaling and rotation problems yet...

MarkoeZ said:
I've got an idea for a game, and i'd like to use the nubs for that.

You could use SDL_Joystick directly rather than my wrapper classes. The main problem is not knowing how Pandora's controls are matched up in it's own SDL library. I know it's frustrating, but I think it would be best to wait until Pandora is out and the SDL libs are available for these types of games.
There's nothing from stopping you from looking into it yourself, however.

pstudio said:
@PokeParadox
Is there a bug in you're scaling methods for images. I tried flipping a sprite with setScaleX(-1). the sprite got flipped, but the coordinates got messed up. And when I tried to flip it back using setScaleX(1) the sprite disappeared.
azmodean said:
Another thing about rotation, when I call sprite.setRotation(0), then sprite.render(screen), the sprite does not draw, if I set it even slightly off 0 though (0.001) it does. Is this a known issue? I'm using the latest framework as far as I can tell, rotation works fine otherwise.

Also, what are the functions to manipulate the clipping rect for a sprite? When I rotate the sprite I'm using it visibly clips the edges.

Edit: ignore the following, unless you want the solution also :D

One other thing, I'm storing the angle of the sprite in a float (probably should be a double now that I think of it...) and I extract the x and y components of the angle and move the sprite with:
CODE

x = sin(angle*M_PI/180);
y = cos(angle*M_PI/180);
sprite.setX(sprite.getX() + x);
sprite.setY(sprite.getY + y);
When I use these components to move the sprite, it seems to be off by about 10 degrees counter-clockwise. In other words, if the sprite is pointing due "north" and I tell it to move, it moves "north by north-west" or so. Not sure the second issue is a framework thing, I might still be doing something wrong, but thought I'd mention it since I was posting the first thing.

EDIT: solution, I was assuming that the sprite x and y coordinates were floats for some reason. since they are ints, they would accumulate noise from the float conversion very rapidly (along with me only having approximately 16 degrees of motion). I fixed it by making my own float (double actually) variables and doing the following:
CODE

/*trig stuff as above to extract x and y*/
sprite_x += x;
sprite_y += y;
sprite.setX(sprite_x);
sprite.setY(sprite_y);



Now movement in every direction is smooth.

It looks like there may be some "special cases" I will have to figure ot what they are and handle them appropriately. Cameleon put in some fixes for scaling and rotation, I can take a look, however.

Also regarding Sprite positions... a lot of stuff is GP2X-centric I have Fixed types that work for fractions... I do intend to change the #defines of the framework so that you can toggle Fixed point functionality.

I'll try to get an update out tonight...but I did have a hell-day at work, so it's looking like tomorrow(I have the day off so...) I will get an update to you soon!! (Don't blame me, blame my crappy job I currently have to do! :lol: )
 
Last edited by a moderator:
poke, do you want a main screen background to try out. I could get something whipped up tonight if wanted...
400X800 right?
 
bakawhite said:
poke, do you want a main screen background to try out. I could get something whipped up tonight if wanted...
400X800 right?
If you mean the interface... Kagato has already come up with these mockups

Also some of the existing games may want a lick of paint, but you are best pming the respective authors. :)

The resolution is 800x480 :)

You are welcome to come up with a concept for the credits screen, since I don't want to be the same as CromoZome's... :rolleyes:

As always I'm willing to work alongside, in a coding capacity, if you want to do something a bit more complicated for anything. (stuff that needs timers and animated objects, particles and such, rather than static images.)
 
Last edited by a moderator:
I put a first draft of a new game, Double Nub Trouble online. I hesitated since it's not ready, but it could use some graphic/music artists to add to it, especially some targets, since i "borrowed" the duck, (some will recognise it, i used it as VJ for a party sponsored by them ; ). Gameplay will improve as well, as with the math game (update on that coming soon).

Right now i used the arrow keys, and a/x 2nd left/right and s/z 2nd up/down. With W mapped as right trigger to shoot.


file here

Cheers!
 
OK one change is I'm going to be editing this post for status updates. This is purely because Cameleon is unfortunately a bit too busy to keep the first post up to date.

I have updated all archives on that post.

I will say a little about the pausing:
First, there is a bug with timers... I can't get timed games to respect the pause... (DistractedMath, SpaceInvaders)...
Second, the BaseState has been edited to provide BASIC pausing functionality. there is the following added:
  • isPaused, a bool variable to keep track of paused status
  • pauseScreen(SDL_Surface* screen), a very basic paused screen, you can override on a per state basis
I advise you to look at the BadVista and BallDrop states to see how you should pause the game. It involve changeing the isPaused variable in the inputHandler, displaying the paused screen if needed, and in the update function, you only do the update if the game is not paused.

If anyone has some ideas on how to solve the timer pausing bug, I'm all ears...
Update: I fixed the timer bug, it will be included on the next update. It was a missing ! symbol :rolleyes:
 
Last edited by a moderator:
MarkoeZ: I learned something new today:

wiki:pandora:panic:screenshots:divby0.png

(the answer was 0)

Pokeparadox,

Thanks for the update! It's fun to see my game in the mix!

I have an idea for another game I think would be fun to write. But it, like others mentioned above, it would be intended for the controls on the pandora (shoulder buttons, joysticks, etc.). Is there any chance you could create temporary links in the toolkit for all the hardware buttons, mapping them to keyboard strokes temporarily? That way when the device is released, a few changes to the framework would result instantly in numerous Pandora-hardware-enabled games. This may be harder with the nubs. But at least we could cover the A/B/X/Y and whatever that thing is on the left side of the keyboard? And definitely the shoulder buttons!

(Yes, I realized I ought to go figure out how to do this myself and contribute the code. Sorry.)

In other news, I copied my "Getting Started" tutorial up to your wiki. Might I suggest you get cameleon to change his first post to refer to the wiki at the very top and just post updates there (on the wiki)? Then you could just make an announcement in this thread and link back to the wiki page.

Any chance of a Mercurial repository from which we could just pull changes? :)

--Todd
 
Back
Top