This will be a long post, it will detail some new IF tools I’ve created, but it’s not possible for me to make this short, I tried several times, and have given up, so I apologize for the length, the preamble isn’t meant to frame any sort of magnum opus or anything like that, I just like stories, and I think we all do, because that’s why we’re here.
Hi, my name is bradley. I’m a 53-year-old computer scientist. When I was 12 I discovered, like many others, the magical world of Zork, et al. As a smarty-pantsed youth, fully capable of typing in BASIC programs into my commodore 64 from magazines, I made the decision that I wanted to ‘take the summer to learn how to make adventure games’. My reasoning at the time, was, they have no graphics, how hard can they be. Those of you here familiar with the plumbing and guts created by those rather clever MIT lads who formed Infocom, are probably having a good chuckle at my well-meaning hubris.
I never gave up. Like most code-monkeys I have and had several weird pet passion projects that never saw daylight outside of a debugger or napkin sketch, but I never really let go the ill-conceived promise I made to myself. I am not an IF expert, I’ve never even written a good one, because I cared more for the tooling, how they were/are made.
My day jobs have varied from systems-level programming, compiler front ends, porting, tool-writing for vfx, shrink wrap retail software. I watched the progress of the IF community on usenet, etc, without participating as a member, reading code was at the time, all the conversations about the matter I needed.
The tools I am going to discuss have all been through more design variations and prototypes than I care to admit. I’ve only mentioning them in passing to friends, I’ve never presented any of them to the community, for whatever reason, either because it wasn’t my day job, or because they weren’t really for other people, they were for the idiot 12-year-old kid in me.
I should mention too, as I’m noticing this is a sticking point for a lot of you, they are to be commercial, and I don’t mean greedy corp over-monetized loot-box subscription zomg commercial. I have no investors; it’s just me and a small team. I plan on charging a fair price, enough to support the time we spend on this, and I should also mention here, I have a lot more tools, not IF-related based on what I’ve designed that will help this arguably over-engineered platform make a little more sense once I announce them. Zork wasn’t the only silly promise I made to myself. I may open-source some portions of the platform, though I am not required to do so.
So, let’s talk about what I’ve done here. The first piece I’d like to talk about is the language, Apollo. It is like Felix Croe’s approach with his Pike language and DGD mud driver being inspired by LPC/LPMUD. Apollo is my modern take on LPC. I needed a general-purpose language that I had full control over to achieve the tool and runtime integration I needed without having to play footsy with someone else’s steering committee. I don’t want to saddle this already verbose post with too many technical details, though, as you’d probably guess, I don’t mind going into more detail than most people would consider polite. It will suffice for now to say it is yet another C/C+±like language with features and constructs suiting rule and story development.
The next piece is Prometheus; an IDE tailored specifically for Apollo that can accommodate features like graphical mapping. IF has a lot of strange requirements for debugging and authoring that would have been weird as a plugin or addon for existing IDE’s and frankly I did it this way because none of the IDE’s I created tooling for are even still around. So, you get a nice Qt app that runs on windows, macos, linux, and freebsd. No one really cares about freebsd anymore, but you should because it’s awesome.
Morpheus is our runtime. If plan 9 from outer space and a MUD driver had a baby, it would be Morpheus. I have ported it to several platforms and plan more. Apollo is a prototype-based language, and Morpheus can handle a mix of bytecode and LLVM-based JIT, depending on debugging and runtime needs on a per prototype/object basis.
Which brings me to Z-Machine compatibility. We have it* (asterix added by the programmer part of me, not the marketing part). You can use this platform to create z-machine compat games, but it will cost you, as you can imagine. If you stick to the rules, use allowed types, make allowed calls, etc then yes. I’d rather this not devolve into some sham-wow meme by bullet-pointing everything, I do mention this now because it’s kind of important. It also explodes a lot, because our test-suite is currently insufficient.
Where we are: various pieces are in various stages, we are nearing alpha. As much as I would have loved to announce and drop, I wanted to get feedback, on the tools, on the language, on the direction, as I bring this sputtering biplane in for landing, I still have time for minor course changes. Version 1.0 of a language is important so as to not continuously break backwards compat. To that end I’ll have several opportunities for feedback on the language spec if anyone at all is interested. (cue: crickets). The compiler and vm are the oldest of the pieces and have the most testing.
Oh and I should probably mention Alcibiades, that’s the command-line host for the compiler and vm and runtime. All the pieces exist as classes so they can be buried in their respective tools, so if you have no interest in using an IDE but you still kind of like the idea of Apollo, you can compile and debug and test on the command-line like all sensible people do.
I welcome all feedback, all questions, and yes really, all flames, and while you’ll notice I am not posting this on reddit (for reasons I don’t need to explain), it doesn’t mean you have to be nice. I’m a big boy, and I’ll not bother to post any of my own ‘rules’ for interacting with me. There are parts of this platform that have seen 20 iterations in as many years and have been hammered on by comprehensive test suites, and there are parts that I added a couple years ago that rattle a bit when I shake them. Kind of like me.
If you read this far, thank you. You now know more about this project than anyone other than my team and my psychiatrist.
We look forward to serving the community.
best,
bradley