nothing/README.md

5.8 KiB

Build Status

Nothing

Dependencies

Ubuntu

$ sudo apt-get install gcc cmake libsdl2-dev libsdl2-mixer-dev python3 inotify-tools

MacOS

$ brew install gcc cmake sdl2 sdl2_mixer python3

NixOS

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

Arch Linux

$ sudo pacman -S gcc cmake sdl2 sdl2_mixer python inotify-tools

Windows

See Build on Windows section.

Quick Start

$ mkdir build
$ cd build/
$ cmake ..
$ make
$ ./nothing ../levels/level-01.txt
$ ./nothing_test

Controls

Game

Keyboard

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

Gamepad

Button Action
Left Stick Movement of the Player
1 Jump

Consolé

Key Action
ESC Exit console
Enter Evaluate the expression
Up/Down Traverse console history

Editing Levels

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.

Level Editing Workflow

  1. $ inkscape ./levels/level.svg &
  2. $ ./build/nothing ./levels/level.txt &
  3. $ cd ./levels/
  4. $ make watch
  5. Edit Level in Inkscape and Save
  6. Switch to the Game and reload level by pressing Q
  7. Go to 5

Objects Reference

SVG rect node

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.

SVG text node

Regex of id Description
label.* Defines position and text of a in-game label. Size is ignored.

Build on Windows

You need to install conan and Visual Studio 2017.

Dependencies

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

Building

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.

Support

You can support my work via