# Atlantis Game Engine This is a 3D game engine based on SDL3 + Vulkan API / Metal API. ## Prerequisites The following prerequisites need to be fulfilled in order to build this game engine. 1. Conan 2.29.1 must be installed. 2. A Conan default profile must exist with the same compiler flags as this project. 3. Missing Conan dependencies must be installed: ```shell # For ls-std conan install . --output-folder=cmake-build-debug --build=missing -o "ls-std/*:shared=True" -s build_type=Debug -s compiler.cppstd=17 conan install . --output-folder=cmake-build-release --build=missing -o "ls-std/*:shared=True" -s build_type=Release -s compiler.cppstd=17 # For all other dependencies conan install . --output-folder=cmake-build-debug --build=missing -s build_type=Debug -s compiler.cppstd=17 conan install . --output-folder=cmake-build-release --build=missing -s build_type=Release -s compiler.cppstd=17 ``` 4. The following CMake-Options must be provided for the "Debug" & "Release" Profile: ```shell -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_TOOLCHAIN_FILE=cmake-build-debug/conan_toolchain.cmake -DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_TOOLCHAIN_FILE=cmake-build-release/conan_toolchain.cmake ``` 5. For the CMake Default Toolchain use __Generator__ Visual Studio for each CMake profile. 6. For ls-std dependency downloag the recipes repository and navigate to the version __conanfile.py__. Then run: ```shell conan create . -o "ls-std/*:shared=True" -s build_type=Debug conan create . -o "ls-std/*:shared=True" -s build_type=Release ``` ## Modules In Process: It contains the following modules: | Name | Description | |-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ls-atlantis-cycle | This module provides functionalities like engine setup, game loop logic and engine run time information. | | ls-atlantis-factory | This module provides factories for building interface implementations. | | ls-atlantis-interface | __Consumer:__ This module provides all interfaces all other engine modules can implement. This would avoid circular dependencies through out the project. This module can be imported. This module must not import any library dependencies itself. | | ls-atlantis-window | This module provides functionalities for window creation and handling. | ## Dependencies The following table illustrates a list of required dependencies | Name | Version | Explanation | |--------|-------------|------------------------------------------------------------| | gtest | 1.17.0 | The Google Test framework for unit- and integration tests. | | ls-std | v2024.1.0.1 | The Lynar Studios C++-Standard library. | | sdl | 3.4.8 | The Window API library SDL3. |