X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=README.md;h=79da0155ddfff92d9007a4ac8fd331763590518b;hb=100d4dbc07e806f3d065e782040ef65f91b84b27;hp=0ae5c5c7c3ba6d707e8b1b71e59475158b841980;hpb=57a860db6890b712a886eaa5ce653b60a8b8c30f;p=nothing.git diff --git a/README.md b/README.md index 0ae5c5c7..79da0155 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ -[![Build Status](https://travis-ci.org/tsoding/nothing.svg?branch=master)](https://travis-ci.org/tsoding/nothing) -[![Build status](https://ci.appveyor.com/api/projects/status/gxfgojq4ko98e0g0/branch/master?svg=true)](https://ci.appveyor.com/project/rexim/nothing/branch/master) +[![Tsoding](https://img.shields.io/badge/twitch.tv-tsoding-purple?logo=twitch&style=for-the-badge)](https://www.twitch.tv/tsoding) +[![Build Status](https://ci.appveyor.com/api/projects/status/gxfgojq4ko98e0g0/branch/master?svg=true)](https://ci.appveyor.com/project/rexim/nothing/branch/master) +[![Build Status](https://github.com/tsoding/nothing/workflows/CI/badge.svg)](https://github.com/tsoding/nothing/actions) # Nothing @@ -8,22 +9,20 @@ ## Dependencies -- [gcc] +- [gcc] or [clang] or [MSVC 2015+][visual-studio] - [cmake] - [libsdl2-dev] -- [libsdl2-mixer-dev] -- [inotify-tools] ### Ubuntu ```console -$ sudo apt-get install gcc cmake libsdl2-dev libsdl2-mixer-dev inotify-tools +$ sudo apt-get install gcc cmake libsdl2-dev ``` ### MacOS ```console -$ brew install gcc cmake sdl2 sdl2_mixer +$ brew install gcc cmake sdl2 ``` ### NixOS @@ -39,131 +38,141 @@ $ nix-shell ### Arch Linux ```console -$ sudo pacman -S gcc cmake sdl2 sdl2_mixer inotify-tools +$ sudo pacman -S gcc cmake sdl2 ``` ### Windows -See [Build on Windows][build-on-windows] section. +#### Visual Studio + +- [Visual Studio 2015+](https://visualstudio.microsoft.com/) +- [SDL2 VC Development Libraries](https://www.libsdl.org/release/SDL2-devel-2.0.9-VC.zip) + +#### MinGW +- [mingw-w64](https://mingw-w64.org) +- [SDL2 MinGW Development Libraries](https://www.libsdl.org/release/SDL2-devel-2.0.10-mingw.tar.gz) ## Quick Start +### Linux + +#### CMake + ```console $ mkdir build $ cd build/ $ cmake .. $ make -$ ./nothing ../levels/ -$ ./nothing_test +$ ./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 +#### SCU -| Button | Action | -|--------------|------------------------| -| `Left Stick` | Movement of the Player | -| `1` | Jump | - -### Consolé +```console +$ ./build-posix.sh +$ ./nothing +``` -| Key | Action | -|-----------|--------------------------| -| `ESC` | Exit console | -| `Enter` | Evaluate the expression | -| `Up/Down` | Traverse console history | +### Windows -## Editing Levels +#### Visual Studio -Generally creating a level looks like: +- Enter the Visual Studio Command Line Development Environment https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line + - Basically just find `vcvarsall.bat` and run `vcvarsall.bat x64` inside of cmd +- Download [SDL2 VC Development Libraries](https://www.libsdl.org/release/SDL2-devel-2.0.9-VC.zip) and copy it to `path\to\nothing` -``` -SVG File -> Custom Level File -> Game +```console +> 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 . +> .\nothing ``` -To convert SVG to the level file and run svg2level program: +#### MinGW (with MSYS) ```console -$ ./build/svg2level compile +$ cd path/to/nothing +$ wget https://www.libsdl.org/release/SDL2-devel-2.0.10-mingw.tar.gz +$ tar xzf SDL2-devel-2.0.10-mingw.tar.gz +$ mv SDL2-2.0.10 SDL2 +$ rm SDL2-devel-2.0.10-mingw.tar.gz +$ mkdir build && cd build +$ cmake .. -G "MSYS Makefiles" +$ cmake --build . +$ ./nothing ``` -All of the levels reside in the [./levels/] folder. Use -[./levels/Makefile] to automatically rebuild all levels. +#### MinGW (without MSYS) +- Download [SDL2 MinGW Development Libraries](https://www.libsdl.org/release/SDL2-devel-2.0.10-mingw.tar.gz) and copy it to `path\to\nothing` -### 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 +```console +> cd path\to\nothing +> 7z x SDL2-devel-2.0.10-mingw.tar.gz -so | 7z x -si -ttar +> move SDL2-2.0.10 SDL2 +> del SDL2-devel-2.0.10-mingw.tar.gz +> mkdir build +> cd build +> cmake .. -G "MinGW Makefiles" +> cmake --build . +> .\nothing +``` -You need to install [conan][] and [Visual Studio 2017][visual-studio]. +## Controls -### Dependencies +### Game -Current version of [SDL2/2.0.5@lasote/stable][conan-sdl2] in the conan-transit -repository is not compatible with the latest conan, so you'll need to install -it locally from the git repository: +#### Keyboard -```console -$ 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 -``` +| Key | Action | +|---------- |-------------------------------------------------------------| +| `d` | Move to the right | +| `a` | Move to the left | +| `w/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 | +| `TAB` | Switch to Level Editor | +| `CTRL+q` | Quit the game | -### Building +#### Gamepad -Execute the following commands inside of the `nothing` directory: +| Button | Action | +|--------------|------------------------| +| `Left Stick` | Movement of the Player | +| `1` | Jump | -```console -$ conan install --build missing --install-folder build -$ cd build -$ cmake .. -G "Visual Studio 15 2017 Win64" -``` +### Consolé -After that, build the `build/nothing.sln` file with Visual Studio. +| Key | Action | +|---------------------|--------------------------| +| `ESC` | Exit console | +| `Enter` | Evaluate the expression | +| `Up/Down` | Traverse console history | +| `CTRL+L` | Clear | +| `Ctrl+X`, `CTRL+W` | Cut | +| `Ctrl+C`, `ALT+W` | Copy | +| `Ctrl+V`, `CTRL+Y` | Paste | + +### Level Editor + +To access the Level Editor open a level and press `TAB`. + +| Key | Action | +|-----------------|--------------------------------------------| +| `s` | Save level | +| `Mouse Wheel` | Zoom and pan | +| `CTRL+z` | Undo | +| `q` | Toggle snapping mode | +| `SHIFT+Up/Down` | Change overlaping order of selected object | +| `CTRL+c/v` | Copy/paste selected object | +| `F2` | Rename selected object | +| `DELETE` | Delete selected object | ## Support @@ -172,17 +181,14 @@ You can support my work via - Twitch channel: https://www.twitch.tv/subs/tsoding - Patreon: https://www.patreon.com/tsoding -[conan]: https://www.conan.io/ -[conan-sdl2]: https://bintray.com/conan/conan-transit/SDL2%3Alasote/2.0.5%3Astable [visual-studio]: https://www.visualstudio.com/ [svg2rects.py]: ./devtools/svg2rects.py [./levels/]: ./levels/ [./levels/Makefile]: ./levels/Makefile [gcc]: https://gcc.gnu.org/ +[clang]: https://clang.llvm.org/ [cmake]: https://cmake.org/ [libsdl2-dev]: https://www.libsdl.org/ -[libsdl2-mixer-dev]: https://www.libsdl.org/projects/SDL_mixer/ [NixOS]: https://nixos.org/ [default.nix]: ./default.nix -[build-on-windows]: #build-on-windows [inotify-tools]: https://github.com/rvoicilas/inotify-tools