Skip to content

mtimjones/7drl

Repository files navigation

7drl ("The Forest")

This repo contains the source code for a Seven Day Rogue Like entry called "The Forest." This is a quick attempt at a roguelike in a short time (not sure if it will be fun or not).

Task List

  • Add map generation. (Reused)

  • Add ncurses-based viewport. (Reused)

  • Add player input, ability to move around.

  • Add a game-loop with time.

  • Update the UI to permit map.

  • Update the UI to permit messages.

  • Add a CES (Component Entity System) framework for entities in the world (not player).

  • Add combat system, how attack works, defense, etc.

  • Add a health system (animals increase health, level increases health max, etc.).

  • XP System, XP to next level is 110% of previous level.

  • Update the UI to permit stats.

  • Add Animals (health NPCs) into the world (random movement, vary speed).

  • Add Protectors, with pathfinding to attack the player.

  • Add the secret door to escape.

  • Add a function for distance to player.

  • Two types of enemies in the environment. Animals, that can restore health and Protectors that carry artifacts (harder to kill).

  • Add A* pathfinding.

  • Add a sling. The sling shoots for 8 spaces (can be extended with sling bonus items).

  • Add sling bonus system (90% range, 10% shot bonus).

  • Need to detect player death and end game.

  • Need to create an end-screen when the player dies or wins.

  • Add an end-game sequence where protectors appear around the exit requiring the player to kill them before escaping. (Stretch)

  • Add a dynamic legend which emits a description for the items on the screen. (Stretch)

  • Add towers that emit enemies (near the exit). Towers can be destroyed. (Stretch)

  • Add ncurses color. (Stretch)

  • Add a final score (calculated based upon time, things killed, strength of weapon, level, etc.). (Stretch)

  • In the stats section, show the direction of the closest animal and protector. (Stretch)

  • Add support for mouse click detection (for projectiles). (Stretch)

  • Think about weapons and effects. Need to indicate a weapon in status, text-effect when used, damage differences (area), weapon types. (Stretch)

Dependencies

The only dependency is ncurses.

Building and Running

The source includes a standard Makefile, so make should suffice. Your terminal window should be large enough to fit the game window, so expand it.

make
./7drl

Screenshot (3/6)

    ┌───────────────────────────────────────────────────────────────────────────────────────┐
    │                                        ^^                    ^^^^^| The Forest        │
    │                  ^^^^   ^^      ^^^^          ^^^^^^^^^^       ^^^|                   │
    │                  ^^^^   ^^    ^^^^^^^^^^      ^^^^^^^^^^          | Player Stats      │
    │            ^^    ^^^^         ^^^^^^^^^^^              ^^^^^^^    |  Level:         1 │
    │            ^^    ^^^^         ^^^^^^^^^^^              ^^^^^^^    |  XP:            0 │
    │            ^^              ^^^^^^^^^^^^^^              ^^^^^^^    |  XPtoNextLvl:  20 │
    │            ^^              ^^^^^   ^^^^^^              ^^^^^^^    |                   │
    │    ^^^^^^                  ^^^^^       ^^     ^^^^^               |  Health:       20 │
    │    ^^^^^^                  ^^^^^       ^^     ^^^^^^^             |  Sling Range:   8 │
    │                ^^^^^^                         ^^^^^^^             |  Shots Avail:   1 │
    │                ^^^^^^            ^^^^^^       ^^^^^^^^^^^^^       |                   │
    │                 ^^^^^          ^^^^^^^^       ^^^^^^^^^^^^^       |  Artifacts:     0 │
    │^^^^             ^^^^^        ^^^^^^^^^^             ^^^^^^^       |                   │
    │^^^^                   ^^^^^^ ^^^^^^^^^^                          ^|                   │
    │^^^^                   ^^^^^^ ^^^^^                               ^|                   │
    │                       ^^        @                       ^^^^^    ^|                   │
    │                                                         ^^^^^    ^|                   │
    │                                                       ^^^^^^^     |                   │
    │                                                       ^^^^^^      |                   │
    │                                 ^^^^^^^            ^^  ^^^^ ^^^   |                   │
    │                                 ^^^^^^^            ^^  ^^^^^^^^^^ |                   │
    │                                ^^^^^^^^ ^^^^^^^    ^^  ^^^^^^^^^^ |                   │
    │^^^^                          ^^^^^^^^^^ ^^^^^^^    ^^^^^^   ^^^   |                   │
    │^^^^                          ^^^^^^^   ^^^^^^      ^^^^^^         |                   │
    │^^^^    ^^^^^^                ^^        ^^^^^^      ^^^^^^   ^^^^^^|                   │
    │        ^^^^^^                ^^        ^^^^^^^^^^  ^^^^^^   ^^^^^^|                   │
    │        ^^^^^^^                           ^^^^^^^^                 |                   │
    │         ^^^^^^                   ^^      ^^^^^       ^^^^^^       |                   │
    │         ^^^^^^                   ^^      ^^^^^   ^^^ ^^^^^^       |                   │
    │^        ^^^^^^  ^^^^                             ^^^ ^^^^^^  ^^^^ | Time         339  │
    │^             ^^ ^^^^          ^^                 ^^^ ^^^^^^^^^^^^ | Location 183,421  │
    │---------------------------------------------------------------------------------------│
    │                                                                                       │
    │Welcome to The Forest.                                                                 │
    │  You're trapped in the forest, but you can escape with enough artifacts.              │
    │  Artifacts are carried by Protectors, which must be killed to attain them.            │
    │  Once you have 10 artifacts, find the door in the South to escape.                    │
    │  Move with wasd.                                                                      │
    └───────────────────────────────────────────────────────────────────────────────────────┘