How axiefeat/arc works
Arc Engine is a modular, implementation-agnostic 2D/3D game engine. A game installs and bootstraps an implementation, finds and initializes an Application, then uses its window and render context to build and draw vertex buffers with shaders. OpenGL, OpenGLES, and Vulkan are documented runtime alternatives; extensions add input, audio, display, fonts, models, and profiling. Source excerpts support selected API-to-implementation relationships, while several extension relationships are documented only at the product level.
Main entry points: RenderContext.kt Render Context · Application.kt Application API · Arc.kt Factory Registry · Drawer.kt Drawing API
Components 24
Engine Runtime
- Factory Registry
arc-core/src/main/kotlin/arc/Arc.kt - Application API
arc-core/src/main/kotlin/arc/Application.kt - Window API
arc-core/src/main/kotlin/arc/window/Window.kt - Asset API
arc-core/src/main/kotlin/arc/asset/AssetLike.kt
Rendering API
- Render Context
arc-core/src/main/kotlin/arc/graphics/RenderContext.kt - Drawing API
arc-core/src/main/kotlin/arc/graphics/Drawer.kt - Draw Buffer
arc-core/src/main/kotlin/arc/graphics/DrawBuffer.kt - Vertex Buffer
arc-core/src/main/kotlin/arc/graphics/vertex/VertexBuffer.kt - Vertex Format
arc-core/src/main/kotlin/arc/graphics/vertex/VertexFormat.kt - Shader Instance
arc-core/src/main/kotlin/arc/shader/ShaderInstance.kt - Texture API
arc-core/src/main/kotlin/arc/texture/Texture.kt
Graphics Backends
- OpenGL Backend
backend/render/arc-opengl/src/main/kotlin/arc/gl/graphics/GlRenderContext.kt - OpenGLES Backend
backend/render/arc-opengles/src/main/kotlin/arc/gles/graphics/GlesRenderContext.kt - Vulkan Backend
backend/render/arc-vulkan/src/main/kotlin/arc/vk/graphics/VkRenderContext.kt
Engine Extensions
- GLFW Input
arc-extensions/arc-input/arc-input-glfw/src/main/kotlin/arc/input/GlfwInputEngine.kt - OpenAL Audio
arc-extensions/arc-audio/arc-audio-openal/src/main/kotlin/arc/audio/AlSoundEngine.kt - Virtual Display
arc-extensions/arc-display/arc-display-core/src/main/kotlin/arc/display/Display.kt - Font Rendering
arc-extensions/arc-font/arc-font-core/src/main/kotlin/arc/font/FontProvider.kt - Model System
arc-extensions/arc-model/arc-model-core/src/main/kotlin/arc/graphics/ModelHandler.kt - Profiler
arc-extensions/arc-profiler/arc-profiler-core/src/main/kotlin/arc/profiler/Profiler.kt
API Annotations
- Factory Annotation
arc-annotations/src/main/kotlin/arc/annotations/TypeFactory.kt - Immutable Annotation
arc-annotations/src/main/kotlin/arc/annotations/ImmutableType.kt - Annotation Processor
arc-annotation-processor/src/main/kotlin/arc/annotation/processor/SymbolProcessor.kt
Other components
- Game Application
Connections 24
- Game Application → Factory Registry: installs and bootstraps
README.md - Game Application → Application API: finds and initializes
README.md - Factory Registry → Application API: provides implementation
arc-core/src/main/kotlin/arc/Application.kt - Application API → Render Context: exposes
arc-core/src/main/kotlin/arc/Application.kt - Application API → Window API: exposes
arc-core/src/main/kotlin/arc/Application.kt - Game Application → Draw Buffer: builds vertices
README.md - Draw Buffer → Vertex Buffer: builds
arc-common/src/main/kotlin/arc/graphics/NativeDrawBuffer.kt - Game Application → Shader Instance: creates and compiles
README.md - Render Context → Drawing API: exposes
arc-core/src/main/kotlin/arc/graphics/RenderContext.kt - Drawing API → Vertex Buffer: draws
arc-core/src/main/kotlin/arc/graphics/Drawer.kt - Game Application → Render Context: begins and ends frames
README.md - Render Context → Shader Instance: manages
arc-core/src/main/kotlin/arc/graphics/RenderContext.kt - Render Context → Texture API: manages
arc-core/src/main/kotlin/arc/graphics/RenderContext.kt - OpenGL Backend → Render Context: implements
backend/render/arc-opengl/src/main/kotlin/arc/gl/graphics/GlRenderContext.kt - OpenGLES Backend → Render Context: implements
backend/render/arc-opengles/src/main/kotlin/arc/gles/graphics/GlesRenderContext.kt - Vulkan Backend → Render Context: implements
backend/render/arc-vulkan/src/main/kotlin/arc/vk/graphics/VkRenderContext.kt - Game Application → GLFW Input: adds input extension
README.md - Game Application → OpenAL Audio: adds audio extension
README.md - Game Application → Virtual Display: adds display extension
README.md - Game Application → Font Rendering: adds font extension
README.md - Game Application → Model System: adds model extension
README.md - Game Application → Profiler: adds profiler extension
README.md - Factory Annotation → Annotation Processor: validated by
arc-annotations/src/main/kotlin/arc/annotations/TypeFactory.kt - Immutable Annotation → Annotation Processor: validated by