$ sudo apt-get install gcc cmake libsdl2-dev libsdl2-mixer-dev python3 inotify-tools
$ brew install gcc cmake sdl2 sdl2_mixer python3
For 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-tools
See 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/stable
Execute 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