Giter VIP home page Giter VIP logo

roguelike_tutorial's Introduction

roguelike_tutorial

Python/TCOD roguelike tutorial

About

This is a personal Python project following a tutorial to build a simple roguelike game using the TCOD library.

The tutorial is here.

Features So Far

  • All features from the tutorial.
  • Changes to reflect updates to TCOD library since the tutorial was first written.
  • Implementation of imageio library to replace soon-to-be-deprecated tcod.image.load() function.
  • Additional logic to tweak procgen randomness.
  • Generated floor storage (previously visited floors remain in memory and can be revisited).
  • Can ascend to new floors as well as descend.
  • Character level displayed in UI panel.
  • Misses and Critical Hits:
    • There is a low chance that any attack can either miss entirely or deal extra damage.
  • Damage is determined randomly in a predefined range for each monster's attack and for different weapons.
  • The player and monsters have a "power" stat that adds bonus damage.
  • Armor equipment and monsters have an "armor" stat that is used to mitigate damage.
  • Damage Types and Affinities:
    • Monster attacks and weapons have damage types—potentially multiple damage types.
    • Monsters have damage affinities, e.g., a monster may be weak to or immune to a certain kind of damage, resist or absorb certain other kinds of damage, etc.
    • Armor can also provide damage affinities to the player.

Features In Progress

Predetermined Rooms

The starting room will be a predetermined shape and location in the dungeon, and code that will handle drawing and displaying such non-generated rooms will be implemented.

TO-DO

  1. Give the game a title other than the default tutorial name.
  2. Change menu screen art.
  3. Incorporate release package publishing into workflow.
  4. Implement new monster types.
  5. Implement new room procgen functions (round rooms, etc.)?
  6. Implement non-scroll-based ranged combat (i.e., bows, etc.)?
    • Ammunition system?
  7. Add new equipment?
    • Add equipment slots?
  8. Implement character classes?
  9. Implement inherent spellcasting for certain classes?
    • Implement MP?
  10. Implement level maximum?
  11. Add new scrolls/consumables?
  12. Add new special monster types for highest/lowest floors?
  13. Add class-synergizing equipment (staves, etc.)?
  14. Implement special actions for classes?
  15. Implement monster inventory?
  16. Implement monsters that have ranged attacks or spellcasting?
  17. Implement game sequence (overall goal, altered tables based on game state, preset starting room with dungeon exit)?
    • Score/grade on dungeon exit or death?
  18. Implement boss monsters?
  19. Implement warp portals and "demiplane" location maps?
    • Implement special color palettes for highest/lowest dungeon floors and "demiplane" locations?
  20. Implement more advanced speed/timing system?

roguelike_tutorial's People

Contributors

mightymanrock avatar

Watchers

 avatar

roguelike_tutorial's Issues

Damage affinities not applying

While attempting to establish prototypes for equipment, an issue has arisen:

My intent is to have certain base armors have dam_resist affinities by default in addition to whatever other damage resistances are indicated in the entity.py entries for each specific armor. E.g., armor of the padded armor prototype will always have resistance to bludgeoning damage in addition to any other damage resistances an individual piece of armor might have.

Unfortunately, I have not yet found a way to make this work reliably.

Additional procgen room types not yet functional

Code to create "circular" rooms is being experimented with, but, because TCOD geometry is not really Euclidean (diagonal distances are not treated as any longer than vertical or horizontal distances), getting something that works has been a challenge.

The current (commented-out) code for these rooms is intended to make a square room and then exclude the corners from the room's inner property. What it actually does, for whatever reason, is create "rooms" that span the whole height of the dungeon map. Also, hallways are produced that run up to the very end of the dungeon map, implying that the "centers" of these super-tall rooms are actually outside of the normal bounds.

Cannot implement main menu

Part 10 of the tutorial seems to drift far enough from either the most recent Python version or the most recent TCOD version that the code for the main menu causes the program to not function at all.

Specifically, the program seems to crash in main.py while importing setup_game.py—not later during any of the MainMenu class's functions.

Repository has been force reset to an earlier commit.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.