All Projects → NoelWidmer → unity-gameplay-framework

NoelWidmer / unity-gameplay-framework

Licence: MIT License
A gameplay framework to simplify Unity development.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to unity-gameplay-framework

pcb-ws2812-wifi-controller
WiFi Controller for WS2812 LED Stripes
Stars: ✭ 48 (+60%)
Mutual labels:  controller
VGamepad
Server-Side Installer & Instructions
Stars: ✭ 19 (-36.67%)
Mutual labels:  controller
webkit-input-range-fill-lower
Customize/styles the native HTML input range controls like the ::-ms-fill-lower property on IE - Pure JS
Stars: ✭ 17 (-43.33%)
Mutual labels:  controller
phpstan-symfony
*DEPRECATED* Symfony extension for PHPStan
Stars: ✭ 42 (+40%)
Mutual labels:  controller
SPStorkController
Now playing controller from Apple Music, Mail & Podcasts Apple's apps.
Stars: ✭ 2,515 (+8283.33%)
Mutual labels:  controller
SwitchXBOXController
Turn your Nintendo Switch into an XBOX360 controller to play on your Windows computer
Stars: ✭ 46 (+53.33%)
Mutual labels:  controller
plasmolysis
[WIP] 探索同构开发新范式的可能性
Stars: ✭ 12 (-60%)
Mutual labels:  controller
k8s-trigger-controller
External controller that trigger Kubernetes Deployments on ConfigMap or Secret changes
Stars: ✭ 47 (+56.67%)
Mutual labels:  controller
diy-iidx
Arduino Leonardo code to make a Beatmania controller. Included CAD files for laser cutting materials.
Stars: ✭ 35 (+16.67%)
Mutual labels:  controller
redux-saga-controller
A tool to simplify work with react, redux and redux-saga
Stars: ✭ 18 (-40%)
Mutual labels:  controller
database-controller
Controller to manage databases on Kubernetes
Stars: ✭ 41 (+36.67%)
Mutual labels:  controller
lazynite
A PC remote controller for YouTube and Twitch
Stars: ✭ 45 (+50%)
Mutual labels:  controller
game 01
Scalable MMORPG game server based on entity control
Stars: ✭ 19 (-36.67%)
Mutual labels:  actor
dogactor
Distributed Systems,Based on Actor Model
Stars: ✭ 70 (+133.33%)
Mutual labels:  actor
rudder
Application releases based on helm
Stars: ✭ 19 (-36.67%)
Mutual labels:  controller
Alfred ShadowsocksController
ShadowsocksX controller for Alfred
Stars: ✭ 70 (+133.33%)
Mutual labels:  controller
CodeDroneDIY
The most simple, but working, quadricopter flight controller from scratch, using Arduino Uno/Nano.
Stars: ✭ 68 (+126.67%)
Mutual labels:  controller
AMLeaksFinder
A small tool for automatically detecting the [controller, view memory leak] in the project. 一款用于自动检测项目中【控制器内存泄漏,View 内存泄漏】的小工具,支持 ObjC,Swift。
Stars: ✭ 89 (+196.67%)
Mutual labels:  controller
loadbalancer-controller
Kubernetes loadbalancer controller to provision ingress controller dynamically
Stars: ✭ 93 (+210%)
Mutual labels:  controller
ControllerAutowire
[DEPRECATED] Use Controller autowiring by default since Symfony 3.3
Stars: ✭ 24 (-20%)
Mutual labels:  controller

Unity3D Gameplay Framework

Introduction

All objects spawned in a Unity scene are Behaviours. For local games we work with MonoBehaviours and for networking games Unity provides us NetworkBehaviours. Aside from those there aren't many abstractions where Unity supports us. I came to the conclusion that great gameplay support should be a feature that ships with the engine, finding myself abandoning projects because it doesn't.

I've worked with Unreal's Gameplay Framework which I really like and therefore want to improve Unity's gameplay layer by adding some of the things I have learned from UE4 (Unreal Engine 4). However, the existing Behaviour code base cannot be removed as it lies at the heart of the Unity Engine.

Glossar

Terminology Description
Player A player is a real human. Note that AIs (Bots) are not players.
Participant Players and AIs can become participants when they request to join a game. Participants are taking part in the game and can interact with the world. They can have a huge imapact on the outcome of the game. A player spectator that is not able to interact with the world is not a participant for example.
Authority The authority can either be a local client, a remote client (Host) or a server. A networking game has many actions that require to be authorized before they can happen. Win/Loose conditions are usually evaluated by the authority to prevent cheating for example.

The Gameplay Framework Classes

The Gameplay Framework consist of a few classes that help to structure gameplay logic.

General

Game Class

The Game class is a Singleton that provides general interaction with the game. Controllers join the Game to become participants for example.

GameMode Class

The GameMode only exists on the authority. The authority's Game instance contains the only GameMode across all participants. The GameMode constantly evaluates the GameState for new events that require authorization. It checks win/loose conditions as a common example.

GameState Class

All Games across all participants contain a single GameState that is synchronized over the network. As the name suggests, this class contains the state of the game. However, not all information about the game must be stored in this class. Only data that must be autorized is required to be available in the GameState.

ParticipentState Class

The GameState contains a collection of ParticipantStates. They contain the information of a participant that requires to be authorized. All participants have a ParticipantState.

Controllers

A Controller represents the will of a player or an AI. It can possess a single pawn at the time and/or become a participant by requesting a join.

PlayerController Class

A PlayerController is a controller that represents the will of a player.

AIController Class

An AIController is a controller that represent artificial intelligence.

Pawns

An IPawn is an entity that can become possessed by a single Controller at a time. When possessed, a pawn follows the instructions of its Controller.

MonoPawn Class

MonoPawns are IPawns that are used for local play. They inherit from MonoBehaviour.

NetworkPawn Class

NetworkPawns are IPawns that are used for network play. They inherit from NetworkBehaviour and are currently not implemented due to a focus on local play for a first version of the Gameplay Framework.

Player Managers

PlayerManagers are associated by PlayerControllers and handle the interaction between the game and the players. AIControllers do not require PlayerManagers because an AI doesn't require visual feedback.

PlayerInputManager Class

A PlayerInputManager reads the input from the input devices of its player and prepares the information for its PlayerController. It does not interpret the input but is allowed to make device specific corrections such as applying a deadzone to an analogue stick.

PlayerCameraManager Class

PlayerCameraManagers are the cameramen in a game. Their main job is to position and rotate the camera correctly as well as performing any post-processing on the rendered image.

PlayerHUDManager Class

A PlayerHUDManager is responsible to display a player's HUD (Heads Up Display).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].