top of page
Scene_001_demo_00.png

Unity Solutions

​Unity3D is very friendly to learn and many fresh candidates available in market. However most new unity developers can use only Unity features without deep concepts on game developing and programming. They can handle only small scale project because they don't know how to plan and build structure of system.
 
As a Senior Unity Developer, I'd like to make solutions for young workmates to help them building projects with better structure and performance.  The project will be promised to be easy-develop and easy-maintainence.

AceLand Library

AceLand Library

AceLand Library is my library for building projects.

Library includes event driven, unit architecture, helper functions, and a lot of micro-services shown or not shown in this page.Library can be easily installed from package manager with git url.  (currently private repo)

Library is using ECS and Burst for max effeciency.  Project can be built with Jobs System or Mono.

Logging.png
Unit Architecture

Here is a Demo Project developed with AceLand Library.  It is not only fast and easy to develop and maintanence, but also high performance built with IL2CPP backend scripting.

In the test on my computer as screen capture, fps reached over 1.2k in 4k resolution.

unit_base_00.png

ID base exposable unit architecture

Developers can create different Units to fulfilling game design.  Unit can have much clear logging in Editor and Build mode.  This can help debugging.

There are default 8 unit types in AceLand Library.  MonoUnit works same as Monobehaviour, ProfileUnit is Scriptable Object, MainUnit is an exposable MonoUnit.  There are also units works for non-mono such as CoreUnit, DataUnit.

For example in gallery, Hero and FollowObject is GameUnit that inherited to MainUnit, if Auto Expose is checked in Inspector, other object can get this object by its unique ID.

​UnitFactory can create specified Unit easily.

Hook

Hook - event driven architecture

There are Value Hook and Event Hook.

Value Hook will trigger added tasks when value is changed.

Event Hook will be controlled by developer that trigger added tasks when necessary.

Developer can get the hook anywhere, and add task to it. There are also ListHook and DictionaryHook for collections.

All value hook types is ready to serialized by binary and Newtonsoft.Json.

Tasks in hook will be canceled when task owner is disposed.

The system architecture design becomes simple because developers need only a hook name to use it.

Hook_0.png

Hook is a game changer of coding in Unity.  Developers are liberated from finding object, getting components, references of objects.

Task Handler
task handler 3.png

Task Handler - multi-threading tasks

Task Handler is a easy and safe way to create tasks run in main thread or thread pool.

By using UniTask, there are no GC problem.

There are 2 task types can be created:

  • async UniTask - you control the whole processing

  • *loop void - select a loop timing for the handler to loop through the method.  This will return a Cancellation Token Source for external control.

* task will be canceled and disposed when the task owner is disposed or destroyed.

With Task Hander, senior developers can build up framework and library easily and efficiently.

Cycle Hander is old version of TaskHandler that is a replacement of Unity PlayerLoop MonoBehaviour.

This had be removed from library.

Input

Input with Event Driven

With Input Manager in AceLand Library, handling input event become easy and simple.  Developer can choose either Interface Mapping or EventHook for setting up Input Listeners.

Settings with Unity New Input System easily, developers need only the name of each button.  All triggers are relying interfaces, developer can get the button status including name, state and tap count.  Button state include pressed, pressed as button, holding and released.  This can fulfill most situations and game rules.

UI Button works with Input Manager too.  Add the component, set the button name, that's all.  It's not necessary to write code for UI or refer to other codes.

input_2.png
GC Free

GC-Free Environment

With AceLand Library and my built framework and structure, a GC-free environment is a piece of cake even for junior unity developer.

Event driven, Hooks, and no update cycles anymore. This is a solution besides using DOTS.

Inteface Mapping

Interface Mapping

Developer can easily loop though a specified interface to trigger the methods.

The mapping will automatically start before splash screen loaded, and complete the mapping in a flash.

Developer can create new interface for any event.

Interface Mapper.png
Promise
Promise Handler.jpg

Promise Handler

Promise in JS is a very clear and easy-read structure.  I built a promise base structure in C# for developers to create there handlers.

With promise handler, I'd built up a whole API and Web Request in Unity, it will handle all problems and keep the app away from freezing by errors.

SecureData

SecureData

SecureData is a high performance runtime secured primitive types. It works same as primitive type.

It keeps a Secured Value, Key, Hash for each type of SecureData and no unsecured value stored in memory.

The key will changed every time of setting value.  The secured value will be different in each change.  This make the data more secured than other runtime encryption.

Developer can change the keys in Editor Window easily.

SecureData is ready to serialized by binary, Newtonsoft.Json. output will be a (byte)key, (int32)hash, and (T)value.

SecureData.png
GM Consle
GM console.png

GM Console (CLI Method)

GM Console is a must have tools for game development.

My CLI Console can add command by code or in scriptable object profile.  This can be developed by senior or junior developer.

CLI can show predicated commands, tester can use arrow to select and tab/space/enter to auto-fill.

API

API

API is base on promise handler that confirm all error handling in background.

API settings can be changed easily in Editor.

This can help junior team members handling API flow easiler, faster and bug-free.

Senior developer should complete the API functions to confirm team member work smoothly.

API_Editor_Windows.png
bottom of page