So where to start for this week?
Well, I guess I should get the bad news over first. Valentin, one of our 3D artists has left the project. He's been doing some great work, but I always felt he wanted to do his own art and after we discussed it we agreed to part ways. This is bad because Lance is only part-time on the project, so we're going to need to find another artist or two (again, sigh), but there are some upsides. Mostly, Valentin was doing work on the "junk" of the world, along with some machines and more recently the trade ships. I'd felt we needed to spend more time on the characters, because they are a hugely important part of the game. I'd been spending time with Lance to try and capture the essence of a "rig worker" so we could get those concept-wise and get them modeled and in the game. Valentin wasn't really into doing characters, so this probably was a good time to split so we could look for a character artist without having more mouths to feed.
So we are actively back looking for great 3D modelers who can do brilliant work on a mega-tight budgets and who have a vision for both characters and a junk-themed world.
On the upside art-wise, I've noticed that there are a large number of "prop" type assets on the Unity asset store that we could use for the game. Stuff that would be part of the "junk" of the everyday world of HOPE. So I'll likely spend some time next week buying those off the store (wish there was a way to add things to a basket, unless I've missed that).
As for code this week. I've been mainly working on trade ship movement debugging. Here's a debug shot of the trade ship(s) moving:
This image shows a few ships moving towards their target positions (red square).
Because the engine is component based, I split the code for this into separate components, one does the actual movement (and is responsible for moving the ship and updating the physics rigid body), the other actually calculates the movement positions, follows a path, avoids collisions etc.
You can also see another debugging feature I added, which is a "raster bar" speed profiler. This simple bit of code essentially times subsections of the main loop of the game and shows a per-update percentage scaled coloured bar on the screen so I can see if there are any spikes in performance. I added this code when I was trying to debug a particularly nasty issue with some physics objects either not moving, or taking up a huge amount of CPU time. It turns out that there wasn't actually a bug in my physics code so much as a bug in the exporter for the physx format from 3dsMax. Funnily enough, the ships were getting exported as static objects, even though I'd marked them as kinematic. This is a REALLY BAD situation, because PhysX does a lot of optimization for static objects based on the fact that they do NOT move. So I was trying to move an object that was never meant to move. Which had some hideous performance penalties and a ton of errors. Strangely enough, I'd actually been logging the PhysX errors that were happening, but hadn't made them actually stop the program when the occurred.
So all in all, a bit of an up and down sort of week development wise.
It has been really nice getting the ships moving around, because they lend a feeling of life to the world. Over the next few weeks I'll be implementing the code that actually spawns the ships when a trade is due, generates the cargo, manages the worlds resource flows etc. This is the basis for most of the economy in the game, so it might take a few iterations before I'm happy with it. In the meantime I'll be trying to get some more art in the game, particularly machines and structures, but also props and simple visual elements. I had hoped to get something together to show at Rezzed (an indie-friendly show held here in the UK), but I'm not sure that'll happen. Either way though I'll be at Rezzed discussing the game and indie life and such.
Here's one last image of the ships moving.
Until next time..