Game Progress Update #16


Update #16

Hello world, and welcome to the sixteenth Dev with Dave Game Progress Update!

Since the last update, I have been busy working on the “Cannons” zone, which has taken an awful lot longer to do than I was expecting due to an annoying bug which turned out to be a huge oversight on my behalf. Still, I beat it in the end, and I’m quite pleased with the way the Cannons Zone worked out.

Planning

Again, the entry for the Cannons Zone in the GDD was a little sparse.

3.3.3 Cannons
Obstacles and ground cannons which fire upwards

Flappy-vaders GDD

So, before I could do any coding, I had to sit down and have a real think about what I wanted for the cannons.

Although the original design document said that the guns were to fire upwards, I decided that it would be better for the guns to shoot diagonally.

The guns are to have a muzzle flash image which is displayed when they fire a round.

The cannons and their bullets are also destroyed when in range of a Smart bomb exploding.

I shall update the GDD to reflect these changes as soon as possible.

Media Assets

The first thing I needed before I could start work on the new zone were the graphical assets.

Now I did have some pencil sketches as concept art, as well as the image below, which was a mockup of the game screen I created nearer the start of the project.

So, grabbing my trusty tablet, my new mouse and a fresh cup of tea, I went and sat outside in the sunshine for probably the first time this year and got to work.

I started by using google to search for “Gun turrets” and “futuristic gun turrets” to give me some actual reference images to help with designing the cannon sprites for the zone.

The image above shows the evolution of the turret as I improved and tweaked each iteration of the design until I was happy with it. It took most of the afternoon of playing around inside Paint .Net to achieve this result.

I also created images for the bullet sprites and the cannons muzzle flash.

The Cannon Zone

The cannons are designed to sit on top of the large blue pipes, so I duplicated one of the pipe zones from earlier, and positioned the gun sprites on the top of the piped.

The movement of the cannon sprites is handled by the UpdateZones() function, which also handles firing the gun when the time is right, and spawning the muzzle flash as well.

Bullets

The bullets are held in a pool until the SpawnBullet() function is called. Then a bullet is positioned in the right place relative to the gun that fires it and the inUse property is set to true.

There is an UpdateBullets() function which handles the movement of the active bullets, and collisions are handled by the CheckPlayerCollision() function.

Muzzle flash

I thought this would make a nice touch, It’s a simple sprite which is displayed over the top of the end of the gun barrel for 0.2 seconds while the gun fires.

Again, the movement is handled by the existing code which moves all the zone sprites, and they use a timer to determine when they should vanish.

Bugs!

Now I had huge problems getting the bullets and the muzzle flash to appear in the right place. It turns out I had made a mistake, thinking that the guns[] array ID directly related to the zoneSprites[] array ID; which isn’t the case.

It took literally hours of checking through all the code before I found out what the problem was, and another hour to decide on a solution and code it.

The guns[] array stores data like the last timer fired time, the muzzle flash spriteID, etc. of the gun. Whereas the zoneSprites[] array stores the spriteID of the zone sprites (not just the guns, but the pipes they sit on, and any other elements used)

So, you can see the problem, the ZoneSprites[] array stored gunSpriteID, pipeSpriteID,gunSpriteID, pipeSpriteID,gunSpriteID, pipeSpriteID, etc.

I fixed it by adding the ZoneSpriteID to the guns array[] so I had some way of identifying which zoneSprite the gun data was attached to, and some functions to allow the game to check or assign this.

The second bug is less of a show stopper, but for some reasons the bullets move at slightly the wrong speed in the x axis.

This issue is shown in the image above, where the blue diagonal line is the expected trajectory of the bullet, compared to the actual position of the bullet.

This second bug has been added to the Known Bugs/Issues board on the Trello, and will be fixed when I next work through the list of bugs.

Next Time!

That’s all for this update. Now that I have finished all the zones, I will concentrate on getting the last few powerups/boosts working.

I’ll be back in another fortnight with yet another exciting game progress update! See you then πŸ™‚

Game Progress Update #15


Update #15

Hello world! Welcome to the 15th Dev with Dave Game Progress Update.

In this update I’m happy to say that I’ve got the Missile Zones doneΒ πŸ™‚ It still has some rough edges, but these will be taken care of as part of the game balancing/level design phase.

The missiles themselves were simple additions to the existing systems, but I did have to make a couple of changes to things to get some of the associated effects to work properly.

Since the Missile Zone has been the only thing in this update, I thought it might be invaluable if I went a little more depth into how I created the zone.

Planning

This is how I described the missiles zone in the GDD.

3.3.5 Missiles

Missiles which fly from right to left, possibly using a laser targeting system to warn the player where the missiles will be flying (Like in Jet Pack Joyride, or Sky Force)

Flappy Vaders GDD

It’s not a terrible amount to go on, so I thought I would take you through my process of how I went from the sentence above to the functioning missiles zone in the game.

Since I had referenced both Jetpack Joyride and Sky Force in the GDD, my first port of call was to Google Images so I could remind myself how the missiles looked and worked in these games, and to get some reference images to help with designing the missile and missile effects sprites.

The above image is from Skyforce Reloaded. It uses guidance lasers to show the player the path of the missile and to give them a second or two to move out of the way. The missiles are red and white, and look well, basically just how you would imagine a missile to look.

In Jetpack Joyride, the missiles attack is again forwarned, but this time it uses floating exclamation marks to indicate where the missiles are coming from. This missiles also look strikingly similar to the missiles in the previous game.

So with this in mind, I set to work in Paint .net with a screen grab from Flappy vaders to mock up how I imagined the missile zones to work.

I used Hitfilm Express to create the below video to demonstrate how I imagined the effects would appear in game.


I dropped the warning markers in the end, in preference of the alert flash and the guidance lasers.

I also intend on adding flame/smoke animation to the back of the missiles, but I’ve not got that done just yet.

Once I had an idea of what I was hoping to achieve, as well as all the assets I’d need, then it was time to open AGK Studio and dive into the code.

Red alert flash effect

The first and most obvious addition with this type of zone is the red alert warning flash. This is triggered at the zone start and remains active until the beginning of the next zone.

It’s another full screen sprite placed over the screen, and the flashing is being done using the sprites alpha channel.

It’s handled in a similar way to the Smart bomb effect, with the addition of a direction variable. So when the sprites alpha value reaches zero, instead of the effect ending, the direction variable is toggled and the alpha value is increased instead.

Missiles

The missiles were the simplest part to implement. They are handled exactly the same as the other zoneSprites, but have additional movement code in the same way that the asteroids do.

Unlike the asteroids, the missiles don’t start moving independently until they are close to appearing on screen.

Guidance lasers

The guidance lasers appear just before the missile sprite is due to appear on screen, and disappear again once the missile has left the screen.

I had to change the way the zoneSprite depths work slightly in order to make the guidance lasers appear over the top of the rest of the zoneSprites, but underneath the missiles themselves.

Next time

And that’s all for this update. I’m hoping in the next one to have the Missile jammer boost working, as well as maybe the last zone and boost as well.

Don’t forget to follow @DevwithDave on social media to keep up to date with the project, and with any luck I’ll see you all next time πŸ™‚

Dave

Promoting your game

Promotion

In this post I’m going to be talking about some of the ways to put your game in front of potential players.

I’ll cover each thing in more detail in upcoming blogs, but I wanted to just give you a brief rundown of them today.

I’d also like to take this time to say that there isn’t a “one size fits all” solution to promoting your game, some strategies work with some games, other strategies work with others.

Knowing your audience

Knowing who your ideal user is makes getting your game in front of them a lot easier. Spend some time thinking about your ideal user – their age, sex, location, interests etc.

I find it works best to create your game with your ideal user in mind, rather than creating a game and then trying to determine who your ideal user would be.

Having a “Customer Avatar” (a representation of your ideal user) can save you a lot of time and potentially expensive mistakes. If your game is aimed at teenage girls who like kawaii fashion, k-pop and tiktoks; then you’ll be wasting a lot of effort and resources by trying to build an audience for it on Twitter. In the same way that if your game was aimed at middle aged men who enjoy catching fish, then using TikTok to promote it would probably be unsuccessful.

The more you know about your ideal customer the better.

Social Media

Posting on social media is a great way to raise awareness, as well as building an audience of fans who love your game.

When trying to grow an audience on Social Media it’s important to have a strategy again. It’s highly unlikely that posting random content at random times will produce the results you are looking for.

Use your customer avatar to decide which type and style if content would appeal to your ideal user, as well as what social media platforms to post it onto.

Regularly posting content which appeals to your ideal user is the best way to grow an audience for your game for very little money.

Adverts

Advertising is another solid method to grow an audience for your game.

You can use adverts to help grow your audience on Social Media, to build more of a buzz about your game prior to release, as well as to get people to download your game when it is released.

I highly recommend learning more about how your chosen advertising platform works before you start running adverts, as it is very easy to waste your budget and not see any returns if you just jump in feet first with no clue as to what you’re doing.

As with Social Media, there are a variety of different advertising platforms, each showing ads in different place and formats.

Game Expos and Fairs

I know it seems hard to remember what with the last 12 months of lockdowns and social distancing, but Computer Game Fairs are a great place to show off your game and connect with audiences.

Having a stall with a couple of PCs or Consoles where players can try out your game is a great way to not only introduce new players to your game, but also get some face to face feedback.

You could also create some merchandise to sell or give away.

Obviously you might have to wait for the pandemic to be over before this option becomes viable again.

Some final thoughts

As I said earlier, there isn’t a One size fits all solution to marketing your game. It may take you several attempts before you start to see positive results. Remember to set clearly defined goals, and monitor how well (or not) your attempts are doing.

Some things to watch out for though, NEVER ever ever pay for likes or installs. These are often not genuine, and will often have negative consequences. I would rather have an audience of 1000 genuine users who interact with my posts and play my game, than 10000 fake users who never do anything.

I’ll be covering each one of these subjects in more depth in later blogs, so stick around πŸ™‚ Either bookmark the site, or follow me on Social Media πŸ™‚

Facebook icon