I’ve been making lots of improvements to the game engine over the past couple of weeks and I just wanted to shoot out a few videos showing some of the new features that have been implemented.
The first is the new, smooth vision cones. Now, when a Creature wants to look somewhere, it isn’t able to instantly look at that new direction; it has to turn its head smoothly. This is fantastic for making sure creatures notice other creatures standing next to them when they’re changing direction.
These are the new class of unit called Sentry. They’re exactly the same as the “Enforcer” class (as in: they have guns, they run at stuff and shoot it) but they can be linked to a trigger and HAYWIRE!ed. If someone HAYWIRE!s them, they change their “Team” to the hacker’s team and immediately fight on their side. The one in this video has 9999 health so he easily wipes out the entire level.
And finally, this is the new “Spawn-in” mechanic and graphic. I can add creatures mid-campaign now with a little “drop pod” animation. You also notice the ground shake a little when they land thanks to the new Camera.VibrationStrength setting. Also, the game crashes if more than 20 creatures try to pathfind at the same time.
I’ve made an improved version of the Campaign Editor now that actually allows you to load-in a campaign you’ve created; previously you could save your campaigns but never re-open them for editing. That’s finally working.
There’s not a lot to talk about at the moment as a lot of work has been done lately in expanding the game engine to implement a lot of game-specific functions for the current project, which I can’t really elaborate on at the moment in much detail. However, I can deliver a new video for the new month, as well as a screenshot!
I’ve spent the last few days drawing corpses in heaps of different positions and integrating them into the game. When someone dies, it randomly picks one of the corpse positions for that particular character design. Some awkwardness came from the fact that corpses are a fair bit larger than the normal character sprites and they span more than a single tile, so I’ve actually made the game render all corpses before any other entities to make sure they go underneath everything else.
I’ve spent a fair bit of time on the “Dying” and “Dead” logic while making these work and it seems to be in a pretty good place now. Unfortunately, when you destroy a computer, it drops a human corpse at the moment. Easy to fix; a silly result.
I’ve spent a lot of time recently finishing off a sheet of graphics for one set of human characters. Now that a lot of graphics are available, I’ve started adding in new animation routines to play-out in different situations.
Making these work has lead to the creation of new behaviours to go along with the graphics. Now, when an entity wants to react to a gunshot by returning fire, they first check if they can actually get a bead on their target. If they can’t, they will start running towards the place where the sound came from. As soon as they can see their target, they go back to walking and start shooting at it. If the lose sight again, they’ll run.
Lots of other little animation details have been worked in now; creatures always face the direction they’re shooting at, creatures play with computers while working on them, and a few other little details.
I spent Friday building a stand-alone prototype for a completely new bullet/projectile system. The old method was starting to become pretty unreliable and inaccurate for actual game-play situations, and there was no real way to draw a “Bullet” travelling through the game scene.
Now I’m actually drawing bullets flying along a path and checking for creature collisions along the way. It seems like an obvious way to do things, but when I was creating the old projectiles I was not familiar enough with how the game scenes were going to be processed, so it didn’t seem like this method would actually be possible. Now it’s fully implemented and working nicely.
I’ve also now made it so that bullets do not stop where you click to fire them, they go until they hit a wall or run out of momentum, meaning you’ll have to really think about what you might hit before firing a weapon in a scenario.
Now that the campaign editor can create real content for the game engine, I have just been churning out graphics and throwing little test campaigns together to see how fast they run and how long they take to load. At the moment loading is slow with what you see here taking about ten seconds to load into the game. I’m not sure how this will improve over time, but it’s good to be able to finally benchmark real content in the engine rather than just hard-coded test data.
I’m finally getting a chance to throw huge arrays of sprites into the game and seeing it render them at respectable speed.
Working on the campaign editor is taking up most of the development time lately. I’m always cleaning up the AI and adding new behaviours but most of the recent days are spent making the editor fully functional.
The “Creature” creation and graphical tools are now working completely in the editor meaning you can alter all the graphical properties of clipping blocks and game-world creatures. Furniture and Triggers can’t be placed yet, but they are just modified versions of creatures so they shouldn’t take too much work. In the meantime, have another screenshot of the campaign editor.
Besides cleaning up a lot of functionality in the code, the last few days have mostly been spend on the design side of things so there’s not a whole lot to talk about at this point. I’ve spruced up the rendering routines to go along with all the new graphics I’ve been working on. Creatures now have a much better method of animating their deaths, and dropping lots of entities into the game with minor/major design differences (i.e. gender, clothing types, etc.) actually works in a demonstrable manner now.
The “Emote” popup over creatures heads now has different little icons that can appear in it for “?” and “!”. At the moment, the AI loop calls different ones based on what is happening to the entity.
In the meantime, no screeshot of the new graphics until they take a bit of leap in fidelity. Most of the prototype graphics have been dropped out now and a few of the alpha ones are in so far, but I’m still using prototype assets for the screenshots.
A lot of work has been spent recently on the animation and graphics, which I can’t show right now, but I have just today finished the very basic framework for the user interface. It’s a fairly open design where you just declare basic things about a “Window” and what “Buttons” live on it, and the game loop will always check on mouse clicks to see if the user clicked inside a window, and if they did, it calls the function set for the button inside the window that they clicked on.
At the moment, there’s a window called “Asset” manager, upon which the buttons are renderings of all the controllable creatures the player can use. If you click on one of the “buttons”, the function for that button will cause the camera to zoom to that creature, and the player will take control of it. The way it’s designed should make it fairly easy to build a fast user interface which is quick to capture all the input needed to react.
I’ve also done some work on the internal font set, it has an interlaced look to it now which can be adjusted on a sliding scale. There’s also now the ability to click and drag out a square around creatures to take control of multiple ones at once.