CryptoDungeonCrawl is a text-based dungeon crawler game where the in-game environment is dynamically influenced by real-world external information, such as the price of Bitcoin. As external factors change, the game world adapts, introducing new challenges, enemies, and rewards.
- Dynamic Environment: The game world changes based on real-time external information.
- Bitcoin Influence: Fluctuations in Bitcoin prices affect in-game events, mobs, and rewards.
- Text-Based Adventure: Immerse yourself in a classic dungeon crawler experience with a focus on storytelling.
-
API Integration
- Set up API to collect real-time market data, such as Bitcoin prices.
-
Dungeon Game Development
-
Build a Dungeon Crawler
- Storing the dungeon map.
- Adding the adventurer.
- Create a real-time game.
- Building a dungeon.
-
Compose Dungeon Denizens
- Composing entities.
- Installing and using Legion (an ECS library).
- Composing the player.
- Managing complexity with systems.
- Adding monsters.
- Collision detection.
-
Take Turns with the Monsters
- Making monsters wander randomly.
- !!!! Moving entities in real-time !!!! Commit
- I replaced random_move with monsters_move, where all monsters move 1 square in the player's direction (basic algorithm, you could do an A* algo).
- Then I split the program, because before the monsters logic was in the ECS system, which is executed every turn (every player input).
- I divided it into main_schedule and periodic schedule (mod.rs).
- Then, in the tick function (main.rs), I call the periodic schedule, which moves every 1s (after which it changes according to the BTC price) and the main schedule as before.
-
Health and Melee Combat
- Giving entities hit points.
- Adding a heads-up display.
- Implementing combat:
I implement my own solution:
- I modify collisions.rs. I strungle because we can't borrow
*ecsas mutable because it's also borrowed as immutable mutable borrowing occurs. And I add other difficulties. And I had other difficulties.
- I modify collisions.rs. I strungle because we can't borrow
-
-
API and Game Integration
- Establish a connection between the API and the game.
- Develop mechanisms to dynamically adjust in-game elements based on real-world market data:
- Depending on the price of BTC, the speed of monsters changes
-
Multiplayer Integration
- Add multiplayer functionality to the game.
- Implement multiplayer interactions, such as cooperative gameplay or competitive challenges.
-
Player-driven Actions
- Enable players to perform external actions that influence the game.
- Define a set of actions players can take outside the game to disadvantage or challenge other players.