This ain't your usual Doom port
cohost.orgMEET POOM
Hi everybody. Meet POOM [https://freds72.itch.io/poom]. It's not your everyday Doom port. It's one of the most bonkers takes on the game I have seen in a while. Join me as I briefly gush about how good this thing is.
(obligatory: 56k warning, here be gifs aplenty; one of them has a bit of flashing to demonstrate the dynamic lighting. apologies!)
CLICK THE SEXY READ MORE LINK BELOW IT TOOK ME AN HOUR TO WRITE THIS
----------------------------------------
So, for starters it somehow runs in PICO-8.
BUT WHAT'S PICO-8?
"hello world" on a pico8 screen [https://www.lexaloffle.com/gfx/hello_p8.gif]
PICO-8 [https://www.lexaloffle.com/pico-8.php] is a "fantasy console" made by Lexaloffle. It's got a complete devkit built into itself (complete with editors for code, graphics and sound/music) and it hits you with a BUNCH of "hardware" limitations: a 128x128 screen; a palette of 16 colours and not a colour more; a d-pad and two buttons as your only interface; your programs can't exceed 8192 tokens.
It's fun! It's incredible! It saves its games as .png files! Here, have a game! This is Celeste — yes, that Celeste!
celeste! [https://www.lexaloffle.com/bbs/cposts/1/15133.p8.png]
(it started off as a PICO-8 game made in four days for a game jam)
That .png file contains the entirety of the game: code, assets and all. If you have PICO-8, you can just load the image and play the game like no big deal. If you don't, you can always play it in your browser [https://www.lexaloffle.com/bbs/?pid=11722#p]. PICO-8 can export binaries as well as HTML5.
The thing, though, is those limitations. Usually, PICO-8 only lets you draw tiles. That's great for 2D games, but, well, this is Doom.
WHAT THE FUCK IS HAPPENING
doom combat in a darkened corridor; it lights up with gunfire as the player fires the shotgun [https://cohost.org/rc/attachment-redirect/7d03b958-9d2e-4363-9e8f-c758a5189095]
So how do you get an extremely limited console to play Doom, let alone at a rock-solid 60 FPS? Plenty of magic and trickery, as detailed in the development blog post [https://freds72.itch.io/poom/devlog/241700/journey-to-poom].
Keep in mind those limitations we just talked about. Despite those, POOM implements a reasonably complete version of Doom:
* full texture mapping across all surfaces
* variable floor/ceiling heights
* per-sector lighting
* monster infighting
* animated floor textures
* several ZDoom features (such as DECORATE)
* support for any Doom map editor (as long as it can handle the ZDoom features)
* keyboard and mouse support
IT'S ALSO A PRETTY SEXY GAME
a bridge connects two industrial structures across a flowing river of lava [https://cohost.org/rc/attachment-redirect/f8ff3e3f-0700-478b-bf32-a17149d2b62e]
So. The gameplay's there! It's good! Because of memory limitations, the game had to be pared down; it's only a single six-level episode. Weapons and enemies have been pared down, too: you start with a shotgun and skip the pistol entirely, and unless I missed a secret, the BFG is nowhere to be seen, either. The roster of enemies consists of shotgunners, imps, cacos and lost souls. You'll slay approximately four hundred enemies on your way to the Super Secret Final Boss.
a firefight against several cacos flanked by imps. the player uses a slow-firing plasma gun [https://i.imgur.com/5xhyayl.gif]
More importantly, the game feels like Doom. It's got the movement. The combat is on point. At no point do you feel like you're playing a game that merely pretends to be Doom.
three cacos versus a rocket launcher that just ran out of ammo [https://i.imgur.com/C3ZWoOX.gif]
It's not without minor issues: the plasma gun seems underpowered, especially with its extremely slow fire rate. The shotgun's spread is too broad. The keyboard controls are locked as ESDF with no option of changing it. The rocket launcher feels a bit underpowered.
These are all minor gripes for what's genuinely a ridiculous achievement in programming. go play it right now
You can simply click through to the website. I would disable it if I knew how. I suppose I can try adding a body…