Summary of "Unite Austin 2017 - Game Architecture with Scriptable Objects"

Main ideas & lessons

1) Why “game architecture” needs a bigger picture

2) Core “pillars” for architecture (Ryan Hipple’s operating principles)

The speaker frames these as decision-making rules for how a game should be structured:

3) Scene and prefab design rules

4) Data-driven architecture using Scriptable Objects

Scriptable Object basics (primer)

In Unity, a ScriptableObject:

It can be used:

Common uses (before architecture)

5) A major architectural enemy: Singleton

The speaker argues that Singletons cause widespread “dependency nightmares” in larger projects.

Benefits that motivate Singleton usage (acknowledged):

Problems called out (why it becomes dangerous):

6) Replacement concept: reduce global state via dependency inversion & injection


Detailed methodology & patterns presented

A) Replace “shared data via Singleton” with shared ScriptableObject variables

Goal: multiple systems react to the same value without direct coupling.

Pattern: Shared value variable (float example)

Extra layer: make inspector-friendly “references”

A wrapper pattern:

Demo behaviors shown

B) When you don’t want “state polling,” use event architectures

Goal: represent “something happened” as an event message rather than continuously checking values.

Why event architecture fits architecture goals

UnityEvent limitations (called out)

UnityEvent is useful for serialized function calls (including editor wiring), but not ideal as a fully modular event system because:

Custom event system using Scriptable Objects (“GameEvent”)

Pattern overview (ScriptableObject-driven events):

Debugging advantage:

Demo event flow:

C) Replace “Singleton manager collections” with runtime sets (ScriptableObject-based registries)

Problem being solved: managers often need lists of scene entities (enemies, renderers, mini-map items), but Singleton + scene startup ordering can create race conditions and rigid dependencies.

Pattern: RuntimeSet

Benefits claimed

Demo behaviors

D) Replace code-driven enums with data-driven ScriptableObjects

Reason:

ScriptableObject “element” system

E) Put “systems” into Scriptable Objects too (not just data)

The speaker notes people often view ScriptableObjects as “data buckets,” but argues they can include methods and behavior.

A ScriptableObject-based system can be referenced like Unity’s audio mixer approach:

Inventory example architecture


Key takeaways / “what to adopt”


Speakers / sources featured

Category ?

Educational


Share this summary


Is the summary off?

If you think the summary is inaccurate, you can reprocess it with the latest model.

Video