.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