Before I start out this months progress report, I would like to remind everyone that this project is made in our free time and some things takes time to get right. Therefor all months can’t have big leaps of progress, and unfortunately this is one of those months.
A lot of things happened outside of the project this month. Darwin went on vacation, I got a diving certificate, nearly flipped my car in the Australian outback and spent way to much time drinking while in Sydney this week. Also The 100 Season 5 premiere aired, how cool is that?!
Well progress? There is none, see you all next month! No I’m kidding some stuff did happen. Last month I ended with saying Inventory systems and Combat was the main goal for this month, well I kinda regret that now, but whatever. Making a large scale game, as an inexperienced indie development team is not always straight forward and during development this month we ran into a problem that’s gonna change how we do development from here on forward. We ran into what most programmers would call ‘Dependency Hell’, small changes started braking unrelated features and having every in-game system have hard references to each other means that no system can be tested on its own. To solve this we have started work on refactoring all existing code into a more modular setup. Having modular Systems that does one thing and one thing only, and then build the game by combining modules. I’ve never worked like this before, so its a learning experience, but hopefully one that’s gonna leave us off better than before.
The new item system
Our new item system is the first step in making everything more modular, but also a step towards making it easier for non-programmer to help with the project. I already wrote a post on it here. But to quickly summerize whats different between our old approach and our new one. Before our items list (weapons, food, clothes etc) was a long configuration file, where you would copy the last entry and edit it to fit the specification of your new item. This was clunky to work with to say the least, its hard adjusting values as everything has to recompile every time you change something and multiple people can’t make changes to the configuration at the same time. Our new approach, for those of you who know Unity, is done with ScriptableObjects. This means that every item is its own file in the project. Adding new items is as easy as right-clicking and saying create>item>weapon. Designers can easily adjust values in a graphical inspector view and values can be changed and saved at runtime. The only downside is that we have to keep an up-to date item database all the time, but that is a small price for the simplicity we get with ScriptableObjects.
Work has also started on some AI functionality. Not because having animal AI this early in development is important, but because the underlying systems that makes AI work is important. The one currently being worked on being FSM or Finite State Machine. State Machines is often used in games to develop simple but cost-effective artificial behavior to NPC’s, but can also be used in many other ways. Example a simple light can be a state machine, having an off and an on state. Currently all the groundwork is done, enabling us to easily create state machines for different entities and sync them across the network. Unfortunately is still very much code based, and I’m planning on finding a way to make it work more like a flow-graph to easily let designers create and modify behavior of entities without touching any code.
Localization / Translation Support
Localization support is a feature I personally thought wouldn’t make it into the game. We are a very small community wanting to play this game and therefor most spoken language in game would be english (or trigedasleng if you are really hardcore), but it was requested from the community to have support for multiple languages, so here it is. Fortunately a lot of work hasn’t started on user interfaces, so it was a lot easier to add support for it. If we already had a lot of UI, time would have to be spent going backwards making sure everything works correctly. I’m not sure what initial languages we will ship with so more on than later (English, Danish, Swedish & Hungarian is planned for now).
Side note, for you guys who follow us on twitter. We didn’t stop using it, Darwin just never gave me the password when he went on vacation