The flexible game engine.

Overview

The flexible game engine. Build Status

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.

Check out the Introduction for more info.

Download

Binaries

Arch Linux (AUR)

yay -S crown

Documentation

Community Support & Development

Screenshots

Level Editor

level-editor

00-empty

Engine initialization and shutdown.

01-physics

01-physics

02-animation

02-animation

Contact

Daniele Bartolini (@aa_dani_bart)
Project page: https://github.com/dbartolini/crown

Contributors

In chronological order.

Daniele Bartolini (@dbartolini)
Simone Boscaratto (@Xed89)
Michele Rossi (@mikymod)
Michela Iacchelli - Pepper logo.
Raphael de Vasconcelos Nascimento (@vasconssa)
Giulia Gazzoli - Crown logo.

License

Copyright (c) 2012-2021 Daniele Bartolini et al.

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Comments
  • Help: Linker Error

    Help: Linker Error

    Hi, I was trying to make the engine using visual studio 2013 with directx june 2010 and Physx 3.3.1. But when it was on the linker phase to create crown-release-32.exe I get an error. linker error built error Do you know what could be the problem?

    opened by gtotoy 16
  • Controlling draw order / depth

    Controlling draw order / depth

    I have a scene where I'm adding one unit which uses one material that includes the standard sprite shader. The unit is created at vertex 0,0,0. I then add another unit which uses a different material and different shader, but the internals of the fragment shader don't seem to matter here - it can be exactly the same as the basic sprite shader and the problem still occurs.

    This second unit appears fine, but as soon as I start adding more units on top which use the same shader as the first unit I created, the second unit starts to show through the third. Here's a screenshot of the problem :

    Image of Yaktocat

    The gradient is the first unit I was talking about and it's using the standard sprite shader included in the example projects you've shared with me. The second unit is the star layer and it's using a different shader - and again I can compile this shader with the same code as the other sprite shader and the problem still occurs. The third group of units I add are the tiles that make up the bridge thing in the foreground. These use the same shader as the gradient background unit.

    I doubt this is so much a problem as it is my inexperience with controlling draw order / depth when it comes to playing with shaders. Any insight into how this all works?

    Thanks!

    -Zach

    opened by zacharycarter 14
  • genie/genie.lua syntax error:

    genie/genie.lua syntax error: ")" unexpected. supposedly.

    ~/Downloads/crown$ make engine-linux-release32
    
    third/bx/tools/bin/linux/genie --file=genie/genie.lua --with-luajit --with-openal --with-bullet --with-tools --compiler=linux-gcc gmake
    
    third/bx/tools/bin/linux/genie: 2: third/bx/tools/bin/linux/genie: Syntax error: ")" unexpected
    
    make: *** [engine-linux-build] Error 2
    

    For the life of me, I'm not seeing it.

    opened by Kingsquee 11
  • assertion failed: compiler not found

    assertion failed: compiler not found

    Fedora 23, 64bit

    $ ./crown-debug-64 --source-dir /home/kingsley/Downloads/crown/samples/01-physics/ --bundle-dir /tmp --compile --platform linux --continue
    eac0b497876adedf-424247333dfb94b1 <= grid.material
    eac0b497876adedf-8d4c847f2ad44b96 <= notexture.material
    48ff313713a997a1-ce20b2a5524dca1c <= skydome.mesh
    48ff313713a997a1-4362dbe08c02948a <= cube.mesh
    e0a48d0be9a7453f-4362dbe08c02948a <= cube.unit
    e0a48d0be9a7453f-3bc32bb81c975af2 <= cube_prefab.unit
    eac0b497876adedf-ce20b2a5524dca1c <= skydome.material
    a14e8dfa2cd117e2-eb68aaa83687073a <= lua/camera.lua
    a14e8dfa2cd117e2-9dea40fdc2245efc <= lua/game.lua
    a14e8dfa2cd117e2-5bfc062cf75525e5 <= lua/class.lua
    e0a48d0be9a7453f-5d4e7845bfca884c <= ramp.unit
    e0a48d0be9a7453f-9899ff2b9397a399 <= plane.unit
    e0a48d0be9a7453f-ce20b2a5524dca1c <= skydome.unit
    cd4238c6a0c69e32-424247333dfb94b1 <= grid.texture
    e0a48d0be9a7453f-6096f939f031e445 <= cube_prefab2.unit
    7a4202f968757bc9-5e02bba66d851216 <= core/shaders/.default.shader.swp
    
    Assertion failed: sort_map::has(_compilers, type)
        Compiler not found
    
        In: ../../../src/resource/bundle_compiler.cpp:176
    Stacktrace:
        [1] ./crown-debug-64() [0x4d93a3]
        [2] ./crown-debug-64: (crown::error::abort(char const*, int, char const*, ...))+0xa8 in /home/kingsley/Downloads/crown/build/projects/linux/../../../src/core/error/error.cpp:31
        [3] ./crown-debug-64: (crown::BundleCompiler::compile(crown::StringId64, char const*, crown::CompileOptions&))+0x54 in /home/kingsley/Downloads/crown/build/projects/linux/../../../src/resource/bundle_compiler.cpp:178
        [4] ./crown-debug-64: (crown::BundleCompiler::compile(char const*, char const*, char const*))+0x232 in /home/kingsley/Downloads/crown/build/projects/linux/../../../src/resource/bundle_compiler.cpp:114
        [5] ./crown-debug-64: (crown::BundleCompiler::compile_all(char const*))+0x2c1 in /home/kingsley/Downloads/crown/build/projects/linux/../../../src/resource/bundle_compiler.cpp:154
        [6] ./crown-debug-64: (crown::bundle_compiler::main(bool, bool, char const*))+0x37 in /home/kingsley/Downloads/crown/build/projects/linux/../../../src/resource/bundle_compiler.cpp:224
        [7] ./crown-debug-64: (main)+0xe3 in /home/kingsley/Downloads/crown/build/projects/linux/../../../src/main/main_linux.cpp:738
        [8] /lib64/libc.so.6: (__libc_start_main)+0xf0 in ??:0
        [9] ./crown-debug-64: (_start)+0x29 in ??:?
    
    
    opened by Kingsquee 11
  • Cant build on Ubuntu 14.04 64 bits

    Cant build on Ubuntu 14.04 64 bits

    compilation terminated. make[2]: *** [../../linux64/obj/x64/development/openal/third/openal/Alc/backends/alsa.o] Error 1 make[1]: *** [openal] Error 2 make[1]: Leaving directory `/home/vlad/crown/.build/projects/linux' make: *** [linux-development64] Error 2

    using make linux-development64 or linux-debug64

    opened by ghost 11
  • Crown fails an assertion

    Crown fails an assertion

    Arch Linux 4.3.3, GCC 5.3.0

    [[email protected]][~/dev/crown/build/linux64/bin]% gdb ./crown-debug-64
    <snip gdb boot prelude>
    Reading symbols from ./crown-debug-64...done.
    (gdb) r
    Starting program: /home/rob/dev/crown/build/linux64/bin/crown-debug-64
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/usr/lib/libthread_db.so.1".
    [New Thread 0x7ffff33f0700 (LWP 31049)]
    Initializing Crown Engine 0.1.13...
    
    Assertion failed: s != NULL
            s must be not null
    
            In: ../../../src/core/strings/dynamic_string.h:85
    Stacktrace:
            [1] /home/rob/dev/crown/build/linux64/bin/crown-debug-64() [0x4f7b59]
            [2] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::error::abort(char const*, int, char const*, ...)
            [3] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::DynamicString::DynamicString(char const*, crown::Allocator&))+0x4c in /home/rob/dev/crown/build/projects/linux/../../../src/core/strings/dynamic_string.h:86
            [4] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::DiskFilesystem::DiskFilesystem(char const*))+0x47 in /home/rob/dev/crown/build/projects/linux/../../../src/core/filesystem/disk_filesystem.cpp:29
            [5] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::Device::init())+0x82 in /home/rob/dev/crown/build/projects/linux/../../../src/device.cpp:84 (discriminator 1)
            [6] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::init(crown::DeviceOptions const&))+0x7b in /home/rob/dev/crown/build/projects/linux/../../../src/device.cpp:474 (discriminator 4)
            [7] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::func(void*))+0x23 in /home/rob/dev/crown/build/projects/linux/../../../src/main/main_linux.cpp:342
            [8] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::Thread::run())+0x36 in /home/rob/dev/crown/build/projects/linux/../../../src/core/thread/thread.h:112
            [9] /home/rob/dev/crown/build/linux64/bin/crown-debug-64: (crown::Thread::thread_proc(void*))+0x18 in /home/rob/dev/crown/build/projects/linux/../../../src/core/thread/thread.h:118
            [10] /usr/lib/libpthread.so.0: ()+0x74a4 in ??:0
            [11] /usr/lib/libc.so.6: (clone)+0x6d in ??:0
    [Thread 0x7ffff33f0700 (LWP 31049) exited]
    [Inferior 1 (process 31045) exited with code 01]
    
    opened by robstolarz 7
  • Fatal

    Fatal "unknown event type" with "samples\02-animation"

    (This was the last hurdle to run on Windows!)

    In World::update_scene when updating the animation events, and EventHeader with a type of 27 appears.

    This is currently unhandled in the switch statement, and throws this fatal error (debug mode):

    CE_FATAL("Unknown event type");
    

    This can be ignored to continue running, perhaps downgrade this warning to a log?

    opened by robhshu 6
  • Pepper Binary doesn't work properly, Tools Do Not Build on Ubuntu x64

    Pepper Binary doesn't work properly, Tools Do Not Build on Ubuntu x64

    The Pepper binary is non-functional under Ubuntu 14.04. Shaderc searches for GLIBCXX_3.4.21 which is not found even after libstdc++6 is installed. This results in the scene not loading properly.

    There are also no instructions for building the tools, which are written Vala. Vala 0.22 and and libgee-0.8-dev were installed, but it doesn't compile, because there are errors related to Gio modules not being found.

    opened by unity-car-tutorials 6
  • Where I can find current version of level or node editors?

    Where I can find current version of level or node editors?

    It looks like your tools are created using Mono? Is it opensources?

    I want to try some experiments with Mac/Mono so may help you to create mac port for engine/tools.

    opened by bagobor 5
  • Windows: CreateDirectory fails due to empty data_dir

    Windows: CreateDirectory fails due to empty data_dir

    I've downloaded and built crown on Windows and immediately hit this assert:

    Assertion failed: err != 0 In: ......\src\core\os.cpp:178 CreateDirectory: GetLastError = 3 Stacktrace: [ 1] crown::error::abort in c:\users\rhs\github\crown\src\core\error\error.cpp:26 [ 2] crown::error::abort in c:\users\rhs\github\crown\src\core\error\error.cpp:35 [ 3] crown::os::create_directory in c:\users\rhs\github\crown\src\core\os.cpp:178 [ 4] crown::FilesystemDisk::create_directory in c:\users\rhs\github\crown\src\core\filesystem\filesystem_disk.cpp:326 [ 5] crown::Device::run in c:\users\rhs\github\crown\src\device\device.cpp:359 [ 6] crown::run in c:\users\rhs\github\crown\src\device\device.cpp:760 [ 7] crown::func in c:\users\rhs\github\crown\src\device\main_windows.cpp:337 [ 8] crown::Thread::run in c:\users\rhs\github\crown\src\core\thread\thread.cpp:105 [ 9] crown::thread_proc in c:\users\rhs\github\crown\src\core\thread\thread.cpp:21

    What seems to be happening is Device::run is looking for the data directory, and as it isn't set is returning "" instead of nullptr - so instead of falling back on os::getcwd to get the current directory - it uses an empty string, which goes through this logic:

    	const char* data_dir = _device_options._data_dir.c_str(); // returns "", not nullptr
    	if (!data_dir) // doesn't hit
    	{
    		char buf[1024];
    		data_dir = os::getcwd(buf, sizeof(buf));
    	}
    	_data_filesystem = CE_NEW(_allocator, FilesystemDisk)(default_allocator());
    	((FilesystemDisk*)_data_filesystem)->set_prefix(data_dir);
    	if (!_data_filesystem->exists(data_dir)) // "" does not exist, so this condition is met
    		_data_filesystem->create_directory(data_dir); // attempts to create a new directory with ""
    

    One fix could be to check the length:

    _device_options._data_dir.length() > 0
    
    opened by robhshu 4
  • Linux Physx 3.3.2 linker error

    Linux Physx 3.3.2 linker error

    Hello :)

    I cannot seem to get crown to link to Physx...

    Linking 
    /usr/bin/ld: cannot find -lLowLevelCloth  
    /usr/bin/ld: cannot find -lPhysX3  
    /usr/bin/ld: cannot find -lPhysX3Common  
    /usr/bin/ld: cannot find -lLowLevel  
    /usr/bin/ld: cannot find -lPhysX3CharacterKinematic  
    /usr/bin/ld: cannot find -lPhysX3Cooking  
    /usr/bin/ld: cannot find -lPvdRuntime  
    /usr/bin/ld: cannot find -lSceneQuery  
    /usr/bin/ld: cannot find -lSimulationController
    

    Things I have done...

    • set the environment variable PHYSX_SDK_LINUX to the location I unpacked Physx.
    • added the $PHYSX_SDK_LINUX/Bin/linux64 directory to /etc/ld.conf.d/physx.conf
    • ..so ldconfig -v checks out with ...
            libPhysX3CommonCHECKED_x64.so -> libPhysX3CommonCHECKED_x64.so
            libPhysX3PROFILE_x64.so -> libPhysX3PROFILE_x64.so
            libPhysX3CookingPROFILE_x64.so -> libPhysX3CookingPROFILE_x64.so
            libPhysX3CookingDEBUG_x64.so -> libPhysX3CookingDEBUG_x64.so
            libPhysX3CommonDEBUG_x64.so -> libPhysX3CommonDEBUG_x64.so
            libPhysX3_x64.so -> libPhysX3_x64.so
            libPhysX3CharacterKinematicDEBUG_x64.so -> libPhysX3CharacterKinematicDEBUG_x64.so
            libCgGL.so -> libCgGL.so
            libPhysX3GpuPROFILE_x64.so -> libPhysX3GpuPROFILE_x64.so
            libPhysX3GpuDEBUG_x64.so -> libPhysX3GpuDEBUG_x64.so
            libPhysX3Gpu_x64.so -> libPhysX3Gpu_x64.so
            libPhysX3Cooking_x64.so -> libPhysX3Cooking_x64.so
            libPhysX3CharacterKinematicCHECKED_x64.so -> libPhysX3CharacterKinematicCHECKED_x64.so
            libPhysX3GpuCHECKED_x64.so -> libPhysX3GpuCHECKED_x64.so
            libPhysX3CharacterKinematicPROFILE_x64.so -> libPhysX3CharacterKinematicPROFILE_x64.so
            libPhysX3CookingCHECKED_x64.so -> libPhysX3CookingCHECKED_x64.so
            libPhysX3Common_x64.so -> libPhysX3Common_x64.so
            libPhysX3CommonPROFILE_x64.so -> libPhysX3CommonPROFILE_x64.so
            libPhysX3DEBUG_x64.so -> libPhysX3DEBUG_x64.so
            libCg.so -> libCg.so
            libPhysX3CHECKED_x64.so -> libPhysX3CHECKED_x64.so
            libPhysX3CharacterKinematic_x64.so -> libPhysX3CharacterKinematic_x64.so
    
    • I even tried moving the Lib/linux64/*.a static libs to /usr/local/lib

    So I am a little confused as to why the linked cannot find the library. Some of these names do not marry up at all such as -lLowLevel ... But my C++ is a bit rusty so this could easily be the problem.

    Cheers.

    opened by highway900 4
  • Facilitate writing new components/managers

    Facilitate writing new components/managers

    Currently when creating a new component manager, there is a lot of boilerplate code to handle the SoA nature of the data (allocating, deleting). It would be very helpful to have some helper code somewhere to automate this process more.

    opened by jesta88 1
  • Compiler Chain separated from main executable

    Compiler Chain separated from main executable

    One of the biggest issues with the bitsquid engine is that they have their content-compilers built into the engine instead of having them separated. This causes issues such as not being able to run different compiler chains at the same time since the compiler server hogs one port that is predefined for everything to use.

    Instead a separated compiler-chain would be a much more viable solution. Either by linking in libraries from the engine and having separated compiler layers above that or simply by using a common data library for file serialization.

    enhancement 
    opened by lundmark 22
Releases(v0.46.0)
Owner
Daniele Bartolini
Daniele Bartolini
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 48 Dec 29, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 61 Dec 14, 2022
OGRE is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware.

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.

null 3.1k Jan 3, 2023
Flexible, extensible, and scalable video game matchmaking.

Open Match is an open source game matchmaking framework that simplifies building a scalable and extensible Matchmaker. It is designed to give the game

GoogleForGames 2.7k Jan 9, 2023
Godot Engine – Multi-platform 2D and 3D game engine

Godot Engine 2D and 3D cross-platform game engine Godot Engine is a feature-packed, cross-platform game engine to create 2D and 3D games from a unifie

Godot Engine 56.7k Jan 9, 2023
Flax Engine – multi-platform 3D game engine

Flax Engine – multi-platform 3D game engine

Flax Engine 3.7k Jan 7, 2023
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Dmitriy Nosov 13 Dec 14, 2022
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 97 Dec 28, 2022
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.8k Dec 29, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 293 Jan 1, 2023
Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

Minetest 8.3k Dec 29, 2022
Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve external game process read/write with minimum footprint.

Launcher Abuser Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve ex

Ricardo Nacif 80 Nov 25, 2022
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

Sky 321 Jan 4, 2023
GlslViewer is a flexible console-base OpenGL Sandbox to display 2D/3D GLSL shaders without the need of an UI

GlslViewer is a flexible console-base OpenGL Sandbox to display 2D/3D GLSL shaders without the need of an UI

Patricio Gonzalez Vivo 3.8k Dec 26, 2022
A high speed C++17 Vulkan game engine

Acid is an open-source, cross-platform game engine written in modern C++17 and structured to be fast, simple, and extremely modular. Vulkan is the sol

Equilibrium Games 1.4k Dec 30, 2022
Pure C Game Engine

Corange game engine Version 0.8.0 Written in Pure C, SDL and OpenGL. Running Corange is a library, but to take a quick look at some of the things it d

Daniel Holden 1.6k Dec 27, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Jan 8, 2023
Grit Game Engine

Grit Engine This is the central repository for the Grit Game Engine project. From here can be built the engine executable itself, the launcher, and va

Grit Game Engine 103 Dec 7, 2022
A lightweight game engine written in modern C++

Halley Game Engine A lightweight game engine written in C++17. It has been used to ship Wargroove, a turn-based strategy game, on Windows, Mac (experi

Rodrigo Braz Monteiro 3.2k Dec 30, 2022