Plan for Jon Frisby
by Jon Frisby · 11/06/2005 (7:04 pm) · 3 comments
So last time around I was considering adjusting the speed of a moving object periodically to compensate for the uneven flow of Game Time in T2D to make sure that the object's position stayed synchronized with the music.
I wound up trying that in C++, and sadly, it didn't work out so well. It led to what looked like a stuttering effect. So I tried something a little more drastic: Control the position COMPLETELY from C++ and bypass the physics system entirely. This works much better. Every time clientProcess is called, the position of the sweeper is updated. Previously I used the collision detection to determine when the sweeper object had moved into a new column, but now I just track that from C++ and make the call once -- that's probably part of why the stuttering wen't away (no spurious calls to onCollision while the objects are overlapped).
There's still a slight, but noticable hitch immediately after hitting a new column because of the time spent in the game logic updating the board state -- mostly noticable when my laptop is in power-saving mode). I suppose I'll wind up rewriting most of that logic in C++ to try and eliminate the hitch as entirely as possible.
Now the biggest side-effect of this is that implementing "pause" becomes a lot more complicated -- but that's already complicated by the fact that I need to pause the *music* as well. Still figuring that one out.
On the softer side of things, I've made the current skin a lot purtier by adding some nifty particle effects. I got around the problem of the radiation symbol being uneven by just using three sprites all using the same wedge sprite and a circle sprite mounted together (using a tiny hack to let me offset the rotation of something that's mounted to something else).
Obligatory screenshot with particle-goodness (note that the particle effects aren't *quite* the stock effects -- I tweaked them to make them a bit less overwhelming):

I wound up trying that in C++, and sadly, it didn't work out so well. It led to what looked like a stuttering effect. So I tried something a little more drastic: Control the position COMPLETELY from C++ and bypass the physics system entirely. This works much better. Every time clientProcess is called, the position of the sweeper is updated. Previously I used the collision detection to determine when the sweeper object had moved into a new column, but now I just track that from C++ and make the call once -- that's probably part of why the stuttering wen't away (no spurious calls to onCollision while the objects are overlapped).
There's still a slight, but noticable hitch immediately after hitting a new column because of the time spent in the game logic updating the board state -- mostly noticable when my laptop is in power-saving mode). I suppose I'll wind up rewriting most of that logic in C++ to try and eliminate the hitch as entirely as possible.
Now the biggest side-effect of this is that implementing "pause" becomes a lot more complicated -- but that's already complicated by the fact that I need to pause the *music* as well. Still figuring that one out.
On the softer side of things, I've made the current skin a lot purtier by adding some nifty particle effects. I got around the problem of the radiation symbol being uneven by just using three sprites all using the same wedge sprite and a circle sprite mounted together (using a tiny hack to let me offset the rotation of something that's mounted to something else).
Obligatory screenshot with particle-goodness (note that the particle effects aren't *quite* the stock effects -- I tweaked them to make them a bit less overwhelming):

#2
11/07/2005 (4:10 pm)
Glad to hear you've found a way to work around your sound sync problems :)
#3
Gary: Thanks. Now I just need a way to queue events to happen on the next 1/nth note. (I.E. "this sound effect should play at the top of the next 32nd note") And I need to come up with some real music. And sound effects. And I need to put in menus, and game-over (it detects game-over conditions, but lets you keep playing at the moment). And then I need to start working on the next skin, the ability to transition between skins, and then alternate gameplay modes...
I've been trying to think of how to vary the gameplay so as to differentiate my game from Lumines... So far all I've implemented is: There are no "wildcard" blocks. This makes the game somewhat harder as there are now situations you can never recover from (a column of alternating-colors that goes all the way to the top of the screen) but the full impact will be harder to judge until there are a variety of skins.
I've got a few ideas in mind for how to differentiate my game further, but I'm not ready to talk about them just yet.
11/08/2005 (7:49 pm)
Ben: It's really hard to say. I don't get much time to work on it -- a few hours on the weekend, a few minutes here and there after work... My first alpha release, which had the basic gameplay down probably took a month, and was released 8/10. So roughly four months or so have lapsed since I started, with probably an average of 3 hours/wk... So about 48 man-hours on the coding side. Hard to say how much time my graphic artist has put into it...Gary: Thanks. Now I just need a way to queue events to happen on the next 1/nth note. (I.E. "this sound effect should play at the top of the next 32nd note") And I need to come up with some real music. And sound effects. And I need to put in menus, and game-over (it detects game-over conditions, but lets you keep playing at the moment). And then I need to start working on the next skin, the ability to transition between skins, and then alternate gameplay modes...
I've been trying to think of how to vary the gameplay so as to differentiate my game from Lumines... So far all I've implemented is: There are no "wildcard" blocks. This makes the game somewhat harder as there are now situations you can never recover from (a column of alternating-colors that goes all the way to the top of the screen) but the full impact will be harder to judge until there are a variety of skins.
I've got a few ideas in mind for how to differentiate my game further, but I'm not ready to talk about them just yet.

Associate Kyle Carter
Very cool to see it in T2D - how long total did you spend to get to this point?