Tuesday, 29 January 2019

Asset manager

Now that the source code is going to be released I realized it could be useful to talk about it even before release to explain my programming style and thinking. One of the newest module (I'm going to talk a lot about modules which are not a "built-in" feature in C++, yet very useful way to handle large projects) is asset manager. It's a collection of higher level routines for stuff like displaying some graphics and working with menu data etc.

The reason for asset manager is remove some of those higher level includes from "low" level modules. An example would be Add_Player_Races which, as the name says, adds playable races to a menu in character selection. This used to be in Monster Type module which is static data for creatures, but you kind of want to keep simpler modules clean from gui stuff or whatever. As clean as possible anyway.

A problem related to asset manager are procedural functions in nameplaces which in many cases belong to some type of class. So there will be a clean up of those, because I think I got a little bit too excited about "procedural" programming in some cases. It does work in generic cases though, when you create functions that can be accessed from anywhere without binding them to a specific class.

Wednesday, 23 January 2019

The plan for source code release

I made a decision to put the source code of Kaduria in git. What does it mean? Well. Nothing. It means nothing really. I'm not abandoning the project or anything like that. There may be some bad things about releasing a source code of a project, but in this case they are not that important. Some good things are:

1. It follows a tradition. Many classical roguelikes are open source.

2. The source code is different than anything I have seen before. It's mostly object-oriented C++ with some procedural style code. Unlike many roguelike source codes it's also quite easy to read.

3. The modular programming style in C++ could give ideas how to manage large projects.

4. Working with github for VS is nice, because I can track the changes myself.

5. Some people will stop complaining about the progress or if the game actually exists.

6. Feedback on source code, possibly ideas to implement or fix something.

Before the release I'm going to finish the modular design and also clean up the code as much as possible. The modular design is not an easy task (in this project, because it is a refactoring thing), so it will take maybe even months to do.

From a player's point of view this release is annoying, because the gameplay is not yet ready at all. But maybe some day there will be a game.