Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Chatting about life in general, videogames, making videogames and stuff. No adverts/team requests.
User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Tue Dec 18, 2018 5:20 pm

Well, I got there in time for Christmas (just)! The last boss is finally done, bar some polishing and tweaking of difficulty, and I’m extremely glad to have put this one to bed.

I ended up pulling out quite a few of the stops for this one (it’s the final boss after all) so there’s five/six separate stages to the fight and multiple different attacks and animations within each phase. The audio alone took around two solid days.

So here’s a description of each stage of the battle – I ended up switching the first stage (as described in my previous post) to stage two.

Stage One – Claws
In the first stage the Octopoid has grabby, snappy claws at the end of its tentacles which it lashes out at the player to cause large amounts of damage. It also has a secondary attack where it stops to fire mini black holes from its claws. I’m not entirely happy with the look of these mini black holes yet, that something I’m going to come back to.

The Octopoid moves pretty fast at this stage, and if you let yourself become entangled in its tentacles it can be pretty hard to break free!

To complete the stage the player has to destroy each claw – when a claw has taken a certain amount of damage it breaks off and falls to the ground. The rest of the boss is invulnerable to damage.

Stage Two – Dive Bomb / Black Holes
I wrote about this stage in the previous post so won’t go over it again here. It made sense to have the stage second as a) I thought it would look weird if the boss suddenly sprouted claws, and b) As the player is shooting at the boss’s mouth tentacles to cause damage it makes sense to have these destroyed at the end of the stage and I wanted the Cthulhu tentacles in play as long as possible!

Stage Three – Lasers
With its mouth tentacles destroyed, the Octopoid’s gnashing teeth are revealed and it begins to fire lasers at the player from the end of its tentacles. It moves pretty erratically in this stage as if it’s somewhat out of control.

To complete the stage the player must destroy each tentacle (once the end of a tentacle has taken a certain amount of damage the entire tentacle self-destructs). When each tentacle is destroyed the boss goes into a crazy spin which can be devastating to the player if they’re too close.

Stage Four – Dropping Squockets
By this stage the Octopoid is looking rather the worse for wear as it has lost all it’s tentacles. It still has plenty of fight left in it though! Its two attacks in this stage are a ram attack where it simply launches itself at the player, and the ability to spit out bubbles contain mini squocket enemies. These mini squockets are armed with rocket harpoons which they will launch at the player given the opportunity.

To complete this stage the player must keep ducking behind the boss and deal damage to its bulbous cranium. The front of the boss is invulnerable to weapons.

Stage Five – Phase Inversion
This stage is really an extension to stage four. The octopoid has lost half its skull by now, leaving its brain dangerously exposed. It still launches itself at the player in a ram attack but also spits out antimatter ‘ink’ based on the ‘Black Hole Blaster‘ weapon (which is probably going to be renamed the Phase Inverter but I’m not 100% decided on that yet).

Of course it’s the exposed brain that takes damage here and enables the player to move onto the final stage of the battle…

Stage Six – Skull Spin
There’s not much left of the Octopoid by now so it launches itself at the player in a fast and ferocious spinning attack whilst spitting out black holes as per stage two. If the player doesn’t keep moving here they will come a cropper pretty quickly as they’ll get sucked into a black hole and battered to kingdom come by what little the boss has left!

All the boss is vulnerable to damage now and, for added drama, I had it lose each eye and then its teeth as the player gradually pounds it into oblivion. Hopefully this makes for a fitting end to an epic battle!

Image

I’ll be tweaking the difficulty of each stage considerably when I get to balancing the weapons and difficulty across the game (the next thing I’ll be working on) – I’ve nerfed the boss’s abilities quite considerably in the video so I could compress the whole battle into a reasonable space of time! Also this video (like most of them) has been blown up 150% as my computer is incapable of capturing 1280*720 at 60fps – it struggles even at this resolution. The rotations particularly look much better at the proper resolution. I need to find a solution to this for when I create my ‘proper’ promo reel.

Dev Time: 10 days (so that’s 19 days in total for this boss – groan)!
Total Dev Time: approx 237 days
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
Tam Toucan
Team RR
Posts: 418
Joined: Mon Jan 06, 2014 3:57 pm
Location: My head
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by Tam Toucan » Fri Dec 21, 2018 4:56 pm

Great work. Hope you're taking time off for the holidays.

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Mon Dec 24, 2018 3:12 pm

Thanks - yes, I am going to be taking a bit of a break!
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Thu Jan 10, 2019 3:07 pm

So far this year I’ve been focussing on weapons and the weapon unlock/upgrade mechanic in preparation for doing the wider gameplay and difficulty balancing. I’ve broken this down into three key areas…

1. Ammo Drops
It became clear whilst testing the bosses that the way I was calculating ammo drops was flawed and I needed a better method. The method I eventually came up with is simpler than its predecessor, works far more effectively and should ‘scale’ automatically as weapons are upgraded and the player faces enemies that soak up more ammo. For each weapon I now work out the maximum amount of damage that can be done to any enemy from a clip’s worth of ammo (the amount contained in a single ammo drop). I then scale this amount based on the accuracy of the weapon in question (weapons that have a lower accuracy scale down more as one must assume that not every shot will hit its target). Once the player has dealt out damage to any combination of enemies that exceeds the resultant ammo refresh rate a new ammo drop is awarded. It’s important to record the damage dealt as the amount of damage that would be dealt if the enemy had infinite health, otherwise enemies that are destroyed by the attack score too little and this can really skew the system.

To test this I set up a ‘sponge’ enemy that does nothing but takes loads of damage and tried out all the different weapons on it in turn, tweaking the accuracy scaling and checking the method I was using to calculate the max damage per clip was correct on each one. This was easy for weapons that simply fire bullet-style projectiles but more complex for weapons like the flamethrower. For ‘area of effect’ style weapons like the grenade launcher, RPG and sonic boom I can only really approximate an idea of maximum damage.

Image

Whilst in the process of the above I got pretty distracted re-working the shotgun blast effect as it still didn’t seem to give an accurate indication of the blast’s area of effect. This is the third time I have re-worked this(!)

2. Weapon Switching
To date the player has only been allowed to carry one weapon at a time. If the currently armed weapon runs out of ammo they were automatically switched to the default weapon (pistol) which has infinite ammo. If they wanted to arm a more powerful weapon again (pretty much guaranteed) they would have to pick one up from a weapon crate AND find an ammo drop to recharge it should it have run out.

I decided this mechanic was no fun and therefore, according to the Scott Rogers principle, had to go. Now I am allowing the player to carry two weapons at once – the default weapon with infinite ammo and a (generally) more powerful secondary weapon. If the secondary weapon runs out of ammo the player is switched automatically to the pistol as before but this time all they need to do to recharge it is collect an ammo drop. The new mechanic seems to feel much more natural and fun to me, though I’m a little worried it might give the player the opportunity to over-exploit powerful weapons but we shall see…

As an adjunct to the above I also implemented a key to switch weapons so that the player can switch to the pistol if they want to save ammo on powerful but understocked weapons such as the RPG.

3. Weapon Unlocks
Previously, in order to unlock a weapon, the player had to catch the jetboard of an enemy that was armed with it. This worked OK, but it was a bit easy and I didn’t really think it made a big enough deal of the weapon unlock process.

I’ve decided instead to have weapon unlocks as a type of treasure. Rather than being guarded by a boss, the treasure chambers that contains these weapon unlocks will be guarded by a fleet of enemies armed with the weapon in question. This enables me to make more of the treasure chamber mechanic, adds another layer to the gameplay, and also allows me to use the big ‘weapon upgrade’ icons (which I was rather pleased with) in-game as pickups.

It didn’t take me long to design these ‘guardian’ enemies but I spent a fair bit of time on implementing some special AI for them. Firstly I enabled them to swoop down and steal the player’s health pickups to heal themselves (I may allow other enemies to do this once the reach a certain level), and secondly I implemented a special ‘wrap attack’ whereby if a bunch of them have been chasing the player in the same direction for some time a few will take advantage of the world wrapping by peeling off and heading in the opposite direction to meet the player head on!

Image

The video demonstrates unlocking the shotgun by defeating a small fleet of enemy guardians. They’re pretty tough opponents – as you can see I had to rely pretty heavily on the jetboard attack here and was pretty lucky managing to take out three of them in one go!

Image

Dev Time: 241.5 days
Total Dev Time: approx 4.5 days
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Tue Jan 29, 2019 10:16 am

This is one of those devlog entries that seems kind of dull because there’s been a lot of ‘under the hood’ type goings on and not a lot of eye-candy to show for it.

But, it’s taken time and it’s really important to the game’s development so I’m going to blog it anyway, boring or not!

What I’ve been focussing on is the overall structure of the game world and how difficulty progresses throughout the game. At this stage it has been very much a first pass at this, as much about providing the tools to allow me to tweak gameplay efficiently as it has been about balancing the gameplay itself.

I’ve broken down what I’ve been doing into three key tasks:

1. Code Refactoring
As with any game of significant scope, there are multiple interconnected parameters that affect gameplay difficulty in Jetboard Joust and it’s a hell of a lot easier to tweak things if the code that manages these parameters is in one place rather than split across a myriad of individual class files. Consequently I’ve set up a static ‘Config’ class that contains all the algorithms and configuration parameters for pretty much anything to do with rewards and difficulty throughout the game. This has involved a lot of tedious cut and paste but I know it’ll be worth the effort in the long run (it already has really). I’ve set up generic parameters here for the amount things like enemy health and weapon damage/difficulty scale throughout the game so at least I have a baseline to work with and can tweak individual scaling from there if necessary.

2. Mapping
I’ve created a template in InDesign for mapping out levels in each of the game worlds and have been through this with a first pass attempt at placing weapon unlocks and new enemy ‘reveals’ in each. There seems to be enough content to fill four level ‘pyramids’ of around twenty rows each with a reveal rate of a new enemy or weapon every couple of rows. I need a couple of different ‘non-jetboarding’ enemy types but was expecting that anyway. I may make the fifth and final world smaller, probably ten rows, with the final boss right at the end.

Image

I added an additional jetboarding enemy to span the difficulty gap between the ‘minion’ and ‘master minion’ which was fairly simple to do. Was trying to get a 'Darth Vader' style mouth effect but that proved beyond my capabilities in so few pixels. I'm still pretty pleased with this guy though.

Image

3. Auto-Levelling
In order to be able to arbitrarily test game difficulty I need to be able to jump to a particular level and have an idea how the player might have ‘levelled up’ at that point. What weapons will they have unlocked and how powerful will they be? What will their base health be? It’s not straightforward to figure this stuff out so I ended up writing an algorithm that takes a destination point within the game pyramid, figures out the location of each treasure chamber before that point, then does a mock play though of the game to unlock each treasure item. On the way I collect the cash that would be awarded for defeating enemies, rescuing babies, and completing ‘sectors’ (rows of the pyramid). Once cash is earned it is spent on the most expensive upgrade available.

It took quite a while to test this code and get it working but it’s going to be invaluable for testing as I can now start the game at any point and have the player ‘levelled up’ as appropriate. Using this code I can also monitor things like how long it will take to level up a particular weapon, how much a player might earn for completing a level at the point weapons are unlocked (hence what a sensible starting price for updates might be) and all sorts of other stuff I haven’t even thought of yet!

Image

4. Basic Gameplay Testing
Using the code above I began going through the game to check and tweak parameter scaling at key points (i.e. the ‘reveal’ level for each weapon and enemy) to make sure things seemed sensibly balanced. Unsurprisingly they were way off to start with but after much fiddling I’ve reached the point where relationships at least seem workable, haven’t done the treasure chamber guardians and bosses at all yet though.

One thing that became apparent was that weapons that are unlocked earlier in the game need to have a greater number of upgrade levels than ones that come later on, otherwise they either ‘max out’ too quickly and end up becoming useless on high level enemies or they cost far to much to upgrade in the early stages. This was particularly apparent with the default weapon (the pistol) so I ended up adding a new default weapon (the .45 magnum, essentially a pistol on steroids) which is unlocked about halfway through the game and has enough grunt to take the player through to the end of the game.

I also ran into a shedload of bugs, it’s been ages since I looked at many of these enemies/weapons so there’s a ton of small issues created by various changes I’ve made. Fixed a bunch of them as I went along (partly why this phase took so long) but I’ve still got a very long TODO list in Trello!

Dev Time: 6 days
Total Dev Time: approx 247.5 days
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
Tam Toucan
Team RR
Posts: 418
Joined: Mon Jan 06, 2014 3:57 pm
Location: My head
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by Tam Toucan » Thu Jan 31, 2019 12:23 pm

Ahh, the joys of gamedev. 90% tweaking numbers. That's why I'm really just a programmer, any game I've written I can't be bothered with all that. As soon as I've got START->PLAY->DEATH it's done :)

Maybe if I every write a game that I actually care about I'll be bothered.

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Fri Feb 01, 2019 8:36 am

Tam Toucan wrote:
Thu Jan 31, 2019 12:23 pm
Ahh, the joys of gamedev. 90% tweaking numbers. That's why I'm really just a programmer, any game I've written I can't be bothered with all that. As soon as I've got START->PLAY->DEATH it's done :)

Maybe if I every write a game that I actually care about I'll be bothered.
:lol:

I actually quite like this part, it can be tedious but generally I enjoy getting into the minutiae of the gameplay. Really I am a game designer at heart, not a programmer or an artist. Not that I don't enjoy those parts as well but I'd be happy to be in a position where I could forget both of them and just concentrate on the game design and overall art direction.

What I hate about programming is when I know I've got to do something, I know how to do it (either because it's obvious or I've done it a zillion times before) and I just have to implement it. Then you're basically typing for hours on end and making the odd stupid mistake because you're bored and have lost concentration. That seems to make up a large chunk of my gamedev time!

Doing the art has been the hardest thing on this project, I'm graphic designer by background but I really don't know WTF I'm doing with the pixel art until I get there. There's been a lot of blind alleys, particularly on the big sprites like the bosses.
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Thu Feb 07, 2019 11:01 am

Bit fed up with parameter tweaking, so before I finish the final first round of config by going through the treasure chamber guardians and bosses I thought I’d try and get the final non-jetboarding enemies wrapped up.

There’s going to be three of them in all I think, and I’m pretty keen to have each of them be a mini-homage to a classic arcade game, much like of already included one to Space Invaders. First up is Asteroids and an enemy I’m tentatively calling the ‘splitter’.

Originally I had imagined this enemy being a kind of giant jellyfish that split into smaller versions of itself when attacked, but then I happened across the first Starship Troopers movie whilst late-night channel surfing one evening.

It’s a pretty good movie and I haven’t seen it for ages so I ended up sticking with it to the end, and whilst watching it occurred to me that the theme of humans battling off waves of attacks from an insectoid alien race (often with fairly ‘conventional’ weaponry) wasn’t too far removed from Jetboard Joust!

I also thought that the gelatinous ‘brain bug’ at the end of the movie would work very well as an enemy that could split into smaller versions of itself so I used this as the inspiration behind my designs for the ‘splitter’. I drew inspiration partly from the movie and partly from an illustration I found from a 1970s board game version of the book which was simpler and more comic-like.

Image

Rather than try and draw the entire enemy as one piece of art I wanted to build it from smaller components so I could easily make versions at different sizes. First off I created a pulsing body. I tried a number of different versions of this and ended up using a variation of the segments from the ‘squirmer‘ boss. The segments all pulse at the same rate with but start from a randomised offset.

I then added a series of eyes based on the eyes from the ‘spinner‘ boss and a mouth based on the mouth from the mini worms that the ‘squirmer’ gives birth to. It took a while to get the placement of the eyes right, the end result heavily references the movie ‘brain bug’.

Once I was happy with the general placement of the eyes and mouth I needed to make them feel part of the pulsing body as, when simply placed statically they looked far too ‘stuck on’.

I ended up linking each facial feature with a body segment and changing the location of that feature based on the current scale of that segment. This seemed to work pretty well in giving the impression that the features and body were joined rather than overlaid layers.

Image

Enemy movement, as in Asteroids, is very straightforward as – a simple linear motion with a reflective bounce when an obstruction is hit. What was slightly tricky was deciding what to do when the enemy left the camera area. Originally I had it wrapping immediately to the other side of the camera (true to Asteroids). This was kind of cool, and I really liked the fact it was true to its roots, but unfortunately it made the gameplay way too intense – particularly when other enemies were encountered at the same time. I didn’t like the way it made the scanner look broken either.

Image

So I tried simply having them wrap when they reach the edge of the game ‘world’ but this wasn’t intense enough and kind of dull. Eventually I settled on a halfway house between the two, if the enemies are offscreen or nearing the edge of the screen a decision is made as to whether the quickest route to the player is to travel in the same direction or to reverse direction (I take world wrapping and the current player velocity into account). The enemy switches direction (or not) based on this. This keeps the gameplay intense as things tend to cluster round the player but it still makes sense within the overall gameplay paradigm – and it doesn’t make the scanner look like it’s broken.

Something else I’ve been doing which has taken up at least a day of this dev time is working on a ZX Spectrum themed palette and improving some of my palette code. I can now have three different palettes for enemies as opposed to just one. Whilst doing this I discovered some bugs in my palette shaders which were particularly apparent when dealing with 100% RGB values as are used in some of these retro palettes, these are now fixed.

Image

Dev Time: 4 days
Total Dev Time: approx 251.5 days
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Fri Feb 15, 2019 8:30 am

No prizes for guessing the classic arcade game that’s the inspiration for this latest enemy – yup, it’s another of Atari’s masterpieces – Centipede! Working title for this enemy is the ‘Scuttler’ (I already have a ‘Crawler‘ and a ‘Squirmer‘)!

The mechanics of this enemy are pretty simple, I thought the hardest thing to get right would be the algorithm that makes the segments ‘follow’ the head (I’ve had to right similar code in the past and got myself into a right mess) but the code I came up with, unbelievably, worked pretty much right of the bat!

There’s probably a better way of doing it but my basic approach here is to ‘remember’ the direction each segment is travelling and to continue moving in that direction by default each frame. If the total horizontal and vertical distance between one segment and the next is less than the desired segment spacing no movement occurs. If the segment aligns horizontally or vertically with the segment in front we switch orientation (i.e. from horizontal to vertical or vice versa). This seems to work well enough for my purposes but if anyone has any better ways of doing this I’d be interested to hear them as it’s a gamedev problem I seem to run into quite a bit.

Unlike the Atari Centipede I don’t have any mushrooms to run into to initiate a change of direction so I had to improvise a bit here. Changing direction when it hits buildings was an obvious one, but I also have it switch direction when it hits the edge of the screen (i.e. camera area) and, with a certain amount of leeway, when it aligns with the player on the opposing axis. This approach seems to maintain an authentic ‘Centipede’ feel whilst working within the confines of the Jetboard Joust gameplay.

I also added a slight ‘sway’ to the segments as they move as a fixed horizontal or vertical movement just seemed too ‘static’ in context even though it would have been truer to the original game. I want to tip my hat to these classics rather than slavishly replicate them.

Of course I also had to have the centipede splitting into two when it’s health is reduced which means things can get pretty manic (in a good way, though I’ve toned it down a bit since this video as things were getting too out of hand too quickly).

Image

I’ve also been working on a Centipede style retro arcade palette (see the GIF below) but have been running into a few issues trying to get this to look good across all sprites. The red outline you can see is used on some of the sprites in the original arcade game. I like the way it looks here as I designed the sprite around it but it looks terrible on many of the sprites I’ve already designed so I think I’m going to have to use a more generic approach. If I ever make another game I’m going to make sure I treat my outline colour as a completely separate part of the palette – lesson learned!

Image

Oh yeah, an accidental result of this that I really like is the fact that, on the scanner, these enemies look just like a version of the original mobile game - Snake! As I spent 15 years or so writing mobile games this seems somehow appropriate!

Dev Time: 2 days
Total Dev Time: approx 253.5 days
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

User avatar
BitBullDotCom
Remakenaut
Posts: 113
Joined: Thu Dec 10, 2015 2:31 pm
Contact:

Re: Jetboard Joust - Defender-Inspired Cute Retro SHMUP - Alpha Now Available For MacOS and Windows

Post by BitBullDotCom » Mon Feb 18, 2019 10:22 pm

Onto the last of the ‘classic videogame’ enemies now, this one draws its inspiration mainly from the wonderful ‘Space Invaders’ style shooter ‘Galaxian‘ and, to a lesser extent, its sequel ‘Galaga’. It’s also heavily inspired by my recent re-watching of Paul Verhoven’s marvellously cheesy Sci-Fi gorefest ‘Starship Troopers’. I’m calling it the ‘Swooper’!

I’d been thinking of doing a Galaxians-style enemy for some time but it was watching the ridiculous (but genius) scene in Starship Troopers where Rico takes out the tanker bug that really cemented the idea in my head. A similar bug would fit perfectly into the Jetboard Joust world and also really suit the ‘Galaxians’ style of attack.

So I started by working on the basic movement style which was really very simple, I use LERPing to rotate the enemy towards the player whilst applying a constant velocity in the direction the enemy is currently facing. This worked fine once I’d tweaked the parameters, resulting on a nice circling motion of the enemy round the player which I felt was quite insect-like.

Image

What was more complex was to get the enemies flying in formation. My standard approach to this kind of problem, and one I also used in this case, is to create a ‘hive mind’ class that manages the positioning of all the enemies. The individual enemies can report back to the ‘hive mind’ with various info regarding their environment but it’s the hive that tells them where to position themselves.

I tested a number of different algorithms for this – the one I ended up with allocates a leader for the hive who operates effectively as a solo entity with the movement pattern I described above. The hive mind calculates the ideal positioning of the other enemies in the swarm and I use LERPing again to move them towards this ideal position as well as to rotate them to align with the leader’s current rotation.

If certain parameters are met some of the swarms member’s will go solo, leaving the pack to chase the player in a more aggressive manner. The hive mind class manages this to make sure the entire swarm doesn’t break up at once.

I was particularly pleased with the way the swarm reorganises itself once one of its members is destroyed or goes solo to chase the player!

Image

The art for this enemy came together very quickly (for a change) – I used the tanker bug from Starship Troopers as my only reference and it just kind of worked! The thing that took longest was getting the rotation of the wings to line up properly when the bugs are in flight. My only slight worry with the art is that I’ve used very dark colours – this makes it look pretty badass most of the time but it might be too hard to see clearly in some palettes.

I was so pleased with the way this enemy came together that I added a smaller version, the Mini-Swooper! This operate in exactly the same way as the larger version only more of them can leave the pack at once and they don’t fire at the player, they just attack them physically. They are also faster.

Image

As a footnote – until looking it up just recently I was always convinced that ‘Galaxian’ was called ‘Galaxians’. It actually freaked me out a bit it was called ‘Galaxian’! Must be one of those collective false memory things like being convinced the Monopoly man wore a monocle!

Dev Time: 2 days
Total Dev Time: approx 255.5 days
====

James Closs, Director & Wielder of Code, BitBull Ltd

http://www.bitbull.com | http://www.joystickjunkyard.com

@BitBullDotCom | @JunkyStickJoy

====

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests