Skip to content

magicmoremagic/bengine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Sep 2, 2018
32b6b67 · Sep 2, 2018
Sep 24, 2017
Sep 2, 2018
Sep 2, 2018
Sep 24, 2017
Jan 3, 2017
Sep 2, 2018
Sep 2, 2018
Jan 6, 2018
Sep 24, 2017
Sep 4, 2017
Apr 9, 2017
Sep 17, 2017
Sep 2, 2018
Apr 8, 2017
Sep 2, 2018
Jan 15, 2017
Jan 3, 2017
Sep 2, 2018
Sep 2, 2018
Sep 24, 2017
Sep 17, 2017
Sep 17, 2017
Jan 6, 2018
Jan 6, 2018

Repository files navigation

bengine

bengine is a C++ framework for creating 2D, 2.5D, and simple 3D games. Anyone who finds it useful is welcome to use all or part of it for their own purposes, however currently it is primarily a sandbox in which I can experiment with various game-related systems and a platform on which I can build my own games. So keep in mind that all code is subject to change or removal at any time. Any branches other than master may be subject to destructive rebasing and force-pushes.

Design Priorities

Modular
Systems should rely on as few other systems as possible. Systems are packaged as static libraries in most cases, and individual applications link against whichever modules they need to use.
Cross-Platform
Platform-specific code should be abstracted or wrapped and separated from the rest of the codebase in order to make supporting new platforms easier. Currently only Windows x64 is supported, but it should be possible to support any x64 platform in the future.
Flexible
It should be easy to use and extend systems for new purposes. Generic programming is embraced. When considering a tradeoff between simplicity of usage and simplicity of implementation, prefer the former. When considering a tradeoff between flexibility or performance, lean towards the former unless it is a known bottleneck.
Portable
The end-user runtime requirements should be minimal. Ideally any system with the compiler runtime and an OpenGL 3+ video card/driver should be able to run programs without needing to run an installer first. Configuration and other persistent data are stored in files, not the Windows registry. Assets are packaged together for faster and easier file transfers.

Modules

Tools

Demos

Libraries

Boost must be downloaded and extracted separately. Set the BOOST_HOME environment variable to point to the path where the archive was extracted. The SQLite source amalgamation is distributed within this repository. All all other libraries are referenced as git submodules.

Building

bengine uses the Ninja build system. The Ninja build script is generated by a custom Lua frontend. Most development is done in Visual Studio, so .vcxproj files are also provided, however they may use slightly different settings compared to Ninja builds.

Some files are partially or fully generated. This includes Ragel lexers and Lua scripts embedded in source files as comments, which are subsequently executed by the limp tool (included as part of bengine).

Build Requirements

Building on Windows

:: Ensure BOOST_HOME environment variable is set:
> SET BOOST_HOME=C:\path\to\boost

:: Clone submodule repositories and build external libraries:
> setup

:: Open a VS command prompt for development and testing:
> workspace

:: Regenerate build.ninja:
> ninja configure!
:: Or alternatively:
> limp -f build.ninja

:: Build all modules, tools, and demos:
> ninja

:: List all top-level targets:
> ninja -t targets

:: Run all limp rules: (changes are not always detected normally by Ninja)
> ninja limp!

:: Clean up intermediate ninja build files and libraries:
> ninja clean!

:: Clean up all build files (Ninja and VS; useful before copying/moving repo to another location)
> ninja deinit!

Name

bengine is a portmanteau of Ben and engine. Thus it is pronounced been-gin, not bee-engine. When written, bengine should never be capitalized, even when it starts a sentence.

License

Excepting the libraries listed above, bengine is provided under the MIT License.


Copyright © 2011-2017 Benjamin M. Crist

Releases

No releases published

Packages

No packages published