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.

28 January, 2024

52 Pickup: The First Four

Weeks 1-4 have been an interesting ride.  My progress has been slower than I expected, but that is because I am understanding more than I thought I would and am making what I think now are significant improvements to software I haven't really touched in two or three years.

I often hear veteran programmers say that they don't recognise their old work when the look back on it, and find ways to improve or rewrite it that their younger selves couldn't have grasped.

I want to be extremely clear that I never have been and am not now "a programmer" and I have literally not touched a single line of code either professionally or as a hobby in the years since I paused my roguelike tutorial work.

I'm not sure where this new insight is from, except possibly from hibernating on it and waking up with new ideas.

02 January, 2024

52 Pickup

Thanks to Pope Gregory, 2024 conforms with ISO-8601 and begins 01 January on a Monday.  This means we have a perfectly ordered year of exactly 52 weeks, each starting on Monday and ending on Sunday just as ordained by the ISO Technical Committee in 1988 -- as long as we ignore the dangling 0.2857 weeks following 29 December.

What to do with these 52 perfect weeks?  I have been thinking a lot about restarting some back-burner software projects.  The community at r/roguelikedev/ is running their annual "Year in RoguelikeDev" event, with the tag [2024 in RoguelikeDev].  This event has catalyzed that interest and provided a form for how I will restart some of those projects and use these 52 weeks.  In the spirit of Ryan's now famous "No more zero days" philosophy, I'm making the baby-step commitment of no zero weeks for 2024.


27 December, 2022

Moonlanding

Back in July, I was working faithfully on the r/rougelikedev 2022 code-along before I hit a small snag.

The start of the trouble was that I was working without a proper keyboard, hunched over my laptop in  temporary deskless working conditions that was causing me to develop real pain.

So, of course, I over-engineered a solution.  I did a lot of research into split-ergonomic keyboards that I had always had an interest in, and ended up with a Moonlaner



18 July, 2022

LOX week 3

 Continuing the r/rougelikedev 2022 code-along into parts four and five of the tutorial.  I have started going down some wild tangents last week and I've been rambling further down those paths.

It took me most of the week to get through part 4, partly because of my home-made screen rendering but mostly because I had to learn what shadow casting was and how to implement it from scratch