CYCLONE
Root / Talk About Programs / [.]
cujo1992Created:
After a ridiculous amount of time working on it, I have finally posted my first SmileBasic game.
https://smilebasicsource.com/page?pid=418
CYCLONE is without question a clone of my favorite quarter munching experience from the early 1980s: GYRUSS (by KONAMI). I am hopeful that the game does not get removed from the server for copyright.
The name?
CYCLONE > GYCLONE > GYRUSS CLONE > GYRUSS (okay - it worked for me)
The sprites were all crafted by hand using the default SmileBasic toolset. I did use screenshots for inspiration - but I think that only the player's ship came out "close" to the original arcade.
The music is quite nice: Toccata and Fugue in D Minor by J.S. Bach. I used a midi file from digitalpress.com... then converted it to MML using the 3ML Editor at mabibeats.com. Finally I tweaked the MML tracks to my liking (and simplified them a bit).
I programmed the game on an old 3DS - so I HOPE it works well on a NEW 3DS... please let me know. The 3D functionality works reasonably well (IMHO).
As it Is my first game - you can see evolution from "really crappy" to just "kind of crappy" code in different parts of the main file. The main state machine managing the waves still has a few bugs in it ... so if you play it you may find some bugs here and there.
IF the game is not stricken from the server in a week - I have ideas about adding to the game (boss levels etc...) - but I am going to take a break for a bit and let my 10 year old play with the 3DS again.
Thanks for your feedback and consideration.
Hi pirate
Although there is no FPS counter in the code, I only ever saw (on O3DS) slowdown if ALL of the enemies would accumulate in the center. The enemy ship.movement code is ripe for optimization.... but as the goal of killing enemies before they gather is implicit this slowdow was rare.
Did you observe slowdown in fps at other times?
THANKS!
Hello pirate....
I use the MAINCNT function for "clocking" all of the sprite motion. (I coded most of this before the MILLISECOND function came around). I don't use VSYNC to ensure frame boundary timing - but rather allocate a certain number of "updates" per increment of the MAINCNT function. Most sprites will only move 1 or 2 "increments" per update... and then I allow them to move X # of times per MAINCNT increment. The main player ship is especially fast - and perhaps can give a view of only being 30 FPS because I coded it to be able to make 7 movements of X degrees around the circle in a 2 frame window. (In retrospect - I would do this differently if I were to rebuild the game from the ground up).
The speed of motion looks pretty good to me (and reasonably faithful to the original game). HOWEVER - because all of the motion is actually encoded in polar coordinates (radius/depth and angle) and then converted to Cartesian (X-Y coordinates - some of the enemy ship tracks can be a bit abrupt and come off as not smooth. So - even though running at a high FPS - the motion from one polar "coordinate pair" to another can be jarring in the way I had it implemented. Maybe I can look at re-engineering this one.... let me know if this seems like what you are experiencing!
As for the size of the sprites... I too increased the size of the enemy ships because I thought they were too small. HOWEVER - this made the game too easy - as they were simple to shoot... (and not so faithful to the original) - so I took them back down. BUT - this is a GREAT IDEA for a next version - to allow someone to play in enhanced mode with the "big enemy ships" ... recall NBA JAM and the big giant head of Michael Jordan... ah good times! Thanks for the suggestion!!!!