jocal17 / nothing

A simple platformer about nothing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status Build status

Nothing

Dependencies

Ubuntu

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

MacOS

$ brew install gcc cmake sdl2 sdl2_mixer

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

Windows

See Build on Windows section.

Quick Start

$ mkdir build
$ cd build/
$ cmake ..
$ make
$ ./nothing ../levels/
$ ./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 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.

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

About

A simple platformer about nothing

License:MIT License


Languages

Language:C 93.3%Language:CMake 4.4%Language:C++ 1.2%Language:Objective-C 0.6%Language:Common Lisp 0.2%Language:Nix 0.1%Language:Makefile 0.1%