AdaEngine is a game engine fully written in Swift. The main idea is to encourage Swift developers to use this game engine to create fast and impressive games and user interfaces using Swift as their main language. We hope that AdaEngine can become as popular in the GameDev community as Rust and C# are.
- AdaEngine is based on the data-oriented paradigm using a self-written ECS. The AdaEngine ECS has been inspired by Apple's RealityKit framework. ECS provides a fast way to work with the game world because it is more friendly to CPU caches.
- AdaEngine is easy to use, and our main goal is to enable a quick start and deliver quick results.
In the first release, we have the following milestones:
- Full 2D support with basic models and materials
- Support for iOS, macOS, and tvOS devices
- Metal render backend (for now)
- 2D Physics using Box2D
- Standard support for inputs from the keyboard/mouse and touch
- Event System
- Audio System
- Embeddable views (you can insert AdaEngine into your own projects that use UIKit/AppKit/SwiftUI)
- Asset management, loading assets from files and executing them
- Documentation and tutorials
- UI interface for games and apps
- Vulkan and GLSL support
- 3D capabilities
- 3D Physics
- More documentation and tutorials
You are welcome to contribute to AdaEngine. Currently, it is under development, and we are working towards our roadmap goals. If you find a bug or have some improvements, we would be glad to see your pull request!
Currently we use Bazel and Swift Package Manager as build tools.
- Bazel
Bazel is major build system for project, SPM maybe will be removed in future versions. To build project for development download Bazelisk. To generate xcproject, use make xcproj
command in terminal.
- Swift Package Manager
Use Xcode 15 or Visual Studio Code with the Swift VSCode Extension and then open Package.swift
file from the root directory.