The Ten Thousand Things
I've been contemplating different options regarding what to code today and tomorrow. I mean, hardly a day goes by without me coding, except when I'm sick. And since I'm just now getting over being sick, I've still got the itch.
So what to do...?
First, there's the advent of code, which I am very behind on. I doubt I'll catch up, but it could be cool to learn more about C++. I guess it depends on what I want to code in today, yeah?
I could go for some assembly!
I've been looking at several retro systems: first the Nintendo Entertainment System (NES), then the Game Boy Color (GBC), then the Commodore 64 (C64). The C64 is probably the most appealing at this point, next to the GBC. The NES has a lot of limitations, too many.
But it's not just the limitations -- it's the documentation, tooling, and community around these systems. The C64 has a friendly, welcoming community from what I've seen, whereas the NES community, from what I've seen, is big on those "I'm smarter than you"-type pissing matches that devs so easily get sucked into...the C64 just seems more active, too.
The GBC community, I haven't really looked into, but the tooling is pretty lackluster so far. It seems to center around a compiler called the Small Device C Compiler, or SDCC, for C development. This compiler apparently produces atrocious Z80 assembly...so if I wanted to write in assembly, there would be RGBDS, a set of tools for assembling for the peculiar Sharp processor that powers the Game Boy series, kind of a Z80 but not really?
It's really weird, some of these chips. It really makes you appreciate all the detail you don't have to worry about day-to-day.
Anyway, then there's Foxie, which has been on hiatus for a while (though I cannot for the life of me remember why it went to the back burner...). This is something I'd really, really like to see happen, but I think it's a later phase of the project path I've started to lay out in my mind.
See, I tend to start super ambitious projects, then lose steam once the reality of the iceberg sets in. So I either go for small projects, quick wins. Or, more often, I tell myself "this time will be different because [x]". More often than not, though, I fall into the same pattern.
This seems to be an issue of discipline, of getting to the finish line no matter what sort of roadblocks I run into.
It also seems to be an issue of personal project management. See, if I start with the big project, and that's my "end goal", for lack of a better term, then I seem to never get there.
But if I had a smaller goal, as part of a bigger project, then I would have more of those little victories that get me further along to the finish line.
So there's a third problem, the problem of feeling the little wins and being pushed forward and motivated by those wins.
I think I've started to solve at least the first part of these problems. From here, I'm looking to get results early and often, and not worry about details that don't matter right this second.
This means breaking things down into smaller projects. My todo list, so far, looks roughly like this:
- Make a simple system for writing interactive fiction using HTML, CSS, and a sprinkling of JS
- Write at least 5 interactive fiction stories using the system I made
- Improve the engine by adding something like inventory management (more on this in a minute)
- Write more stories
- Learn C++
- Learn Unreal Engine
- Make some point and click type adventure games
- Learn the Oculus API
- Make interactive fiction experiences in VR
- Open source the toolchain
- Begin work on Foxie
Some of this list is out of order. Some pieces obviously depend on others. And some pieces, like "Learn C++" or "Learn Unreal Engine", could take 10+ years! How are these "small pieces", exactly? How is this any different from what I've done in the past?
The secret is: only the first two todo items are set in stone: making an IF engine and using it. The rest follows from these two tasks. As I build stories, I have ideas to improve the engine. As I work on the engine, I get ideas for more stories. It's a virtuous feedback loop!
I might not even do VR. It would be cool, yeah, but it would also be extremely resource-intensive in terms of how much it would take to get a real experience up and running. I'd need 3D models, artists to texture them, music to fit the game, probably even another programmer!
It's a lot. So, I plan on doing it once, gods willing, I have some money set aside to fund some of these projects, ideally funded by previous projects.
So, the plan from here is to write! Write some stories, see where it goes, see what's needed from the IF engine (from here, codenamed "Vonnegut"). If something is 100% needed in one of my first 5 stories, I add it to the Vonnegut Engine. If not, I'll just keep writing.
From there, I'd like to put it on a website, free, and see if people dig it. So for now, I'm going to get back to it, building up a story and seeing what sticks. Til' next time...