Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iceshard-engine/engine

A personal game engine project, with development focus towards 2D/2.5D games.
https://github.com/iceshard-engine/engine

2d-game-engine cpp20 game-development game-engine github-actions iceshard

Last synced: about 2 months ago
JSON representation

A personal game engine project, with development focus towards 2D/2.5D games.

Awesome Lists containing this project

README

        

# IceShard

A small game engine project with the sole purpose to learn, improve and invent.
Focusing on the best solution for a given problem while not trying to solve everything.

More info about the development approach can be found in our [wiki](https://github.com/iceshard-engine/engine/wiki).

## Features

Current list of advertisement:
* Dependency injection based architecture.
* Support for basic input devices.
* APIs designed with the 'RAII' principle.
* _Exceptions are debug tools and utilities._
* Inovative resource and asset systems.
* Data-oriented ECS implementation.
* Abstracted API for rendering. (Vulkan)
* Multi-threaded logic and graphics using C++ coroutines.

Thid party tools and features:
* Support for **Tracy** profiler.
* Optional DevUI API based on **ImGui**. _(ex. disabled in Releaseand Profile builds)_
* Simple 2D Physics implemented with **Box2D**
* Loading of common file formats supported with **RapidXML**, **RapidJSON** and **Assimp**.
* Logging using the **fmt** library.
* Unit tests written in the **Catch2** framework.

## Building the engine

A quick overview how to build the engine on your machine.

### Prerequisites
To build this engine you will need the following tools and SDKs installed:
* [Conan Package Manager](https://conan.io/) - Used to manage project dependencies.
* This also requires python3 as a dependency.
* **Windows:**
* Required: Visual Studio 2022 _(17.4 or later)_
* Required: Windows Kit (10.0.19041.0 or later)
* Required: Vulkan SDK _(1.2.170.0 or later)_
* **Linux:** _(Compilation Only)_
* **compilation** tested On:
* Manjarno Linux (KDE Plasma) (Kernel 5.15.6-2-MANJARNO x64)
* GitHub Runner: Ubuntu-22.04
* Required: GCC-12 or Clang-14 or later
* Required: standard library libstdc++ v6 or later
* ~~Required: Vulkan SDK _(1.2.170.0 or later)_~~ - Not implemented yet.
* _(Linking steps are not enabled yet)_
* **MacOS:**
* No support

### Configuring Conan

To properly initialize the workspace, you will need to setup Conan with configurations from the [IceShard-Conan-Config](https://github.com/iceshard-engine/conan-config.git) repository.
This contains the Conan clang profiles and remotes that should be used with this project.

The quickest way to setup Conan for this project is to use the following command:

```
conan config install https://github.com/iceshard-engine/conan-config.git
```

### Ice Build Tools

This project uses its own command line tool named **Ice Build Tools** to provide various utilities that can be used during development.

It is a Conan package that will be installed on first use. It can be easily updated at any point or reset by removing the `./build/` directory when something goes wrong.

---
#### The `build` command

Building the engine is straight forward, all you need to do is to call this command in your terminal and you have built the engine.

./ice.sh build
./ice.bat build

You can further specify the target you want to build by using the `-t --target` option.

ice build -t all-x64-Debug

---
#### The `vstudio` command

This command allows to generate project files for Visual Studio and open the solution.

ice vstudio --start

---
#### The `run` command

This command allows to execute pre-defined lists of other commands or tools in order. These execution `scenarios` are stored in the `scenarios.json` file and currently provide a quick way to run the test application and to build shaders on the Windows platform.

:: Build all shaders into Vulkan SPIR-V
ice run -s shaders

:: Run the default-built test application executable (all-x64-Develop)
ice run

## Contributing

Contributions are welcome, however they need to follow the
[Coding Style](https://github.com/iceshard-engine/coding-style) of the engine and pass the review process.

Additionally, some contributions might also require additional changes if the implementation does not follow the design principles of this project.

It is however possible to ask for a separate repository that will and provide new features via modules API. This would only require to follow the aforementioned coding style.

## Copyright Information

The engine is licensed under the [MIT License](LICENSE).

Additionally, all used third party libraries are mentioned in the [thirdparty/README.md](thirdparty/README.md).
Their licenses are available for lookup in [thirdparty/LICENSES.txt](thirdparty/LICENSES.txt)

## Acknowledgements

This project was heavily inspired by several articles, but mostly by the BitSquid development blog.

Additionally, some parts of the engine were initially based on the **BitSquid Foundation Library** which was discussed here: https://bitsquid.blogspot.com/2012/11/bitsquid-foundation-library.html.