Showing posts with label t3d. Show all posts
Showing posts with label t3d. Show all posts

Friday, 31 July 2020

My Feet Hurt, New Character And Goodbye DX9

So, apparently the new Blogger interface has been eating my images for the past 2 months ...
So expect to see a blank image leading to a 403 page soon™.

It's been the hottest day of the year here, so naturally I went out for a half marathon route march ... and now my feet hurt.

I finally finished off another playable character model, a shotgun wielding, propeller-powered catgirl, currently named "Southern Hospitality", complete with Daisy Duke hotpants. She has a short range playstyle with slow attack rate but high damage and medium manouverability. After each shot a new shell is loaded with a single handed pump-action for the obligatory "rule of cool".


And here's some video of gameplay.



Apart from finally completing a second playable character I have been porting over my project to the new and shininess which is Dx11 and OpenGl 3.2 (might be 4.0 I can't remember). This meant a final farewell to the much loved DirectX9.0c which I could just about write a shader with. No such luck on Dx11/OGL with such things as of yet.

This has required me to finally defeat the spaghetti code which I had previously wrote, slimming things down in C++ and removing bloat for the porting. I have only ported to the pre-PBR branch of the engine - so really 2019 code - as a stepping stone to entering the latest shiny stuff once I know what the hell is going on. So far so good. Everything seems to run fine - except for my broken Dx9 shaders but that was to be expected.

I've also stuck my hand in my pocket and made a new, capital purchase. Only had it out of the box once for a quick test. If Google hasn't yet fubared my images, here's a quick pic below.


It's been an awfully long time since I've done any drawing.

 
I also used a 14 year old camera to get some pics of Comet Neowise.



It was my parents Golden Wedding Anniversary. 50 years! Albert Speer only got 20 years in Spandau Prison!

Monday, 30 September 2019

Big Boss Battles


The Big Lad

So after the joy/struggle/despair/awkwardness* (*delete as applicable) of learning how the new Blender3D works and then creating an actual character to replace the player's Small Yellow Placeholder Cube, it was time to go after the remaining Big Red Placeholder Cube which had been standing in for the level boss character.

As ever things went horribly wrong for seemingly know apparent reason other than the entire universe having it in for me.


I had split up animations from the actual mesh - that way it keeps loading times down whilst changing things on the fly during development, and means that multiple models with the same armature skeleton can share animation data and thus reduce file sizes - when suddenly everything stopped playing nicely and went back to mutating into a horrendous mess of twisted limbs and multiplied rotations.

The reason this time turned out to be because I was exporting the mesh model in the first frame of the root animation - which is what you would want for blended animations - but I should have exported it out in a copy of the rest pose ... regardless of the fact that this had previously been fine with another model ... which meant that the solution was far down my list of things to test to see if it worked ...

Exporting COLLADA/DAE format from Blender to Torque has become even more specific in Blender 2.8, mostly due to there being a huge number more options available and thus a huge number more things to possibly go wrong ...

https://pbs.twimg.com/media/EDtDhZyXoAApzaI?format=jpg&name=large
I before E except after C ... Also Hierarchy which breaks the rule, and hierarchy is very important ...

I ended writing a little explanation of Blender3D to Torque3D Collada exporting and the importance of hierarchy over on the forums.

Eventually I managed to get "The Big Lad" - as he is currently known unless I can think up a name later - into the game and working. Here's a quick look at him in action. I say "quick" because he squashed me in not too much time. Select quality 720x60fps manually or youtube's autoHD says it's selected it but it's telling fibs.

I fearsome foe! Especially as I end up as pate ...

Apart from that, I modified my laser-beam-wielding veclociraptors by adding helmets and power-packs to them so that they now look different from the other dinosaurs which just bite.

Sharks Dinosaurs, with frikken laser beams on their heads!

I also spent some time modelling industrial scenery, lots of pipes and stuff for a forthcoming level. This will be the fifth level in the game, out of a total of ten - though they will loop for long play. No actual pictures of that yet as it is still all in bits.

So, that was the month that was. It got really warm and now Autumn has truly arrived and I've put socks on. Lot's of other things happened game development-wise but I can't really remember them. Next up is the Overgrown Industrial Level which has been reclaimed by nature, and more boss monsters.

Saturday, 31 March 2018

Math Is Hard

Apparently ... as our Western cousins like to say ...

Math Is Hard

And sometimes, it actually is.

 I was attempting to redo ... reimagine ... resomethingerother ... my current game's difficulty curve. This proved harder than I was expecting, and resulted in much flagrant use of Post-It Notes(™?).

Here is the issue. 

Cash dropped by defeated enemies increases by enemy lifeforce (not to be confused with Lifeforce, the 1980s UK/US collaboration which featured this hot bird with massive ... tracks of land ...

(insert own joke, image or reference here)


This film is severley underrated ... for scifi reasons ... also boobz ...

 And back to math ... or as us colonial imperialistic types call it ... MATHS.

I had previously devised (with help of arcane magick, alchemy and winged goblins) a perfectly good manner for AI enemies to have less cash as the player progressed. Here is the CRUX of the issue (somewhat appropriate as it is Easter weekend). The player score points on ANYTHING - especially cash transactions. So limiting the available cash to buy SWAG (powerups) in later levels was good ... but also decreased points which were available to be added to the player score.

So obviously I wanted to reverse the points reduction by letting the AI enemy have a fully score ... whilst increasing the cost of buying SWAG by points x levels x f***knowswot. And f***knowswot became an issue. Much mathematics was done - insert your own doge meme here - nah have this one:





Now you'd kinda expect this to be a simple mathematical reversal ... but that didn't happen. Much toil and even more trouble and three times as much bubble occured (note the reference to prove that I am a psuedo-intellectual). Anyhow, eventually, and after using half the world's supply of Post-It Notes I managed a solution


 
Like this but way more vacant in the eyes ... also more crying

 And so I emerged victorious, after destroying all the world's rainforests in little yellow, sticky papers.

Cost of opening SWAG parcels increased in line with AI  enemy's strength. And all was well in the kingdom of ... er ... game dev.

Tune in next month for all that stuff which I promised I would be doing months ago but have still not got round to!

That stuff I said I was going to do next

Monday, 28 January 2013

Feature Complete! Gameplay Finalized! No, Really.

Feature Complete! Completely Featured! Gameplay is all done and working as desired! Artwork is still somewhat a Work In Progress - but one thing at a time.

 After finalizing all of the gameplay script and code for the "Main Campaign" we actually have a fully working game.

The world generates randomly, the player and 5 Ai nations enter the game at equal distances around the edge of the game world, and promptly proceed to conquer it, tangling with the occaisional pirate stronghold and of course each other.

So here's a quick - and considerably edited - gameplay video of it all in action. It's early in the campaign so all factions are using poorly trained conscripts. We start off with the player already in "Tactical Battle" mode against the pirate enemy. It's a mountainous environment - but I only have one map at the moment so it's temperate terrain as a placeholder but it is using the weather and modifiers for the correct environment so it's snowing and everyone has a -10 actions modifier for not having warm armour on.

After a cunning victory - helped by superior numbers and low quality opposition - it's time to permenantly recruit some upgraded conscript survivors to the force of "core veteran troops" who are now giving a promotion and a class type based on whatever their personal attributes mark them as best at. Then back to the "Strategic Overview" mode where our dirigible full of brave chaps occupies the area we just won in "Tactical Battle" mode.

The Ai factions play out their own turns, distant from player so no view of what they're all doing and then the next turn starts afresh. I upgrade my "Grenadier" class by buying the blue prints for rocket grenades.

Next up we move tour lone dirigible into place for another assault against a pirate occupied territory. It's mountainous terrain once again, with the cold weather modifier but this time it's just cloudy and not stormy see we can see a bit further and both my troops and the Ai will have opportunities for "passive fire" during each others movement phase.

This time it's a defensive battle as I have to prevent the enemy from capturing my flag. The Ai chooses their tactics based on their own available troops and the terrain and weather conditions with a randomizer. They choose a full frontal assault which turns out to be a bit hasty as my superior force - in both numbers, weapons and veterans - hammers the tightly packed enemy advance with bullets and our newly aquired rocket grenades.

And then recruit more promoted recruits to my ever growning veteran force before getting back to capture the territory with the old dirigible in the "Strategic Overview" mode. And so it shall continue ...

That's the upshot of the 15 minute and 1 second video below.





I've thoroughly tested all the later parts of the campaign, fixed numerous bugs ... mostly caused by the fatigue of crunch, silly typos and the sort brought on by tiredness ... and am now satisfied that we are feature complete on the actual gameplay.

Obviously there's plenty of tweaks and tiny improvements available behind the scenes, you could fiddle incessantly for the rest of the century with these sorts of things, but it all works as desired.

Next up isn't a move into finalizing all of the art assets yet though. It's porting it over to the brand spanking new Native Script Massive Improvement Branch at https://github.com/GarageGames/Torque3D/tree/consolefuncrefactor that was designed by James Urquhart and embedded into a branch of the brand-spanking new "Torque3D MIT 2.0" by Dave Wyand. This should give the branch a damn good testing, and probably me too as I've been using 1.1F and not taken particularly much notice of the MIT code as of yet.

Extra info on that branch here and in this previous blog here.

Hopefully that'll all go vaguely smoothly.

After which it's back to art asset creation and to replace all of my placeholders with some finalized models and textures before thinking about a demo release hopefully towards the end of February.

Tuesday, 25 September 2012

Make Simple Character Model Quickly ... 40 Days Later ...

It was time to start making some basic characters. This shouldn't take long ... and indeed MOST of it didn't ... but then some of it did ...

Magnets!? How do they -

I mean, mesh deformation ... how does it work!?

I had recently played through my Ye Olde FPS - demo of which is still available here at 168mb. I had noticed the quite poor deformation on the shoulder and joint areas of the characters - though admittedly this had been the first time that I had ever looked inside a 3D modeling application and proceeded to model, rig and animate a character ... and it had also been my last. Since then I had created a new bone armature - this time observing some proper Torque structure (bip etc) - and animated to what I considered to be a satisfactory level. My placeholder Ai player model strutted imperiously across the landscape.




She had awesome slippers but appalling vertex deformation ..


I'd rechecked various old bookmarks - many of which no longer existed - and even more that had moved about teh interwebz but could still be found. Particularly I was after the guy who had created Lara Croft in TombRaider Underworld and had posted on GarageGames ages ago. I did find the thread but he'd reorganized his gallery and the pics were missing. Back-tracing to his website I found what I was looking for, simple, clear tutorials on getting meshes to deform nicely.  Also I remembered that I'd previously seen a guy who had worked on Gun had plenty of good general modeling mini-tutorials ... if a rather unfortunate website name poopinmymouth.com.

So, armed with all of this information, I proceeded to knock up my first model. My current project is a turn-based, squad tactics with a steampunk vibe. There are 7 nations/factions and each one consists of a standard unarmoured solider, light armoured - which is the same as unarmoured but with an ethnic/national helmet, stealth armour - same as light armour but camouflaged (yay for setSkinName(%skin); ), and heavy armour which will be some steampowered mini-mech suit - the body will be the same for all nations/factions with the appropriate regime's unarmoured or light armoured head poking out .

So I started out with the unarmoured model of the British Royalists - all factions start with Nation and then Regime/Governance (eg: US Republic, Chinese Dynasty, etc). It's steampunk, they're British, it's got to be a red coat. Throw in flared trousers, big boots, a peaked dress cap and the manly facial hair of whopping sideburns and a big old moustache ... in ginger. And of course goggles ... steampunk has to have goggles ... or a monocle. Not wanting every nations soldiers to have the same type of eyewear I'm going to have to vary it somewhat, so the Royalists have their goggles loose about their necks ... but they still have goggles.

After a fair bit of initial faffing I was pretty pleased and tried the whole thing with my rig and animations and it looked like some sort of terrible mutation had been involved in some sort of scientific disaster ... on a train ... which had crashed off a bridge ... into a Dynamite factory ... More reading up rigging was required and watching copious amounts of video on youTube.

Previously I had assigned vertices to bones via simply grouping them at full strength, which had caused the poor deformation in my first models. Carefully painting the weights seemed like a better idea and slowly but surely garnered better results - as did rebuilding various parts of the mesh incessantly ...

To quote an obese, chain-smoking alcoholic:
Success consists of going from failure to failure without loss of enthusiasm.
 In the end I was either satisfied or beyond caring ... possibly both, and decided it was good enough.


Imperial Strut animation - in the ancient Blender 2.44 which I still use ...

The model is currently only sporting a simple diffuse map with ambient occlusion. Later I shall create the specular and normal maps, as well as add various details to the diffuse, though not too many as I don't see much point in having hugely detailed models or textures when the player is going to spend most of the time zoomed out on the battlefield.

And here it is in video - note, the rifle is currently a whopping bit of 2x4 that I'm using as a placeholder model.



Note: I use an older version of Blender 2.44, and 0.964 DTS exporter. I do use DAE/COLLADA at times, but not for characters. This is mainly down to the animation system changing in the 2.46 version of Blender, and me not wanting to spend aeons learning the new method.


And one final thing. Torque3D game engine is now available under the most permissive of all Open Source licenses MIT.

Monday, 2 July 2012

The Ballad of Brave Sir Robin RUN AWAY! RUN AWAY!

Typically my blogs are written as full blown stream of consciousness style, which tends to be rather amusing, off the cuff, overly long and it also tends to mean that I forget to mention stuff that I've actually done, hence -

- 13th month anniversary blog part TWO!


Bravely bold Sir Robin rode forth from Camelot.
He was not afraid to die, O brave Sir Robin!
He was not at all afraid to be killed in nasty ways,
Brave, brave, brave, brave Sir Robin!




Oh Brave Sir Robin, Thou Art Inspiration To Us All!


Alas we cannot all be as brave as Brave Sir Robin ... which is why I've introduced the RUN AWAY  Mode.

It was something X-Com had, the ability to flee with your remaining troops in the transport at abandon the ones still outside to fate worse than getting set upon by a pack of Chryssalids ... actually that usually was their fate ...


Give back Rudi Unger!

Now in my project your troops are dropped by dirigible into up to 3 Deployment Areas of your choosing (left flank, central, right flank). If the battle isn't going well you can now retreat to the Deployment Areas and abort the mission, saving the troopers inside the Deployment Areas, including any critically wounded casualties that are lying inside them. Troops and casualties outside of the Deployment Areas are captured, never to be seen again. As it's going to have a SteamPunk vibe they'll probably end up being condemned to live out their days forced into doing something dastardly and unchivalrous like teaching 12 year old schoolgirls how to bake crumpets. Surely for men of honour there can be no greater shame!

Currently my Deployment Areas are just a blue/black striped transparent box which obviously needs changing to something with a bit more graphical gravitas. I've created a new in-game options button which brings up a whole list of options such as "graphics/audio options, save game (not working yet), Quit, etc" and "Abort Mission" is found under here (rather like ye olde X-Com).

Selecting it brings up a warning detailing that you will fail the mission (thus losing any territory if you are defending it in the Main Campaign game) and informing you how many troops will be rescued and how many will be permenantly lost to enemy hands. You can cancel if you think the losses are too great, or go ahead with the rescue and have a dirigible pick up the survivors. Rescued troops will retain all of their experience from kills recorded during the battle but will not get their additional mission experience bonus - to stop the player starting battles, withdrawing all his forces and then getting a free EXP point. NO cheating for you!



Run Away!

The ability to soil your pants and flee waving your arms in the air whilst screaming like a little girl startled by a large and hairy spider discovered hidden away inside of her lunchbox upon opening it is also mirrored in the enemy Ai. If you've been handing them an utter thrashing and they have become hopelessly outnumbered they will also think about legging it and extracting as many survivors as they can from an unwinnable situation.

 During playtesting I noticed an annoying little issue ... your troops automatically stop moving when they spot a new enemy so that you can decide on a course of action such as attack, move elsewhere or keep going. However when walking over rough terrain it is possible for the trooper to get repeated glimpses of an enemy Ai who you don't want to attack or can't attack due to your weapon's limited range. When this happened the player's trooper would stop every few feet and the player would have to reclick the destination to get them to move and then it would happen again. So I created a simple "don't stop moving" toggleButton. The player can now manually stop their trooper as normal, and when new targets are spotted the target indicator displays them to inform the player of the potential danger without halting the trooper. If the enemy Ai makes their reactive fire test the player will stop as normal and come under passive/reactive attack. Annoyance squished.

And I've also done some tweaking to the troops/equipment/deployment screens. Most of this is about throwing in extra warnings when you attempt to deploy a squad with guys either missing ammunition for weapons or not equipped at all. There's a fair few changes I still want to tweak into the deployment screen, mostly ergonomic/aesthetic, but it all works fine for now.

And now, back to Brave Sir Robin...

Sunday, 1 July 2012

A Year To The Day! Nope I Can't Count It's Been 13 Months

Apparently no blog for June then ... because I was waiting for the year long first anniversary of the start of my current project to post. And then it turns out that I can't count ...

So, this is the 13th Month Anniversary Of Starting My Current Project ... doesn't exactly trip of the tongue does it?

First up, let's get a little overview from the first blog back in June 28th 2011.



Wow, things have changed a bit ...

Turnbased squad tactics gameplay, somewhat in the vein of Laser Squad and the original X-Coms.


Check! We've got that and it even works and everything. Infact the only bit of the actual "battlescape" part of the game that is not fully functional is the Ai picking up other weapons (something which neither LS nor X-Com had). To be honest I do have an Ai pick up weapons function but it's a horrible illogical mess and needs rewriting so I can iron the remaining bugs out - and that got delayed only because I ate something a bit dodgy during the week and have had my head stuck in a bucket. Think pea soup and The Exorcist. No, booze was not involved.

My liver function test showed that I was suffering acute hypochondria and that my organs are all fine (or they lost my test results and gave me someone elses ...) but I've got some gastro-reflux-thing which definitely didn't like whatever I ingested during the week, cue demonic possession and pea soup.

The other thing not functional is the "armoured cavalry" support option, but that was always designed to be added right at the end after everything else was done, so no loss there. When existing it will be a large tank, unable to spot enemies by itself unless they are also a large tank, incapable of reactive fire, baffling expensive (like the real things), but capable of blasting large areas into little bits and being compeltely immune to electric weaponry, a specific of the Recce class. This is where the Sapper class and their myriad of explosives and flame weapons will come into play properly.

I spent most of the last month finding and fixing bugs in gameplay, as well as lots of tweaking and balancing. There was a whole load associated with the sapper and recce classes and their interaction with booby traps which required rather a lot of testing.

But now it all works and it works intelligently.

All three battle types of clear/assault/defend work. Ai will actively seek cover, defending Ai won't just hang around at their defensive position and take long range shots. If they're under attack and don't have the ability to reply in kind they'll move to a safer defensive position and then scout back to see if the situation has changed some time later. If a defending Ai isn't getting any part of the battle they will scout about their area to flush out lurking attackers.

I've given each class of trooper a new "reactive range", so now snipers don't spin round and take passive reaction shots at point-blank range, something which always seemed a little odd in playtesting. Sniper and Gunny class only commit to automatic reactive fire during the opponents phase at ranges of 200+, Grenadier and Sapper take the mid-range of 100-200, leaving Fusilier and Recce with the close-range 0-100. This all helps represent the type of weapons that are class specific and gives more of a tactical dilemma when ending the player's phase. Do you really want to leave that Recce trooper out in the open there? Do you really want that sniper next to that doorway that anyone could come out of without warning?

I've also tweaked the whole promotion system. Promotion is now easier because ... well, death is also rather easy and your troops can be have very high mortality rates if things go wrong. Stats also increase more than before as the first few promotions didn't seem to give too many advantages for the effort that they took. Panic is now much more likely for lower ranks and conscripts if higher ranks become casualties.

And that's about all I can remember of the last month ...

What I was hoping to have achieved by now was to have more finalized artwork done, but alas gameplay tweaking/fixing has occupied all my time. When I'm done with the fixing I'll give it a little roadtest on integrating the whole tactical battle thing with teh overall strategy campaign just to make sure that there is no HUGE PAIN IN THE BUM PROBLEM AWAITING FURTHER DOWN THE LINE.


And eventually we'll get back to this bit of the game - and stick the two parts together with duct tape

The strategy part works fairly okeedokee by itself save for a lots of tweaking for balance issues (I need to find a smoother way of limiting dirigible numbers because in testing they could really get out of hand) and an Ai versus Ai bug that I noticed aeons ago but never got around to fixing where the correct result was not always recored. Obviously this area also needs it's artwork finalizing too. However finalizing the "main campaign" isn't my immediate priority as I intend to create a "short campaign" mode where the player battles his way from the base of a triangular arrangement of hexagon territories to eventually capture the enemy citadel. The player will be able to pick their own route, carving a swathe through enemy territory, attacking fortifide positions to unlock extra equipment/weapon upgrades or by passing them to move on to the next level closer to their goal. More on all of that some time later.

So ... to recap ... it's been a full year to the day ... er ... and a month from starting! A lot of crap code has been written, a lot of crap code has been rewritten until it wasn't crap, we learned new things and then forgot them, we wondered why we did things in a certain way and then undid them only to find out that we did them that way because they wouldn't work the other way, we completely forgot the yearly anniversay blog.


It's been a year and a month and we now feel a lot less like this.

Thursday, 31 May 2012

I Break Everything And Then Fix It! Oh The Exciting Life Of Indie Deving!

I had a liver detox diet, lost the strange bicycle tire which had appeared around my torso, eat more fruit than anyone had ever eaten before, took up skipping - which is knackerising - bought a few crates of ale and a bottle of baffling expensive rum under the guide of death metal celloist (it was a very pretty bottle),
sat about in the garden because it had finally stopped raining in the Shire of York after the wettest Spring since 1907. And even found time to break everything that I'd done dev-wise whilst trying to fix it.

So I ended up changing my art style again ... immediately after I'd decided on what it was going to be ...

So it is now more "painterly" and less "abstract".


I'd done a bit of refractoring my working level, shrinking the size of the hedges a little and opening more gaps between them. I'd also noticed that I'd been getting a fair few failures on pathfinding with the Recast resource. My terrain is very bumpy and I'd set >1500 custom class CoverNodes about and done pathfinding between them with an automated script to test around 7 million paths. Initially I'd a rather worrying 2.5 million failures, and after a bit of saving throws in my pathfinding scripts, I'd got that down to <200k, and then thrown in a simple "move to nearest node where you can actually get a path" incase that 3.7% failure rate occured in game.

I'd improved my Ai, getting them to make decisions about when they should try and hide from the player. Previously they'd either stopped at distance if they were "support" or advanced if they were "assault". I've always been a fan of turn based strategy/tactics games ... which is why I'm making one obviously ... but sometimes their Ai has been a bit ... daft. Steel Panthers I'm looking at you. I added in a whole load of new thinking to make the computer act more in the way a player would, but still using it's randomized battle plan.

Suddenly my Ai were filled with awesome and powered by buttkicking, so it was time to remove all the little helpers I'd given them previously to make them more competitive, like maxing out their stats, they now get the same chances for decent stats as the player.

Which all goes to make battles more competitive, varied and fair.

Somewhere amongst all of this I'd noticed a few bugs so I'd fixed them, and thus managed to break "many things", again mostly pertaining to the Ai. After a fair bit more hitting IDE with a mallet I got things working again as they should do.


I'd also made a start on creating some player characters - or at least a "base character". I'd looked at some of the meshes that I'd got from Evolver for use in Blender some time ago, and studied one of these as a base for rigging and animating a custom character. I'm doing a SteamPunk vibe, so everyone "struts imperiously". I'm still using Ye Olde Blender 1.44 with DTS exporter 0.964, though I export with collada for the foliage/trees/bushes so I can use vertex painting.

I'd also made a whole load of improvements to my GUIs, such as adding a new button for reserving a shot at half maximum range if you don't want your little chap to be wasting shots on things miles away that he's unlikely to hit. In "loadout" I'd also added the ability to equip one chap and then have his equipment cloned to all unequipped troops - money and individual strength/encumberance permitting - which is incredibly useful when you have a bag of Conscript Militia who can only use basic equipment until they get promoted ... should any of them survive the battle.

Still to do is a bit more Ai thinking tweaking, a bit more environment tweaking, creating some finalized models for troops and weapons, testing the assault and defend gametypes, doing the art for GUIs, and errr ... general stuff. My bug fixing list gets smaller, my todo list doesn't seem to. Oh the exciting life of Indie Deving!

tl;dr good things happened, bad things got fixed, I'm eating a lot of fruit.

Monday, 27 February 2012

Feedback To Player When Nothing Is Happening

Waiting around, scratching yourself, wondering what the hell the Ai is up to ... if anything? Has it crashed? Locked in a loop? Waiting for input without telling you that it wants you to do something. Who knows?

---------------------------------------------------------

I had noticed occassionally decals would not work as expected but didn't think much of it as it didn't seem related to the stability issues I had been experiencing. I'd ripped out my custom explosion stuff and gone back to using automated functionality, and whilst this had fixed my disappearing decal, it hadn't done anything for stability. Eventually I noticed that things were getting deleted, random things like GUIs, decal data, SFX, and other things which was causing the stability issue.

Now I'd had previous experience of this a long time ago in a galaxy far, far away - and knew that it was trying to clean something up, failing to find it, and then eating something else.

There had been an issue ... located somewhere between the chair and the keyboard ... that had crept in very early at the start. However it hadn't surfaced until 6 or so months later when I'd had the Ai team in and working with near complete functionality.

I was attempting to delete a decal in the Ai's move routine which the Ai didn't even own, when I should have been using the decal management system to simple remove it.

BY ODIN'S HAT! Either extreme crunch or a sudden outbreak of sobriety had caused such a faux pas.

And with that fixed, stability issues disappeared.

So onwards and er ... onwards!

After replacing all my custom explosion stuff - for the umpteenth ruddy time - I'd also rolled back a few other changes which I'd recently made. Ammo packs went back down to their original 5 from changed 10. This means that ammo might need monitoring on the high rate of fire weapons and various rocket/grenade launchers. The fact was packs of 10 rounds really seemed to stop bullets being a resource and I might as well have just gone for infinite ammo - which I very much do not want (apart from in the handfull of hugely expensive rechargeable energy weapons). I'd made various tweaks to weapon and ammo weights, ranges, stopping powers, and scrapped the original idea of grenades exploding at the end of a turn in favour of immediate detonation. There were far too many instances in testing of hurling a frag and then getting shot when trying to step back into cover afterwards - thus making grenades a liability rather than another tool of the arsenal.

I'd sorted out a whole load of Ai related thinky-thinky about equipment, decisions on using grenades, swapping weapons and finding more ammo if they run out. Which all took far too much effort to synchronize and stop them from changing their minds halfway through doing something. Various tweaks to initially equipping them were also made and some dodgy mathematics fixed.

All of which brings me to having the player wait for things.




When one of the player's troops comes under fire during their active turn, control is momentarily removed and then given back when the incoming projectiles have either impacted or burntout their lifespan. During the enemy Ai's turn, there's a lot of waiting around obviously - which does tend to happen in sequential turn based games, in fact it's supposed to happen or it wouldn't be sequentially turn based ... er ... obviously.

So I've developed a camera and information system to give the player feedback when they are in "passive mode" and do not have direct input control. This starts as a basic GUI announcement that it is the opponents turn, and some basic information about what is happening. At it's most basic this is a simple "Hidden Movement" announcement, telling the player that stuff is a-foot, but none of his little chaps can see it.

This progresses to giving feedback on things that are in the field of view of any of the player's troops, such as an enemy going beserk and shooting indescriminately, fleeing in panic, or walking into a booby-trap that the player had placed at the beginning of the battle. The camera moves to whichever trooper is the most relevant, displaying their Name, Rank and Class, and information about what is happening. This can be about that particular trooper being in danger, to returning fire, to viewing something passively such as enemy panic or new enemies spotted. Eventually I'm considering tweaking the "Hidden Movement" part of the passive phase so that the camera shows a random part of the map as scenery, rather than just lingering on the last trooper that had any information to pass on to the player.

All designed to keep the player up-to-date with pertinent information and views of the action during the phase when the player has no control.

And here's some vidya of it all in action. It starts off with me planting a shed-load of booby-traps ... which the Ai then avoids by using dual flanking manouevers ... ah bugger. This just happened to be the tactics it chose, the opponent not having any clue where booby-traps are until unless spotted by a "Recce" or "Sapper" class (Sapper's can defuse booby-traps by walking into them). The enemy do however walk into an IED on either flank and there's a bug displayed in the player info where the name of the viewing trooper is not displayed with the information (since fixed!). At the very end there's a little demo of me fragging the main group of IEDs and watching them set each other off with secondary explosions.

The majority of the video is just gameplay, with an emphasis on the camera and feedback system during the player's passive phase. It features "Stormy" weather type which has visibility of all troops reduced to 100 units. (There are 4 weather types with troop visibility ranging from 300 down to just 50 units/metres).





Next up, finishing off the Ai's decision making about which equipment to use in various situations, having the Ai take more advantage of cover, and use a wider dynamic avoidance rule when moving as they do still tend to knock into each other on corners. Also required is an end of battle screen featuring stats on how each trooper did, their current state, promotions, the chance to recruit new core troops from any deployed militia which did well in the battle, and an overall battle rating.

After that it's about sorting out armoured cavalry (also to give the sapper class something to act against as an equaliser with all of it's explosive class-based weaponry), make sure the whole thing loads and saves correctly, and then it's about time to make some proper maps/battle arenas for the post-alpha game.

Wednesday, 21 December 2011

Data, Data, Data, 28 Items, Multi-Purpose Ammo, Artillery

Item data overload! All items finally done, at least the data and how they all work in game - still placeholder models ---> Art is last on the list. Also multi-purpose ammunition, for people who are tied of not being able to use similar bullets in multiple weapons.
--------------------------------------------------------

Weapons, items, armour, artillery ... done, finally. Or at least the data and testing for them all it done, if not the final 3D modeled form of them - that's for last on the list of "What Needs To Get Done And In Order To Have Done Everything". So everything is still placeholder in the visual department. No pics this time, but cue vids.

So, here's a quick recap.

There are 6 classes.

Each Class has 4 levels of items.

There's also a "generic" class of 4 items everyone can use without penalty.

Ammunition of a each caliber can be used in any weapon of that caliber.

There are booby traps which can be placed before the battle for the enemy to walk into, and thewse can be detected and captured by the Sapper Class.

Most items are weapons of some form, some are equipment, and some are defensive (like armour).

Light armour is ... er, light. Heavy armour is ... er not light. Stealth armour is camouflaged. Whilst thinking up various defensive equipment for the classes, I also thought it might be fun to have some "non-conventional". I decided on a certain type of armour, which defended the user not by stopping damage, but by reducing accuracy of the firer by dazzling them. For a visual, I decided on some sort of energy shield, and was drawn to the old WW1 battleship "razzle-dazzle" camouflage schemes - only with a bit more colour in it and a moving pattern.


Amongst the variety of standard and conventional weapons I thought up a few exotic ones such as a badly spelt "flammenwaffen" - since renamed Flammenwerfer - a lightning gun that fries things - unless they're in a faraday cage ... say totally metal heavy armour ... in which case they don't do any damage at all - various rifle grenades, portable mortars, flamerockets, sniper rifles and machine-guns ... there was also the Railgun, which punches a hole through everything for 200 metres, reducing damage as it goes.



And artillery, in fact a few different types of artillery, each with different damage, blast radius, accuracy, but also a concussion radius to stun. There are rockets which are all noise and no trousers but scare the hell out of everyone nearby and cause large morale loss and panic. More standard artillery strikes and heavy mortars, guided flame bombs, and also carpet bombing by dirigible.



And for all of this hurty-hurty stuff, I needed a healy-healy system. So aid-kits are dual purpose, healing wounded squad members as you'd expect by increasing health - but also being available to create medivac. I rejigged the damage system so that disabled squad members who are not killed outright will fall wounded and slow bleed to death ... unless you can get someone with an aid-kit to heal them and call in medivac. Eventually they'll be a nice screen for this medivac but right now there isn't. Medivac-ing also boosts everyones morale a little as it's good to see your mates saved to fight another day.



And throw in a shed load of bug fixes and general improvements.

------------------------------------------

My original deadline of completion by 1st January 2012 will be missed by a mile - but I'm still vaguely on course for completed gameplay with placeholder art. After a few rewrites that were costly in time, and the occurance of total burnout around October that caused an end to continuous crunch, it's still not a bad effort and should be completed early in the new year.

Wednesday, 9 November 2011

Kitting Up, Deploying Out, Inventorial reFlummoxing

Interface for "one-off battle-mode", choosing your squad and tooling them up to the nines. Also a total rewrite of the inventory system ... again.

--------------------------------

With the vast majority of the dirigible moving, hex gobbling, Strategy Campaign Mode gamelogic completed, it was back to the Squad Tactical stuff.

To make testing and debug rather easier I developed the "one-off Battle Mode" to cut out having to go through the Campaign mode to spark a battle. In the final version, the single Battle Mode will be the training mode for the player to familiarize themselves with squad combat, or just if for a quick and casual "get to the actung, baby" mode.

There are various preferences with this, from squad objectives of clearing the area of the enemy, to defending or assaulting team headquarters ... which will probably end up as being a sort of first to grab the enemy colours wins when I get it sorted out.

Difficulty controls how much money, veterans, quality of veterans, class based items are available. It works as a balance, "Easier" gives more of the opponent's default ratings to the player, "Harder" strengthens the opponent and reduces what is available to the player.

There are also options for terrain type and weather conditions, with weather reducing visibility and spotting chances. Weather also acts as a factor to which of the eight offensive strategies the Ai opponent squad will decide to use.



And of course the player can choose which ever of the six factions to play as.

This then leads to the "deployment and equipment screen" which is the same before any battle regardless of game mode. Here you can select which veterans, or untested militia troops to deploy, areas where they'll start, and all the equipment and ammunition that they'll be carrying into battle.

There are six individual classes of squad member - each with four levels of specialized equipment, which in Campaign Mode have to be researched and purchased, and in Single Battle Mode are dependant on the Difficulty Setting. Save for a few highly specialist items, any class can use another's equipment, but they will usually incur some form of penalty. For weapons this is usually a reduction in accuracy, for armour a penalty in the squad member's Action Points. For some very basic items there is no penalty, eg: everyone can throw the Recce's flashbang without penalty as it's used just like a standard grenade.

This equipment and deployment section brought me round to the terrible task of redesigning the whole inventory system ... again.

Terrible because apart from it being fairly convoluted and time consuming ... it's also as boring as hell.

But it does look and work better now, being much more user friendly. Gone are the segregation of weapons, ammo and equipment - now replaced with a scrollable up-down list of everything together. Originally I'd seperated so that you could have weapon and ammo displayed together - but the fact is that you can do that with this method AND show an additional 60% of items with a lot less scrolling involved to get through them all.



The squad member deploys into the game with the first weapon or item in-hand that was in it's deployment equipment list. And the deployment equipment order is now matched in the in-game inventory.

I've also prevented live explosives from being picked up. There's a two-fold reason for this; firstly, putting something that is about to explode in your backpack is a very bad idea and secondly, I wanted to eliminate the "live grenade relay" that was common in the original X-Com, were you lead scout spotted the enemy, and then the guy furthest away pulled the pin on a frag, and tossed it from one side of the map to the other, along a chain of squad members in a highly unrealistic and rather cheaty manner. This is now a no-no.

And that's about it for this blog. Next up is sorting out the enemy Ai team to successfully use one of the eight different offensive tactics I've come up with for them, and generally sort out the whole tactical battle system and make sure it works. Also work out a formula to how the Ai opponent decides to deploy and equip it's forces. After that it's integrate it into the campaign mode with team member promotions for successful survivors with extra experience, and adding militia who did well (got a kill and survived) to the core of veterans.

In the meantime, vidya of the above in action.

Monday, 30 May 2011

Dubious Demo 2.1 Released! Vow of Sobriety Ends!

Dubious Demo 2.1 is out! My vow of sobriety is over ... but it's 4am and there's no liquor in the house ... this is what happens when you don't plan ahead ...

... WINNING ... TIGERBLOOD ...
... but enough about Omroth and Frozen Synapse ...

Dubious Demo 2.1 is released! Finally! And considering it was 2 years between my first and second demos, this one has been a mere 6 months.

So, whilst you twiddle your thumbs - perhaps as an Indy Dev waiting for the release of Torque3D 1.1 Final (and the opening up of a new bug forum for it :P ), and if you can pull yourself away from Frozen Synapse for a moment, have a little go on Stevie's new demo.





It's had quite an overhaul, new info sections on the GUIs, an intro system, the start of the Narrative Campaign mode featuring level 1 single player scripted level. This has a checkpoint system for saves in-game (not to an external file, gotta work that out yet) so you'll respawn on death at the last checkpoint, and all static pickup items will also respawn to help you out.

PLOT! Not just the sound of a pig diving into mud ...

It's also got a vague narrative to the action some meaning ... you probably don't need meaning to blow aliens to bits ... but nonetheless it has a world beyond shooting to ground the action. Cue cutscenes! Some are player driven with next/back buttons, some are automated to music, these have countdowns telling you how long you have to wait ... all have skip buttons. Nothing worse than not knowing how long a cutscene is gonna take ... except for not being able to skip it!

And now there are 2 levels to play through on the randomized battle mode, and now you've a proper enemy - "The Thing From Ur-anus" ... hordes of nasty little alien beasties desperate to stick the tentacles where you don't want tentacles sticking ... shudders.



And of course my perchant for jokes ...


There's flares, airstrikes, and loads more "stuff". Catchick gets joined by the East Riding of Yorkshire Constabulary, and 3 types of seriously unfriendly alien menace over 2 different, huge levels, 1 narrative campaign mode and 2 randomized battle modes featuring 6 different gameplay mode/styles.



Anyhow, it's in the same place and has the same name as before - yorks.deta.in , weighs in at 170mb download - just click the picture of CatChick and read the info on installing (best not to install to program files as I've not sorted the UAC out yet).

And if you're really lazy - here's the direct download: http://yorks.deta.in/download/YR_demo2_setup.exe

Many thanks to Admiral Akba... er ... Ronny for the webspace and bandwidth. :)

Anyhow, this demo gives off a much better "feel" of how I want things to be and a general direction that I am aiming for.

And that's enough rambling ...

Here's some action showing the 2 main set-piece areas of the scripted Campaign Mode (level 1). Look at that tracer fly!

Wednesday, 23 March 2011

Death of Drawcalls - Birth of Cutscenes, also Flares, Checkpoints

First up, after years of spamming the site with jokes and the occaissional helpful post, I joined the hallowed ranks of the Titans, striding the earth with inflated ego and a pair of socks pushed down the front of their pants ...

... that's the GarageGames Associate program to normal folks.



Steve joins the other Associates for hor d'oeuvres at their Fortress of Perpetual GrimDark

So, on to drawcalls ... and ... oh wait ...


That's better ...

So, back to them drawcalls. I've a vague recollection of mentioning the damn things before in about a gazzillion blogs, but I'm always on the lookout for screwing every last bit of performance out of the engine. I'd been looking at my last demo and wondering if I could amalgamate more of the textures on the buildings. There's a lot of tiling going on with them ... so I decided to try a few experiments in reducing the sizes and adding more sections on to a single image. There was obviously going to be a fair bit of a loss in detail quality, especially close up - but as my work has obviously never been about heavy psuedo-realism, I figured I'd be able to live with it.



Original prop building at the top (5x 512 tileable textures), new single 1024 texture at the bottom.


And live with it I can. I still need up to 4 meshes for an enterable building (exterior, lightmapped interior, lightmapped props, and transparent windows). But for "prop" buildings I managed to get away with a single 1024 texture. I wasn't always able to get a mesh into a single drawcall, occaissionally requiring more, but over all my worst saving of drawcalls was 50% and my best 80% for enterable, lightmapped buildings. All my prop buildings had their drawcalls reduced to 1 from around 5. I also decided to cut out a lower LOD and suffer a few more polys at mid-range now that there's less drawcalls.

I'd also tried the same thing with my many road sections - but visually they really seemed to suffer in a much more noticeable way. So I decided to make a "supermesh" roadsystem which promptly truncated because I'd turned all the warnings of in Blender ...



So after splitting the new supermesh up a bit I'd added 130K polys to the scene for the loss of a poxy 31 drawcalls and no performance improvement with some dodgy shadowing along the now more open meshes ... which wasn't really win ... and promptly reversed the roads to how they were.

After seeing Brian Mayberry have lots of fun with glowsticks - I decided on more function creep and created flares for my player. I'd wanted to avoid a torch (US: flashlight) as it's a bit obvious and always availalbe in a HL2 type manner --- nice flashlight resource though CSMP. The flares are actually quite useful as some of my levels are intending to be "dark" - in fact Level 1 corridor crawl is fairly dark - and I've hidden pickups in various dark corners.

Which actually brings me to Level 1 of my Campaign - which is about done, just a bit more drawing to do for plot devices., but all the action is scripted and tested and tweaked and retested. There's 2 routes through it, it's got a nice ebb-and-flow of action, from scary melee based monsters creeping about in the dark, to intense, open firefights and back again.

My single player narrative campaign mode did throw up a few new issues. I created a checkpoint system so that a deceased player didn't have to restart at the beginning ... which would be fairly annoying as it takes a good 30 minutes to get through the level regardless of which path you take, and you can crossover between them in a few parts. My checkpoint respawning threw up another problem of finite pickups. Yes the dead Ai drop ammo, grenades, etc - but if you're already bulletless then it's kinda hard to get at a whopping great big alien tooled up to the nines with an automatic weapon from 100 units away when you have a melee ranged cricket bat. So I had all the "static" pickups respawn with the player, via a new permanent field that I added to the code (I'm still slowly chipping away at the cpp before getting around to making a full frontal assault on programming at a later date -- I did try to create a custom "thin" version of shapebase but it didn't go well).

All in all it works quite nicely, the extra ammo helps if the player is finding it tough. The player respawns into the continuing game rather than a reloaded one, so if you've killed half the bad guys at a position before being sent beyond the mortal coil yourself, you only have the remainder to get past. I've still to sort out a full "external" save system for campaign progress or restarting a game half way through.

And so on to cutscenes - or really player controllable in-game comics. There's next/back buttons so that the player can flick through triggered plot scene. These are mostly for story, my jokes, and occaisional hints/tips. The story boards and in-game comics are there to "complement" the gameplay - but there's a big old "Skip" button if the player would rather just get back to the action without flicking through them all.


Never let it be said that I ain't a sucker for dry wit ...

In other news, I added a visual indicator of the number of player lives remaining in the "random battle" mode (3 lives for each area - previously you had to read the info to know this and then keep count), and will also add this to a selectable "challenge" mode for the campaign levels. Eventually I'll figure out some sort of scoring system for all modes as well - not particularly important in campaign, but it takes on more significance in "random battles" and any possible, future co-op mode.

Anyhoo - vidya! Here's the comicbook and flares in action ...



And here's an older one without them which features a play through of the first 5 minutes of one of the routes through the level.



I've a few more things to sort out yet, a bit of GUI refaffing for various menus, and finishing off level 1, plus creating a randomized battle mode for that map. And then I'll release a new demo, probably next blog - which will be done when it's ready.

Thursday, 17 February 2011

Creates Tutorials, Conquers Resources and TDN, Slays localClientConnection Hax

I use the Torque 3D indy game engine, and to be honest it always had a rather steep learning curve. The site is a mine of 10 years of coding and scripting information ... but rather disjointed and scattered, so I decided to make a tutorial on creating a simple, single player first person shooter game to help ease the initial bewilderment. It's the "Simple FPS Tutorial".

On the Gargegames/Torque3D Indy Game Engine Site, my profile's "submitted resources" count has increased hugely. Admittedly the sheer scale of this expansion ended up being driven by the character and word count associated with the blogs/resources rather than my own quest to fill an entire page and bit of the resources section with my own graven image.

Resource word count had shrunk somewhat, no doubt down to the new servers and general on-going web flux and reorganization that came about with sinking of IA and the rising of GG. Plus the return of the "backslashes eating posting bug".

So an inititally planned three part series, which was then extended to a four part series, in the end became a twelve part series with a considerable amount of waffle stripped out, ending up being a "just the facts, ma'am" set of 12 tutorials that answer some of the most repeated questions posed by scum-sucking, whining, noobs ...

... er ... I mean ...

... valued and respected newcomers to the GarageGames and Torque Community.

So, by the time it takes to publish 4 or 5 Penny Arcades - which is about my last remaining tenuous grip on the actual concept of measurable lengths of time - all parts were written, tested, tweaked, refused uploading, seperated into more parts, tweaked, tested and forced down a copper wire. And then converted into a rather dodgy pdf format (having not done that before) using some open source stuff I found lurking around the net, before finally shoving it into the newly created T3D tutorials section of TDN ... which I also had no idea how to do, and made a right mess of Ronny's formating in the Tuts section until he fixed it.

And so, it is done ...


mfw ... minus the ears ... and boobs obviously ... and good teeth, I'm British ...


It's a step by step tutorial covering what is required to make a simple single player FPS:


Starting a New Project (also covered in docs but I wanted to start the beginning at the very beginning)
Creating the game area for the level
Making Custom Weapons (Art and Script) files for semi-automatic and full-automatic weapons
Having both weapons share a common file for particle effects and audio
Making a custom Player
Making a custom gametype
Making a custom Ai and associated simplistic combat scripts <---- often asked question by scumsucking n00- community newcomers. Previously the answer was both esoteric and hidden in forums/TDN.
Using paths for the custom Ai
Scripting gameplay <---- triggers FTW!
Creating a cool explosion in-game <---- games love explosions!


In the end, only three files are ever edited by the user (datablockExec, scriptExec, default.bind), all others are custom created from scratch ... so there is no overwriting of stock data.

Anyhow, the stock response to new forum posts asking about any of the above should now be:
TDN is your friend


Obviously I had to bang this "Simple FPS Tutorial (single player)" out as fast as possible, especially after what Renee had been threatening to unleash upon the world. Simple FPS Tutorial would have appeared to possess a puny manhood post release of such a monster. So first blood to Steve.


Steve Pictured After Final Tutorial Upload

And the pdfs (with the accompanying custom files for reference) are availabe on eb's Unofficial Torque Community Upload System.

Phew!

So with that done and dusted, and basking in the warm glow of my supernova'd ego, it's time to return to my own project, originally codenamed "Badger of Doom" but possibly about to be renamed "Steve's Folly".

"Steve's Badger" ... no, let's not call it that ... has been somewhat of an organic creation, learned on the job, from the school of hard-knocks, studied in the sweltering miazma of here. Suffice to say there's been some hax made over the years, just to get stuff working and not have to think about. It was either that or whine incessantly in the forums. But, with the stars right it was the Penny Arcade upload to bring forth the mighty sword of spanking, and begin the momentous task of slaying every custom use of the dreaded ...
%hax = localClientConnection();


Said mighty task ... ended up not being quite as fearful as first thought, and was wrapped up in time to see Arsenal score the last goal against Barcelona on the telly. There was some amusing moments to the task though, the highlight of which was:

function serverCmdUnmountWeapon(%client)
{
echo("Server Command to UnMount Weapon - " @ %client.player.getname() @ ".noFiddling = " @ %client.player.noFiddling);
if(%client.player.noFiddling != 1)
{
%client.getControlObject().unmountImage($WeaponSlot);
LocalClientConnection.getControlObject().setarmthread(looknw);
//...


Did you see what I did there :P
Oh how we laughed!

And now we have fully functional networking, regardless of the fact that it's single player, nice to have stuff working properly with pretty script rather than ... that. In fact there's still one small issue but that's 'cos I've got a little hack to interrupt "player move" in code using a global and we'll have to let that wait before we attempt a frontal assault against the code.

So, back to gameplay creation it is. I've had an enormous, completed, but rather empty of action corridor crawler level for what seems like eternity, and it needs turning into a working single-player FPS level.

Video of the play-through of the completed Simple FPS Tutorial

Monday, 7 February 2011

Drawing, More Drawing, More Ruddy Drawing - also Theora, GUI

The previous few weeks have consisted of drawing, more drawing, and even more drawing, interspaced with faffing, more faffing and even more faffing, around with various ways to get a Theora video, and then not liking the quality and deciding on a GUI replacement instead.

----------------

[gravelly_American_voiceover]
Previously on Steve's rambling dev blogs:
[/ gravelly_American_voiceover]

I might have mentioned something about drawing an intro sequence for the narrative campaign part of my game. All the big games have them ... not that I've played any of those things in aeons, infact the previous weekend consisted of Penny Arcade (which I quite liked - a bit grindy though, shame the series got canned) and X-Com Enemy Unknown (which is X-Com UFO Defense ... not sure why the name change between UK/US but hey ...), a game which I actually had on floppy (no really kids, games used to come on plastic squares ... and before that it was tape!), and which I rebought from Steam ... not having a floppy drive anymore ...

Interestingly to mention or not as the case may be 'cos it's just occured to me ... these games all have animated intros, with the 1994 X-Com being closer to the static comic page style one bloke in his man-cave ended up using.

I'd had the overall idea taking up unnecessary amount of room in my brain fro a few years ... admittedly more in gazzillion dollar production values rather than one guy with a cheap and intermitantly malfunctioning A4 tablet from Win98 days who had completely forgotten how to draw ... and line drawing is somewhat less simple when your tablet isn't the same aspect ratio as your widescreen monitor ... A4 does not perfectly divide by 16:9 ...

I never managed to get the speed of completion down to anything reasonable but proceeded to "bang stuff out" and the line graph of "production" rose as the variable of "give a toss" sank. I ended up having to cut a few sequences/jokes due to not being able to fit them into the constraint of the music I wanted to play over.

The art style is supposed to be fairly fast to produce and easily replicapable - at least the last bit worked :P -, as I want to include the occaisional triggered comic page event in-game - but not too many of them, and most will either be plot or joke related, with the idea that narrative should give the gameplay a background in which to exist rather than just a "Ramirez, take down that X with your Y" ... plus that's why it's called the Narritive Campaign section ...

I also wanted a more naturalistic art style, but something not entirely heading in the opposite direction of my in-game 3D art, and I wanted to avoid the whole Japanese style ... talking of which ... brace for jokes!





In fact I ended up throwing in a pun on japanese comics.





Anyhoo, job done on that, and I set the whole thing to music as originally envisioned, and then converted it to Theora ... which didn't go as well as hoped. The Theora codec had a real hard time of coping with the subtler light/dark contrasts and a lot of the backgrounds ended up looking hazy and with visible moving errors on them. Even maxing out the bitrate didn't clean it up (but it did look better) and came in at around 17mb, my actual image files are 8.5mb ... so I reckon I might as well keep the quality and have them display as a scritped GUI sequence - with a skip button obviously, so the player can get straight to the action.

Whilst venturing around the interwebz on Theora related hunts, I did come across a whole load of Theora stuff including a slideshow creator which is basically what my intro is. It wasn't any use to me in the end but there's the link incase anyone fancies a look, and there's a load more Theora stuff at that site.

With >9000 hours of drawing finally out of the way (or at least, the huge load for the intro bit done, they'll be more of it in much smaller chunks in the future), it's back to actual game deving, and scripting the action for level 1.


In other news, I seem to have fixed a fair bit of issues that I'd experienced when I released Demo2 (not updated but still available for download courtesy of someone else's bandwidth) and after a fair bit of testing ... things seem better ... oh wait ... when I say "I seem to have fixed" I of course mean ... other people in the GarageGames bug forums have ... I just implement and test stuff I find lying around ...




Looks better in HD, but you knew that.
Also spot the balls up, one of the image isn't in a panel but gets a full screen stretch (fixed for in-game).

Thursday, 18 November 2010

Splosh Screens, Selection Screens, Demo Screens

With construction of a vaguely working alpha demo in progress, I was hammering away at the splash screen license obligations ... a glance to irc and wtf everybody's just got sacked that worked on the engine tech I use ...

So, it's been user interface work recently, and additional gametype ... err ... types.

I'd been quite chuffed with my implementation of a randomized gametype, and had expanded on the initial idea. There were 5 open areas of a 2km level, the player was randomly equipped and initially randomly spawned at one area and each area had to be cleared in any order the player fancied. Random numbers of Enemy Ai were randomly spread through each area, and randomly armed with either short or long range weapons depending on what sort of view they had. Hiding inside a house = short range, view from a window or rooftop = long range.

I figured I could throw in a few more random ideas to increase gameplay, and so came up with strongpoints and counterattacks on top of clearance ... which happen ... randomly. Thus each area could be a standard clearance operation where the player had to hunt down each Enemy spread throughout the area, but now it could also be an assault against a randomly chosen building crowded with hostile Ai, or the enemy Ai would come looking for trouble when they heard allies shooting ... but only halfway from their defensive position to player spawn area to prevent spawnkills. Regardless of random tactic type, all short-range weaponed Ai always counterattacked over a very short distance to prevent themselves being picked off at range, that way long-ranged Ai would stay put to provide supporting fire whilst short-ranged would be mobile around the goal node.


First attempt at Ai pathfinding in level

And I'd managed to fit in my "anti last man standing" idea, where the allied Ai swarm over the location of the last remaining enemy, thus preventing those frustrating "can't find the last bad guy to finish the level" type issues which can occur with such things.

I gave the player 3 respawns per area, and had dead Ai drop either ammunition, grenades or a small health pack. Each area took me around 20 minutes to play through, and taking down all 5 areas of the map could take 2 hours. So I made a "fast gametype".


Level Selection and Fast Game Mode

Fast gametype was a random strongpoint attack in a single area, with a slightly more beefed up number of random enemies to guarentee plenty of action. This made me think of a few variations for additional gametypes ... but ... y'know ... one thing at a time.

As ever, I found a gazzilion issues with everything I did, great swathes of script wrote at 5am that were never going to function properly in the cold light of day, and various other bugs that got stomped on and features that got relentlessly tweaked.

All this new stuff needed a user interface. Not just for mission selection, but also the type of instructions and info that you'd expect, such as what the controls are and what the differences between the various weapons are.

First Attempt at user interface that vaguely makes sense

I also thought that it might be a good idea to explain what the hell the whole thing is ... plus I then had to look through all of my stuff to see what I'd used. Now, I have attempted to do as much as I can almost all of the audio is my own - but I couldn't get a good fire/burning loop, but everything else is self done. All of the models are hamfistedly made, rigged, textured, animated by myself. I used various self shot photos for base texture templates and tiled them myself ... and then got the rest of the templates from on-line. Fonts and music weren't even worth my attempting and so were straight off licensed from the start. I haven't even looked at Fmod Ex yet, having just thrown in the audio dll. And that's all this stuff takes so much time.


Credit Page attempt 2

And then there were some annoying issues. My pathfinding is based on a waypoint resource, though it hasn't scaled well to such a large and open environment. I've got a level with a lot of changes in height and direction and the sheer number of waypoint style objects for the Ai to navigate around the whole thing has eaten 25 percent of my performance - which is annoying ...

But currently ... that's how my alpha demo will be going out. Afterwards I'll have to take a look at nodegrids and maybe other solutions as a replacement.

Also I need to do a bit of 2D artwork to "tart" it up a bit, and 2 of my buildings are still placeholders. And there's some functions hacking I think I might try as a performance test ...

But all in all, we're well on our way ... and ... allegedly ... I should be able to crank out a rough but playable demo full of issues by the end of November. Which is 12 days away ... awww hell ...

Thursday, 21 October 2010

Environment Completed ... Sort Of ---> oh wait ...

Environment Completed ... Sort of - oh wait ... haven't I already used that blog title? And actually it's the same level! But things have slightly changed ... if "slightly" really meant "quite a jolly lot". 2km of open game world, with 838 random AI spawnpoints - count 'em.

Click the pics to view them full size if you're squinting.



Right-ho, so what have we got? One 2km map with full drawdistance. 88 buildings, 34 of which are fully open, furnished and lightmapped for a bit of extra vavavoom - because blank shadowed interiors are boring on the eye. 178 random props such as telephone boxes and pillar (post) boxes - it just wouldn't be England without big red things in the street - regardless of the fact that the red telephone box has been killed off and replaced by things that look like transparent urinals ... which they often become at 2am on a Friday night.




Bus stops, benches, litter bins with amusing messages, petrol (gas) stations with amusing messages, other stuff with amusing messages, old style lamp-posts (which you can still find in places - in fact I know a pub that doesn't have electricity, but is still using Victorian gas lighting! It's as dark as hell and you get stoned off the fumes but it's "quaint" and they do a good pale ale) ... and then there's trees and shrubs, which all gently rustle in the wind thanks to the wind vertex shading. In fact there's 1600+ of them ... thank Sickhead for imposters.



LOD like hell!


And then there's the actual gameplay kinda stuff. I did promise ... possibly just myself ... brain far too frazzled by all of this, for correct retrieval of memories ... to have something resembling the randomized gameplay which I'd conceived.

So to such an affect, I had a good long hard think about how best to do it. Spawning a shedload of AI at the startup seemed out - both in terms of playability and performance. So I decided to split the whole level into areas - 5 of them.



So, there's 5 areas, and the player starts off in one of them - randomly. That area then becomes active, and spawns a random number of enemy Ai which seek to defend that area. They're randomly armed depending on their goal position - so if they've got a long view they'll have a long range weapon (rifles, lmgs), and if they're hiding in a small room away from the windows they'll have a short range weapon (shotguns, smgs). And there's a random chance of them having grenades. Each area has between 150 and 200 random spawn/goal nodes. So there's a fair bit of available randomization.



Never let it be said that I'm not a sucker for a crap joke :P


There's a random number of these Ai spawning, anywhere between 5 and 24, so each play-through an area will be different, sometimes a "bughunt" with lots of jumping around corners quietly hunting the enemy down at close range (which does get quite tense when the prolonged silence suddenly shatters with closeby gunfire), to large scale firefights at multiple ranges from many directions. There's also the trouble of spotting and identifying targets at long ranges, often a case of following the incoming tracer back to it's origin, the enemy all but hidden, crouched behind a window cill or lying under a bush at 200-300 metres, so at long ranges you end up putting a lot of fire down on "areas" rather than targets, a la Full Specturm Wariior or IRL as it's also called. :P

It does give the feel of battle which I've been looking for ... dangerous and confusing without being unfair (ArmA I'm looking at you!). It's coming along and as much as "one bloke, in his bedroom, trying to make computer games" can create the halfway house between the arcade style of Call of Lawyers and the anal (if blatantly unfair) realism of ArmA/original-OFP.



And this style of working gameplay also showed up a few issues with my Ai. Mainly that it took a while for them to go through their attention routines at close range, they'd hear you walking up the steps, but it'd take a while to increment through their thought processes to become panic-range alert, and a fast moving player could confront them before they were as ready as they should have been, and thus get a few seconds drop on them. So this, I fixed, and instead of incrementing the alert, they jump to which ever is neccessary (but not from full unalert status so they can still be surprised - though in this type of "all action - non narrative" gameplay I use a hack so they're always on-guard).



The slogan was going to be "Bringing Oil To Your Shores!" but I thought that joke might be too subtle


Once one area is clear, you can choose another by simply moving into it. And to give you some help, there's a map which shows the areas ... in fact an entire SitRep overlay, where your weapons/ammo and mission status are displayed. The map shows all tehhe roads and major buildings as well as anything else of interest (first aid stations!), but it's a static map, no updating dynamic object positions. You have to use your view of the objects around you to orientate yourself to where you are ... just like real life! And yes, I am a cartographyvert. Google Earth ... oh baby ... you're so hawt ... show me those hillocks ...



Okeedokee, that's what I've done ... now what I still need to do.

Models - still need a church, and one other "special building" that can get reused for a few things, think slightly grand, I still need a train station, a general building with an open interior and internal balcony (like a pub I know in Scarborough).

A couple of other props, a coach/minibus which I'll probably convert from a truck and a police car, which will be a USAFB Security car with a different paint job.



AI - Currently my Ai is static, there's no pathfinding in this level, and the sheer size and openness of the environment is gonna take a bit of extra thinking about ... not least how to get a gazzilion pathnodes in there in the easiest manner possible - though limited early tests went fairly well.

Then it's sorting out a friendly Ai system, and I don't think the classic system of "trigger-directs-to-nodes" is going to work on something of this scale ... or they'd be a whole lot of triggers and nodes ... and there's already plenty of them. So I'm currently thinking of having the allied Ai as a sort of "escort force", dynamically keeping themselves to pathfinding within a short distance of the player, and then rushing off to target threats which reveal themselves. I've also thought long and hard about "lastguy-itus", where the player has swept through an area but just missed the final, lone enemy. If it gets down to just one badguy left, I'm thinking of having the ally Ai just charge his position. There is nothing as annoying as searching for one last asshole hidden behind a closet ...

As for the enemy Ai, I need to stop them spawning where the player can see them when a new area is activated - easy enough to have them spawn away from their goal and then move to it. I also need to setup a counterattack situation where hostile Ai may randomly enmasse charge the player team. I also need them to be more proactive at defending their own positions, thus randomly again, having some short-range based Ai hunt the player down through their house when they hear them enter it, rather than just wait for the player to run into their room.



And that's about it so far. I do have "some" kind of gameplay in a large, 2km open area. And performance is good for it all too, looking at the magical 60+ fps at x1080 with normal settings.

And here's a little vid of said randomized gameplay, looks better in 720 HD @ youtube of course. I've been toying with a "zoom/ADS mask" which features in this vid, but I've since changed it as the original restricted vision way too much. This is unedited and lasts about 8 minutes.