Jeez, 4 1/2 months is nothin'...
Uhh, yeah, so June 2007 was when I posted last, now it's nearly October 2008. What happened ?!?! Well work happened, just been working alot on stuff at work and staying late as well as working on stuff for work at home which means I had precious little time to work on any home projects.
But one thing I did at home (which I eventually used at work anyway) was a nice Visual Scripting System. This essentially sits on top of LUA and allows data and signals to be passed around to nodes which can be custom nodes (native code) or LUA scripts and more importantly the whole system is pre-emptively multitasked (well using pre-emptive co-routines in LUA) which allows dynamic balancing and entirely data driven.
Anyway makes high level scripting much nicer to do and easier to understand and change.
Other things out of work were getting my whole development systems (2DG, 3DG , GEDI and supporting libraries) all to be platform and endian independant , this now means StarRaiders runs perfectly on the 360 at an excellent framerate using exactly the same data as it's PC counterpart which makes prototyping very fast, so here to end this rather shorter than normal blog is a vid on StarRaiders running on the PC
StarRaiders PC test :
http://www.itsallagame.com/downloads/StarRaiders2008-09-25.wmvNow it's time to resurrect Stig....
4 1/2 Months Later....
Well , it's definately been sometime since I blogged, not that I was lazy, (well maybe a bit), but I don't really like showing updates if there's nothing to show, not that there isn't of course, now anyway, but for a little bit of time there was, anyway on with it..
So what's changed, well first a slight revamp to the editor, this was to locate all commonly used functionality in a convenient custom toolbar that used the D3D device to render as I was and sometimes still do get graphic issues when I have my windows dialogs over the D3D area. So this is a get around but is very nice coz it has nice big shiney buttons that go on and off, I like things simple
On the subject of editor functionality, I also introduced a custom data dialog editor, before I just had a listbox that allowed you to change data for an object but it was simply typing in values and no sense of context. Now I have a little cool library I found on the net that I've integrated that allows me to give data context (type, suffix, range, lists, colour pickers etc.), which makes changing the data for an object a pleasure instead a chore.
To test this I created a particle editor object which is now used throughout the game but helped me iron out loads of problems with the dialog editor.
Which brings me onto other features, well you can shoot plasma bolts, they can be rapidly shot or you can build up to a powerful plasma bolt that can destroy multiple ships with one blast (something like RType some might say..)
You and all other ships have plasma impulse and warp engine effects
And you can blow up ships too with your plasma bolts resulting in a nice explosion and appropiate shrapnel flying all over the place..
And all the creation and destruction indirects through a semi-automatic caching system , which keeps things nice and fast
Looking at some of the images you may have noticed alot of other ships on the background, these are the ships I licensed from 3DRT, lovely models, although I had to do some work to get them in but they do look fantastic, polys range from ~300 for simple fighters upto 30,000 for the high LOD of the dropships , and the normals maps really help
So , now these are all in, I can start on low level behaviours, first of all I'll be adding a simple messaging system so I can send messages to any WorldObject through a defined interface, and it's upto the derived classes to respond, or not to that message. This allows me to changes behaviours through data, say on a cutscene timeline or a state graph, as well as hardcoding.
Then primary/secondary goals, ability to try to keep to a spline as best as possible, general navigation and avoidance,group minds for formations... blah blah blah, the list just goes on and on, one step at a time...
Ultimately, I want to be able have a bunch of craft flying towards a destination, and then engage in a cool space battle with them while they try and continue to their ultimate goal, be that to attack a spacestation or descend through the planets atmosphere, but want it feel more like BattleStar Galatica and classic shootemups (RType ;-) ) rather than a game where you spend ages firing at a pixel in the distance flying through space. I want to be in the middle of a 'f**k load of trouble' when it kicks off..
So , hopefully, not another 4 months pass by before my next blog but it's hard to show all the work that sometimes has no immediate visual impact, but generally takes majority of the time. I want to have a video up on YouTube accompanying the next blog too, fingers crossed...
Marcus
Ohhh, Shiney !!!
Happy New Year , another Christmas out of the way and the start of a brand new year. The Wii indeed kept me busy as did Zelda, but that means it's been nearly 2 months since my last entry, naughty.
Anyway on with the news, I've taken a slight detour with Apartments, well, slight being a little understated, I've put that on hold for a while and in the meantime have started on a game with some friends. It's currently in its very early stages but it's exciting and allowing me to push GEDI (my game development tool) quite a bit as well as working on a project all linked up with Subversion, it's current working title is StarRaiders : Armada
and from that you'll probrably havea good idea of the type of gameplay. Very arcadey action orientated 3D space shoot-em-up, in a nutshell.
Anyway , here's some screenshots to be getting on with, the first couple are of a ship I bought off Turbosquid in Maya format and naively thought I could load it into MAX, oh what a fool I was, 3 days later of remodelling,retexturing and optimising down from over 100,000 polys down to 8500 I'll be sure never to make that mistake again. It flys lovely with a 360 gamepad linked up, I'll also be putting in mouse control in too ast some point..
The next are some lovely models I've licensed from www.3drt.com which come complete with normal/specular and diffuse maps which form 80% of the hostile forces.
So, now I'm updating my object property editting in GEDI to use a far nicer interface whereas before it was pretty painful, also realised I need to link GEDI automatically to Subversion, as data is modified through GEDI it's hard to keep track of changes that have been made to the GEDI repository, so an automatic add/delete from SVN is required.
Want to get on with the fun stuff but it's sooo important to get the tools pipelines and turnaround as efficient as possible, believe or not still a point not always considered important in professional game development yet as far as I'm concerned it should be the first port of call when getting people working together on a project.
And so Another Month Indeed Flies Past !!!!
Well, it was October the 19th since my last entry and it makes me feel a little lazy but to be fair I'm working full time and only doing this in whatever spare time I can find, still need to be a bit more disciplined though.
Also I've just ordered a Dell 24" widescreen fabby LCD, that'll get me more focused... or maybe not ? Anyway, on with the update
Pathing Finding Version 1 Done
ATs can now pick any object in the Apartment Block and navigate their way to it using the stairs etc., there still alot of odds and ends to finish off like
Smoothing the path
Localised avoidance
Partial path blocking to stop ATs sharing the same path
Addreffing nodes for when furniture is placed down and removed
Only enabling the IK when I use stairs or slopes, triggers slightly when the ATs walk causing a slight stutter currently
But I'm happy this is done. And to top it off it's super fast so I can place down tons of ATs and they all use the same system with very little overhead.
Anyway here are a couple of screenshots
In doing this it also made me realise how bad underengineering can be, I'm a classic over engineer but I realise I need to sometimes curb my ambition just to get the simple things working but I went a bit too far this time and ended up with a system that felt hacky, not-reusable and quite hard to debug because of all the special case issues. So in future I'll still curb my ambition but prefer to be slightly more over engineery than under.
So what now, well, I want to clean up some of the pathfinding, not too much mind you as it may well change when I start putting in some of the other missing features such as character avoidance and furniture avoidance. Then I will move onto the data driven animation state machine which I've been looking forward to getting started, it'll be a refreshing move to Stig for a while as I have some test cases in there for testing it, lets hope my Dell LCD doesn't distract me too much, or my WII, or GOW, or Zelda... ohhh sh*t, I'm not gonna be back before Christmas am I ?! Oh well , if not have a Happy Christmas and New Year.
M
Focus Focus !! FOCUS !!!!
The eternal problem of games development for an indie, well for me anyway, trying to focus on one thing without getting bored with the more monotonous elements and jumping onto something else more exciting.
It's been a month since my last conf.. ehhh post, since then I've been pretty busy with doing a Havok constraints demo with a tornado showing a street scene of objects getting ripped apart by a small tornado, great fun and I mainly did it for a test for work even though I did it at home.
Then I decided to work on some more animation for Stig, again trying to help pre-empt some potential problems at work to ease our pain, but seemed that no matter how much stuff you do in your own time to help work out there's always someone not happy with it.
So sod it, work stays at work now, and I'm back on the AI and pathfinding of Apartments and the separation of the animation system into a more data driven animation states and transition approach as opposed to the partial data driven systems I've done before on character based games.
So, first things first, for the AStar I need to have a robust and flexible Binary tree, not to mention fast, so I've just finished a templated binary tree with contiguous nodes and no allocation required when it's used, also as it's templated the user data is embedded in the nodes making data locality very efficient. Should come in useful for a load of things.
Once that's done it'll be time to link up the astar algorithm and give it a good old real world test.
Let's see if I can keep focused enough to get it done before another month flies past !!!
Hashing Hell
Well what a fun couple of days that was !, sometimes you make decisions and in the back of your mind you know that the decision you're about to make will bite you in the butt at some point. But regardless you make that decision anyway, so one of my many 'ahhh, it'll be alright for now' decisions came back to bite me as my rather naive algorithm for creating hashes finally broke and I started getting collisions.
This resulted in me having to change the size of my hash from 16 bit to 32 bit which invalidated my data for all my projects and I've just now finished migrating all the data over to the new format.
In a way it helped me clear up alot of little issues I had in my editor as well as making my hashing much more reliable (by the way this is what I used, excellent fast hash function
http://www.azillionmonkeys.com/qed/hash.html), but put me back a couple of days, actually come to think of it I was setting the behaviour hooks and classes for all my known Apartments objects, so wasn't even on the pathfinding, frick!!! I'm going backwards...
Anyway, even though alot of work has been done nothing on what I actually wanted to do , so hopefully now I'll get back onto the hooks and classes setup and after that, which should be quite quick, onto pathing finding again.
Wii price point announced today, looks like I'll be preordering one of these from the States and using the cliched 'it's for research and I require it for my job' excuse to the other half.....
M
Animation System Sorted
Hurrah, the animation system works again now and all the root movement is derived from the animation, also supports multiple animations of varying length to have input into the position which is good for fighting games etc.
Its scary sometimes how something that seems like a simple change hits so many places, I had to change my XSI and MAX exporters, animation interpolation,blending and skeleton system all to support this one change, but it feels right and another sign that it's going the right way is the code is getting smaller and simpler yet is more functional.
So, now it's the pathfinding system for the ATs, something that I've been meaning to do for a long,long time. This will be broken down into 2 parts , standard a-star nodes that I define manually in the editor (I could have a generic flood fill roaming agent approach but it's a bit overkill for this project) , and then a localised search and avoidance stage.
The nodes will also have a callback system linked to a game object, for instance 1 node will represent the door on flat 1, and named appropiately so, so an AT can find the door to flat 1, find the best route and make their way there. Once at the node the node will send the AT a message with the door object and the AT can then continue however they see fit, open door, knock, walk through if open etc
I'm also thinking more and more about having a nice graphical animation state system, on previous games such as Shaun Murray Wakeboarding I would have a simple data driven approach or even hardcode quite a few of the elements but this will need something a bit more complex, but I don't want to do what I tend to do sometimes and go off and create a massive bit of tech to handle a small problem.
Anyway off to watch the new series of extras, tara....