What is it?¶
Crown is a general purpose and data-driven game engine, written in orthodox C++ with a minimalistic and data-oriented design philosophy in mind.
Crown isn’t tied to a particular game type or genre but instead it offers a set of generic primitives and facilities to help you create a wide gamut of interactive 2D and 3D products.
Crown also offers a complete cross-platform editor to create and put together all the elements that make up your game.
Crown is loosely inspired by the Bitsquid engine and many of its design principles.
- Every aspect of the game is controlled through text configuration files. Text files are human-readable for easy inspection and play nicely with traditional version control systems. Before shipping, configuration files are compiled to efficient platform-specific binary blobs.
- Data in memory is organized to achieve the maximum performance possible on every platform.
- Lightweight codebase and runtime
- Engine plus tools amounts to less than 50K LOC. Written in simple ‘C-style’ C++. It is easy for anyone to understand and make modifications.
- Runs and looks equally well both on Linux and on Windows.
- Source data importers (meshes, sprites, sounds, textures etc.).
- All the editing data is held by the editor which runs in its own process, if the Runtime crashes you can restart it without losing your work.
- TCP/IP communication with Runtime allows editing to be mirrored to remote devices (phones, consoles etc.).
- Hot-reloading of every asset including code.
- High-level 2D and 3D objects: sprites, meshes and lights (directional, omni and spot).
- Cross-plaform GLSL-like shader programming language with data-driven definitions of render states and permutations.
- D3D11, GL 3.2 and GLES 2.0 render backends.
- PNG, TGA, DDS, KTX and PVR texture formats.
- Animation state machine with events, variables and blending with simple expressions evaluator.
- Flipbook sprite animation.
- Static, dynamic and keyframed rigid bodies, triggers and joints (fixed, spring and hinge).
- Spatial queries: ray-, sphere- and box-casts.
- Multiple collision geometries per rigid body.
- Collision geometry can be generated from mesh data, authored by artists or manually specified.
- Uniform scaling of physics objects.
- 3D audio sources with position and range-based attenuation.
- Volume control.
- WAV format supported.
- Integrated Lua runtime can be used to control every aspect of the game.
- LuaJIT is used on supported platforms for maximum performance.
- Integrated REPL to quickly test and experiment while the game is running.
- Live reloading of gameplay code without needing to restart the game.
- Integrated profiler.
- Callstack generation for C++ and Lua.
- Immediate-mode GUI with custom materials.
- TrueType text rendering via texture atlas.
- Unified interface for accessing mice, keyboards, touchpads and joypads.
- Mesh exporter for Blender >= 2.80.
- Android 7.0+ (ARMv7-a, ARMv8-a)
- Ubuntu 18.04+ (x86_64)
- Windows 7, 8, 10 (x86_64)
- Any 64-bit Linux distribution with GTK+ 3.22 or newer, 64-bit Ubuntu 18.04+ recommended
- 64-bit dual-core CPU or higher
- OpenGL 3.2+ graphics card with 512 MB of RAM, 1 GB recommended
- 4 GB of RAM minimum, 8 GB recommended
- 1366x768 display resolution minimum, 1920x1080 recommended
- Three-button mouse