diff --git a/README.md b/README.md index c29b44c..1ca5aef 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,30 @@ A turn-based, procedurally-generated roguelike. -Built using Typescript and [Malwoden](https://malwoden.com), partially following +Built using Typescript, [Malwoden](https://malwoden.com), and [ECSY](https://github.com/ecsyjs/ecsy), partially +following the [official tutorial](https://tutorial.malwoden.com/), the [canonical Python and libtcod tutorial](https://rogueliketutorials.com/tutorials/tcod/v2/), and ideas from elsewhere. +### Table of Contents + +- [RoguelikeDev Does The Complete Roguelike Tutorial](#roguelikedev-does-the-complete-roguelike-tutorial) +- Weekly Implementation Notes + - ✅ [Week 1](#week-1) + - ✅ [Week 2](#week-2) + - ✅ [Week 3](#week-3) + - ✅ [Week 4](#week-4) + - [Week 5](#week-5) + - [Week 6](#week-6) + - [Week 7](#week-7) + - [Week 8](#week-8) +- [Design Specification](#design-specification) + - [Story](#story) + - [Game Loop](#game-loop) + - [MVP Goals](#mvp-goals) + - [Stretch Goals](#stretch-goals) + ## RoguelikeDev Does The Complete Roguelike Tutorial ![RoguelikeDev 2023 Logo](./resources/roguelikedev-2023.png) @@ -17,7 +36,13 @@ This repository is participating in the 2023 edition of the [RoguelikeDev event](https://www.reddit.com/r/roguelikedev/comments/14kz7al/roguelikedev_does_the_complete_roguelike_tutorial/), running from 4 July 2023 till 22 August 2023. -### [Week 1](https://www.reddit.com/r/roguelikedev/comments/14q58js/roguelikedev_does_the_complete_roguelike_tutorial/) - 4 July 2023 - Setup, drawing an @, and moving around +Unfortunately, as of the end of the final week, **I failed**! The repository will still continue to update at a pace I +find manageable. + +### [Week 1](https://www.reddit.com/r/roguelikedev/comments/14q58js/roguelikedev_does_the_complete_roguelike_tutorial/) + +
+✅ 4 July 2023 - Setup, drawing an @, and moving around - Getting this done a bit in advance because I know I am going to be busy over this year's sprint! - The Malwoden tutorial doesn't really spend any time explaining how to set up the development environment--it just asks @@ -35,10 +60,16 @@ running from 4 July 2023 till 22 August 2023. - Lots of mistakes in the tutorial--in Chapter 3, for example, the entire input handling code is missing imports and declarations. - I preferred implementing game states in `game-states.ts` as an enum to reference. -- Completion comment in the weekly - thread [here](https://www.reddit.com/r/roguelikedev/comments/14q58js/roguelikedev_does_the_complete_roguelike_tutorial/jqo8k28/). -### [Week 2](https://www.reddit.com/r/roguelikedev/comments/14wuzqa/roguelikedev_does_the_complete_roguelike_tutorial/) - 11 July 2023 - The object system and generating your first map +
+ +Completion comment in the weekly +thread [here](https://www.reddit.com/r/roguelikedev/comments/14q58js/roguelikedev_does_the_complete_roguelike_tutorial/jqo8k28/). + +### [Week 2](https://www.reddit.com/r/roguelikedev/comments/14wuzqa/roguelikedev_does_the_complete_roguelike_tutorial/) + +
+✅ 11 July 2023 - The object system and generating your first map ![Week 2 Screenshot](./resources/screenshots/yezriel-week-2.png) @@ -54,10 +85,16 @@ running from 4 July 2023 till 22 August 2023. simple thing could have waited anyway. I opted to stick with the same size of screen as before, and lowered the number of random walls added to 200. - Is there no camera system incoming? -- Completion comment in the weekly - thread [here](https://www.reddit.com/r/roguelikedev/comments/14wuzqa/roguelikedev_does_the_complete_roguelike_tutorial/jskcacj/). -### [Week 3](https://www.reddit.com/r/roguelikedev/comments/152ns71/roguelikedev_does_the_complete_roguelike_tutorial/) - 18 July 2023 - Field of view, placing enemies, and attacking +
+ +Completion comment in the weekly +thread [here](https://www.reddit.com/r/roguelikedev/comments/14wuzqa/roguelikedev_does_the_complete_roguelike_tutorial/jskcacj/). + +### [Week 3](https://www.reddit.com/r/roguelikedev/comments/152ns71/roguelikedev_does_the_complete_roguelike_tutorial/) + +
+✅ 18 July 2023 - Field of view, placing enemies, and attacking ![Week 3 Screenshot](./resources/screenshots/yezriel-week-3.png) @@ -79,10 +116,11 @@ running from 4 July 2023 till 22 August 2023. this by adding a forced update of the tile being blocked in `enemy-ai.ts`. I think this allows the tile to be blocked immediately for each individual enemy rather than at once. - I added Vim keys for movement: `hjkl` and `yubn`. -- Completion comment in the weekly - thread [here](https://www.reddit.com/r/roguelikedev/comments/152ns71/roguelikedev_does_the_complete_roguelike_tutorial/jsxg1ny/) -#### Extra Homework - Bitset Walls +
+ +
+✅ Extra Homework - Bitset Walls ![Bitset Walls](./resources/screenshots/yezriel-bitset-walls.png) @@ -97,7 +135,15 @@ running from 4 July 2023 till 22 August 2023. I think it looks a lot better. - After a large increase in the cases, it now supports 8-direction masking. -### [Week 4](https://old.reddit.com/r/roguelikedev/comments/159b1yu/roguelikedev_does_the_complete_roguelike_tutorial/) - 25 July 2023 - Combat damage and building the interface +
+ +Completion comment in the weekly +thread [here](https://www.reddit.com/r/roguelikedev/comments/152ns71/roguelikedev_does_the_complete_roguelike_tutorial/jsxg1ny/). + +### [Week 4](https://old.reddit.com/r/roguelikedev/comments/159b1yu/roguelikedev_does_the_complete_roguelike_tutorial/) + +
+✅ 25 July 2023 - Combat damage and building the interface ![Week 4 Screenshot](./resources/screenshots/yezriel-week-4.png) @@ -117,7 +163,10 @@ running from 4 July 2023 till 22 August 2023. - I'd like to have some markers for info, damage taken, attacks made, item pickups, item used, etc. Maybe a future Extra Homework? -#### Extra Homework - Camera +
+ +
+✅ Extra Homework - Camera ![Camera](./resources/screenshots/yezriel-camera.png) @@ -134,7 +183,12 @@ running from 4 July 2023 till 22 August 2023. coordinates over to some new `VIEWPORT` coordinates. - In fact, it was this straightforward. `camera.ts` now incorporates the new constants. -### [Week 5](https://old.reddit.com/r/roguelikedev/comments/15fd445/roguelikedev_does_the_complete_roguelike_tutorial/) - 1 August 2023 - Items, inventory and ranged targeting +
+ +### [Week 5](https://old.reddit.com/r/roguelikedev/comments/15fd445/roguelikedev_does_the_complete_roguelike_tutorial/) + +
+1 August 2023 - Items, inventory and ranged targeting - There's a sensible de-coupling of the input from the visuals, which allows for nice things like animations in the future. @@ -142,29 +196,59 @@ running from 4 July 2023 till 22 August 2023. traditional. To investigate items in a tile, a player must go to the tile and press `i`, and they will get a log of the items in that tile to the message log. This is implemented in `investigatePosition()` in `actions.ts`. -### Week 6 - 8 August 2023 - Save/load and leveling up +
-### Week 7 - 15 August 2023 - Monster/item progression and equipment +### Week 6 -### Week 8 - 22 August 2023 - Sharing your game +
+8 August 2023 - Save/load and leveling up + +TBC + +
+ +### Week 7 + +
+15 August 2023 - Monster/item progression and equipment + +TBC + +
+ +### Week 8 + +
+22 August 2023 - Sharing your game + +TBC + +
## Design Specification ### Story -Your hometown is suffering from a cataclysm of monsters. You have been tasked with retrieving the Orb of Yezriel, an -ancient and legendary artifact to stem the tide. Your friends and neighbors have ventured into the dungeon before you, +Your hometown is suffering from a cataclysm of monsters. You have been tasked with retrieving a mystical Orb, an +ancient and legendary artifact to stem the tide. This Orb rests somewhere in the depths of the Sepulcher of Yezriel. +Your friends and neighbors have ventured into the dungeon before you, never to return. Steeling your nerves, you set forth into the dungeon. ### Game Loop +
+ - Enter dungeon level - Explore, revealing the map - Encounter enemies; fight or flee - Find items to gain benefits - Locate the exit to the level -### MVP +
+ +### MVP Goals + +
- [x] Player can walk around - [x] Create a basic procedural dungeon map @@ -175,8 +259,12 @@ never to return. Steeling your nerves, you set forth into the dungeon. - [ ] Add Orb of Yezriel, let the player win when getting it - [ ] Game over when the player dies +
+ ### Stretch Goals +
+ - [x] Camera system - [x] Bitset walls - [x] Monsters have field-of-view @@ -191,3 +279,5 @@ never to return. Steeling your nerves, you set forth into the dungeon. - [ ] Scoring system - [ ] Sneaking system to see around corners - [ ] More complex monster AI + +
\ No newline at end of file