Development Progress Report, weeks 20 and 21

There wasn’t a status report last week, because I was without electricity and an Internet connection, as a result of several days worth of getting the house rewired. Even this update is posted a day later than I’d intended.

That is past, and a lot got done during the rest of the time!

The recent conversion to SDL (here and here) axed the old sound engine, and I had not gotten around to building a new one. A new one has been written from the ground up, and it works just the way I wanted it to. Very pleased about that.

Sounds and music can add a lot to the presentation of narrative, and support for highly compressed formats (which I did not have before) really helps cut down the size of the compiled story-file.

I polished handling of maximise/restore events and full-screen/windowed toggling so that all gets handled nice and smoothly.

Then I dug in and implemented proper lazytext functionality for narrative text. That’s where the text displays progressively, at a measured pace, unless you interrupt it, in which case it jumps to the end. What constitutes an interrupt, and exactly how they’re handled, turns out to be fairly involved, especially as the functionality is all wired in at a fairly low-level of text output.

Text output is already quite an intricate task, and this just makes it even more so. That said, it is fast and quite efficient, and (even more importantly, perhaps) behaves in logical and unsurprising ways.

Interesting observation: The measured text output makes a psychological change in how the narrative text is perceived. This has led to a couple rounds of polishing and revision of the text, over and above some polishing and revision that has been going on sandwiched between code updates. Some passages don’t read quite as well when the text appears at a slower, more measured pace. This was unanticipated, and I’ll have to review and edit it all, over time.

The next item was one which had been languishing on the development board for a while: A proper Windows installer/uninstaller. It took about a half an afternoon of tinkering, but it installs and uninstalls “like a bought one” (as they say). Delighted with that.

As I mentioned, there’s been some revision of the narrative (currently sitting just over 215,000 words), and more to come. Mostly matters of pacing, rhythm, imagery, and making sure certain parts are neither overwritten nor underwritten. In some cases, I was sure I had been overwriting, but mostly it turned out to be the opposite of that, and a little more fleshing-out was needed in some places.

All the while, code has been polished and streamlined. Perhaps so much so that I think I will need to add some delays to the fast-forward function (holding down the control key fast-advances the narrative). Currently it clips along at 60 chunks of narrative per second, and it is only that slow because screen updates are locked to the display’s vertical sync. Without VSYNC, it can do hundreds of chunks of narrative per second (far faster than eye, brain, or monitor can process). I’ll have to slow that down. Maybe introduce a slider on the options screen… when I have an options screen.

What I haveĀ planned for this week (as opposed to what I might actually getĀ done this week), is a little more polish for the graphical UI. The current narrative text area resembles a book, with some key controls that resemble bookmarks. Here’s an older image from early on in development:


The design of the narrative area remains the same, but the feedback on it has been… let’s say that it hasn’t been universally positive. I’ve got a new aesthetic in mind for the narrative area and controls, and I’m going to try implementing that over the next few days. If that works out, I’ll extend it to other (as yet nonexistent) portions of the UI (like the options screen).

It’s a fairly large visible change, which is one reason why I’ve put it off for a while, but you don’t really know how well it is going to play out until you actually do it. Fingers-crossed, it’s time to take that plunge. Hopefully, it’ll work out and people won’t say “You know, I preferred it the old way!”

That’s enough waffle from me, for the time being. Time spent writing development updates is time not spent working on the game.

See you all here, again, next week!