Show HN: Wadzilla. Play DOOM in Zork (github.com)
Wadzilla is currently a PoC. Although in theory it “works”, it does not create an entertaining experience as a game, although to me it is quite fun just too see it output ZIL for all of the rooms in a DOOM WAD, with all of the objects in all of their correct locations by their plain English names, along with the 8-character names for the textures of the walls, floors, and ceilings in their relative positions in the room. Part of that enjoyment of course comes from knowing what it entails just to get that far, so the amount of entertainment you derive from that may be far less. In fact, I suspect that for most people at this point the most amusing thing about Wadzilla will be the very concept of its existence - and of course the name, which I will take credit for while also acknowledging how fortuitous it is that the project practically named itself. “What should I name a tool that converts WAD to ZIL? Oh yeah, right. Of course. Wadzilla.”
I share it in this early stage because I suspect many in this audience may enjoy just reading about it, and many others might be excited by it and want to contribute to the effort, and also because I welcome feedback here and contributions by way of GitHub issues and PRs.
53 comments
[ 6.7 ms ] story [ 128 ms ] threadI hoped that proffering this idea here would be fruitful and prosperous, and already I am satisfied. Thanks.
Also, I appreciate you turning me on to the existence of glulx.
Also - IMNSHO the obvious name for this project is Zoom - but that's been taken by a similar game where you slay your coworkers by talking too much.
The next obvious candidate therefore is Dork :)
Also.. screenshots? Of text. Text describing a 2.5D world comprised of 2D graphics rendered in 3D for presentation on a 2D display in our 3D world? Yeah, you’ve got the spirit! :-)
In the mean time, I tried to document the limitations and make it clear that I didn’t consider it plug-and-play, and that I will appreciate feedback, bug reports, and PRs.
I will prioritize addressing things from the comments here, as well as taking advantage of the documentation talk are graciously writing. ;-)
How about calling it "d41d8cd98f00b204e9800998ecf8427e" ?
You have several interpreters to choose form: Frotz, Fizmo, DFrotz, ScummVM (yes, that one, albeit a simple terminal with Frotz it's much better), Lectrote...
Altough I'd call the original MIT Zork 'Schrodinger licensed', because today they are fighting back and forth with MIT veterans so the original source from Dungeon gets a libre compatible license instead of a non-commercial one.
BTW, a libre licensed ZMachine game, Tristam Island (and Calypso, too) will run on far more plataforms than Doom itself. From C64's, to smartphones, pens and even a Game Boy.
Or we could do the same for an adventure game which has more story than Doom.
Albeit an action game (a roguelike) remade into an adventure interface exists today:
https://ifdb.org/viewgame?id=f7zdhxmiraht53d1
But, OFC, any MUD did this since forever. Attacks, spells, avoidings, parries, dashes, steals, stabs...
The Z-Machine was far more capable than that. It had a complicated LISP-inspired object system and a parser capable of a relatively huge vocabulary and you could map just about whatever "spatial relationships" you wanted between the vocabulary and objects. Even the original Zork itself you'd be unable to complete if you assumed the only available directions were compass directions/corners/up/down/in/out. There are some tricky shortcuts and couple places the Zork dungeon violates a strict grid. DOOM has the much more limited map structure than the Z-Machine (given the way its BSP worked it had a very strong Euclidean graph and lots of limits on how rooms connect; which its amazing MyHouse.WAD works at all, it would have been a lot easier to build on the Z-Machine).
Also, further the features of the Z-Machine depend on the version of the Z-Machine and some of the later Z-Machines got extremely complex. Versions 6, 7, and 8 even had modest graphics support. (It might be neat with the project here to try to screenshot DOOM rooms and include in Z6+ Z-Machine files.)
I'm not sure what MUDs you are specifically thinking about, but most things in MUDs that were single player are generally expressible in the Z-Machine with the right libraries. Writing those libraries might be a chore because maybe not enough people want much more than I6/I7 standard libraries.
Also, it's an interesting experience to try to write in ZIL directly instead of Inform, now that there are a growing number of ZIL compilers and even some of the original Infocom games are source available in ZIL from leaks now. ZIL can be interesting to see a lower level idea of the Z-Machine. It's a weirdly capable virtual machine even in its most raw. That raw low level isn't what you'd expect if you expect something like Inform6 and the Inform6 standard library.
- rendering Doom then using an LLM to get a text description of the scene
- asking the user what to do
- converting their text action into a couple seconds of doom input
- re-render and repeat until dead or stage clear.
I was wrong but still fun to think about!
But I shouldn't complain too much, FOSS communities are very nearsighted and usually sleep on .NET, let alone using proper .NET LTS versions (8 currently), which this project does, and it's always something nice to see out there.
I am working on some additional progress toward making it plug-and-play. I’ll work on a demo.
Thanks for the feedback, quuxplusone (and everyone)!
>bin\Zilf.exe doomv109.zil ZILF 0.9 built 8/11/2019 4:30:42 AM [error MDL0128] doomv109.zil:1: ROOM: arg 1: expected ATOM
[error MDL0113] doomv109.zil:2: unrecognized value in DECL pattern: -48 [error MDL0215] doomv109.zil:2: GVAL: atom 'CEILING' has no global value
[error MDL0113] doomv109.zil:2: unrecognized value in DECL pattern: 80 [error MDL0113] doomv109.zil:3: unrecognized atom in DECL pattern: Unknown [error MDL0113] doomv109.zil:4: unrecognized atom in DECL pattern: Unknown [error MDL0113] doomv109.zil:5: unrecognized atom in DECL pattern: - [error MDL0113] doomv109.zil:17: unrecognized atom in DECL pattern: ROOM [error MDL0113] doomv109.zil:20: unrecognized value in DECL pattern: -48 [error MDL0215] doomv109.zil:20: GVAL: atom 'CEILING' has no global value
[error MDL0113] doomv109.zil:20: unrecognized value in DECL pattern: 80 [error MDL0113] doomv109.zil:21: unrecognized atom in DECL pattern: Unknown [error MDL0113] doomv109.zil:22: unrecognized atom in DECL pattern: Unknown [error MDL0113] doomv109.zil:23: unrecognized atom in DECL pattern: - [error MDL0113] doomv109.zil:47: unrecognized atom in DECL pattern: - [error MDL0128] doomv109.zil:48: GVAL: arg 1: expected ATOM
[error MDL0128] doomv109.zil:50: ROOM: arg 1: expected ATOM
[error MDL0113] doomv109.zil:51: unrecognized value in DECL pattern: 0 [error MDL0215] doomv109.zil:51: GVAL: atom 'CEILING' has no global value
>bin\Zilf.exe freedoom1.zil ZILF 0.9 built 8/11/2019 4:30:42 AM [error MDL0128] freedoom1.zil:1: ROOM: arg 1: expected ATOM
[error MDL0113] freedoom1.zil:2: unrecognized value in DECL pattern: 0 [error MDL0215] freedoom1.zil:2: GVAL: atom 'CEILING' has no global value
[error MDL0113] freedoom1.zil:2: unrecognized value in DECL pattern: 104 [error MDL0113] freedoom1.zil:3: unrecognized atom in DECL pattern: Unknown [error MDL0113] freedoom1.zil:4: unrecognized atom in DECL pattern: Unknown [error MDL0113] freedoom1.zil:5: unrecognized atom in DECL pattern: - [error MDL0113] freedoom1.zil:7: unrecognized atom in DECL pattern: STARGR1 [error MDL0215] <internally created FORM>: GVAL: atom 'Left' has no global value
[error MDL0113] freedoom1.zil:8: unrecognized atom in DECL pattern: SKSNAKE2 [error MDL0113] freedoom1.zil:9: unrecognized atom in DECL pattern: SKSNAKE2 [error MDL0113] freedoom1.zil:10: unrecognized atom in DECL pattern: SKSNAKE2 [error MDL0113] freedoom1.zil:11: unrecognized atom in DECL pattern: SKSNAKE2 [error MDL0113] freedoom1.zil:12: unrecognized atom in DECL pattern: ROOM [error MDL0113] freedoom1.zil:15: unrecognized value in DECL pattern: 0 [error MDL0215] freedoom1.zil:15: GVAL: atom 'CEILING' has no global value
https://github.com/freedoom/freedoom/releases/download/v0.13...
If that's the complete Doom IWaD, you can be in trouble as it's copyrighted.
https://github.com/scottvr/wadzilla/commit/b92f90070726088ba...