.plan
December 5, 2020
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:
- I want the player to be able to access them quickly, since they're intended as a sort of "panic button" type of weapon.
- They're meant for specific situations where the you might not want to put yourself in harm's way, like if there's a bunch of monsters down in a pit, or you're facing a big boss where putting yourself in direct line of sight is guaranteed to get you killed.
- They're rare. Each level will only have a few grenade pickups. I envision the player only ever having a handful of grenades at their disposal at any given time.
- 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