AnKi 3D Engine Documentation

repository·master·Indexed 23 days ago

https://github.com/godlikepanos/anki-3d-engine

An open-source, cross-platform game engine for Linux, Windows, and Android focused on high-performance rendering using the Vulkan API. It supports x64 and arm64 architectures and integrates with DX12 on Windows. The engine includes sample projects such as Sponza, SimpleScene, PhysicsPlayground, and SkeletalAnimation, and utilizes third-party libraries including Jolt Physics, NVIDIA Image Scaling SDK, and HWCPipe for hardware profiling.

Tokens
165.7K
Snippets
336
Records
816
Agent score
76%

What's inside AnKi 3D Engine

  1. Overview of AnKi 3D Engine

    master

    AnKi 3D engine is an open-source game engine designed for Linux, Windows, and Android. It is built on the Vulkan graphics API.

    Supported Platforms and APIs:

    • Linux: x64 architecture, Vulkan API.
    • Windows: x64 & arm64 architectures, Vulkan & DX12 APIs.
    • Android: arm64 architecture, Vulkan API.
  2. What is reproc?

    master

    reproc (Redirected Process) is a cross-platform C/C++ library designed to simplify starting, stopping, and communicating with external programs. It is primarily used to execute command-line applications directly from C or C++ code and retrieve their output via standard streams.

    The project is split into two libraries:

    • reproc: A C99 library containing the core logic for working with external programs.
    • reproc++: A C++11 wrapper that adapts the C API into an idiomatic C++ interface and adds extra features for C++ applications.
  3. Overview of Simple DirectMedia Layer (SDL3)

    master

    Simple DirectMedia Layer (SDL) is a cross-platform development library providing low-level access to audio, keyboard, mouse, joystick, and graphics hardware. It is written in C and works natively with C++, but also has bindings for languages like C# and Python.

    Supported Platforms:

    • Windows, macOS, Linux
    • iOS, Android
    • Xbox, PlayStation 4/5, Nintendo Switch
    • and many others.

    License:

    • Distributed under the zlib license.
  4. Overview of the Googletest Mocking (gMock) Framework

    master

    gMock is a C++ framework for writing and using mock classes. It is designed to help developers derive better system designs and write more effective tests by providing a declarative syntax for defining mocks.

    Key features include:

    • Declarative Mock Definition: Define mock objects using a specialized syntax.
    • Partial (Hybrid) Mocks: Create mocks that combine real object behavior with mocked behavior.
    • Argument Validation: Uses a rich set of matchers to validate function arguments.
    • Behavior Control: Provides intuitive syntax for controlling how mocks respond to calls.
    • Automatic Verification: Automatically verifies expectations without requiring a manual record-and-replay cycle.
    • Ordering Constraints: Supports expressing arbitrary (partial) ordering constraints on function calls.
    • Extensibility: Users can define custom matchers and actions.
    • C++ Specificity: Handles overloaded functions and arbitrary types without using exceptions.
  5. Key features of GoogleTest

    master

    GoogleTest provides several advanced testing capabilities:

    • Test discovery: Automatically discovers and runs tests without manual registration.
    • Rich assertions: Includes equality, inequality, exception testing, and more.
    • User-defined assertions: Allows creating custom assertions specific to your domain.
    • Death tests: Verifies that code exits in a specific way (useful for error-handling tests).
    • Failure modes: Supports both fatal and non-fatal failures, allowing tests to continue running after certain failures.
    • Parameterized tests:
      • Value-parameterized tests: Runs the same test multiple times with different input values.
      • Type-parameterized tests: Runs tests with different data types.
    • Execution options: Supports running individual tests, specifying test order, and running tests in parallel.
  6. Check SDL3 supported and unsupported platforms

    master

    Before starting development, verify if your target platform is supported by SDL3.

    Supported Platforms:

    • Android, Emscripten, FreeBSD, Haiku OS, iOS, Linux, macOS, NetBSD, Nintendo Switch, Nintendo 3DS, OpenBSD, PlayStation 2, PlayStation 4, PlayStation 5, PlayStation Portable, PlayStation Vita, RISC OS, SteamOS, tvOS, Windows, Windows GDK, and Xbox.

    Unsupported Platforms:

    • Google Stadia, NaCL, Nokia N-Gage, OS/2, QNX, WinPhone, and WinRT/UWP.

    If you need to support an unsupported platform, you may use SDL2, though note that SDL2 uses an incompatible API compared to SDL3.

  7. Explore Jolt Physics test categories

    master

    The Samples application includes several specialized categories of physics tests:

    • Vehicles: Demonstrates VehicleConstraint using ray- or shape casts to simulate engines, gearboxes, differentials, and suspension (e.g., wheeled vehicles, tanks, motorcycles).
    • Rig (Ragdolls): Shows ragdoll creation and control via keyframing or motors, including kinematic ragdolls and skeleton mapping.
    • Soft Body: Demonstrates soft body physics for cloth or soft balls, including contact listeners, bend constraints, and skin constraints.
    • Character: Simulates humanoid characters using a capsule shape (includes movement, sliding, crouching, and jumping).
    • Water: Demonstrates buoyancy and friction simulation in water.
    • Constraints: Showcases various constraints that limit relative movement between bodies (e.g., Path, Swing Twist, Gear, Rack and Pinion, Pulley).
    • General: Covers fundamental simulation tests like friction, restitution, damping, gravity modification, and continuous collision detection (CCD).
    • Shapes & Scaled Shapes: Demonstrates supported shapes and runtime scaling (Uniform, Non-uniform, Mirrored, Inside out).
  8. Explore Jolt Physics folder structure

    master

    The repository is organized as follows:

    • Jolt/: Contains all source code for the library.
    • HelloWorld/: A simple application demonstrating library usage.
    • Samples/: A sample application containing various feature demonstrations.
    • TestFramework/: A rendering framework used by Samples and JoltViewer to visualize physics results.
    • JoltViewer/: An application to visualize .jor recordings produced by the DebugRendererRecorder class.
    • PerformanceTest/: An application for running performance tests and collecting timing information.
    • UnitTests/: A set of unit tests for validating engine behavior.
    • Docs/: Documentation for the library.
    • Assets/: Assets used by the TestFramework, Samples, and JoltViewer.
  9. KMSDRM support on *BSD platforms

    master

    KMSDRM (Kernel Mode Setting Direct Rendering Manager) is supported on the following *BSD operating systems with specific requirements:

    • FreeBSD: Supported.
    • OpenBSD: Supported. Note that the video backend requires the user to have read/write permissions to the /dev/drm* devices.
    • DragonFlyBSD: Supported, but requires the application to be run as a root user.
    • NetBSD: Not currently supported; creating the KMSDRM screen causes the application to crash.