/Atomic

Architectural framework for developing games in C# and Unity

Primary LanguageC#MIT LicenseMIT

Official Stable GitHub release (latest by date) GitHub license

изображение

Atomic Framework

Architectural framework for developing games in C# and Unity

What is Atomic?

Atomic Framework is a solution designed for developing games in C# and Unity. The main idea of framework is reduce code complexity by separating state and behaviour of game code. To achieve the flexibility and reusability of game mechanics, it is necessary to look towards procedural and reactive programming instead of OOP.

Installation

Option #1. Download source code with game example and tutorial

Option #2. Download last Atomic.unitypackage from release notes

Add Odin Inspector

Important

There are many features that don't work by default. To make the most of the Atomic Framework, we recommend adding the Odin Inspector plugin to your project. In the future, we plan to move away from dependence on Odin Inspector and write our own tools for integration with Unity

Framework modules

  • Atomic.Elements — library with reactive data structures
  • Atomic.Entities — solution for developing game objects
  • Atomic.Context — solution for developing game systems
  • Atomic.UI — solution for developing UI controllers
  • Atomic.Extensions — extra features
  • Atomic.AI — solution for developing AI (coming soon)
  • Atomic.Fusion — solution for developing Mulitplayer with Photon Fusion 2

Game Example

There is a game example in project. A mini game for two players in which you need to collect coins for a while. Which of the players collected the most, he won. Controls: WASD and keyboard arrows.

Note: Made without Odin Inspector!

изображение

Tutorial Walkthrough

There is a step-by-step tutorial in the project. It shows the key features of Atomic Framework and how mini-game was made step by step.

изображение

Table of Contents

Here you can see all the features that are in the framework. We will add documentation on github from time to time to make it easier for developers to learn the framework.

  • [Atomic.Elements]
    • [Reactive Properties]
      • [ReactiveVariable]
      • [ReactiveInt]
      • [ReactiveFloat]
      • [ReactiveBool]
      • [ReactiveVector2]
      • [ReactiveVector3]
      • [ReactiveQuaternion]
      • [float3Reactive]
      • [quaternionReactive]
    • [Reactive Collections]
      • [ReactiveArray]
      • [ReactiveDictionary]
      • [ReactiveHashSet]
      • [ReactiveList]
      • [ReactiveSortedDictionary]
      • [ReactiveSortedList]
      • [ReactiveSortedSet]
    • [Event]
    • [Expressions]
      • [AndExpression]
      • [OrExpression]
      • [IntMulExpression]
      • [IntSumExpression]
      • [FloatMulExpression]
      • [FloatSumExpression]
    • [Time]
      • [Timer]
      • [Countdown]
      • [Stopwatch]
      • [Cycle]
  • [Atomic.Entities]
    • [C#]
      • [Entity]
      • [Entity Behaviours]
      • [Entity World]
      • [Entity Filter]
    • [Unity]
      • [Configure Value Console]
      • [Configure Tag Console]
      • [SceneEntity]
      • [SceneEntityInstaller]
      • [SceneEntityController]
      • [SceneEntityProxy]
      • [SceneEntityGizmos]
      • [SceneEntityWorld]
      • [SceneEntityWorldController]
      • [Attributes]
    • [Performance]
  • [Atomic.Contexts]
    • [C#]
      • [Context]
      • [Context Systems]
      • [Dependency Injection]
    • [Unity]
      • [Configure Value Console]
      • [SceneContext]
      • [SceneContextInstaller]
      • [SceneContextController]
      • [SceneContextGizmos]
      • [Attributes]
    • [Performance]
  • [Atomic.UI]
    • [SceneViewController]
    • [SceneViewGizmos]
    • [Behaviours]
    • [Performance]
  • [Atomic.Extensions]
    • [Entity Aspects]
    • [Condition and Action Assets]
  • [Atomic.AI] (Coming Soon)
    • [State Machine]
    • [Behaviour Tree]
    • [Utility AI]
    • [Goal-Oriented Action Planning]
    • [HTN-Planner]