Skip to content

Commit

Permalink
Complete refactor of the README
Browse files Browse the repository at this point in the history
Mostly re-organized, added collapsable sections and a ToC. Should help in readability.
  • Loading branch information
avinashv committed Sep 4, 2023
1 parent 3f472e3 commit 0fad20d
Showing 1 changed file with 110 additions and 20 deletions.
130 changes: 110 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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/)

<details>
<summary>✅ 4 July 2023 - Setup, drawing an @, and moving around</summary>

- 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
Expand All @@ -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
</details>

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/)

<details>
<summary>✅ 11 July 2023 - The object system and generating your first map</summary>

![Week 2 Screenshot](./resources/screenshots/yezriel-week-2.png)

Expand All @@ -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
</details>

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/)

<details>
<summary>✅ 18 July 2023 - Field of view, placing enemies, and attacking</summary>

![Week 3 Screenshot](./resources/screenshots/yezriel-week-3.png)

Expand All @@ -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
</details>

<details>
<summary>✅ Extra Homework - Bitset Walls</summary>

![Bitset Walls](./resources/screenshots/yezriel-bitset-walls.png)

Expand All @@ -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
</details>

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/)

<details>
<summary>✅ 25 July 2023 - Combat damage and building the interface</summary>

![Week 4 Screenshot](./resources/screenshots/yezriel-week-4.png)

Expand All @@ -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
</details>

<details>
<summary>✅ Extra Homework - Camera</summary>

![Camera](./resources/screenshots/yezriel-camera.png)

Expand All @@ -134,37 +183,72 @@ 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
</details>

### [Week 5](https://old.reddit.com/r/roguelikedev/comments/15fd445/roguelikedev_does_the_complete_roguelike_tutorial/)

<details>
<summary>1 August 2023 - Items, inventory and ranged targeting</summary>

- There's a sensible de-coupling of the input from the visuals, which allows for nice things like animations in the
future.
- The tutorial implements a mouse-pointer investigation mechanic--I don't like that, so I've opted for something more
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
</details>

### Week 7 - 15 August 2023 - Monster/item progression and equipment
### Week 6

### Week 8 - 22 August 2023 - Sharing your game
<details>
<summary>8 August 2023 - Save/load and leveling up</summary>

TBC

</details>

### Week 7

<details>
<summary>15 August 2023 - Monster/item progression and equipment</summary>

TBC

</details>

### Week 8

<details>
<summary>22 August 2023 - Sharing your game</summary>

TBC

</details>

## 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

<details>

- Enter dungeon level
- Explore, revealing the map
- Encounter enemies; fight or flee
- Find items to gain benefits
- Locate the exit to the level

### MVP
</details>

### MVP Goals

<details>

- [x] Player can walk around
- [x] Create a basic procedural dungeon map
Expand All @@ -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

</details>

### Stretch Goals

<details>

- [x] Camera system
- [x] Bitset walls
- [x] Monsters have field-of-view
Expand All @@ -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

</details>

0 comments on commit 0fad20d

Please sign in to comment.