Home.plan archive


.plan

December 5, 2020

PreviousNext


It's been a struggle to get back into the "flow" of development after the DOS Games Fall Jam demo that I released last month. That happens to me a lot after I have a major release, or finish a big feature. It takes me a while to re-group and figure out, "okay, what am I going to work on next?"

The biggest thing since the last update is the addition of grenades. Like in Bio Menace, grenades are a separate weapon with their own dedicated key. I chose to do that instead of making them a normal weapon, for a few reasons:

- To do
+ Done
/ In progress
X Not a bug / won't fix
------------------------------------------------------------------------

+ Add grenades
+ Reconfigure virtual controller interface to accommodate grenades
+ Move assets into their own, private repo
+ BUG: armor display not drawing (or maybe it's drawing as black)
+ BUG: E1M3 crashes the game
+ Don't allow player to fire weapon when in special states (hanging,
  climbing, sliding, etc)
+ Add frameskip option
+ Get rid of Player::_controlLock
+ Change tile IDs so [max_val] == "no tile", >= 0 are still regular
  tiles, and < 0 indicate hidden (e.g., -137 == "137, but hidden")
- Improve projectile movement to accommodate slopes
* Bruiser should be solid so player can't run past
* BUG: Things are being drawn more often than needed (every frame!)
    - https://twitter.com/ClarusPlusPlus/status/1318339599798837248
* Work on sprites for other characters: Harry -> Dad -> Buddy
* Sound and music:
    - Sounds: PC speaker, AdLib, Sound Blaster digital (optional)
    - Music: AdLib/Blaster FM
* High score table (integrate into demo loop)
* Don't load in player graphics until that character is the active
  player (this will reduce load time -- and overall memory
  requirements --  by only having one set of graphics in memory at a
  time)
* User settings should load from a file (currently hardcoded)
- Implement conveyors and a few other hazards
- Re-evaluate how "increment all tile IDs" tag works -- maybe having
  a bunch of tags wouldn't be so bad, and we can get rid of this tag
  type entirely
    - More specific tags are okay! Maybe the Tile class could have
      a property "don't animate", that a tag could then flip
/ Some kind of visual indication that enemies are being damaged
    - Replace monster flashing on damage with inverted-color effect
- Figure out some way to make elevators (test on the platform tagged
  #0 in E1M3 -- two separate control posts should be able to make it
  go up only if at top of track, and down only if at bottom)
- Figure out how to make switches return back to their default
  graphic after a few seconds ("re-activation delay" like in
  original Acronia?)
- Remove level par times
- "Animate tiles" tag type
    - Could be used for building pillars or bridges, or lowering
      platforms/walkways, etc
    - Add a tool to TileMapEd to automatically build these without
      having to manually edit tiles
    - Maybe some way to implement partial-tile collision?
- "Template" system for setting a group of tiles to a specific
  pattern without needing a bunch of tags? Just specify the top-left
  corner and the template ID #
- Temporary pickup items (displays a tile graphic, and drops until
  it hits solid ground, then destroys itself and turns into a pickup
  tile)
- Add instructions to README.md on project repo detailing how to
  embed DOS/32A into ACRONIA.EXE
- Allow tile animations to be non-looped (could be useful for one-
  time-only scrolling effects, like the poison in E1M4)
- Underwater (and surface -- for splash effect) tile types
- TileMapEd: tool for generating difference table between two
  tilesets (useful for re-arranging sets!)
    - Compare combinations of graphic and tile type
    - Could then be used to convert maps from one tileset to another
- TileMapEd: "reset tag" button -- set all tag parameters to default
- TileMapEd: show Things in secrets mode
- Add character bios to character select screen (Square/use button?)

----------------------------------------
ONGOING:
    - Periodically check code for "TODO", "FIXME", "NOTE" (etc.)
      comments