25 February, 2024

52 Pickup: The Second Thirteenth

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.