Game Progress Update #26


Game Progress Update #26

Hello world! and welcome to the twenty sixth Dev with Dave Game Progress Update!

I can’t believe that it’s been an entire year since the first progress update on this project. And boy, look at how much the game has changed!

The above image is a still taken from the very first progress report. I was demonstrating some of the basic systems which I had implemented, things like the controlling the player and the parallax scrolling background.

And here we have a screen capture from the 25th Update! As you can see the game has come on in leaps and bounds over the last year. There isn’t very much left to do now until it’s ready for the first round of testing.

In fact this update I have been trying as hard as I could to get the remaining tasks finished from the In Progress column on the Trello, and get as many of the bugs fixed and out the way.

Some finishing touches

The first thing I did was add a sound effect for the Second Chance boost, and implemented playing it when the boost is activated. This was pretty simple to do as all the systems and code was already in place.

The sound effect was from one of the sound packs I’d downloaded previously for this project, and is currently being used as is without any post production editing.

Scoring

The next thing on the list was the scoring for the game. In the GDD this was specified to be based on the number of screen widths that the player had moved. Using the base size of the graphics, 144px instead of the actual device width for fairness. It also needed to use timer based movement to ensure that people with faster devices didn’t end up with a hidden advantage.

In the original prototype, I had it set so the score increased by 0.1 each frame, which was not what the GDD said.

I soon changed this so it worked as described in the GDD by adding a distance# variable to the player type, and recording the distance travelled by the player ship. Once this distance variable reached 144.0 then the score was increased and the distance variable reset back to zero, and the score is increased by 1 point.

After I’d played a few games with the new scoring system in place, it was decided that the score was increasing too slowly, so I changed it so it increased by one point every 14.4 pixels travelled.

Bug fixes

I also managed to blast my way through half a dozen or so cards from the Known bugs/issues column of the Trello.

Buying boosts now correctly deducts coins from the coins total, and using a boost will reduce the inventory count by one.

I fixed a couple of problems relating to the scrolling background at game over. Zone assets now scroll by at the proper speed and bullets will continue moving also.

I also fixed bugs relating to the ship engine sound not ending at the end of a game, changing the volume of the music intro section, and the head start boost now plays the shield sound as well as activating the shield.

I did however manage to find a new bug though, so I’ve added that to the Trello also.

Until next time

And that’s all for this update! There won’t be an update for Flappy-vaders next fortnight as I’m travelling to Spain for a week to be the Best man at my friends wedding πŸ™‚ Instead the next update will be on the 24th of September (I have checked, and double checked this date after the last time, lol)

I’m hoping to have finished off the remaining bugs, done perhaps a little more work on the level design and be nearly ready for the first round of testing.

So I’ll see you all again then πŸ™‚

Game Progress Update #25


Update #25

Hello World! And welcome to the twenty fifth Dev with Dave Game Progress Update!

In this update, I’ve been busy working on level design, and expanding on the zones system.

Zones system

In previous builds of Flappy-vaders, the zones system had been set up with a multi dimensional array to store the zones in, but I had only used the First slot in each to store data, even though a couple of the zone types had two different layouts already.

So, the first thing I did was organise the array contents, allocating the second zone type layouts to [n,1] where they existed, and if there was not then I created an empty zone instead with only the zone marker sprite to indicate the start of the zone.

Next was to implement a system to select the sub zones from the array. I’d planned for this in the early stages of development, and had a variable called subZoneID set to 0 on the line under the one where it selected the primary zone type. I replaced the 0 with Random(0,1) for the time being, although I should have the upper limit as a constant. I’ll address this once I am further along.

Level design

I decided against creating a level editor for this game due to the limited amount of time I have for creating Flappy-vaders each week. This is a decision I am maybe regretting now, lol πŸ™‚

//	Coins
zoneData$[3,0] = "250;130,50,3,0;175,50,3,0;225,50,3,0;275,40,3,0;325,30,3,0;"

The level is stored as a string, which contains the zone length, then groups of three integers to represent the x & y positions and the imageID of the sprite as shown in the code snippet below.

Because of the simplicity of the level data, I am just writing them by hand for the time being. Although I certainly wouldn’t call it fun, and it’s surprisingly time consuming.

Ultimately I would like to create 5 subzones per zone, giving a total of 25 total subzones. This should be adequate for the first round of testing. We can review whether I need to add more after some user feedback.

And that’s all for now

That’s it for this update! I’ll be back in two weeks with the next update.

I’m not sure what I’ll be doing for next time. There are couple of bits which need finishing off in the “In progress” column on the Trello.

I must also set some time aside to review the Trello and GDD to see if there is anything which needs updating there as well.

See you next time πŸ™‚

Game Progress Update #24


Update #24

Hello world! Welcome to the twenty fourth Dev with Dave game progress update!

So, at the end of the last update I said I would try and get the settings page on the menu working, and if there was time then I’d make a start on the IAP (In app purchasing) to allow the player to buy more coins. And you know what? I’ve actually managed it! Lol.

Settings page

I’d already mostly finished designing and creating the Settings page in the UI system, and all that was really left to do was add functionality to the ui elements.

The first thing I did was add a couple of variables to store the current sound effects and music volumes.

Next, I added some code in the ui button handler for each of the – & + buttons. This simply adjusts the volume variable, checks it’s not exceeded the limit and sets it to the limit if it has. Then it calls the UpdateVolumeSprite() function.

The volume bars are made of two sprites, a larger outer which is white with a black outline, and the blue inner, which is slightly smaller. The UpdateVolumeSprite() function works out the current volume as a percentage of the maximum size of the blue bar, and resizes the bar accordingly.

I then added the sound and music volumes to a saved file, so they could be loaded in when the game starts. I also added some code to call the UpdateVolumeSprite() function for both volume bars when the values are loaded in.

The very last thing I did was implement the new volume variables every where where the code called a play music or sound effect command.

I’ve left the Ad Settings button for the time being. This will need a consent page building, as well as needing the adverts to be set up.

Coins purchasing

I’ve also managed to get the coin purchase buttons almost working. Unfortunately, as with the adverts, the IAP needs some online setup, so I have been unable to implement that just yet. Once I’m getting ready to Upload a test build of the game to the store, I’ll create the adverts and IAP stuff as well.

However, for now just clicking on the buttons to buy a coin pack will credit the correct amount of coins to the players coin total.

I’ve also added temporary values to the amount of coins you get in each coin pack. I still however, need to create images for the coin packs and other items on this page.

And that’s all for now!

As always I’ll be back with another update on how the game is coming on in two weeks time!

By then I’m hoping to have done some more work on the level design and added a few more zone layouts.

Until next time πŸ™‚

Game Progress Update #23


Update #23

Hello world! Welcome to the twenty third Dev with Dave game progress update!

Despite what I said at the end of the last update about either working on IAP or the settings page this time round, I did neither and instead worked on the music systems instead. It made sense to get the music working first before adding the stuff which lets you change the music volume.

According to the GDD, The sound and music for Flappy-vaders should also be inspired by 80s gaming technology.

The aim is to have a game soundtrack which speeds up slightly the longer the player plays the game
for.

The Music System

I’ve decided to use Andrea Baroni’s Arcade Jam tune from the 8 Bit juke box collection for the time being. It’s suitably retro and it speeds up quite well. I may attempt to create my own tunes at some point, but I doubt I have time right now.

The music for the game is split into two sections, the “introduction”, which is played first and the “main loop”, which starts playing on a loop as soon as the intro has finished.

As always there is an Update() function for the music, which handles two things. Firstly it checks to see if the intro has finished and starts the main music loop playing; and secondly, it checks to see whether the game is playing in which case it gradually increases the music speed. Or if it’s the game over screen, then it decreases the music speed until it returns back to it’s actual speed.

In the video above, I’ve greatly increased the rate at which the music speeds up to make it more obvious. In the actual game the speed up effect is much more gradual and subtle.

Outro

And that’s all for this update. I’ll try and get the Settings working next, and if there is time then I’d like to make a start on IAP and currency purchasing.

I’ll be back in two weeks with another exciting Flappy-vaders update.

See you then πŸ™‚

Game Progress Update #22


Update #22

Hello world! Welcome to the twenty second Dev with Dave Game Progress Update! πŸ™‚ It’s around 3pm on Friday afternoon as I write this, I still have to script record and edit the video and write all the social media posts (*sigh*) but I am hoping this update will at least be on the right day, if a little later than usual.

So, this update I have finished the Loading/Saving game data, and also spent some time removing duplicate code.

I’ve also taken some time out to get the Trello and the GDD updated.

Loading and saving game data

Having taken all the time available to me last time playing around with encryption for the save game file, this update I have managed to get the Loading and saving working properly.

The first time the game is run there is no save game data, so the game creates one using the default values. The LoadPlayerData() function then loads the data into an array and decrypts it. The decrypted data is then stored in the individual variables ready to be used in the game.

Saving the game data is pretty much the reverse. The data from the individual variables is stored in an array, then encrypted before being written to the file. If the file exists, it’s simply overwritten.

Both getting the loading and saving were quite easy to achieve in comparison to the next bit, which was updating the UI to reflect the data which had been loaded in.

Now, had I been smart, I would have considered this when I was writing the code which updates the store page info when the player makes a purchase and written it with a view of reusing it to update the display after loading the game data in as well.

It seems, however, I am not smart πŸ™ as I did not do this at all! Which led to some serious rewriting and refactoring code.

Refactoring

A lot of the code used to update the UI display when purchasing an upgrade or boost was duplicated. It didn’t take too long to copy and paste the duplicated code into a function and make it more generic so it could be used for all instances where it was required.

I created four functions, one to update the upgrades store page after loading, one to update the boost store page, and two to update the individual items on either page. As you can see from the picture below, they didn’t quite work the first time round, lol.

The functions to update the store pages are called after the game data file is loaded in, and they both call the update store page item function for the relevant page, for each item on the page.

I also replaced the old code for updating the store page data when a purchase was made with the new function.

This refactoring has made the code some 750 lines shorter as well as making it much easier to read in places.

And that’s all for now

I still need to include data for the trophy progress in the game data file, but as there isn’t actually any trophy progress data currently I can’t do that just yet. It will have to wait until I have created at least one functioning trophy.

I’m not entirely sure what I’ll be doing for the next update. It’ll either be getting the IAP systems working or adding functionality to the Settings page. Maybe both if time allows?

Until next time πŸ™‚

Game Progress Update #21


Update #21

Hello World!  I know it’s a couple of days later than I planned, but welcome to the twenty first Dev with Dave Game Progress Update!

This update contains two major changes since the last one.  Firstly there are a couple more sound effects which have been added,  And I have made a start on Loading/Saving the game data.

The sound effects added this update include an explosion when the player dies, a bigger explosion when the player sets off the smart bomb pickup, a warbling sound when the shields are activated and lastly a rocket sound for the missile engines.

Again all of these sound effects are from libraries I had purchased previously. I have done little to no editing or modifications as yet. Once I have all the sound effects in place I will go over them and add some extra polish and refinement to each one.

I’m not happy with how out of sync the missile sounds seem to the actual missiles, so I need to do some more work to this bit at some point.

I currently trigger the missile sound effect at the same point that the Zone Update() function starts the missiles moving, but I think this happens when the missile is still quite far from the edge of the screen.

Loading and saving the game data is one of the reasons that this update was so late.  The actual loading and saving the data was fairly straight forward using AGK Studio, but I decided to over complicate things by adding some basic encryption to the data file.  This led me down a rabbit hole of wonder and before I knew it, I’d spent almost all the time available simply playing with simple encryption methods.  It’s really easy to lose track of time when you’re in the zone, lol 😊

The Game Save data file will contain data relating to Powerup/Boost upgrades the player has purchased, the players coin total, any inventory of Boosts, and any data relating to obtaining the trophies.

Anyway, that’s all for this update.  I’ll be back next fortnight with another, and I promise I’ll try really hard to get it out on time!

Game Progress Update #20


Update #20

Hello World! Here it is, the twentieth Dev with Dave Game Progress Update!

In this update, I’ll be talking about some changes and additions I’ve made to the Flappy-vaders UI.

Pause Screen

The first addition I had to make for this was an actual pause button on the main game screen. Again, I was quite frustrated while drawing the assets for this by the tiny resolution I’ve selected to use for this project. However after 3 or 4 attempts I finally settled on the following design which matches the rest of the UI elements and doesn’t seem to large or out of place.

I had to tweak the position of the Score and Coins text a little so it would work.

I set the button and the coins text positions based on the right hand edge of the screen, so it’s more responsive. I tested this by running the game in a 4:3 aspect ratio. I also tweaked the position two buttons on the title screen as well because of this.

Once the pause button is pressed, it takes you to this, the Pause menu, where the player is presented with the options to resume the game, or to quit back to the main menu.

Again, all of the new buttons were handled by the existing UI system which I created in the early days of the project. Pausing the game was a simple case of directing the code to a new loop which simply contained the UpdateUI() function, The resume button returns the code to the game loop, and quit returns the player to the main menu.

My only concern about this is that when the player presses the pause button, the ship acts like the player has pressed the screen and begins to ascend slightly before the game stops, then continues ascending when the game resumes. I would prefer that pressing the pause button does not affect the player like this.

It’s been added to the Known bugs list on the Trello board.

About screen

I’ve also written the code to handle the about screen. I have a really great retro based idea for this UI page, but I want it to be a surprise so I’m not going to go into too much detail here.

That’s all for now

I’m afraid there won’t be an update next fortnight, instead you’ll have to wait until June the 11th for the next one. I’m going to have a well deserved break from the computer for a while and try and catch up on some of the important jobs around the house I’ve been neglecting.Β πŸ™‚

Game Progress Update #19


Update #19

Hello world! And welcome to the nineteenth Dev with Dave Game Progress Update!

This update is mostly about the Audio system, which I have added to significantly this last week or so, to allow it to better do what I need it to do for the game.

The Audio System

Originally, the audio system just allowed for the loading, and playing of sound files. Which is after all, it’s main job I guess? lol

However, I needed to be able to have more control over some of the sound effects. For example, the asteroid sound, because the speed of the game increases the time the asteroids appear on screen (and also play their sound effect for) decreases. In order to rectify this, the system needed to be able to specify a sprite ID which is associated to the sound effect being played, and then end the sound effect when the sprite moves off screen.

It can also specify a maximum duration for the sound effect to have as well, so instead of the sprite lasting as long as a certain sprite is on screen, you can set it to a timer instead.

The last thing which I’m quite proud about, is the way the system can fade out a sound effect rather than just cutting it short.

Best of all, all this is specified when the sound effect is played, and the rest is all handled automatically by the audio system πŸ™‚

Other sound effects

I’ve also managed to add some other place holder sound effects into the game. These are perhaps not quite the exact sounds I’m after for the game, but they are fairly close.

Most of them have been chosen from various asset packs which I have laying around. Some have been edited in Audacity to bring them close to my vision of what they are supposed to sound like.

As with the graphics, I’m aiming for a retro old school kind of sound, but using subtle fades and layering to give a subtle feeling of depth which actual retro games don’t necessarily have.

That’s all folks

And that about wraps it up for this update.

The next update will probably be more sound effects, as well as maybe some more UI as I still need to get the pause menu designed and working, and a few others UI pages as well.

Anyway, I’ll be back in a couple of weeks with the next update. See you all then πŸ™‚