Hello and welcome to the third Dev with Dave Game Progress Update. I’ve been busy building on the prototype systems which had been developed previously.
I have added a second subset of zone data to better demonstrate the random selection of zone subsets. I also included a length value into the zone data so that zones can vary in length and still flow seamlessly from one to the next.
Adding the hitboxes to the sprites was fairly simple in AGK, as was checking the collisions. I opted for the more complex polygon shape (Polygon will create a close fitting convex polygon around the visible pixels of a sprite) as I am only checking for collisions with a handful of sprites and it will mean more exact collision detection.
I also added a simple particle based explosion to the player ship which plays when there is a collision. The image used for the particles is one taken from an asset pack I purchased years ago and is simply a placeholder again for the time being.
Another system I’ve added as a prototype in this update is a system for handling game states which was necessary to allow the transition from Playing the game to the player crashing and the game over message being shown.
This system works by having two variables to track the GameMode (Things like Initialisation, Showing Menu, Playing Game, etc) and Loop Mode (Which breaks the game mode down into sections, e.g. Pre-Game, Game, Post-Game stuff). This way I simply have to update a variable to switch from running one bit of code, to the next.
I have added a script for the UI stuff, and added a simple text only Game over message to display when the player has crashed.
I’ll be developing the UI further at a later point in development.
There are a few changes which need making to the GDD this week.
I had omitted the fact the the player dies if they crash into the bottom of the screen (in section 3.5 Player Death), and there are a couple of new additions as well.
I’ll try and make these changes over the weekend and get the revised Flappy-vaders GDD uploaded on Monday.
In the next update
And thats all for this time. Over the next two weeks I will be carrying on with getting some more prototype systems in place for the other zones.
I will also spend some time creating graphics to replace the placeholders that I am using currently.
The last thing I need to cover with regards to planning, is the how/why behind the idea of “Flappy-vaders”. Starting next week, the topic of conversation will be shifting to Programming.
In this post I’ll talk a little about the thought process behind the idea of Flappy-vaders.
The two biggest constraints for Flappy-vaders were time, and that I’d be writing it using a ridiculously low spec PC. Due to these factors I had already decided to create a simple casual style mobile game.
Again, for the sake of development time, I decided to take some already successful concepts from other games and combine them in a (fairly) unique way.
I decided to take the game mechanic from “Flappybird”, as it’s fairly simple, as well as being quite well known and fun/addictive to play.
I also decided to expand on this idea by adding elements from other games, such as the “zones” which you see in games like Jet Pack Joyride etc.
Now don’t get me wrong, I’m not simply copying Flappybird. This is going to be an original game in it’s own right, and I am 100% not encouraging people to create the utterly rubbish “asset flip” style games which are nothing more than a simple online tutorial which has been followed and the graphics replaced.
One of the things which makes games stand out at the store and in videos online is the visual style. I’d already decided to create a 2D game due to the hardware. I can’t imagine how the Linx tablet would run Blender, lol!
My initial inspiration for the graphical theme of Flappy-vaders was the menu screen for Fallout Shelter by Bethesda.
I loved the old style scan lines and the darkened edges of the screen, reminiscent of old CRT TVs. I imagined I could produce an effect similar to that of an 80’s era TV with a border and a scanlines overlay.
My next thought was about the type of games I’d have been playing on such a TV. Now in the 80s I had a ZX Spectrum, which had only 8 colours (well, 16 if you count brightness). I thought that palette would be a bit limiting, so I looked at other similar age devices before settling on the Sega Master System.
The Sega Master System has 256 available colours which should be more suitable for this project.
The last thing to do was decide on how the game will be monetised. Since it will be a casual mobile game, it will be free to download but include adverts. The player will be able to remove the ads by paying a small one off fee.
Another popular way of monetising mobile games is through the purchase of in game currency. This can be used to buy power-ups and upgrade the ship. Since I was planning on having power-ups and upgrades in the game, this seemed like a logical strategy to follow.
Overall it took me about a fortnight of thinking, researching and jotting down ideas. And then maybe as long again to refine them and be ready to create the GDD.
Ok, so it’s fair to say that as I am publishing this today (Tuesday) instead of Friday that I have bitten off more than I can chew with this fortnights targets.
The fact that the temperature has been in excess of 30 degrees C for the last week hasn’t helped much. I don’t fair well in hot weather, and AC is not common in houses in the UK.
The goal was simple, to get the basics of the zones working, but I had greatly underestimated how many “behind the scenes” systems I would need to implement before I could get this finished.
The theory is simple enough. There is a pool of sprites created at run time which are used to display the current zone on screen.
These are assigned and positioned when the SpawnZone() function is called.
The SpawnZone() function is responsible for taking the zone data (stored in a csv string currently) and breaking it down and using the data to set the sprite properties (position, rotation, and image ID)
The zone sprite positions are updated by the UpdateZone() function, which simply moves all the sprites along to the left at the correct speed. It also measures the distance the sprites have travelled so it knows when to spawn a new zone.
The zone sprites are removed once they pass a set position (currently -192 px off the left hand edge of the screen) and placed back into the pool ready to be used again/
I have written a function specifically to get the next unused sprite from the pool. This allows the zones to transition from one to the other seamlessly without sprites disappearing, which would happen if the sprite was still on screen when it was re-assigned.
I also have created a couple of images, the zone marker and a pipe, to make demonstrating the zones stuff easier. Once again, these are only placeholders and are likely to change significantly as the development progresses.
In the next update
And that’s where we are now. I will carry on with the same task list again for the next two weeks, and hopefully have a lot more to share when the progress report day comes around next, which should be Friday the 21st.
We’ve had a small hitch with the hardware. It seems the tiny travel mouse I was using has given up the ghost, so I’ve decided to switch to the mouse from the children’s computer. (Sorry kids if you’re reading this. If I forget to put it back when I’m finished with it just let me know 😉 )
This mouse is an old 5 button Microsoft intellimouse explorer. It’s my absolute favourite mouse design and one I’ve used on all my PCs for as long as I can remember. (I’d guess at around 20 years, lol)
The extra button on either side work as back/forward buttons for internet browsing, which is amazingly helpful.
These mice are as tough as old nails. Even after hundreds of thousands of clicks the buttons still click reassuringly when pressed.
Fingers crossed none of the other hardware packs up!
For those of you who don’t know, Trello is a collaboration tool that organizes your projects into boards. In one glance, Trello tells you what’s being worked on, who’s working on what, and where something is in a process.
I’ll be using Trello to manage the Flappyvaders project in conjunction with the GDD I shared last week. There is a link to the Flappyvaders Trello Board further down this page.
I usually set my Trello up as shown above, and here’s a quick explanation as to how it works.
The first column is for reference, or any notes relating to the project.
Next is the “Known bugs/issues” column, this is explained a bit further down.
The “Things to do” column contains cards which are ready to be taken ownership of and moved to the “In progress” column.
Each card in the “In Progress” column should have an owner. To take ownership of the card, you add your name as member, which adds your initials to the corner so you and other team members can see who is actioning that card. Once all tasks on a card are complete it is moved into the “Under review” column.
The “Under review” column contains cards which have been completed and are ready to be reviewed/evaluated by the project manager. During review any bugs or suggestions can be added to the card before its returned to the “Things to do” column.
If there is no further changes necessary then the card can be moved to the “Completed” column.
If an issue is discovered relating to a completed card, then the card can be moved to the “Known bugs/issues” column, as well as creating a sub card relating to the issue directly. If the issue does not relate to a completed card, then just add a card to the “Known bugs/issues” column to explain the issue.
Click the button below to view the Flappyvaders Trello Board in action for yourself.
Welcome to the first Dev with Dave Game Progress Update!
So, the development of Flappy-vaders has begun, The first phase of which is prototyping.
I consider prototyping to be an important stage of development as it gives you chance to test ideas and adjust them where necessary. Start by coding the bare minimum necessary to test the idea with, play around with it and then once it feels right, you can expand on it. After all, you don’t want to spend 3 months creating a game only to discover that it’s not actually fun to play.
With Flappy-vaders the prototyping gave a quick and convenient method to determine the ideal values to use for the gravity, thrust upward, scroll speed, etc.
The first system I built was the parallax background system.
First I created the two ground sprites using Paint .Net, and copied them into the project media folder. Both images are 192px wide, the nearer image is 32px tall, and the back image is 42px tall.
Next I created a backgrounds script in AGK Studio to put all the variables, constants and functions relating to the parallax background.
Originally I was planning to use two sprites for each layer, with the sprites jumping back to position to replace the other as the scroll by.
However, because we are using 16:9 as the aspect for the background area, if you played the game on a device with a wider display then a gap appears on the right hand edge of the screen as the sprite doesn’t wrap round in time.
Instead, I decided to use 3 sprites, as shown below, which gives a comfortable buffer for playing the game on phones with really wide screens.
The idea is simple, the sprites move towards the left, and as soon as the first sprite passes the left hand screen edge, it jumps to the third tiles starting position. This repeats indefinitely.
I used a technique called “Timer Based Movement” or “Delta-Time” to ensure that the background scrolls at the specified speed regardless of how fast the device is that is running it. This is basically calculating how far the sprite should have moved in the time it takes to update the display.
I then repeated the process for a second layer and added a variable to store the difference in speed between the layers.
The next script I added to the project was the Player Movement script.
Player movement in this game is quite simple. The ship will accelerate downwards at a constant acceleration until the player taps the screen. This gives the ship a sudden upward velocity. This is then acted on by the constant downward acceleration.
This isn’t necessarily the way actual physics works, but it’s how Flappy bird did it, lol 🙂
As with the parallax background sprites, the player sprite uses timer based movement.
In the next update
That’s all for this progress update.
I’ll be prototyping the zones next, as well as adding collision to the players ship.
You’ll be able to see how I get on in the next progress update!