Go to file
rexim b5cf976eb3 Update Contribution Rules 2019-01-14 22:25:40 +07:00
cmake (#234) remove SDL_ttf dependency 2018-07-15 01:28:20 +07:00
devtools (#587) Implement scripts_of_svg.py script 2018-12-24 01:17:00 +07:00
docs (#225) Fix links in docs/oop.md 2018-08-05 05:07:57 +07:00
fonts Remove redundant font file 2018-07-22 03:52:06 +07:00
levels (#616) Implement hiding labels 2019-01-07 00:47:31 +07:00
sounds (#127) Convert mp3 samples to wav 2018-03-23 02:48:49 +07:00
src Add TODO(#641) 2019-01-14 01:41:09 +07:00
test (#568) Rename format_list to list 2018-12-25 02:00:11 +07:00
test-data (#303) Implement read_expr_from_file 2018-08-28 19:55:01 +07:00
.gitignore (#587) Implement scripts_of_svg.py script 2018-12-24 01:17:00 +07:00
.snitch.yaml Add .snitch.yaml 2018-12-18 23:28:54 +07:00
.travis.yml (#570) typo 2018-12-17 22:36:13 +07:00
CMakeLists.txt (#635) Add dynarray 2019-01-13 23:59:10 +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 Update README for MacOS dependencies 2018-11-30 15:19:30 +01:00
conanfile.txt Add Windows support 2017-12-10 12:02:44 +07:00
credits.org (#234) Implement sprite_font 2018-07-15 01:22:38 +07:00
default.nix (#458) Implement script ctor 2018-10-29 01:55:40 +07:00

README.md

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