Camen Design Forum

Kroc's Work Log

Kroc

Need to brain dump some stuff. Life is very, very tough, and has been so for... six months? a year? five years? I can't even remember. The last time I wrote anything here was when I was on holiday and it's been cripplingly tough as soon as I got home. I still work on code stuff, but I'm always mentally too exhausted to write about it.

I should have been working on my website but I've not even touched it.

What I have done is disassemble the Commodore 64 port of Elite: https://github.com/Kroc/elite-harmless

Considering I haven't done any 6502 assembly for about 20 years, and that I was disassembling the disk image and not a RAM-dump -- meaning that I had to reverse engineer the loader, encryption and relocation -- I've done a job I am proud of. It works, it's well commented in the places I've worked out and even the parts that aren't commented benefit from having got the variable names for a great deal of stuff. Anybody else could quite easily pick this up and alter it.

Whilst I have big plans (https://github.com/Kroc/elite-harmless/issues) for Elite, I'm going to take a break for a while to get some much needed work done on PortaDOOM. I enjoy playing the numerous and varied DOOM mods out there and whilst I'd whole-heartedly recommend them to you, it would be nice if they were a lot easier to get working without having to educate yourself quite a lot on the sheer eclectic nature of the DOOM modding community; it's like ordering a coffee in New York: there's a choice for everything. What source port would you like? What IWAD will you require? What PWAD will you be using? What compatibility settings will you need? And what about gameplay mods?

This is exactly what PortaDOOM is for. It makes playing Doom and its mods no more difficult than pressing a key to launch whatever takes your fancy. It abstracts away all the complex pairing of code & files. If you're reading this, I recommend giving it a try as there's a wealth of high-quality content out there for free -- if you where to get it and how to use it -- which PortaDOOM does for you.

Download any package from here https://spideroak.com/browse/share/Kroc/PortaDOOM/releases/ I would recommend Cacowards 2015 for variety and PSX DOOM for a single game, complete experience (about 170 levels!); you do not need to own Doom I or II to play as I've added workarounds in PortaDOOM (using FreeDoom) to handle this automatically. If you have Doom installed from Steam or GOG, again PortaDOOM will handle this automatically.

What I need to 'fix' on PortaDOOM is to be able to elegantly handle yet another layer of hoary complexity with Doom: gameplay mods. On top of the original games, you have the custom level sets (called WADs or PWADs) but "we need to go deeper" and the community make gameplay mods that alter the guns / monsters which can be combined with any of the PWADs mentioned before.

When you take a large array of game engines that can play Doom (there's no 'one' engine like most games) and then expose that to a truly humongous array of custom maps (probably north of 20'000) you've got a compatibility nightmare. Now add on to this gameplay mods designed by another set of authors that runs on top of levels which were not designed with these gameplay mods and you've got a compatibility googolplex.

PortaDOOM doesn't at this moment handle gameplay mods. They haven't been too prominent thus far but in recent years they're becoming a big part of the scene. This means that my package for the 2017 annual Doom custom-content awards "Cacowards" is missing too much content for my liking; and these mods are _good_.

But we have an X*Y*Z scale of interoperability to resolve, and to put a friendly interface on this. To that end I've been writing a new launcher for PortaDOOM to replace the 1'600+ line batch file that currently does the job. The old launcher just took parameters and launched the request engine + IWAD + PWAD, working out the command-line specifics for the engine. The new launcher uses a bunch of metadata in INI files for each of the engines to intelligently know what engines are compatible and what engine is 'best'. To begin with I just want to get the new launcher to replace the same automated functionality as the old launcher. Once I've done that I'll look at UI and *that* will then let me provide customisation choices, such as gameplay mods.

I'm aiming to have this work done before December as that's when the 2018 Cacowards are released and I'd like to be ready for all the madness that throws my way.

Append

(Leave this as-is, it’s a trap!)

Only the original author or a moderator can append to this post.

Pro tip: Use markup to add links, quotes and more.

Your friendly neighbourhood moderators: Kroc, Impressed, Martijn