Acid 0.10.10

dotnet add package Acid --version 0.10.10
NuGet\Install-Package Acid -Version 0.10.10
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Acid" Version="0.10.10">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Acid --version 0.10.10
#r "nuget: Acid, 0.10.10"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Acid as a Cake Addin
#addin nuget:?package=Acid&version=0.10.10

// Install Acid as a Cake Tool
#tool nuget:?package=Acid&version=0.10.10

<img src="" alt="Acid" height="300px">

Donate Build status Build Status

Acid is a high speed, cross-platform, game engine written in C++17. Features are broken down into modules, modules can be added or removed from Acid with ease.

Vulkan is used as the only rendering API, as a result Vulkan can be used directly in games, but should be avoided. Metal is supported through MoltenVK, eventually OpenGL and DirectX will be supported in a similar way.

Acid is licensed under MIT and is open to contributions, use the 'Compiling' section in the to get started with Acid.

Readme Read more

Documentation Autogen docs

Metrics Code metrics

Website Learn more

Trello Board


This is a list of current features in Acid:

  • Multiplatform (32bit and 64bit)
  • On the fly GLSL to SPIR-V compiler
  • Modular rendering pipeline and compute
  • Deferred PBR rendering
  • Bullet physics
  • Networking (HTTP/FTP/UDP/TCP)
  • Frustum culling
  • Resource management
  • Event and tasks systems
  • Resource path searches, and packaging
  • GUI and font rendering
  • Particle effect systems
  • Audio and music
  • Skyboxes and fog
  • Shadow mapping
  • GameObjects and component system
  • Post effects (Lensflare, Glow, Blur, SSAO, ...)
  • Model file loading (OBJ)
  • Animations loading (COLLADA)
  • Image file loading (JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC)
  • GameObject prefab loading/saving (JSON, XML)
  • Value drivers, timers, vectors, and matrices
  • Flexible input classes
  • C# generated files (WIP)
  • Steam integration (WIP)


Acid uses the following libraries:

Code Snippets

// Imports a 2D texture.
auto guiBlack = Texture::Resource("Guis/Black.png");

// Imports a 3D cubemap.
auto skyboxSnowy = Cubemap::Resource("Objects/SkyboxSnowy", ".png");

// Imports a model.
auto dragon = ModelObj::Resource("Objects/Testing/ModelDragon.obj");

// Plays a 3D sound (sound buffer internally managed), at the origin, at half volume.
auto jump = Sound("Sounds/Jump.ogg", SOUND_TYPE_EFFECT, false, true, 0.5f);
jump.SetPosition(10.0f * Vector3::RIGHT);

// Imports a game object (pointer managed by scene after creation).
auto playerObject = new GameObject("Objects/Player/Player.json", Transform());

// Creates a game object.
auto sphere = new GameObject(Transform(Vector3(6.7f, 6.7f, -8.0f), Vector3::ZERO, 3.0f));
sphere->AddComponent<Mesh>(ShapeSphere::Resource(30, 30, 1.0f));
sphere->AddComponent<MaterialDefault>(Colour::WHITE, Texture::Resource("Objects/Testing/Albedo.png"),
    0.0f, 0.0f, Texture::Resource("Objects/Testing/Material.png"), Texture::Resource("Objects/Testing/Normal.png"));

// Vector maths.
Vector2 a(3.0f, -7.2f);
Vector2 b(-1.74f, 15.4f);
Vector2 c = a * b;
float dist = a.Distance(b);

// Split a string by spaces.
std::string stringSource = "Hello world!";
std::vector<std::string> stringSplit = String::Split(stringSource, " ");

// Will run a lambda after 5 seconds.
Events::Get()->AddEvent<EventTime>(Time::Seconds(5.0f), [&]() -> void
	Log::Out("Hello world: %f\n", Maths::Random(-1.0f, 1.0f));
}, false);


<img src="" alt="Acid" width="600px">

<img src="" alt="Acid" width="600px">

<img src="" alt="Acid" width="600px">

<img src="" alt="Acid" width="600px">


Once Acid is cloned run git submodule update --init --recursive in the Acid directory to update the submodules. All platforms depend on CMake to generate IDE/make files.

Vulkan SDK and OpenAL SDK are required to develop and run Acid.

Make sure you have environment variables VULKAN_SDK and OPENALDIR set to the paths you have Vulkan and OpenAL installed into.

Ensure you are using a compiler with full C++17 support, on Windows it is recommend you use MSVC or MinGW w64.

If using Visual Studio it must be 2015 or later. Use the Visual Studio installer and select both "Desktop development with C++" and "Windows SDK" if they are not already installed. Then on Visual Studio Acid can be opened as a CMake workspace folder.

On Linux Acid requires xorg-dev, libopenal1, and libvulkan1 to be installed. Read about how to setup Vulkan on Linux so a Vulkan SDK is found.

Setup on MacOS is similar to the setup on Linux, a compiler that supports C++17 is required, such as XCode 10.0.


You can contribute to Acid in any way you want, we are always looking for help. You can learn about Acid's code style from the Documents/

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.10.10 918 12/10/2018
0.10.9 713 12/10/2018
0.10.8 836 12/9/2018

Dlls are no longer in debug and are in release.