Here’s another video showing the development progress, here we can see some enemies, and how the “visual” sounds work:
I’ve been heavily working on graphics, here’s a comparison of how the barrels have evolved:
Also I have big changes on the tilesets and in the lighting system to make the game nicer and more consistent in terms of gameplay (if you have seen the videos, you already know the lighting affects gameplay, as it represents the main character’s field of view).
Long time without updates. Here’s a video showing some graphical changes, and the hacking, which is a feature I’ve been working lately. Finally, I can say that all the features I initially thought on, are in the game. So now it’s time to actually finish the game. So, here’s the video:
This is taking a lot of time, but I think we are getting there. Be Stiff! is being modified… a lot. You see, some time ago I mentioned I needed a graphics designer or someone who knows about making stuff looking nice. Well since a couple (or three) months ago, I’ve been working with a great guy who indeed knows some stuff about graphics and design. So I expect to have soon some new screens and videos to show.
In the meantime, I’ve been playing around with Java. More specific with the LibGdx library which happens to be quite awesome. I’ve been porting part of the Be Stiff! code there as an excersise (I’m not planning to port the full game -for now- as some parts are Directx specific and I really don’t know how to convert that to OpenGL) like the 2D skeleton animation engine. Mayebe something for Android with emerge from this. Or maybe not.
I’ve been working on fixing a couple of bugs. The good news is that the Xbox version is working nice and the garbage has been significantly reduced, which means that I have a constant 60 frames per second on the console.
I’ve been working on a new tileset, so here’s a video showing it. But I want to talk a little on the game’s AI too. Look at the video, at the 7th second you’ll see that the enemy is calling for help (“F1″ he screams), then the guy with a pistol takes the elevator for checking out what’s going on.
I wanted to make the enemies smart enough to make the game challenging and force the player to at least think twice before entering shooting like crazy. That’s why the field of view is restricted, you cant run all the time, and the enemies try to attack in a coordinated way.
If an enemy spots you, he will call the closest partners. Then they try to coordinate by surrounding the player, by blocking the exits from the zone the player is in. Let me explain this with a couple of images:
This image shows part of the map in the map editor (I’m using OGMO editor, if someone is interested), the yellow squares represent zones in the map, and the blue squares represent portals (not this kind of portals!). The portals represent a connection between two zones, indicating the enemy which action they should take to move from one zone to another (walk, jump, take an elevator…), so moving from one point to another is just an implementation of the A* algorithm for finding the best path, and tell the enemy to move to all the portals and perform the needed actions until he reaches the destination. The idea was inspired from this great article in Gamasutra.
So, what happens if an enemy spots the player? He calls for help (the “F1″ from the video), and when the help comes, they try to cover all the portals of the zone the player is in. In our example, if the player is spotted in the roof, the enemy will call for help, and they will cover the two portals the player should use in case he wants to flee:
If the player kills one of the enemies, the “enemy team” reorganizes itself trying to cover as good as they can the player’s position. If the enemy team realizes that it can’t accomplish its goal (kill the player), it dissolves and then each enemy individually attacks the player (without any kind of coordination).
Pfew! That was a lot of text, anyway this was a quick view on how the AI works, I hope someone finds this interesting.