/BloodFarmers

The C++ "engine" for a game.

Primary LanguageC++MIT LicenseMIT

Blood Farm

A game.

Sample Game

Building

Make sure you have SDL2 and GLEW installed and clone the BloodFarm repository:

git clone git@github.com:danielytics/BloodFarm.git
cd BloodFarm
git submodule update --init

You then need to compile and install Bullet:

cd deps/bullet3/build3
cmake ..
make install
cd ../../..

Finally, build this repository:

cd build
cmake ..
make

You can now run the BloodFarm binary from the project root.

Note that it will fail on startup if the data files are not found in the game directory or game.data file. You can override this to load the sample game:

./BloodFarm --init sample.toml

This will load the sample data instead:

  • sample.toml contains the sample game configuration, used to configure the engine.
  • sample/ directory containing the data files for the sample game.

Alternatively, you can replace the init.toml file with the sample.toml file.

Commandline arguments

BloodFarm accepts a number of commandline arguments:

  • -d or --debug - Enables debug rendering (only in debug builds)
  • -p or --profiling - Enables basic in-engine profiling (only in debug builds)
  • -l <level> or --loglevel <level> - Sets the log level, valid values for <level> are off, error, warn, info, debug, trace (debug and trace are only available in debug builds)
  • -i <file> or --init <file> - Sets the TOML init file to load, by default loads init.toml

Dependencies

Engine dependencies:

  • OpenGL 4.1
  • EnTT - Entity Component System (MIT License)
  • SDL2 - Windowing & Input (ZLIB License)
  • GLEW - OpenGL extension library (Modified BSD & MIT Licenses)
  • GLM - OpenGL Mathematics library (The Happy Bunny/Modified MIT License)
  • spdlog - Fast logging library (MIT License)
  • LuaJIT - Lua bindings and JIT runtime (MIT License)
  • FastNoiseSIMD - Library of various SIMD-optimised noise functions (MIT License, note: Simplex noise is patent-encumbered when used for texture generation)
  • PhysicsFS - Library for filesystem abstraction (zlib License)
  • PhysFS++ - C++ wrapper for PhysicsFS (zlib License + notes)
  • Catch2 - C++ testing library (Boost Software License)
  • cpptoml - TOML data file loader (MIT License)
  • dynamiclinker - portable dynamic library loader (MIT License)
  • stb_image - Image loader (Public domain)
  • semimap - A semi compile-/run-time associative map container (MIT License)
  • Bullet Physics - Physics engine (zlib license)
  • cxxopts - Lightweight C++ command line option parser (MIT License)

Tooling dependencies:

  • Assimp - Asset importer (BSD License)
  • Python (3+)

All of the dependencies, except for SDL2, GLEW and OpenGL come packaged as git submodules within this repository, in the deps directory.

License

The Blood Farm game source is released under the terms of the MIT License.

The game data files are not included under this license and you must have a valid license in order to run the complete BloodFarm game. The sample game (found in the sample/) directory is released under the terms of the MIT License and can be used as an example of how the engine works and a basis for your own games.