Skip to content

fabian-z/oubliette

Repository files navigation

oubliette

ˌuːblɪˈɛt - a dungeon with an opening only at the top

Project work for lecture Programming I

Must have

  • Must be developed with JavaScript, no HTML/CSS or Browser

  • Node.js as interpreter

  • The application must run stable and be able to cope with exceptionary situations (invalid input, missing files, ..)

  • Reasonable and intuitive user experience

  • Code should be readable and well-structured, with comments for non-trivial code or other relevant places

  • Large frameworks (gaming, web frameworks, ..) must not be used

  • Simple libraries (e.g. readline-sync, lodash, node-localstorage) are allowed, more complex libraries are to be approved by @behrends

    • TUI libraries, such as some ncurses binding or blessed have been approved for this specific project
    • Dungeon generation libraries, such as dungeon-generator or Dungeonizer.js have been approved for this specific project
    • TypeScript is allowed
  • Rouge-like game with monospace ASCII / UTF-8 art interface

    • Procedurally generated maps / dungeons ☑
      • Research algorithms and test JS implementations ☑
    • Random distribution of monsters ☑ and items ☑
    • Track player status (health points ☑, experience ☑, character name ☑)
  • Controlled with keyboard ☑

    • Arrow keys, WASD ☑
  • Split-screen with player and game status ☑

Nice to have

Implemented:

  • Map exploration ☑
  • Good monster pathfinding ☑
    • Uses Dijkstra map, a simplified algorithm where all edges have identical weight
    • Pathfinding is executed on a separate worker thread ☑
  • Battle system player <-> monster ☑
    • Research different damage / health parameters
  • Item callbacks can effect basically all game state objects ☑
  • Help screen / signs and symbols explanation for improved UX ☑
  • Level and character progression ☑
  • Different weapons / attack strengths ☑
    • Dagger, Sword (permanent) and attack potion (temporary)

Not yet implemented:

  • Difficulty selection

    • Hard, Medium, Easy - with different game balancing
  • Event logs

  • Saving of application state / game player progress

    • -> Save level map but keep permadeath?
  • Research of UX with different algorithm parameters (map generation, distribution rules)

  • Easter egg / achievements?

About

Project work for lecture Programming I

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published