Animation Process At A Glance- Dev Blog 2

Gunboat God

Become the all-powerful Gunboat God in this fluid shoot 'em up. Carve the waves as you stylishly fight hordes of monsters in hundreds of quick-fire missions. Transform your Gunboat and upgrade your weapons, skills and abilities to take on giant, challenging, multi-stage bosses!

When I started prototyping Gunboat God and I was figuring out the mechanics, the style was already firmly set in my mind. I knew I wanted to use a strong silhouette style with a 3D-to-2D workflow. This was a great excuse to have heaps of characters to animate to make the game burst off the screen, but it also supported the genre of the game. [img]{STEAM_CLAN_IMAGE}/45053696/c55d28b924bff9decf3e147cf6a0c51c51385240.gif[/img] For each character-enemy, I have four enemy types to choose from. Birds (Woodlands biome), water-based (Waterways biome), boat-based mutants (Marshlands biome) and aircraft-based mutants (Ruins biome). Then I simply decide on a thematic attack and get to work on the character’s first pass animations. These are low-effort “blocking” animations that I can quickly create and export to test in the game. [img]{STEAM_CLAN_IMAGE}/45053696/f24a204468b44e343b54c3951868c68e2914f82a.gif[/img] [img]{STEAM_CLAN_IMAGE}/45053696/8aa315ac0421f7f5c43bbb28deab2a93c33e6d9b.gif[/img] [img]{STEAM_CLAN_IMAGE}/45053696/a722c69084e60eced470f1e45afdfa4beb319657.gif[/img] This streamlines the entire workflow, since I know that once I’m programming the character and implementing its animations, there will be a lot of detailed adjustment to movement, attack timings, and even the size of the character. Once the “first pass” programming is done, I switch back over to “second pass” animations, which is the polishing phase. Once I’m happy with the animations, I re-export for “second pass” programming. This is my special sauce for character development. Call it a one-two-punch workflow. So the breakdown is: [list] [*]Animation first pass (animation blocking) [*]Programming first pass (getting the enemy movement, behaviour, collision and effects working) [*]Animation second pass (animation polish) [*]Programming second pass (refining health and damage numbers, movement, etc.) [/list] After some time strictly following this workflow and getting comfortable with it, I was able to entirely develop a character in 2-5 days, depending on the size. Some small bird or fish characters would take 2 days, and larger humanoid characters would take between 3-5 days. Reasonably streamlined! [img]{STEAM_CLAN_IMAGE}/45053696/e7bcd6e49a16343fce3716754bfa47040752cc30.gif[/img] [img]{STEAM_CLAN_IMAGE}/45053696/4b04adb2f7fe7e4930efdee1c7f83860684fcb94.gif[/img] [img]{STEAM_CLAN_IMAGE}/45053696/5fe6d2cd2fe4f21bb2a0e53f39541c37c7b84f6b.gif[/img] Then there are sound effects and vocals to be implemented, but I generally work on those at random times so it gels with a lot of other development work. When I start working on a character’s animation, I first establish the “golden pose”. I take my time iterating and refining this pose, as it serves as a sort of style guide for the character’s animation set. Almost all of the characters have an idle, hit-react and attack animation, so once the golden pose is ready, those are the first things I animate. Then I move onto miscellaneous animations like airborne-flop (fish enemy), melee stab (knives enemy), or overboard and drown animations (various boat enemies). [img]{STEAM_CLAN_IMAGE}/45053696/18cab8f537b032347f3b5ebd56974119b145dcfe.png[/img] These animations are playblasted and imported to Photoshop as individual frames, where I wrote a script to clean up and export sprite sheets that can be easily imported into Game Maker. [img]{STEAM_CLAN_IMAGE}/45053696/9b242ca83430e4c1d192713dc4f6c1e8212a7bea.gif[/img] [img]{STEAM_CLAN_IMAGE}/45053696/6208a57423c1d858b0c3fc83bd140d9300f7a29f.gif[/img] Finally, in Game Maker, the animations need to be added to their respective texture groups (eg: bird character animations, water enemy animations etc.), their pivot points and collision masks need to be set, and their frame rate needs to be set. Then on to programming. [img]{STEAM_CLAN_IMAGE}/45053696/1f13a6d26e6e847cfac41adb025160950bc0ca3d.gif[/img] I hope this didn’t seem too glossed over. I’m restraining myself from making the blogs 100x times bigger since time is scarce. If you have any questions, let me know! [img]{STEAM_CLAN_IMAGE}/45053696/19d48b445224b4a4493506ff15463f459cc142c2.gif[/img] Follow me for lots of juicy posts on Twitter. https://x.com/jansonRAD Also join our Discord, where we might be organising a playtest soon! https://discord.gg/vSJjCU6TsW Best, Tom