With the first "dungeon" nearly ready for release, even if a few things are still missing in that domain, I think it's time to explain what I am going to do next. As you will see Monday, the dungeon part in 0.6 is purely hard-coded (not moddable), so, as a result the next release will introduce ways to add / customize dungeons using the in-game modding tools. But when I am done with that (which should be relatively trivial as the whole logic behind the dungeon system is more or less ready to be integrated), I am going to explore new areas. Here is a very long post regarding this subject.
First of all, as you have obviously noticed, I have slowed down in both posting and releasing. I will be honest about it instead of bullshitting you with "real life issues" which aren't a main cause anyway. My interest in the project itself has dropped significantly for a few reasons. I am a coder interested in simulation and AI stuff. From the experience I got from the plugins I wrote for the X3 games, I thought it would be enough to make a game on its own. But I was wrong, Pirate Guild was highly successful because it relies on something that's already a (admittedly broken) game. Writing all the "gamey" stuff around my simulator is slowing me down a lot because, I am not interested in that part at all. That's kinda why the last (and next) 2 releases were purely "game oriented", just to give me some breathing room to go back to what I like to write.
Another major reason why the development has slowed down is that GRA in itself is basically a tech demo for my game/world sim. engine. And the more I think about it and the more i think that a ZCOM (XCOM with zombies and more complexity) type game would be more interesting both for me and for the players.
Anyway, next releases. So here we go.
First it's not a secret that I am a big fan of Dwarf Fortress, and of course, as a result I have studied the modding part extensively. And the whole "reaction" system is the thing that's obviously missing from my game. Basically in DF, a reaction is a rule that's applied to an object like "bring me 1 meat and 1 bread and I will produce a burger". Adding this logic would allow me to build an object editor. Instead of choosing between a food factory bench, an office computer, a health factory bench and other hard-coded objects, the modder (and me) could write his own objects and economic chains. There's a few hurdles, as currently armors, weapons and items are 3 very different things code-wise, but it's easy enough to be implemented. More to the point it would help fixing the currently poorly working chain between factories and shops. Also, it would be a great feature to add to ZCOM as securing "this factory" from zombies would allow the player to produce better weapons.
Finally this kind of change would allow me to get away from the "job" system i use for my NPC. It doesn't seem very important from an user point of view, i know. But it's holding me back a great deal. To make things clear, correctly implementing this feature would allow me (and add modding stuff) to customize jobs, allow NPC to do 1-2-more jobs according to parameters instead of using hard-coded stuff and even allow NPC to change jobs on the fly to accommodate their environment.
Secondly, both stealth and a sound detection system have been overlooked so far. Basically every action should make a sound, and enemies tracking you down should be using this bit of information to find you. The good thing about this feature is that it works both way (as you should be able to use the same data to avoid/track down your enemies). It would allow AI pursuers to find the player in a more realistic way (instead of relying on cheating or pure binary logic), and more to the point it would help tremendously with a zombie AI. Gameplay wise, it would allow the player, in a dungeon (for example), to avoid some patrolling "monsters". However, sounds shouldn't be directly linked to the NPC/player who made the sound but instead to how suspicious the sound is (otherwise let's just cheat as it would be way more cost efficient). I don't know yet how much it would impact the general performances but as far as i can tell right now, it wouldn't impact performance critical parts of the code.
Regarding stealth itself, it wouldn't be very meaningful without a light system. Here again, it's not that hard to implement. Well, it's still a lot of code, but nothing very complicated either from this point of view. However, I would need to tweak the rendering engine again to alter the alpha (transparency) channel according to the amount of light. It would also need to add "lighting" objects, and modify a lot of the current data system. In other words, a lot of boring stuff I'll have to tweak several times over several versions of the game before getting it right.
There's also the subject of involving the player into the faction warfare, missions and this kind of stuff. It would need a "talk to" feature, obviously, except if I want to use an object/activator for that purpose too. To be honest, at the moment, the world itself, given the constraints of the GTA theme doesn't help a lot. Of course, I could create missions and spawning enemies instead of using wtf is happening in this world. But being a firm believer in emergent systems it's not my goal here. On the other hand, even if i tried to include missions right now, it would be limited to kill X or bring Y item to me stuff. More to the point, the "talk to" feature being a prerequisite, I will have to give NPC the ability to speak about something meaningful. And that lead to the next point.
A news system would be nice to inform the player about what is happening in the world. It is simple enough, I have done it in all my X3 plugins with great success (so much that other modders decided to use this system too). Basically, whenever something special or important is happening, like when a sector is taken over or liberated, an article would be added to a newsfeed. Each X game turns, a newspaper would be produced and the player would be able to read it at a place selling those. In theory, instead of using an "invisible eye" to do this, I could create a neutral News Agency faction and a Reporter job. But it unlikely that it would work (won't prevent me from adding the faction and trying) as well as i want the system to do so. So, i guess that it will be a mix of both. If the NPC job is enough, well, all the better, but otherwise the newspaper will rely on the all-seeing-eye.
For those who aren't sure here's a summary: Missions aren't likely to happen anytime soon. However, stealth, and customizable "furniture" are more likely to happen with major AI changes and improvements.
Also, while I am at it, let's review some other changes that will happen more quietly during the next release cycles. Most of the are regarding the AI. First and regarding the cops, there's no real differences between the "scum" and the "most wanted" states. That's a thing that need a big tweak. What i am going to implement is this: In the first level, only cops that spot you will attack you, at the next level they will call other faction-mates (in this case, other cops) who are currently in the same sector to get you, at the level after they'll call in cops from sectors around you, and so on.
A recent addition to the game's engine has been the ability for people to call for help. However, it only happens at the moment they get hit first by someone. I would like to expand this system. Well, obviously by calling this function more often, but also by using communication devices like phones or radio. No idea how i can fit this in the code right now, but it's still an interesting track to follow.
As I want to switch to ZCOM I will also be experimenting with the zombie behaviors a lot more. At the moment they are way too much CPU consuming, and they do not act at all like i want them to do as they basically work like thugs (but enemy to everyone and who never starve). Not good enough. I want them to act as you'll expect them to do so. Forming large herds, following sounds and so on, but being generally stupider than your average NPC.
Another thing, I'd like to randomize items a bit. For example, weapons are pulled from a moddable database. It's a good thing that's I am not going to change, but with some randomization and the use of my "special effect" system, I could add a lot of stuff in. Basically, the game could take the weapon (and armor, items...) database and throw some random modifications on them to expand the said database. As a result instead of having a single AK47, we could have an "Accurate AK47", a "Flaming AK47", a "Lame AK47" and so on. Depending on the level of customization it's either ridiculously easy to implement or very annoying to do so. I guess I will pick something in between. Also, at the moment the ammunition is hard-coded. This is probably something that need to be altered, but it's kinda going to fuck up a lot of the current code. There's a lot of possible benefits if I do this (piercing ammo, flaming ammo, and so on) but it would require me to rewrite very large parts of the related code, and I am not yet sure if i want to do that or not. Especially as writing an AI able to correctly determine what ammo is the best in a given situation, and if such AI should switch ammo or not is beneficial is basically impossible to write. The good news being that i can postpone it as the said part won't grow any further anyway.
Well, I think that's all for now folks. Do not hesitate to post comments. Next article will be the 0.6 release. The one after will probably be about ZCOM.