Monday, 30 July 2018

Of Wendigos And Monstrous Morris Men

There's been a heatwave ... and I have got "The Dreaded Lurgy". It's not been a great combination. However, though only tenuously attached to this mortal coil with sickness, I have risen from my death bed to write this blog, and show the work I've been doing whilst on death's door ...

I was going to do some spiders as enemies for the player, but instead ended up grappling with some sort of Wendigo/Beast of the Wilds/Herne the Hunter sort of thingy-majig. I have bought a number of models, mostly for the animations, and have decided to retro-fit and modify them for my purposes. So I amalgamated a number of models in creating "The Deer Hunter", a sort of archetypal monster of the wilderness which I intend the player to come across in a rather desolate and windy steppe-like grassland.

The Deer Hunter, available in four earthy flavours

I was umming-and-ahhing a bit about how to spawn them in the level as it seems almost everything comes out of the ground. One it's convenient and two it sort of fits that creatures emerge from their own lands. To give a bit of variation, and to avoid everything clawing it's way out of the ground like a zombie, I decided that the Deer Hunter would rise up as though propelled on a lift (that's an elevator to our former colonial cousins), holding it's skull in it's hands, and then fit it's head into place. I thought it was a rather amusing effect.

Over here son, on my head!

I also thought that this might be a good time to introduce the player to invisible enemies. They come in two types based on the shader effect I used. One is a slightly wavy Predator style optical camouflage effect which produces near invisibility whilst the other has an internal shadow which makes the distortion more noticeable. I still fondly remember playing Doom against a horde of pink Demons when suddenly I realised I was getting bitten by an invisible one. Learning that some enemies are (semi)invisible is always a nice shock for the player.

Another variant on this stag monster was the "Monstrous Morris Man".  This is basically the Deer Hunter with different antlers, wearing a Morris Dancer style rag coat (a coat covered in strips of rags). That's the bit inspired by Morris Dancers and thus there is a lot less drinking ale and prancing about waving a sticks, and no guy called "The Fool" with black smeared on his face. Why has he got black smeared on his face? Because he's covered in shit and doesn't know it. Why doesn't he know he's covered in shit? Because he's "The Fool".

Monstrous Morris Men in colourful rag coats

The rags themselves were looking a bit flat, so I created a second UV channel and unwrapped it using Blender 3D's automated lightmap unwrapping, so that none of the polygons overlapped and that they were all clustered nicely side by side. I then baked ambient occlusion to this channel. Once exported and in-game, I added the new ambient occlusion image (with alpha inverted of course!) into the Overlay channel of the material file.

Ambient Occlusion from the additional UV channel helping add depth

The Monstrous Morris Man comes with a long range special attack, and is able to throw some sort of energy bomb over distance. Other than that, all these creatures are melee based. Below is a video showcasing various spawning, deaths and finally special attack.

Another month, and more progress ... and a being ill in a heatwave, which is a real annoyance. So next month ... maybe get those spiders working.

Wednesday, 27 June 2018

Monster Modelling Mayhem

Apparently the UK is under a LEVEL 2 HEATWAVE WARNING ... not that I'd know about such things as I am covered in a blanket of fog with a chill wind coming from Svalbard, to the extent that I am expecting angry undead lepers to start banging on the windows demanding their stolen gold back. But as this is not the Weather Channel, on with the show ...

 Not the heatwave you are looking for ...

I am currently at the stage of development were I am replacing the beloved placeholder cubes with actual models, thus creating unique enemies per level with their own abilities and statistics. So far I had wanted to introduce the player with some familiar enemies for level 1 in the shape of 3 different types of zombies (it appears I am the only person on Earth who has never really been into zombies, Day Of The Dead being the only zombie movie I ever had any interest in). After this I had some rather spiffing Velociraptors and even gave one type the ability to shoot "frickin laser beams" out of their mouths as a long range special attack.

Everyone loves dinosaurs ... until they're eating you ...

For some later levels I had thought about going for a riff on the classic black knight look. I came up with the idea of interdimensional knights who suffer instability, constantly being dragged in and out of their own dimension. To this purpose I used an animated texture with various changes to alpha and a patterned diffuse with the edges of the various elements of the model picked out in colour.

There are 2 types of Shadow Knight, Axeman model shown here

The Warp takes me! It's feels slightly off putting ...

Spawning, pre audio effect

These still need animating. Whilst the models were of good quality (though needed a fair bit of work to make them useable through Blender) their stock animations were a bit ... average, so I intend to go through my huge library of mocap BVH files to find something more exciting. As interdimensional entities I'm thinking that they might just float around rather than run.

Noting that most of my game enemies are melee based, I came up with a plasma rifle toting "Mantisman" alien. This is an actual Torque model by GarageGames back when they still made game engines so you'd think that it would be set up the same as the other stock stuff. Alas no, as it was plagued with various inconsistencies such as strange bone settings whilst used the animation files to fix the baffling rotational default offsets. Needless to say this really made it not just a pain in the arse to modify the base mesh but also meant that it's animation were not compatible with the other GG models. In the end I scrapped trying to retrofit the multiple death animations and came up with a simple solution - just make the damn thing explode on death. Problem solved. Another major issue was that the stnadard aiming animation method just did not work at all. Flcuk knows why but I ended up having to use the old Mark 1 Eyeball with trial and error adjustments which ended up with around a 20% offset from -85 degrees (which is the stock downwards aiming constraint). The alien rifle needed a good remodelling too.

Mantisman in action, and now renamed "Kralmok Warrior" after the gun

Initially I just used a variation of the zombie explosion death, using the engine automated "blowUp" function. With MantismanKralmok Warriro being a larger model than the zombies and thus splaying further forwards so that it's not centralized to it's origin (another inconstitency that made me wonder what were they thinking) it ends up looking a bit obvious when the mesh disappears and goo rains down. To get around this annoyance I made a custom explosion debris featuring various recognisable body parts of the main model.

Boom Splat!

The plasma rifle got a remodel and some custom projectiles. I also gave it a long range special attack that features a barrage of bullets with long tails, whilst the standard shot it an energy ball.

So, next up, more modelling. The Shadown Knight's need animations and the Kralmok Warrior needs a bit of tweaking and multiple skins/textures for some variation. Next enemy on the list - Spiders! Cos everyone loves spiders!

Sunday, 20 May 2018

Dinosaurs With Frickin Laser Beams

The last month has been entirely dedicated to the long and winding road which is replacing placeholder cubes with actual art assets. This has required me to finally upgrade my 2007 version of the free/open source Blender3D modeling app, to the all new, all singing, all dancing 2018 version. Thankfully, very little has changed in hotkeys, but boy has a lot changed elsewhere - especially animation - all of it for the good.

Last month I discovered - completely by accident - that I could convert FBX models to a more useable DAE/COLLADA format through Visual Studio. The lastest version of Blender (2.78c) also has an FBX importer, though I found it doesn't always import correctly, especially with animations. This seems to be down to the specific type/build/version which the model was exported with in FBX. Some work fine, such as the GarageGames Zombies and Solder content packs at whilst others require saving out as DAE through Visual Studio. Either way, it seems that I have a solution for compatibility.

Original on the left, Blender export on the Right - are you boys related?

Talking of GG's content packs on Github, I got them working with Blender and then exported with animation et al quite nicely. Whilst the basic rigging of the armature/skeleton is similar, there are some differences in the arms between zombies and soldier models, which meant that to get the extra death animations working with the zombie armature required a bit of manual rejigging in Blender's animation system. A quick read through the online manual was enough to bring me up to speed on how modern Blender differs from the 11 year old version I am more accustomed to. Turns out the Animation Action Key Editor was hidden under something called Dope Sheet Editor ... whatever one of those are ...

Anyhow, here's a big long thread on my exciting and occaisonally confusing adventure into successfully exporting FBX through Blender3D into a Torque3D compatible DAE format.

 The (FBX) Thing That Came From Blender ...
I decided on 3 types of zombie models, each with 4 different coloured outfits for variation. I also exported my models with seperate head meshes and scripted a decapitation system, as well as a body exploding system to add some extra gore and variation to destroyed enemies. There are 3 different animations for spawning, all of which are crawling out of the ground with 4 different effects for particles and audio. There are differing animations for root, run, sprints and various attacks, all helping to make things visually more interesting.

Testing zombies spawning from underground

So then came dinosaurs .... with frickin' laser beams attached to their heads.

You got dinosaurs instead

I found a rather nice Velociraptor which had full animations to license. It required a bit tweeking for what I wanted. Rather like the GG zombies on github it was highly detailed in bones and my isometric/top-down Swag 'Em Up does not really require all these fingers and knuckles to be clearly visible in animations. I cut down the tail, real velociraptors might have found a massively long tail great for balancing but I thought it just got the way when they turned around in game - halved the tail bones and merged all toes and fingers into single bone per hand/foot whilst reparenting all of the required vertex groups (or else they would be a hell of a mess when the mesh deformed and found it had no parent bone). This removed nearly half the armature and would thus save on overhead in game - something which you should always thing about if you are likely to have "a lot of stuff on screen" - and player's like "stuff".

Dino a-cute!

Like the zombies, I reworked animations to create new spawning and root animations, randomized attack animations and created various different coloured skins (all of which are a bit brighter than the original) to keep everything looking different. Velociraptors are also exported with a seperate head mesh allowing for decapiations and they can completely explode too. One extra thing which I wanted was for the some raptors to have a rather unexpected range attack - literally frickin laser beams. I modified the roar animation to be used to fire an energy beam with a randomized colour from their mouth.

Fricken Laser Beams!

So ... that was a very productive month with plenty of things that are more interesting to show than just me saying "I did some code". Next up I want to make a couple more death animations from scratch for the raptors, and add more obvious magus/liche type character for the zombies with the magic projectile attack, possibly with a Hadouken style attack animation. After that we are on to more enemies of varied and different types ... anyone got a fear of spiders? [cue evil laughter]