spacepuppy-unity-framwork-4.0

A modular framework of tools for use with the Unity game engine version 2021.3 or later

This repository primarily exists as a way for me to just share the tools I personally use when making games. This project is constantly in flux and should seldom be considered "stable". Use at your own risk.

NOTE - various editor menu/functionality exist in the editor scripts. Define the compiler directive SPEDITOR_IGNORE to turn them off.

com.spacepuppy

Core library, all other libraries in spacepuppy depend on this library. Core functionality includes:

  • SPComponent: an extension of MonoBehaviour with support for mixins as well as inheriting contract interfaces like IGameObjectsource, and IComponent.
  • GameLoop: a global hook into the Update/FixedUpdate loops of the game.
  • SPEntity: a foundation class placed on the root GameObject of an entity that facilitates treating its entire hierarchy as a single "entity".
  • SPTime: object-identity for time suppliers as well as ability to create custom timesuppliers and reference them through the inspector
  • MultiTag: ability to add multiple tags to a GameObject
  • SPEvent: similar to UnityEvent but predates it with some added features like "Trigger All On Target" and IObserverableTrigger and hijacking.
  • Collections: various collection implementations from a BinaryHeap to temporary/reusable lists to reduce GC on collections.
  • Dynamic: generaly reflection tools
  • VariantReference: ability reference a value of varying type through the inspector/serialization.

Dependencies: com.unity.editorcoroutines

Package Manager git url: https://github.com/lordofduct/spacepuppy-unity-framework-4.0.git?path=Framework/com.spacepuppy.core

com.spacepuppy.AI

A basic AI boilerplate for writing AI in Unity. This has mostly been replaced by our mecanim based AI, see com.spacepuppy.Mecanim

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.geom, com.spacepuppy.pathfinding, com.spacepuppy.sensors, com.spacepuppy.statemachine

com.spacepuppy.Anim

An extension of the legacy animation system in Unity. Mostly unnecessary today as we've moved to Mecanim, exists for historical purposes.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.Audio

Incomplete at this time.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.Cameras

Manager from cameras and a contract interface ICamera for complex cameras.

Dependencies: com.spacepuppy

com.spacepuppy.Geom

Various geometry/math helpers.

Dependencies: com.spacepuppy

com.spacepuppy.Input

Our custom input system to supplement the built in Unity input system. This predates the new input system from Unity (which we actually haven't used since this is our primary input system).

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.Mecanim

Various tools to help working with Mecanim. Things from "override layers" which facilitate adding/removing override animations as layers by id/token. As well as a BehaviourStateMachine to Component bridge for scripting against the statemachine as well as facilitating AI logic.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.Motor

Generalized interface IMotor for moving entities around regardless of if they use Rigidbody or CharacterController. As well as movement style controller.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.Geom

com.spacepuppy.Pathfinding

Implementations of Djikstra/A* as well as IPathSeeker/IPath contract interfaces to abstract which pathfinding system you use from your movement logic (may you use Unity, AronGranberg, your own, whatever.

See SpacepuppyAGExtensions for integrating with AronGranberg A* project. Note you MUST supply your own version of AG A* and some features may require the pro license of AG A*.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.PathfindingMotor

Some classes that bridge com.spacepuppy.Motor and com.spacepuppy.Pathfinding

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.Motor, com.spacepuppy.Pathfinding

com.spacepuppy.RadicalCoroutine

Advanced coroutine support. A lot of the features such as custom yield instructions and object identity for coroutines predate these features being added to Unity. Most of the features are no longer necessary in current versions of Unity.

Dependencies: com.spacepuppy

Package Manager git url: https://github.com/lordofduct/spacepuppy-unity-framework-4.0.git?path=Framework/com.spacepuppy.radicalcoroutine

com.spacepuppy.Scenes

A SceneManager for managing scenes in Unity

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.Sensors

Can be used in tandem with AI to create vision sensors that facilitate an entities ability to sense other entities around them via "aspects" attached to them as components.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.Triggers

com.spacepuppy.Serialization

Various serialization tools for save game states.

Dependencies: com.spacepuppy

com.spacepuppy.Spawn

A Spawn manager for pooling spawnable objects.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.StateMachine

Various statemachine implementations.

Dependencies: com.spacepuppy

com.spacepuppy.Triggers

Various components that utilize the SPEvent system in com.spacepuppy to allow editor based scripting through what we call the "T&I System". Essentially T's are triggers that trigger/call I's on certain events. For example T_OnEnterTrigger will occur when a trigger collider is entered which can then call a I_PlaySoundEffect which... plays a sound effect.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.tween

com.spacepuppy.Tween

A tween library.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine

com.spacepuppy.Waypoints

A waypoint system with in scene editor.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.Tween

com.spacepuppy.Extensions

A random assortment of tools that tap into different parts of Spacepuppy.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.Camera, com.spacepuppy.Geom, com.spacepuppy.Motor, com.spacepuppy.Pathfinding, com.spacepuppy.Tween, TextMesh Pro

com.spacepuppy.AGAstarExtensions

A bridge between the Aron Granber A* Project and Spacepuppy Pathfinding/Motor libraries.

Dependencies: com.spacepuppy, com.spacepuppy.radicalcoroutine, com.spacepuppy.Geom, com.spacepuppy.Pathfinding, com.spacepuppy.Motor, com.spacepuppy.PathfindingMotor, AstarPathfindingProject