Home.plan archive


.plan

September 28, 2020

Next

I'm currently participating in the second DOS Games Jam, with my game Acronia as my jam entry. One side effect I've noticed is that I'm working really fast to get things done, and as a result, not necessarily doing things The Right Way™. Probably the biggest example of this is my TODO file. Instead of taking the time to file issues on my game's source repo and then comment and close them when I'm done, I've found myself keeping an ever-growing TODO list in a text file in the project's directory.

As this list has taken shape over the past three weeks, it was staring to remind me of John Carmack's old .plan files. So, I figured: I've been meaning to update my website lately anyway; why not post my TODO list, along with any notes and thoughts I might have along the way? Sort of a modern version of Carmack's .plan.

(Or rather, as "modern" as this website — which is basically just a Web 1.0 text dump with a little CSS thrown in — can get)

This first post will only be my TODO list, devoid of context. As it develops and I continue to post (probably once a week), I'll probably start elaborating about the challenges I encounter and my thought processes in general.

This initial post is also very long, as it's three weeks of TODOs. Future posts will only include what was added since the last post.

TODO:
    - To do
    + Done
    / In progress
------------------------------------------------------------------------------
Acronia:
    + Get rid of Thing damage queue
    + Split HUD into images
    + Split character select screen into images
    + Start working on mirrored blit
        + How to reverse bytes in a dword
    + Play demos from WAD file
        + Fix double redraw when loading a demo
            + Demo was loading map twice -- once in main(), once in demo.updateTic
        + Command line parameter will still only look on disk
        + BUG: next demo doesn't get full-screen redraw if camera didn't
          travel far enough
    + Intermission times should include sub-seconds
    + Work on reducing executable size for Release build
    + Look into yellow door bug
    + Add ability to hide Things -- they don't update or draw while hidden
      (enemy ambushes!)
    + New tag type: increment tile
    - New tag type: hide/show/toggle tile visibility
        - Ability to hide foreground tiles instead of simply erasing them
    - Fix character positioning when climbing ledge
    - Fix bug where player can get stuck in floor if grabbing a
      sufficiently low ledge (ex.: boxes on top floor of E1M1)
    - Fix softlock behind secret door (if you stay in the room, you can get
      locked in)
    - Fix Enemy::canSeePlayer so that it does a simple line-of-sight check
      (tile based is sufficient)
    - Two or three more levels
        - Record demos
    - Implement Tosser and Bruiser
    - Implement conveyors and a few other hazards
    - PC speaker sounds
    - High score table (integrate into demo loop)
    - Add flashing for player invincibility
        - Test for possible bug where player might be taking damage
          during iframes
------------------------------------------------------------------------------
PalGen:
    + Genericize image processing (see function "processCharacterSelectImages")
    + Include tileset images (see below)
------------------------------------------------------------------------------
TileMapEd:
    + Change workflow:
        + "Raw" tilesets (what TileMapEd works on) are in RAWDATA\TILESET_WORKING
            + Unoptimized tileset image
            + TILES.TXT (without slice data)
            + FG.TXT
        + When compiling optimized tileset:
            + Save to RAWDATA\TILESET:
                + Optimized tileset image (raw RGB)
            + Save to DATA\TILESET:
                + [TILESET.BMP (paletted, generated by PalGen)]
                + TILES.TXT (with slice data)
            + This way, palgen can work from the pre-compiled tileset images
              and not accidentally pull in colors from non-drawing tiles
                + palgen will place paletted tileset image in DATA\TILESET,
                  which is where Acronia will pick it up from when compiling
                  WAD file
+ Asset pipeline workflow:
    1) Run PalGen first
    2) Run TileMapEd if necessary
        + Maybe if running TileMapEd normally (i.e., --compile-tilesets == false),
          then call palgen on startup? That way step 1 can be
          skipped/automated