All Projects → ArchonInteractive → Swissarmylib

ArchonInteractive / Swissarmylib

Licence: mit
Collection of helpful utilities we use in our Unity projects.

Projects that are alternatives of or similar to Swissarmylib

Merino
Merino is a narrative design tool that lets you write Yarn scripts inside the Unity Editor
Stars: ✭ 275 (+78.57%)
Mutual labels:  unity, unity3d, game-development, unity3d-plugin
Unity2d Components
A constantly evolving array of Unity C# components for 2D games, including classes for pixel art cameras, events & messaging, saving & loading game data, collision handlers, object pools, and more.
Stars: ✭ 375 (+143.51%)
Mutual labels:  unity, unity3d, game-development, gamedev
Spheredissolve
Customizable procedural spherical dissolve shader for Unity3D, for all your customizable procedural spherical dissolve needs!
Stars: ✭ 311 (+101.95%)
Mutual labels:  unity, unity3d, game-development, gamedev
Unity Shaders
✨ Shader demo - More than 300 examples
Stars: ✭ 198 (+28.57%)
Mutual labels:  unity, unity3d, game-development, gamedev
Radialprogressbar
Customizable radial progress bar shader for Unity3D. Allows you to set arc range, minimum and maximum colors, textures, radius, and a few more things. Create HP Bars, Speedometers, rank progress, etc!
Stars: ✭ 714 (+363.64%)
Mutual labels:  unity, unity3d, game-development, gamedev
Fluent State Machine
Fluent API for creating state machines in C#
Stars: ✭ 195 (+26.62%)
Mutual labels:  state-machine, unity, unity3d, game-development
Game Networking Resources
A Curated List of Game Network Programming Resources
Stars: ✭ 4,208 (+2632.47%)
Mutual labels:  unity, unity3d, game-development, gamedev
Crystalai
A Utility AI for C# and Unity
Stars: ✭ 328 (+112.99%)
Mutual labels:  unity, unity3d, game-development, unity3d-plugin
Entitas Csharp
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
Stars: ✭ 5,393 (+3401.95%)
Mutual labels:  unity, game-development, gamedev, performance
Texturepanner
This repository hosts a shader for Unity3D whose main goal is to facilitate the creation of neon-like signs, conveyor belts and basically whatever based on scrolling textures
Stars: ✭ 528 (+242.86%)
Mutual labels:  unity, unity3d, game-development, gamedev
Deadsimple Pixel Perfect Camera
An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity. Punch in a few specs and you've got a working pixel perfect camera. It's that easy.
Stars: ✭ 186 (+20.78%)
Mutual labels:  unity, unity3d, game-development, gamedev
X Postprocessing Library
Unity Post Processing Stack Library | Unity引擎的高品质后处理库
Stars: ✭ 1,079 (+600.65%)
Mutual labels:  unity, unity3d, game-development, unity3d-plugin
Rimlight
Customizable rimlight shader for Unity that includes pulsation and noise scrolling. Give your scenes that extra oomph!
Stars: ✭ 170 (+10.39%)
Mutual labels:  unity, unity3d, game-development, gamedev
Noahgameframe
A fast, scalable, distributed game server engine/framework for C++, include the actor library, network library, can be used as a real time multiplayer game engine ( MMO RPG/MOBA ), which support C#/Lua script/ Unity3d, Cocos2dx and plan to support Unreal.
Stars: ✭ 3,258 (+2015.58%)
Mutual labels:  unity, unity3d, game-development, gamedev
Verticaldissolve
Procedural vertical dissolve shader. Highly customizable. Tweak edge color, noisiness & waviness, rim light, emission scrolling and more.
Stars: ✭ 434 (+181.82%)
Mutual labels:  unity, unity3d, game-development, gamedev
Beaverandfairies
Stars: ✭ 14 (-90.91%)
Mutual labels:  unity, unity3d, game-development, gamedev
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+7496.1%)
Mutual labels:  unity, unity3d, game-development, gamedev
Unity Colourlovers Importer
Unity editor tool to load colours and palettes directly from COLOURlovers.com
Stars: ✭ 85 (-44.81%)
Mutual labels:  unity, unity3d, unity3d-plugin
1 Character Movement
The first section of the course. You will learn everything required to build a simple movement system in your RPG, creating the core experience. http://gdev.tv/rpggithub
Stars: ✭ 81 (-47.4%)
Mutual labels:  unity, unity3d, game-development
Projectfieldwarning
Project: Field Warning is a community-made RTS game centered around lethal regiment and division-scale warfare.
Stars: ✭ 86 (-44.16%)
Mutual labels:  unity, unity3d, gamedev

.. image:: https://raw.githubusercontent.com/ArchonInteractive/SwissArmyLib/master/logo.png

SwissArmyLib

.. image:: https://ci.appveyor.com/api/projects/status/sapkbwkbl5ug901u/branch/master?svg=true :alt: Build status :target: https://ci.appveyor.com/project/Phault/swissarmylib/branch/master

.. image:: https://readthedocs.org/projects/swissarmylib-docs/badge/?version=latest :alt: Documentation Status :target: http://swissarmylib-docs.readthedocs.io/en/latest/?badge=latest

.. image:: https://api.bintray.com/packages/phault/SwissArmyLib/development/images/download.svg :alt: Download :target: https://bintray.com/phault/SwissArmyLib/development/_latestVersion#files

API Reference <https://casperlindschouw.com/swissarmylib/>_


About

SwissArmyLib is an attempt to create a collection of useful utilities with a focus on being performant. It is primarily intended for Unity projects, but feel free to rip parts out and use them for whatever you want.

A very important part in the design decisions of this library was to keep the garbage generation low. This means you will probably frown a little upon the use of interfaces for callbacks, instead of just using delicious delegates. It also means using the trusty old for loops for iterating through collections where possible.

There's a lot of libraries with some of the same features, but they're often walled off behind a restrictive or ambiguous license. This project is under the very permissive MIT license and we honestly do not care what you use it for.

Features

  • Events_

    • Supports both interface and delegate listeners
    • Can be prioritized to control call order
    • Check out GlobalEvents_ if you need.. well.. global events.
  • Timers_

    • Supports both scaled and unscaled time
    • Optional arbitrary args to pass in
    • Also uses interfaces for callbacks to avoid garbage
  • Coroutines_

    • More performant alternative to Unity's coroutines with a very similar API.
  • Automata_

    • Finite State Machine_
    • Pushdown Automaton_
  • Pooling_

    • Support for both arbitrary classes and GameObjects

    • IPoolable_ interface for callbacks

      • PoolableGroup_ component in case multiple IPoolable components needs to be notified
    • Timed despawns

  • Service Locator_

    • An implementation of the Service Locator pattern

    • Aware of MonoBehaviours and how to work with them

    • Supports scene-specific resolvers

    • Supports both singletons and short-lived objects

      • Singletons can be lazy loaded
  • Managed Update Loop_

    • An update loop maintained in managed space to avoid the overhead of Native C++ --> Managed C# <https://blogs.unity3d.com/2015/12/23/1k-update-calls/>_
    • Useful for non-MonoBehaviours that needs to be part of the update loop
    • Optional ManagedUpdateBehaviour_ class for easy usage
  • Spatial Partitioning_

    • GC-friendly implementations of common space-partitioning systems
  • Resource Pool_

    • Generic and flexible resource pool (health, mana, energy etc.)
  • Gravity

    • Flexible gravitational system
    • Useful for planet gravity, black holes, magnets and all that sort of stuff.
  • Misc

    • BetterTime_

      • A wrapper for Unity's static Time class that caches the values per frame to avoid the marshal overhead.
      • About 4x faster than using the Time class directly, but we're talking miniscule differences here.
    • Shake

      • Useful for creating proper screen shake
    • Some collection types_

    • Some useful attributes_

      • ExecutionOrder_

        • Sets a default (or forces) an execution order for a MonoBehaviour
      • ReadOnly_

        • Makes fields uninteractable in the inspector
    • A few other tiny utilities

Download

Binaries for the bleeding edge can be found `here <download_>`_.
Alternatively you can either `build it yourself <building_>`_ (very easily) or simply `copy the source code into your Unity project <copysource_>`_ and call it a day.

License
~~~~~~~
`MIT <https://tldrlegal.com/license/mit-license>`_ - Do whatever you want. :) 

Contributing

Pull requests are very welcome!

I might deny new features if they're too niche though, but it's still very much appreciated!

If you're looking for a way to contribute, please consider helping with the documentation at this repository <https://github.com/ArchonInteractive/SwissArmyLib-docs>_.

.. _download: https://bintray.com/phault/SwissArmyLib/development/_latestVersion#files .. _building: https://swissarmylib-docs.readthedocs.io/en/latest/Getting%20Started.html#building-the-source .. _copysource: https://swissarmylib-docs.readthedocs.io/en/latest/Getting%20Started.html#method-2-copy-source

.. _Events: https://swissarmylib-docs.readthedocs.io/en/latest/Events/Event.html .. _GlobalEvents: https://swissarmylib-docs.readthedocs.io/en/latest/Events/GlobalEvents.html .. _Timers: https://swissarmylib-docs.readthedocs.io/en/latest/Events/TellMeWhen.html .. _Coroutines: https://swissarmylib-docs.readthedocs.io/en/latest/Coroutines/BetterCoroutines.html .. _Automata: https://swissarmylib-docs.readthedocs.io/en/latest/Automata/index.html .. _Finite State Machine: https://swissarmylib-docs.readthedocs.io/en/latest/Automata/Finite%20State%20Machine.html .. _Pushdown Automaton: https://swissarmylib-docs.readthedocs.io/en/latest/Automata/Pushdown%20Automaton.html .. _Pooling: https://swissarmylib-docs.readthedocs.io/en/latest/Pooling/index.html .. _IPoolable: https://swissarmylib-docs.readthedocs.io/en/latest/Pooling/IPoolable.html .. _PoolableGroup: https://swissarmylib-docs.readthedocs.io/en/latest/Pooling/PoolableGroup.html .. _Service Locator: https://swissarmylib-docs.readthedocs.io/en/latest/Utils/Service%20Locator.html .. _Managed Update Loop: https://swissarmylib-docs.readthedocs.io/en/latest/Events/ManagedUpdate.html .. _ManagedUpdateBehaviour: https://swissarmylib-docs.readthedocs.io/en/latest/Events/ManagedUpdateBehaviour.html .. _Spatial Partitioning: https://swissarmylib-docs.readthedocs.io/en/latest/Partitioning/index.html .. _Resource Pool: https://swissarmylib-docs.readthedocs.io/en/latest/Resource%20System/index.html .. _BetterTime: https://swissarmylib-docs.readthedocs.io/en/latest/Utils/BetterTime.html .. _Some collection types: https://swissarmylib-docs.readthedocs.io/en/latest/Collections/index.html .. _Some useful attributes: https://swissarmylib-docs.readthedocs.io/en/latest/Utils/Attributes/index.html .. _ExecutionOrder: https://swissarmylib-docs.readthedocs.io/en/latest/Utils/Attributes/ExecutionOrder.html .. _ReadOnly: https://swissarmylib-docs.readthedocs.io/en/latest/Utils/Attributes/ReadOnly.html

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].