A text-based RPG meant to experiment with code abstraction and procedural content generation
High level design notes:
- Use pushdown-automata model for game loop
- user input handled by current game state
- state takes ownership of player and state stack
Class hierarchy:
- GameState (
gamestate.h) - abstract- CombatState (
combatstate.h,combatstate.cpp) - TravelState (
travelstate.h,travelstate.cpp) - IdleState (
idlestate.h,idlestate.cpp)
- CombatState (
- Entity (
entity.h)- LivingEntity (
livingentity.h,livingentity.cpp)- Player (
player.h,player.cpp) - Npc (
npc.h,npc.cpp)
- Player (
- LivingEntity (
- WorldLocation (
worldlocation.h)- RoadLocation (
roadlocation.h) - WildernessLocation (
wildernesslocation.h)
- RoadLocation (
- use ncurses library for user interface
- http://www.cs.ukzn.ac.za/~hughm/os/notes/ncurses.html
- add some sort of map component
- add some sort of inventory/equipment/stat visualization
- More detailed map locations (road, landmarks, etc.)
- richer text/storytelling components
- break combat messages up into individual particpants' turns
- better world generation
- See http://www.github.com/jtanderson/MapGen for some experimental efforts
- data structure to store/access world
- better, more detailed, npc system
- saving/loading
- friendly npc's
- towns/villages/etc.
- items
- player inventory
- combat looting
- quests?
- dungeons/buildings
- special items/abilities
- player death, game ending
- logging system