$ sudo apt-get install gcc cmake libsdl2-dev libsdl2-mixer-dev python3 inotify-tools$ brew install gcc cmake sdl2 sdl2_mixer python3For NixOS we have a development environment defined in default.nix
with all of the required dependencies. You can enter the environment
with nix-shell command:
$ nix-shell$ sudo pacman -S gcc cmake sdl2 sdl2_mixer python inotify-toolsSee Build on Windows section.
$ mkdir build
$ cd build/
$ cmake ..
$ make
$ ./nothing ../levels/level-01.txt
$ ./nothing_test| Key | Action |
|---|---|
d |
Move to the right |
a |
Move to the left |
SPACE |
Jump |
c |
Open debug console |
r |
Reload the current level including the Player's position |
q |
Reload the current level preserving the Player's position |
p |
Toggle game pause |
l |
Toggle transparency on objects. Useful for debugging levels |
| Button | Action |
|---|---|
Left Stick |
Movement of the Player |
1 |
Jump |
| Key | Action |
|---|---|
ESC |
Exit console |
Enter |
Evaluate the expression |
Up/Down |
Traverse console history |
Generally creating a level looks like:
SVG File -> Custom Level File -> Game
To convert SVG to the level file and run svg2rects.py script:
$ python3 ./devtools/svg2rects.py -i <svg-file> -o <level-file>All of the levels reside in the ./levels/ folder. Use ./levels/Makefile to automatically rebuild all levels.
$ inkscape ./levels/level.svg &$ ./build/nothing ./levels/level.txt &$ cd ./levels/$ make watch- Edit Level in Inkscape and Save
- Switch to the Game and reload level by pressing Q
- Go to 5
| Regex of id | Description |
|---|---|
player |
Defines the position of the Player. Size is ignored. |
rect.* |
Defines the size and position of an impenetrable platform block |
box.* |
Defines the size and position of a rigid box that obeys the physics of the game |
region(.*) |
Defines the size and position of a region that hides the Goals. \1 defines the id of the Goal to hide. |
goal(.*) |
Defines the position of the goal. Size is ignored. \1 defines the id of the region that hides the goal. |
lava.* |
Defines the position and size of a lava block. |
background |
Defines the color of the background. Position and size are ignored. |
backrect.* |
Defines the size and position of a solid block in the background. |
| Regex of id | Description |
|---|---|
label.* |
Defines position and text of a in-game label. Size is ignored. |
You need to install conan and Visual Studio 2017.
Current version of SDL2/2.0.5@lasote/stable in the conan-transit repository is not compatible with the latest conan, so you'll need to install it locally from the git repository:
$ git clone https://github.com/lasote/conan-sdl2.git # temporary, I hope hope hope
$ cd conan-sdl2
$ conan export SDL2/2.0.5@lasote/stableExecute the following commands inside of the nothing directory:
$ conan install --build missing --install-folder build
$ cd build
$ cmake .. -G "Visual Studio 15 2017 Win64"After that, build the build/nothing.sln file with Visual Studio.
You can support my work via
- Twitch channel: https://www.twitch.tv/subs/tsoding
- Patreon: https://www.patreon.com/tsoding