Go to file
rexim 608f4b1c81 (#885) Introduce system/file module 2019-06-16 01:00:59 +07:00
data (#819) Add id support for RectLayer 2019-06-09 00:09:27 +07:00
devtools (#818) lavas -> lava 2019-06-09 23:27:20 +07:00
docs (#225) Fix links in docs/oop.md 2018-08-05 05:07:57 +07:00
levels Add TODO(#880) 2019-06-03 01:35:12 +07:00
src (#885) Introduce system/file module 2019-06-16 01:00:59 +07:00
test (#882) Make the Platform level loadable 2019-06-15 23:43:52 +07:00
test-data .lisp -> .ebi 2019-05-26 23:26:28 +07:00
.gitignore Fixed point issue 2019-05-04 17:57:27 -03:00
.snitch.yaml Add .snitch.yaml 2018-12-18 23:28:54 +07:00
.travis.yml (#874) Introduce data folder 2019-06-02 00:34:44 +07:00
CMakeLists.txt (#885) Introduce system/file module 2019-06-16 01:00:59 +07:00
CONTRIBUTING.md Update Contribution Rules 2019-01-14 22:25:40 +07:00
LICENSE Add LICENSE (#3) 2017-12-01 01:16:02 +07:00
README.md Fix Windows instructions 2019-06-03 06:15:42 +07:00
appveyor.yml (#874) Introduce data folder 2019-06-02 00:34:44 +07:00
credits.org (#234) Implement sprite_font 2018-07-15 01:22:38 +07:00
default.nix (#612) Remove SDL_mixer deps to simply initial Windows support 2019-05-20 23:45:05 +07:00

README.md

Build Status Build status

Nothing

Dependencies

Ubuntu

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

MacOS

$ brew install gcc cmake sdl2

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 inotify-tools libxml2

Windows

Quick Start

Linux

$ mkdir build
$ cd build/
$ cmake ..
$ make
$ cd ../data/
$ ../build/nothing

Windows

> cd path\to\nothing
> 7z x SDL2-devel-2.0.9-VC.zip
> move SDL2-2.0.9 SDL2
> mkdir build
> cd build
> cmake ..
> cmake --build .
> cd ../data/
> ..\build\nothing

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 svg2level program:

$ ./build/svg2level compile <svg-file> <level-file>

All of the levels reside in the ./levels/ folder. Use ./levels/Makefile to automatically rebuild all levels:

$ cd levels/     # you must be inside of the `levels/` folder
$ make

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.

Support

You can support my work via