Downdelving is an experimental roguelike written in Rust.

Overview

Downdelving

Downdelving is an experimental roguelike written in Rust. It's built upon the base supplied by Bracket's Rust Roguelike Tutorial. It's a rewrite of Azymus, my first experiment in this direction.

At the moment, I'm just running through the Rust roguelike tutorial, since it's now been a couple years since I did anything in Rust. Watch this space, if you wanna.

You can play the game in your browser (assuming your browser supports it).

Comments
  • Create demo of pathfinding.

    Create demo of pathfinding.

    Story

    I really like the A* pathfinding demo here, so it'd be cool to replicate it as a demo within Downdelving.

    Acceptance Criteria

    • [x] An A* pathfinding demo has been created and is accessible from the Demo menu (see #22 ).

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 2
  • Rename the city.

    Rename the city.

    Story

    City should have a different name. Like, say, "Downdelving."

    Acceptance Criteria

    • [x] Bracketon is no longer Bracketon. It is Downdelving.

    Implementation Notes

    :1234: Size: 1 
    opened by ndouglas 2
  • Add cheat for filling up hunger bar.

    Add cheat for filling up hunger bar.

    Story

    It's tedious to test when you're starving to death.

    Acceptance Criteria

    • [x] A cheat option exists that allows the character to eat.

    Implementation Notes

    Should be straightforward.

    :1234: Size: 2 
    opened by ndouglas 2
  • Split experience system out from death.

    Split experience system out from death.

    Story

    • As a player, I want my PC's experience to be based on more than just killing monsters, so that I am encouraged to explore more aspects of the game.
    • As a developer, I want to be able to trigger experience gain easily so I can test the leveling system.

    Acceptance Criteria

    • [x] The process of gaining experience levels is factored out of the death effect.
    • [x] A cheat action has been added to allow adding experience.

    Implementation Notes

    I think this can just be done as another effect.

    :rock: Unrefined 
    opened by ndouglas 2
  • Implement my own color system.

    Implement my own color system.

    Story

    Bracket's RGB/RGBA and BearLibTerminal's Color aren't cleanly compatible and that's screwing up my lighting.

    I think it'd be better just to write my own color system and then implement everything in terms of that.

    Acceptance Criteria

    • [ ] Color system has been written.
    • [ ] All code currently using RLTK's color system has been rewritten to use my own.

    Implementation Notes

    :no_entry_sign: Invalid 
    opened by ndouglas 1
  • Replace RLTK field of view system with symmetric shadowcasting algorithm.

    Replace RLTK field of view system with symmetric shadowcasting algorithm.

    Story

    The RLTK FOV system seems to be a bit quirky, as noticed in #54 . The current state of the art appears to be symmetric shadowcasting. I should use that instead.

    Acceptance Criteria

    • [x] The visibility system uses a symmetric shadowcasting algorithm instead of the RLTK algorithm.
    • [x] A demo has been created that allows a direct comparison between the two algorithms.
    • [x] [Optional] The visibility code has been refactored to allow easier use in other sections of the code.

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 1
  • Add a new demo for just walking around.

    Add a new demo for just walking around.

    Story

    I should add a demo for just walking around. This would then be modified to serve as a test bed for lighting effects, etc.

    Acceptance Criteria

    • [x] I have a demo for just walking around.

    Implementation Notes

    :1234: Size: 1 
    opened by ndouglas 1
  • Split out Vendor code into a separate module.

    Split out Vendor code into a separate module.

    Story

    There's Vendor-related code in the GUI, in the runstate, as a mode of a specific runstate value, etc. It's not a terribly large or complicated system, but it's pretty spaghetti.

    Ideally, it would all exist in a single module. I don't really know how to break it out cleanly, but maybe I'll figure it out.

    I'll timebox this at two hours. Hopefully it'll take a lot less time than that.

    Acceptance Criteria

    • [x] Vendor code exists in a vendor module.

    Implementation Notes

    :1234: Size: 2 
    opened by ndouglas 1
  • Fix floating text issue in vendor menu.

    Fix floating text issue in vendor menu.

    Story

    The control text is not aligned with the bottom edge of the menu box.

    Screen Shot 2021-10-26 at 7 39 12 PM

    Acceptance Criteria

    • [x] Control legend is aligned with the bottom edge of menu box.

    Implementation Notes

    :bug: Bug :1234: Size: 1 
    opened by ndouglas 1
  • Add

    Add "Resume Game" menu option.

    Story

    When a game is in progress, the main menu should have an option entitled "Resume Game" that resumes the current game.

    Acceptance Criteria

    • [x] The main menu has a "Resume Game" option when a game is in progress.
    • [x] The main menu does not have a "Resume Game" option when a game is not in progress.

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 1
  • Demo menu

    Demo menu

    Story

    There should be a menu, accessible from the main menu, that gates off demonstration technology, etc.

    For instance, it'd be useful to show map generation, pathfinding, combat, etc demos.

    Acceptance Criteria

    • [x] A demo menu item has been created that permits access to demos.
    • [x] The demo menu can be exited, whereupon the player should be presented with the main menu.

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 1
  • Lighting/color effects seem to be recalculated constantly.

    Lighting/color effects seem to be recalculated constantly.

    Story

    There was a massive performance issue when I attempted to debug the lighting system. It appears that the lighting is recalculated each tick or frame. It would be preferable if this is only recalculated when necessary, i.e. "dirty" state.

    Acceptance Criteria

    • [ ] Lighting is only recalculated when the viewshed (or map?) has been marked dirty.
    • [ ] Existing effects and other code has been audited to ensure that this does not cause issues with lighting effects.

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 0
  • Color demo!

    Color demo!

    Story

    This should be fun.

    Basically, just draw a map with a lot of color to ensure that colors are being processed correctly.

    Acceptance Criteria

    • [ ] A demo has been created that allows me to evaluate the creation of the Color system and refactoring the existing codebase to use that system.

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 0
  • Shift from levels to biomes.

    Shift from levels to biomes.

    Story

    I don't like the linear level system. It's straightforward and easy to deal with, but the linearly increasing difficulty does not really match my intended direction.

    Instead, I'd like to devise some notion of biomes. These biomes would ideally be parametric to some degree, so that I could create or derive variants of them, store them as raw data to be interpreted at runtime, etc.

    I like a lot of the current system, so some of the pondering will be focused on how to keep and reinterpret that code.

    Acceptance Criteria

    • [ ] I've pondered this idea at length and have devised some plan of attack.

    Implementation Notes

    :thinking: Ponder :1234: Size: 3 
    opened by ndouglas 0
  • Create demo for lighting systems.

    Create demo for lighting systems.

    Story

    Now that I can demo FoV, I wanna demo lighting systems.

    Acceptance Criteria

    • [ ] A demo is constructed that permits easy switching between different lighting models for evaluation.

    Implementation Notes

    :1234: Size: 3 
    opened by ndouglas 0
  • Implement Actor pattern for communication between entities?

    Implement Actor pattern for communication between entities?

    Story

    It'd be cool to enable a sort of pack or herd behavior model. Flocking! That kind of thing. Or hunting behaviors like a wolf pack might show.

    I should see how feasible it might be to implement this and come up with a cool demo or two.

    Acceptance Criteria

    • [ ] I have pondered this at length and created at least one followup issue with details to pursue.

    Implementation Notes

    I might use the Actix library.

    :thinking: Ponder :1234: Size: 2 
    opened by ndouglas 0
  • Modify vendor sale price based on charisma.

    Modify vendor sale price based on charisma.

    Story

    See #47 . Vendors should adjust the price for which they are willing to purchase items based on the seller's charisma.

    Acceptance Criteria

    • [ ] Vendor purchase price is modified per charisma.

    Implementation Notes

    :bricks: Blocked 
    opened by ndouglas 0
Owner
Nathan Douglas
Nathan Douglas
Roguelike Game in Rust using macroquad.rs

Roguelike Game in Rust using macroquad.rs Introduction Welcome to our roguelike game developed in Rust! This project aims to provide an engaging gamin

Andrea Pollini 11 Aug 1, 2023
POC for a Roguelike UI/Window Manager

Minimal POC for a Roguelike UI Manager This repo is a proof of concept for a roguelike UI and a generally expandable template for a rogue/df-like. Use

null 3 Oct 16, 2023
Experimental type-safe geometric algebra for Rust

Projective Geometric Algebra This library is a Rust code generator, generating the mathematics you need for a geometric algebra library. I made it mos

Emil Ernerfeldt 33 Dec 4, 2022
An (experimental) chess tactics trainer with spaced repetition

better-tactics A chess tactics trainer that with spaced repetition. New puzzles will be shown to you from the lichess puzzle db, according to your cal

Caitlin Wilks 6 Oct 6, 2023
A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.

rustris A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music. (C) 2020 Ben Cantrick. This code is distri

Ben Cantrick 17 Aug 18, 2022
A tool to generate inbetweens for animated sprites, written in godot-rust

Bitmapflow is a tool to help you generate inbetweens for animated sprites. In other words, it makes your animations smoother. It uses optical flow to

null 411 Dec 21, 2022
Text Renderer written in Rust using HarfBuzz for shaping, FreeType for rasterization and OpenGL for rendering.

Provok Text Renderer written in Rust using HarfBuzz for shaping, FreeType for rasterization and OpenGL for rendering. Input Provok is fed with a JSON

Ossama Hjaji 67 Dec 10, 2022
Rustcraft is a simple Minecraft engine written in rust using wgpu.

Rustcraft is a simple Minecraft engine written in rust using wgpu.

Raphael Van Hoffelen 110 Dec 22, 2022
rpg-cli is a bare-bones JRPG-inspired terminal game written in Rust

rpg-cli is a bare-bones JRPG-inspired terminal game written in Rust. It can work as an alternative to cd where you randomly encounter enemies as you change directories.

Facundo Olano 660 May 27, 2021
Walleye is a chess engine written completely in rust.

Walleye is a UCI-compatible engine written using the classical alpha-beta style AI. It supports loading board positions from arbitrary FEN strings, Unicode pretty printing to the console, and UCI communication logs to help with debugging.

Mitchel Paulin 95 Dec 24, 2022
A interactive and fun to use memory game written in Rust

memg - Memory Game memg is a interactive and fun to use memory game written in rust Installation Make sure you have rust installed. Use this official

null 4 Sep 9, 2021
A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

rg3d engine 5.4k Jan 4, 2023
A Gameboy Color Emulator written in Rust

A Gameboy Color Emulator written in Rust

Mathijs van de Nes 512 Dec 23, 2022
Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust

velobracket ('veloren' + 'bracket-lib') velobracket is Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust. Us

Rodion Martynov 13 Dec 25, 2022
Work-in-progress Nintendo Switch emulator, written in Rust and slightly less focused on gaming

pegasus Work-in-progress Nintendo Switch emulator, written in pure Rust and slightly less focused on gaming Information This project aims to be a diff

XorTroll 21 Nov 22, 2022
Game of life implementation written in Rust.

Game of life Game of life implementation written in Rust. Part of my journey in learning Rust. Pattern files The patterns are based on the example pat

Hashem Hashem 2 Nov 17, 2022
Creative Coding Framework based on Entity Component System (ECS) written in Rust

creativity creativity is Creative Coding Framework based on Entity Component System (ECS) written in Rust. Key Features TBA Quick Start TBA How To Con

Chris Ohk 9 Nov 6, 2021
Small game where you play a big spider chasing small spiders, written in Rust and Macroquad.

Ludum Dare #49 Compo entry - Procedural Spider Small game where you play a big spider chasing small spiders. Each spider you catch makes you bigger! C

Jakub Arnold 16 Sep 5, 2022
Ray Tracer written in Rust

Erena A Ray Tracer written in Rust. Erena is based on the Esena project, which is written in Scala. Here is the current rendered image: See The Ray Tr

Melvic Ybanez 11 Dec 7, 2021