Today I have added a graphics mode screen that allows you to select a windows mode (in multiple of 320x200 up to your screen resolution) or fullscreen but keeping to a virtual resolution of 320x200 as per the competition rules.
The game was play tested by Megan today and she pointed out a list of things I need to fix and things I should do to improve it...
The first thing I fixed was to add the game controls to the lobby screen and then I added a loading screen.
Tonight has been a bit of a tidy up. I sorted out the Lobby and added details of the controls. Fixed a few minor and cosmetic bugs.
I did a lot of work on Fungicide today.
I added a collision detection system where I simply add a variable containing the list of collision layers to check and it calls an onCollide() method when it occurs. Nice!
Next I removed some timer code and a poor attempt at effects from the sprite system and replaced them with a Finite State Machine and scheduler. Now I can get things to happen in any order i want simply by chaining the FSM's. Very pleased with this.
I also added a skyline of buildings to the backdrop and a new enemy I call a 'Tube Fungus' that fires spores into the air.
The biggest addition though was explosions. I started with a set of particles that shot out from the death of fungus or the player, changing colours from red to yellow to white and grey before disappearing. It looked ok, but I wasn't satisfied with it, so I turned to my graphics editor and... found that i was not very good at drawing explosions! Eventually I settled on an animation sprite that shows an expanding circle from red, through yellow and white to grey. I draw several of these on screen with delayed start times and random offset from the point of explosion and it looks very impressive. I need to find a way to turn a sample into a GIF!
The Enemies arrival to the game is from an asteroid. I created a sprite that falls from the top of the screen and explodes when it hits the ground throwing up a few spores that will grow when it touches the surface.
I implemented the spores with some rudimentary gravity physics so that they come back to earth after being shot upwards. Just need to add some fungus to grow where they land.
My first attempt at creating a giant pixel-art mushroom has produced a rather fallic looking plant! I think i will forget that one and draw something else.
This evening I have tidied up the palette and added it temporarily to the display, sorted out some bugs and added a landscape generator and a moon in the background.
This evenings changes:
Manually created an 8x6 pixel character set loosely based on MSX characters.
Created a text sprite that displays a string drawn in the custom character set (Resolution corrected).
Implemented a basic 16 colour palette and fgcolor() function to use instead of setcolor()
Created graphics for the player "ship" and added as a sprite
Created Lobby graphic for game title
Created player object with UP/DOWN and Fire controls
Added laser sprite.
Fixed sprite image scaling and tested to make sure that it is Resolution corrected.
Created some sound effects with SXFR (Not implemented)
The Laser is not working correctly and seems to float about instead of travelling in a straight line.
There are still some setcolor() calls in the code that need to be replaced.
It's taken some time, but I have chosen Serendipity
for my website. I will work to backtrack and convert some of my blog from previous incarnations, but that is not a priority at the moment.
I fixed the code and sorted out the gamestates this evening. I created states for Lobby, StartGame, Play, EndGame and Pause, and added menus with hot-keys to jump between them.
Instead of using Z-Ordering for my sprites; I have added a layer manager instead. This will allow me to add/remove/replace entire layers (like background and overlays), and manage collisions only within a layer. I will see how that pans out when I get some graphics on the screen.
Well tonight did not go to plan: I made some changes to the gamestate and sprite system to create a menu system for the lobby and unfortunately by the end of the evening I have a non-functional bit of code. I know that it was because I changed the names of several classes and changed some arguments to existing function calls. Nothing that cannot be resolved, but I just don't have the time this evening to fix it.
As it's been some time since I wrote a game, I reviewed my library and found some code I have written for sprites, finite state machines and window-resizing. I also dug out some delta timing and frames per second code and dumped it all into a folder.
I implemented the game loop with a 60fps display update and added a game object to manage game states. I tested a single "text-only" sprite with the letters rolling from left-to-right to prove that it was working.
Up at 05:00 tomorrow so that will have to be enough for tonight.
I spent all day dreaming up a game idea and I think I have the basics. For now I am going to call it Fungicide.
Syntaxbomb is hosting a programming competition
to write a game.
It's been a while since I wrote a game, however the competition was put up on 15 November and finishes on 6 Jan, so I'm a little late to the party.
Continue reading "SyntaxBomb competition"