A New Iteration
I've been working on the second manifestation of my Interactive Fiction engine - WorldWeaver - for about a year now. I originally built it in Java. Since I'm able to code on C# (.NET Core) on Linux, I decided to start from scratch.I learned a lot in my first iteration of the project, so I knew some of the gotchas that I would be facing in this version. Order of game element operations was a big challenge in the Java version so for this one I wanted a lot of that logic to be configurable. As this project has grown I've also learned a lot about better ways to define games as well.
The Sample Game
So far the biggest tool I've come up with is the Sample Game. It actually serves as sort of unit tests. So I'm no longer trying to build an actual game for testing. Now I can just create rooms in the Sample Game each one tests a different feature that the engine handles. This has made coding and debugging so much easier. This game will ship with the game engine when it's actually ready to go live.
Admin Documentation
Another major change is how I'm handling the documentation for game authors. I'm using Tiddlywiki for it (I'm pretty obsessed with TW). I may also create some documentation for people who may want to actually work on the engine's code itself. There certainly is plenty of room for improvement. I should have probably harnessed the power of Interfaces etc, and may look into where they might improve the code's readability and future maintenance. Building games and initially playing them (Just the first time they are played) I need to do some optimization.
I'll likely do a bunch of followup articles on this engine, going over some of its details and discussing its code base.
The Future
I'm probably going to embark on a third iteration of it. I want to try building it in C++. This will mainly be a learning project. I've built one application in C++ but want to learn it far better than what I know currently. I would also like to look into porting it to mobile OSs. That would open it up to a much larger potential player base.
Here is the GIT repo: