Skip to content

🚧A WIP hobbyist game engine written in modern C++

License

Notifications You must be signed in to change notification settings

bitwizeshift/Alloy

Repository files navigation

Alloy Engine

Release License Github Issues

Summary

Alloy is a flexible game-engine and development kit under active development written in C++.

It is characterized by upholding a strict set of design-goals which center around maintainability and readability through proper software engineering practices. The overall goal for this project is to be a well-rounded and easy-to-use, efficient game-engine.

It is inspired by many great open-source projects that have come before it, the complete list can be seen below.

Table of Contents

Features

  • Written with Modern C++ (C++17)
    • Supports for constexpr wherever possible
  • Designed using componentized architecture (easier reuse)
  • Strong focus on readability and design
  • Supports multiple render systems (in progress)
    • OpenGL
    • DirectX
    • Vulkan
  • Supports multiple audio systems (in progress)
    • OpenAL
    • FMOD
  • Handles intersections of geometric objects
  • Easily build scene graphs and skeletons
  • Manages game objects using entity-component system

Components

Alloy is designed using component-based architecture in order to promote better logical design and reusability through code-sharing.

The library and application components are detailed below:

Libraries

  • Alloy::Core
    The core library that the rest of Alloy is built off of
  • Alloy::IO
    The library for managing all IO tasks (filesystem, network, etc)
  • Alloy::Render
    The library for managing rendering tasks, and abstracting the underlying rendering system (DX, OpenGL, etc)
  • Alloy::Audio
    The library for managing the audio tasks, and abstracting the underlying mixing system (FMOD, OpenAL, etc)
  • Alloy::Engine
    The library for managing all engine details, including subsystem initialization & coordination, entity-component management, resource management, etc.

Applications

TODO detail applications

Inspirations

Alloy was inspired by a variety of existing open-source projects. Some of these projects are listed below:

Note: inspired does not mean that any code was taken without following proper license attribution. It simply means that certain designs and concepts may have been adjusted to align with what other existing projects are already doing.

Tested Compilers

The following compilers are currently being tested through continuous integration with Travis and AppVeyor

Compiler Operating System Architectures
g++-9 Ubuntu 18.04 x86, x86_64
clang++-9 Ubuntu 18.04 x86, x86_64
clang xcode 11.3 macOS (Latest) x86_64
Visual Studio 2019 Windows (Latest) x86, x86_64
clang-cl Windows (Latest) x86, x86_64
clang++-9 Windows (Latest) x86, x86_64

Continuous Integration

Build Status
Windows Windows Build Status
Linux Linux Build Status
macOS macOS Build Status

Current Releases

Host Release
Github Release
Conan Release

License

Alloy is licensed under the MIT License:

Copyright © 2018 Matthew Rodusek

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.