This is a sorta-kinda roguelike using the fantastic package https://github.com/BigJk/ramen, which is a simple console emulator written in go that can be used to create various ascii / text (roguelike) games.
Right now, the code is a really basic re-factor of the roguelike example that comes with Ramen, but I'll use it as a basis for various (at least to me) interesting experiments :)
- ASDW - Move
- Space - Attack
- TAB - Toggle UI selection
- Arrow Up / Down - Select UI element
- Enter - Consume / Equip / Loot selected UI element
- Backspace - Drop selected UI element
- P - Add potion to inventory (for testing)
- T - Add trap to inventory (for testing)
- Creatures
- [DONE] Basic movement (random)
- Custom movement speed
- [DONE] AI (basic)
- Custom perception radius
- Should recognize traps and see items
- [DONE] Pathfinding
- Optimize
- [DONE] Traps should affect enemies (hacky)
- Only enemies that are within player view are affected
- [DONE] Randomized loot
- Generate names
- [DONE] Basic movement (random)
- Documentation
- Inventory
- [DONE] Basic inventory
- [DONE] Item add / remove
- Items
- [DONE] Basic items
- [DONE] Item generation
- [DONE] Consumable items
- [DONE] Equippable items
- [DONE] Enemy inventory
- [DONE] Display items on dead enemies
- [DONE] Looting of dead enemies
- SELECTIVE looting of dead enemies
- Item pickup / drop
- [DONE] Item drop
- Confirmation before dropping
- [DONE] Item pickup
- [DONE] Item drop
- Item effects
- [DONE] Item triggers
- Notes / books
- Hidden items
- [DONE] Hidden traps
- [DONE] Reveal hidden items on touch
- Reveal hiddem items if we have high enough perception or a potion of perception
- Hidden status should be per entity (player, enemy) so that enemies can also run into traps and avoid them when they know where they are
- Combat
- [DONE] Player death
- Enemies should attack on each turn
- Map generation
- [DONE] Custom seed
- [DONE] Custom world generator functions
- [DONE] Creature placement
- Item placement
- [DONE] Dungeons
- Neighbor rooms not centered (optionally)
- Connections / doors not centered (optionally)
- [DONE] Water puddles
- Prevent water from blocking doors
- [DONE] Columns
- Improve symmetric distribution
- [DONE] Traps
- Caves
- Overworld / outdoor
- Allow for elevation in tiles
- [DONE] Shade tiles based on elevation difference to player
- [DONE] Player is always the baseline for shading
- [DONE] Everything below player is shaded darker (to black)
- [DONE] Everything above player is shaded lighter (to white)
- [DONE] If a player changes elevation, the shading should change accordingly
- [DONE] Shade tiles based on elevation difference to player
- Player / entity can only enter tiles with a max elevation difference of n
- Multi dimensional map? (e.g. 3d)
- Allow for elevation in tiles
- FOV / 'Fog of war'
- [DONE] Basic radius based FOV
- Raycasting based FOV
- Merge map and FOV?
- Items / Entities rendering
- Interface for items / entities in the world
- UI
- Add scenes / screens
- Scene interface
- Input handling
- Rendering
- [DONE] Add Close() method to scenes
- [DONE] Clean up components when switching scenes
- [DONE-ish]Remove all textboxes
- Scenes
- Character creation
- Main menu
- [DONE] Main game
- [DONE] Game over
- [DONE] Win (located exit)
- Scene interface
- Deduplicate UI code (items, enemies, etc)
- Highlight active UI components
- Move player info out of selectable UI
- Dialog / conversation
- Extend textbox
- Add multiple choice dialog (actions)
- Textbox
- [DONE] De-dupe scene textbox code
- [DONE] Add scene textbox
- [DONE] Pagination
- [DONE] Line break / paragraph support
- Move to top level (so that it can be used in all scenes)
- Make closing key configurable (and customize bottom text accordingly)
- Add scenes / screens
- Gameplay
- [DONE] Add win condition
- Cutscenes / events / triggers
- Trigger scenes through items (e.g. stairs, level exit)
- [DONE] Level exit
- [DONE] Trap
- Text / message
- Limit triggers to entity types (e.g. only player can trigger stairs)
- Trigger scenes through items (e.g. stairs, level exit)
- Collects stats or score to show on win/lose
- FOV
- Loot
- Game loop
- Map generation