When I was a kid I played a game that used only text characters in a terminal called [Rogue](https://en.wikipedia.org/wiki/Rogue_(video_game). This game ran in my little MSDOS computer using only the ASCII characters the computer supported. No graphics and I think no sound but I can't remember. Despite this very low quality graphical experience the game delivered an amazing game experience. Even today the term "roguelike" denotes certain qualities that come from the original _Rogue_:
When I was a kid I played a game that used only text characters in a terminal called [Rogue](https://en.wikipedia.org/wiki/Rogue_(video_game). This game ran in my little MSDOS computer using only the ASCII characters the computer supported. No graphics and I think no sound but I can't remember. Despite this very low quality graphical experience the game delivered an amazing game experience. Even today the term "roguelike" denotes certain qualities that come from the original _Rogue_:
* Dying is permanent but each time you restart you'll retain some previous skills or equipment so
* Dying is permanent but each time you restart you'll retain some previous skills or equipment so the next run is easier.
the next run is easier.
* However, it's only easier to the point where you previously died, as each level through the dungeon gets more and more difficult.
* However, it's only easier to the point where you previously died, as each level through the
dungeon gets more and more difficult.
* A randomly generated world (dungeon) that features a new experience every time.
* A randomly generated world (dungeon) that features a new experience every time.
* A focus on mechanics rather than graphics, but creative use of the limited graphical characters to
* A focus on mechanics rather than graphics, but creative use of the limited graphical characters to make the game playable.
make the game playable.
* This lack of graphics weirdly makes the game _more_ imaginative because you have to fill in what's going on with your own imagination, similar to a game of Dungeons and Dragons.
* This lack of graphics weirdly makes the game _more_ imaginative because you have to fill in what's
going on with your own imagination, similar to a game of Dungeons and Dragons.
This is why I chose Rogue as the basis for my first actual game in C++.
This is why I chose Rogue as the basis for my first actual game in C++.
@ -84,18 +80,24 @@ See? That's how Free Speech works. You don't need a LICENSE.
## Build Instructions
## Build Instructions
Pre-requisites:
On all platforms you'll need these components:
* Meson -- which need Python
* [Meson](https://mesonbuild.com/) -- which needs Python.
* C++ Compiler -- Tested with Clang and G++
* C++ Compiler -- Tested with Clang and G++. You can use my [C++ Setup Guide](https://learncodethehardway.com/courses/learn-cpp-the-hard-way/1-the-basics/01-gearing-up/) which features an automated installer for Windows.
* GNU make -- For the convenience Makefile
* [GNU make](https://www.gnu.org/software/make/) -- For the convenience Makefile. On Windows you should have this if you used my setup scripts. Otherwise `winget install ezwinports.make` will set you up.
* [git](https://git-scm.com/) -- Which should be on almost every platform, and is installed by default with my Windows setup scripts.
Windows instructions
### Windows Instructions
I primarily develop in Windows using the above setup, so this should work the best. Open [Windows
Terminal](https://github.com/microsoft/terminal) and run these commands _one at a time_. Don't
After that the game should be running. It'll be in different states depending on how far I've
pushed it, but you should at least have two enemies, some loot that gives you a better torch, and a
room with a light in it. Go find them.
## Linux and OSX
Linux and OSX have the same requirements as Windows and almost the same install steps. The only
difference is that once you get your developer tools installed then you only need [Meson](https://mesonbuild.com/). Linux and OSX should have everything else you need or there's a package for it.
Once you have that installed you can run these commands: