Giter VIP home page Giter VIP logo

adaengine's Introduction

AdaEngine

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.

Screenshot from test game SpaceInvaders

Features

  1. 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.
  2. AdaEngine is easy to use, and our main goal is to enable a quick start and deliver quick results.

Roadmap for AdaEngine v0.1.0

In the first release, we have the following milestones:

  1. Full 2D support with basic models and materials
  2. Support for iOS, macOS, and tvOS devices
  3. Metal render backend (for now)
  4. 2D Physics using Box2D
  5. Standard support for inputs from the keyboard/mouse and touch
  6. Event System
  7. Audio System
  8. Embeddable views (you can insert AdaEngine into your own projects that use UIKit/AppKit/SwiftUI)
  9. Asset management, loading assets from files and executing them
  10. Documentation and tutorials

Roadmap for AdaEngine v0.2.0

  1. UI interface for games and apps
  2. Vulkan and GLSL support
  3. 3D capabilities
  4. 3D Physics
  5. More documentation and tutorials

Contributing to AdaEngine

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!

How to build

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.

adaengine's People

Contributors

spectraldragon avatar stronger197 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

stronger197

adaengine's Issues

Add Audio and AudioComponent

We should supports sounds playback. For the first time we must play audio (ogg, wav) and add audio components to scene.

  1. Use cross-platform solution for audio.
  2. Play popular formats like ogg, wav and etc.
  3. Add AudioComponent that hold AudioResource (https://developer.apple.com/documentation/realitykit/audioresource)
  4. Supports looping, some bit rate settings, attach, gain, fade and etc.
  5. AudioResource should be loaded from ResourceManager
  6. We should play audio on Audio thread.

Provide documentation

New contributors encountered some difficulties when learn source code. We should provide documentation for all public and private API.

Additional requirement - add support for docc compiler.

Render Thread

Currently we run RenderWorld on the main thread and it's very affected our performance.

I tried to add new thread, but encountered some data races

InputManager problems

  1. Input Manager doesn't provide Cyrillic input source
  2. Sometimes Input Manager doesn't handle when a key is released

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.