A personal game engine project, with development focus towards 2D/2.5D games. https://www.iceshard.net/engine
  • C++ 91.8%
  • C 6.9%
  • GLSL 0.6%
  • MoonScript 0.4%
  • Kotlin 0.1%
Find a file
Dandielo 79dd4b70c6
Rebuilding the Color API (!205)
The main changes are around the Color API, which was refactored to use okLAB/okLCH color formats.
Additionally the project is currently moving away from GitHub to a self-hosted approach with the GitHub repository being soon turned into a mirror.

New:
- Implemented an initial version of a Color picker for the okLCH color format.
- Added support for Linting with "Qodana Community for C++" tool

Changes:
- Replaced the old Color types and functions with an entirely new API that focuses on color formats, more that color data types.
- Introduced various versions of compile-time math functions. (Their validity is good enough for colors)
- Merged 'cherry-changes-february' pull request into this one.

Fixes:
- Fixed some issues inside the ASL shader transpiler.
- Others

Reviewed-on: #205
2026-05-30 01:49:23 +00:00
.github Refactor of all collection Types. (#202) 2026-02-08 14:45:05 +09:00
source Rebuilding the Color API (!205) 2026-05-30 01:49:23 +00:00
thirdparty Rebuilding the Color API (!205) 2026-05-30 01:49:23 +00:00
tools Rebuilding the Color API (!205) 2026-05-30 01:49:23 +00:00
.editorconfig Milestone "Resources, Assets" (#109) 2022-04-12 23:38:12 +02:00
.gitignore Rebuilding the Color API (!205) 2026-05-30 01:49:23 +00:00
ice.bat Updated all GitHub workflows (#191) 2025-06-09 15:51:49 +09:00
ice.sh Fixing issues on Ubuntu runners (#189) 2025-06-03 02:13:13 +09:00
LICENSE Licensing cleanup (#126) 2022-05-12 01:14:37 +02:00
README.md Fix the 'start' script by matching the arch against the actual directories. 2026-05-30 10:32:00 +09:00
workspace.moon Feature asset pipeline (#178) 2024-09-23 20:05:31 +09:00

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.

Quick Start

Depending if you are working on windows or linux you would user ice.sh or ice.bat to run the commands below.

(optional) Initialize the IBT CLI

This happens automatically on any executed command. However executing it directly might help identify issues in the tools configuration.

./ice init

Generate projects for supported IDE's

./ice devenv --ide vstudio # Generates a `.sln` file _(and necessary project files)_ using FastBuild as the generator.
./ice devenv --ide vscode # Generates `.vscode/*.json` files that define various build, run and debug targets.

Once the project is generated you can build and debug the project in that specific IDE.

For Visual Studio Code it's necessary to have the LLDB debugger extension installed. (win:'cppvsdbg', unix:'lldb-dap')

(command-line) Build the project

./ice build all-x64-Debug # Builds the debug build for x64 bit windows/linux.

(command-line) Start the project

./ice script start -- Debug # Starts the Debug build created in the previous step.

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.

Build status

Windows (Tested)

Code validation result for Windows targets.

Linux (Tested)

Code validation result for Linux targets.

Android (Tested)

Code validation result for Android targets.

Emscripten (Tested)

Code validation result for WebAssembly targets.

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 - Used to manage project dependencies.
    • This also requires python3 as a dependency.
  • Windows:
    • Visual Studio 2022 (17.13 or later)
    • Windows Kit (10.0.19041.0 or later)
    • Vulkan SDK (1.4.313.0 or later)
  • Linux:
    • Toolchain: Clang-20
    • Vulkan SDK (1.4.313.0 or later)
  • Android:
    • Toolchain: NDK-28
    • AndroidAPI: 35
  • Web:
    • Toolchain: Emscripten-v4.0.9
  • MacOS: (No plans)

Configuring Conan

To properly initialize the workspace, you will need to setup Conan with configurations from the IceShard-Conan-Config 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.

Contributing

Contributions are welcome, however they need to follow the 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.

The engine is licensed under the MIT License.

Additionally, all used third party libraries are mentioned in the thirdparty/README.md. Their licenses are available for lookup in 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.