Weeks 5 - 8 have seen steady but slow progress. Each task I set for this "roguelike game framework" had several unexpected pitfalls, and I've been surprised at how easily I was able to find solutions and learn why those solutions are good practices or components of successful software architecture patterns.
I don't expect that any of the code I have written is "good" or "follows best practices" but at each point I've been able to look at the end result and say "yes, I can see how this can scale and be used to create much larger and more complex systems" which is basically the goal.
In all my earlier attempts I would look at things I had done and think "wow I have no idea how or why this works" so I think I'm in a better place than I was three years ago.
What follows are my regular weekly updates catalogued on the Sharing Saturdays thread:
Week 5
Third week is the charm, I finally got display layers working in a way I am happy with. I can compose layers of multiple sets of entities, and then scenes of multiple layers.
I'm configuring font face and size per layer, but I can also do per entity for special "fx" layers. I think all this will be thrown out when I eventually move to sprites, so not putting more time into it than necessary.
Goal for next week: creating an input handler and attaching it to a scene! Stretch goal will be scene changes.
Week 6
Last week's implementation of per-character font changes didn't work as well as I thought, so I cut that out so I could move on rather than fighting with it.
I spent a little time making sure that multiple scenes were able to be setup correctly, and I could display any of them -- but I don't have scene changes yet because input handling wasn't as straightforward as I expected.
I can listen for and act on input events easily enough, but handling the input within the appropriate scope is a bit tricky for me as this is the first time I am actually trying to be responsible with how I scope my code rather than throwing things into global scope whenever I run into a problem.
I'm going to spend the rest of the weekend trying to get my input sorted out, then the goal for next week is scene updates, entity movement, and animation frames.
Week 7
this week I struggled a bit with some context changes for my input listeners, but I learned what was going on and have input listening and handling going on and also scene changes working.
It was really nice to see the scenes that I got assembling themselves back in Week 5 actually being rendered and switching back and forth.
I wanted to also get the scenes updating and handling changes to entities, but I decided that I needed scene-specific input handling first, and I also came down with a heavy cold that still has me kind of wiped out.
Next week is the last one before 7DRL starts and I am hoping to have some of this -- whatever this is -- ready as a platform to build a game on.
For that I mostly need to finalize that input handling system and get entity updates working. If I don't make it in time, I'll just brute force something really ugly with a lot of global variables for 7DRL and come back to this in a couple weeks.
Week 8
Okay! Scene-specific input event handling and entity updates are in! My entity is just a counter but it is in there doing its counting thing, triggering scene updates, flourishing.
This is basically in a state that should be "good enough" for me to build a game on for 7DRL. There are a few more things I would have liked to have, like per-tile font changes, multi-tile actors, and animation.
I think the per-tile font changes are the least necessary (would have been nice for drop shadows or glowing effects) and that multi-tile actors will be the simplest to implement (possibly foolish). So I plan to focus next week on getting some sort of animation working before the 7DRL start date on 02 March.