Make DOOM faster
(I've been waiting 28 years to write this ticket. ;-) )
Last night I bridged an older Sourceforge version of Mocha Doom with Jexer and started a new (seriously) project called XtermDOOM:
simplescreenrecorder-2022-01-20_21.05.48
This issue is for the Jexer side of making this a playable game with 20+ FPS. Rules of the game:
- Has to run on stock Xterm. That means:
- Performant with sixel.
- A strategy for keyboard. Initially we can play with just mouse+modifiers and spacebar for switches/doors. But longer term we need a keyboard strategy and that may push into TKeypress changes. (For anyone watching: I will not support a keyboard protocol that is not also supported by Xterm. If you want me to support That One Out There That Does Keypress/release Via CSI-With-Colon-Parameters, get Xterm to do it first.)
- Has to show the game screen and the log screen in separate TWindows, so that you know this isn't just another "libsixel drawing surface" type trick. (The log screen will be a XtermDOOM change.)
Things to do for now:
-
jexer.ECMA48.fastAndDirtySixel - Disable the sixel cache, avoid BufferedImage.hashCode() at all costs, and reduce sixel palette size (probably to 16-32) when images are not indexed. This will like go all the way to HQSixelEncoder - use the actual terminal's register count for choosing directIndexed(), but honor Jexer's sixelPaletteSize for the other modes. -
Aim to retain indexed BufferedImages from TImage down to toSixel(), enabling HQSixelEncoder to use directIndexed(). -
Solve #92 (closed), because the graphics load is about to be a killer.
Edited by Autumn Lamonte