]> git.lizzy.rs Git - shadowclad.git/blob - README.md
Also yeah divide by zero is a thing
[shadowclad.git] / README.md
1 # Shadowclad
2
3 3D orthographic stealth game, and a purpose-built game engine
4
5 ![Screenshot](screenshot.jpg)
6
7 ## The game
8
9 The player's objective is to find and get to the exit in each maze-like level, while avoiding contact with stationed and patrolling enemies. Player loses as soon as they are seen by an enemy, but they can't be spotted in the dark, they have a 'sonar'-like ability to see in the dark, and there is no fog of war. Player's character also doesn't make noise.
10
11 Levels are constructed out of a set of blocks, laid out according to a 2D image, where each pixel is 1 grid cell. Lamps providing light around the level can turn on and off periodically, in groups, often leaving some areas unlit. Changes in lighting are signalled early to the player, letting them take advantage of new dark spots.
12
13 Most of these features aren't implemented yet; this is an overview of current development goals.
14
15 ## The engine
16
17 Shadowclad's engine is written in C99, using OpenGL, GLFW, GLEW, and Assimp. It includes custom implementations of geometric math, a rendering pipeline, a scene tree, an asset pipeline, input processing, logging, and performance monitoring.
18
19 Target platforms include Linux and Microsoft Windows on x86-64, although Windows builds are currently untested.
20
21 The render pipeline currently uses the legacy immediate mode OpenGL API, which will be replaced with a more modern (and performant) implementation at some point.
22
23 ## Roadmap
24
25 [This project board](https://github.com/outfrost/shadowclad/projects/1) serves as the roadmap, and tracks all tasks and issues.
26
27 ## Dependencies
28
29 To run and to compile, Shadowclad requires an x86-64 (amd64) system with:
30 * a C library released in the last 8 years
31 * OpenGL implementation supporting version 1.3 or later
32 * GLFW 3.x
33 * GLEW 2.x
34 * Assimp 4.x or 5.x
35
36 ## Building
37
38 To build the project, you need make (preferably GNU make), and a C compiler with full support for C99.
39
40 1. Clone and enter the repository.
41 ```sh
42 git clone https://github.com/outfrost/shadowclad.git
43 cd shadowclad/
44 ```
45
46 2. Run `make` to build, or `make run` to build and run.
47
48         This will put the compiled binary under the `target/<platform>/` directory, e.g. `target/x86_64-linux-gnu/shadowclad`.
49
50 To build with a particular compiler, set the `CC` environment variable, e.g.
51 ```sh
52 CC=clang make run
53 ```
54
55 To perform a clean build, run `make clean` before rebuilding.
56
57 ### Assets
58 At runtime, Shadowclad loads assets from `assets/`, relative to the current working directory. For example, if you've built the Shadowclad binary at `target/x86_64-linux-gnu/shadowclad`, and you run it with
59 ```sh
60 target/x86_64-linux-gnu/shadowclad
61 ```
62 then it will load assets from `assets/` in the same parent directory as `target/`.
63
64 ## Contributing
65
66 Issues and PRs are welcome, for all kinds of contributions. Changes accepted in PRs will be released under the license terms listed further below. When working on a time-consuming contribution, it's best to discuss it in issues first, to make sure it won't collide with something else.
67
68 ## License
69
70 Copyright 2018-2020 Iwo 'Outfrost' Bujkiewicz
71
72 Except for assets explicitly noted below, this project is licensed
73 under the Mozilla Public License, version 2.0. See the LICENSE file
74 or http://mozilla.org/MPL/2.0/ for details.
75
76 The files:
77 * `assets/TexturesCom_MetalGalvanized0045_1_seamless_S.tga`
78 * `assets/wall01side.tga`
79
80 have been created with photographs from Textures.com. These photographs
81 may not be redistributed by default; please visit www.textures.com for
82 more information. These files are provided for personal use only, strictly
83 as part of Shadowclad as a complete game. Unless expressly permitted
84 otherwise by Textures.com, they must be removed from any derivative works.