Thank you for visiting this site.
In this article, we’ll report on how to implement “five different genre games” by combining Game Creator 2 modules. For each genre — escape game, boxing, Dragon Quest-style RPG, survival craft, and Apex-style FPS — we’ll cover the modules used, design philosophy, and implementation steps.
Official documentation: Game Creator 2 Documentation
You can find a complete list of all articles in this series here:
1. Escape Game (Core + Inventory + Dialogue)
Game Specifications
- Perspective: Third-person fixed camera or point-and-click
- Rules: Escape from a locked room through items and puzzles
- Key Elements:
- Collectible items (keys, notes, tools)
- Usable items (use key on lock, pry open box with crowbar)
- Examinable furniture (information revealed via Trigger and Dialogue)
- Password input (Global Name Variable)
- Escape condition (door opens and scene transitions)
Modules Used
| Module | Purpose |
|---|---|
| Core (Characters / Cameras / Visual Scripting / Variables / Save & Load) | Player control, cameras, all game logic |
| Inventory | Item possession and usage |
| Dialogue | Interactions with furniture and NPCs, hint display |
| Extensions: Transitions | Scene transition effects from doors |
Initial Project Setup
- Create Unity project → Install Game Creator 2 + Inventory + Dialogue from Package Manager
Game Creator > Install...to import samples: Inventory (Items / UI), Dialogue (Skin Default)- Create scene
Room_01. Place floor, wall, and ceiling models with colliders - Hierarchy →
Game Creator > Characters > Playerto create the player Game Creator > Cameras > Camera Shotto create a Third Person shot targeting the Player- Place the Inventory UI prefab (Bag UI) on the Canvas
Item Definitions (Inventory)
Create items repeatedly in the Project via Create > Game Creator > Inventory > Item:
| Item Name | ID | Purpose | Prefab |
|---|---|---|---|
| Rusty Key | key_rusty | Unlock front door | Yes |
| Crowbar | crowbar | Destroy wooden crate | Yes |
| Torn Note | note_01 | Password fragment | No |
| Note Paper | note_02 | Password fragment | No |
Properties: Give Torn Note a Number Property fragment = 1, and Note Paper = 2. When they total 3, the complete password is revealed.
Bag: Add a Bag (List type) component to the Player and assign the Inventory Bag Skin to the Skin UI.
Scene Composition
Required GameObjects:
- DoorFront (exit door): Opened with key
- Safe (safe): Opened with 3-digit password input
- WoodenCrate (wooden crate): Destroyed with Crowbar, key inside
- Desk (desk): Examine to pick up Torn Note
- Bookshelf (bookshelf): Book containing Note Paper
- HintNPC (optional): NPC that gives hints
Set Trigger (Event = On Interact) and Hotspot (Mode = On Interaction Focus, with “Examine” text display on Spot) on all interactable objects.
Variables Design
Global Name Variables (asset) EscapeFlags:
| Variable Name | Type | Initial Value | Purpose |
|---|---|---|---|
door_unlocked | Boolean | false | Exit door unlock flag |
safe_unlocked | Boolean | false | Safe unlock flag |
crate_open | Boolean | false | Wooden crate destroyed flag |
password_entered | String | "" | Password entered by the player |
password_correct | String | ”4263” | Correct answer |
Remember: Add a Remember component to the Player (or a DontDestroyOnLoad root) and register Bag and Variables to Memory for save support.
Item Acquisition Logic (Example: Desk’s Torn Note)
Branch using a Conditions component on the Desk’s Trigger (On Interact):
Branch 1 (Condition: Has Item (Torn Note, 1) == false):
- Play Dialogue → Desk description and “opened the drawer” effect
- Add Item → Add
Torn Noteto Player’s Bag - Play UI Sound (pickup sound)
- Play Dialogue → “Picked up” notification
Branch 2 (Empty condition = default branch): Play Dialogue → “Nothing left here”
After acquisition, either disable the Desk’s Hotspot with Set Active(Hotspot, false), or use Conditions Branch branching to “skip if already owned.”
Item Usage (Unlocking Door with Key)
DoorFront’s Trigger (On Interact):
- Branch 1 (
door_unlocked == true): Transition to Scene (Transitions Extension) toOutsidescene - Branch 2 (
Has Item (Rusty Key, 1) == true): Play Dialogue →door_unlocked = true→ consume key → “The door opened!” - Branch 3 (Default): “A heavy lock hangs on the door”
Wooden Crate Destruction (Crate’s Trigger):
- Branch 1:
crate_open == true→ “Nothing left here” - Branch 2:
Has Item (Crowbar, 1) == true→ destruction SE / particles →Add Item (Rusty Key)→crate_open = true - Branch 3: “Can’t open it by hand”
Safe and Password Input
- Create a 4-digit input field for Safe UI (
Create > UI > InputField) - Safe Trigger (On Interact): If
safe_unlocked == true, get contents; otherwise display Safe UI - On confirm button, compare
typed == password_correct(Text Equals condition) - Match:
safe_unlocked = true+ success sound + close UI + Instantiate treasure inside the safe - No match: failure sound + Play Dialogue “That doesn’t seem right…”
Password Deduction: Torn Note says “4 and 2…” and Note Paper says “…6 and 3.” When you have both and examine them, the complete 4263 is displayed via Global Dynamic Value in Dialogue.
Using Dialogue
- Text nodes with Actor (Narrator, etc.) and Portrait None for plain messages
- You can present “Examine / Leave” options using Choice
- Use
TagandTag Visitedto switch between “long explanation on first visit, short summary on subsequent visits”
Hint NPC: Add Trigger (On Interact) + Play Dialogue to the NPC. When “Give me a hint” is selected via Choice, stage-appropriate hints are given based on the current state of the safe, wooden crate, and door.
Camera Direction
- Close-up Shot: Create dedicated Camera Shots (Fixed Position) for objects you want to zoom in on (safe, bookshelf, etc.). Use
Change To Shotwhen examining andRevert to Previous Shotwhen leaving - Camera lock during Dialogue: Set
Is Controllable = falseon Dialogue On Start, restore on On End
Save and Load
- Title menu Buttons:
Save Game (slot=1)/Load Game (slot=1)/Delete Game (slot=1) - Place a Remember component on the Player, add Transform and Bag to Memory
- Turn ON the Save checkbox for Global Variables to save puzzle progress
Scene Transitions
- Use
Transition to Scene(Transitions Extension) on the DoorFront Trigger upon successful escape - Place an ending Dialogue in the next scene
Outside - On the ending Dialogue’s On Finish, use
Load Scene→ return to title
Recommended Implementation Order
- Scene, Player, and Camera setup
- Introduce Inventory, verify Item and Bag UI operation
- Implement one Trigger + Dialogue + Add Item (verify operation)
- Expand to remaining interactable objects
- Safe puzzle (Variables + UI InputField)
- Door unlock and scene transition
- Remember / Save & Load support
- Dialogue hint NPC and camera direction
- SE / BGM (Play UI Sound / Play Ambient)
- Transitions effects and finishing touches
Tips and Pitfalls
- Trigger’s Use Raycast: Setting this prevents reactions when a wall is between the player and the target object, making interactions feel natural
- Don’t forget Hotspot’s Target = Player
- Drop Item won’t work without a Prefab set on the Item. Not needed for pickup-only items; set it if you want items to be droppable
- Case sensitivity in password comparison: Normalize text from InputField using
Join/Set Text - Block character input during Dialogue: Set
Is Controllable = false - Remember ordering: If you want to save a Parent’s Transform, structure it so the parent is loaded before the child’s Remember
- Types that can’t be saved: GameObject reference variables cannot be saved. Save substitute IDs (strings) instead
Extension Ideas
- Add a wandering guard using Perception, causing a game over if discovered (horror extension)
- Add a “Sanity” Attribute using Stats that decreases when in dark rooms
- Replace with Quests for a story-driven structure that sequentially unlocks Tasks per room
- Add multi-language support with Localization
Level Up! The Guide to Great Video Game DesignView on Amazon →
Introduction to Game Design, Prototyping, and DevelopmentView on Amazon →
2. Boxing Game (Melee + Stats + Behavior)
Game Specifications
- Perspective: Third-person side-angled camera (ring-circling)
- Rules: 3-round match. 3 minutes each. Decided by HP or Down count
- Controls: Jab / Straight / Hook / Uppercut, Guard, Backstep, Weave
- AI: Behavior Tree — jab-focused → big swings when there’s an opening, also guards and evades
- Win/Loss: KO when HP reaches 0, TKO after 3 knockdowns, decision on time-up
Modules Used
| Module | Purpose |
|---|---|
| Core (Characters / Cameras / Visual Scripting / Variables) | Basic operations |
| Melee | Punches / Guard / Combos / Damage / Reaction |
| Stats | HP, Stamina, Damage Formula, Down Count |
| Behavior | Enemy AI (Behavior Tree) |
| Cameras | Ring camera based on Lock On |
Initial Project Setup
- Install Game Creator 2 + Melee + Stats + Behavior
Game Creator > Install...to import theBrawltemplate from Melee Examples- Place ring GameObject (ropes, posts, floor on a Plane)
- Generate Player and Enemy using
Player/Characterrespectively - Adopt Lock On Shot: Anchor = Player, Look Target = Enemy
Stats Design
Attributes:
| Attribute | Max | Description |
|---|---|---|
hp | max_hp | Health |
stamina | max_stamina | Consumed by punches / evasion |
Stats:
| Stat | Base | Description |
|---|---|---|
max_hp | 100 | HP cap |
max_stamina | 100 | Stamina cap |
attack | 10 | Attack power |
defense | 5 | Defense power |
down_count | 0 | Knockdown count |
Class: Include all the above Stats and Attributes in Boxer, and assign to both Player and Enemy via Traits components.
Damage Formula
max[ 1, source.stat[attack] * source.var[current_power] - target.stat[defense] ]
current_power is a Local Variable set per Skill (Jab 0.5, Hook 1.0, Uppercut 1.5, etc.).
Melee Asset Configuration
Weapon (bare fists): ID fists, Shield Boxing Guard, Hit Reaction HitFlinch, On Equip attaches fist Collider props to both hands via Attach Prop, Combos BoxerCombo
Shield (guard): Angle 160°, Parry Time 0.18s, Defense 50, Recovery 2/sec, Cooldown 1.5s, State Layer 7
Skill Assets:
| Skill | Power | Poise Armor | Poise Damage | Description |
|---|---|---|---|---|
Jab_L | 1 | 1 | 1 | Left jab — fastest speed, lowest power |
Jab_R | 1 | 1 | 1 | Right straight |
Hook_L | 2 | 2 | 2 | Left hook — Motion Warp lightly snaps to enemy |
Hook_R | 2 | 2 | 2 | Right hook |
Uppercut | 3 | 3 | 3 | Uppercut — knockdown trigger element |
BodyBlow | 1 | 1 | 2 | Body blow — strong at breaking through guard |
Dodge_Back | - | - | - | Dash back (stamina cost) |
Weave_L/R | - | - | - | Left/right weave (invincible during parry window) |
Each Skill’s Sequencer: Anticipation 0.1–0.25s, Strike 0.05–0.1s (Striker as fist Sphere, Predictions=3), Recovery 0.3–0.6s. Animation Cancel Track allows canceling the latter half of Recovery with Weave/Dodge.
Skill’s On Hit (Self = attacker, Target = hit target): Change Attribute (target.hp, -Formula) + Change Attribute (self.stamina, -2)
Knockdowns are realized through Reactions. Set Knockdown Reaction’s Min Power to 3, which auto-triggers when a Power 3 Skill (Uppercut) connects. On the Reaction’s On Enter, execute Change Stat (target.down_count, +1).
Combo (BoxerCombo):
Root
├── Tap A → Jab_L
│ └── Tap B → Jab_R (one-two)
│ └── Tap A → Hook_L (one-two-hook)
├── Tap B → Jab_R
│ └── Tap A → Hook_L
├── Tap C (Charge) → Uppercut (triggers after 0.4s charge)
└── Tap D → BodyBlow (Anytime)
Input Buffer is 0.4s (Set Buffer Window).
Reactions:
HitFlinch: Small flinch (Min Power 0)HitStagger: Min Power 2, knockback + counter triggerKnockdown: Min Power 3, fall-to-floor animation. On Enter executesSet Stat (down_count, +1)Parried: Stagger after parry. Set longer counter-acceptance window
Input Mapping
On Input Button(Left Click)→Input Execute(A)On Input Button(Right Click)→Input Execute(B)On Input Button(Shift Hold)+ Release →Input Charge(C)/Input Execute(C)On Input Button(Space)→Input Execute(D)(body blow)On Input Button(Q)→Start Blocking/ Release →Stop BlockingOn Input Flick(Move Left/Right)→Play Melee Skill(Weave_L/R)(only while Blocking)
Camera Settings
- Lock On Shot: Anchor Player, Look Target Enemy, Distance 3.0m, Offset (0, 1.6, 0)
- Shake effect: Add
Shake Camera Burst(Magnitude 0.3, Duration 0.2) to On Hit for heavy attacks - Cut-in:
Change To Shotto a dedicated Camera Shot before Uppercut,Revert to Previous Shotafter
Enemy AI (Behavior Tree)
Set up Processor and Graph EnemyBoxerBT.asset on the Enemy:
Entry
└── Selector
├── Sequence [Threat: Player Attacking & Stamina > 20]
│ ├── Check Condition: In Attack Phase (target=Player, Phases=Anticipation/Strike)
│ ├── Selector (60% Block / 40% Weave)
│ │ ├── Task: Start Blocking
│ │ └── Task: Play Melee Skill(Weave_L or R)
├── Sequence [Counter: Player Recovery]
│ ├── Check Condition: In Attack Phase(target=Player, Phases=Recovery)
│ ├── Task: Input Charge(C); Wait 0.5s; Input Execute(C) (Uppercut)
├── Sequence [Pressure: HP > 30%]
│ ├── Move To Player (Stop Distance=1.4)
│ ├── Input Execute(A); Input Execute(B); (one-two)
├── Sequence [Defensive: HP <= 30%]
│ ├── Move To BackCorner
│ ├── Start Blocking
Blackboard: target (Game Object) = Player, aggression (Number) = 0–1 (decreases as HP drops)
Stats UI
- Add
Attribute UI(hp, stamina) for both Player and Enemy to the HUD — two each - Transition ON (Stall 0.3s, Transition 0.6s) for a “delayed decreasing bar” effect
- Down Count UI uses
Stat UIto displaydown_count; match ends at 3
Match Flow (Visual Scripting)
| Variable | Type | Purpose |
|---|---|---|
round | Number | Current round |
round_time | Number | Remaining seconds |
is_ko | Boolean | KO determination |
match_result | String | player_win / enemy_win / draw |
- Round Timer: On the Match Controller’s
On Start, setround = 1,round_time = 180. OnOn Interval(1.0s),round_time -= 1 - When
round_time <= 0→ round ends:round++, recover Stamina, ifround <= 3start next round, otherwise go to decision - KO Determination: On
On Stat Change(down_count), ifdown_count >= 3thenis_ko = true. Same forOn Attribute Change(hp)when hp <= 0 - Decision Win: Compare remaining HP and total damage dealt (Stat
damage_dealt) to determinematch_result
Game Start to End Flow
- In
Titlescene, press “Start Match” button →Transition to Scene(Ring) - Ring scene’s
On Startplays gong SE → Match Controller begins operation - During round: Player vs. Enemy battle
- KO / Decision → Camera focuses on winner → Result UI displayed
- Button press returns to
Title
SE / BGM
- Play Ambient: crowd cheers
- Play Music: match BGM (during rounds only)
- Set Use Sound, Hit Sound, Block Sound, and Parry Sound appropriately on Skills
- Use
Play UI Soundfor gong SE at round start/end
Recommended Implementation Order
- Place floor, ring, Player, Enemy; verify with Lock On Camera
- Stats (Attribute / Class) and Traits
- Melee Weapon, Shield, one Skill (Jab_L) — verify hit & damage operation
- Reaction (HitFlinch) → verify hit animation
- Add Combos (Jab_L → Jab_R → Hook_L)
- Complete Input mapping
- Enemy Behavior Tree (start simple: just approach and jab)
- HUD (Attribute UI) and Shake
- Round timer, KO / decision, scene transitions
- Cut-in and audio finishing touches
Tips and Pitfalls
- State Layer collision: Always respect the Layer reservations — Weapon = 5, Charged Skill = 6, Shield = 7
- Motion Warp distance: Set Hook types to
Self Close = 1.0mfor natural feel. Too far and it looks like sliding - Parry Time feels best when short. Adjust between 0.15–0.20s
- Stamina consumption: Without cost on every attack and evasion, gameplay becomes monotonous. Use Conditions to block Skill execution when near 0
- Start Behavior Trees minimal: Building full AI from scratch will break down. Start with “just jabs” → approach → guard, adding layers gradually
- Reaction Cancel Time: Prevents stun-lock. Set 0.2–0.3s on Reactions with Min Power 1–2
- Down Count reset: Decide early whether it resets between rounds or carries through the entire match
- Lock On Camera angle tuning prevents motion sickness: Offset.Y 1.6–1.8, Smooth Time 0.2–0.4
Extension Ideas
- Perception for visual audience gaze effects
- Quests for challenges like “land 10 straights” or “parry 5 times”
- Inventory for equipment items like protein drinks and gloves → Stat Modifier
- Dialogue for pre/post-match interviews and commentary text
- Multi-platform: Unify inputs to abstract keys A–H for simultaneous keyboard / gamepad / mobile touch support
3. Dragon Quest-style RPG (Stats + Inventory + Dialogue + Quests + Melee + Behavior)
Game Specifications
- Perspective: Third-person orbit camera
- Flow: Field exploration → gather info and shop in town → enter dungeon → defeat boss → clear
- Combat: Symbol encounters (contact with enemy transitions to battle scene) + real-time combat (Melee)
- Growth: Experience → Level → Stats increase
- Elements: Equipment, items, potions, quests, dialogue, save/load
Modules Used
| Module | Purpose |
|---|---|
| Core | Basic operations, Variables, Save & Load |
| Stats | HP / MP / STR / DEF / LV / EXP, Class |
| Inventory | Weapons / armor / potions, Currency (Gold), Merchant |
| Dialogue | NPC conversations, Choice-based quest acceptance/reporting |
| Quests | Main quests, side quests, Journal |
| Melee | Combat (sword / staff) |
| Behavior | Enemy AI |
| Cameras | Third Person / Cutscene |
| Extensions: Transitions | Battle entry / scene transitions |
Initial Project Setup
- Install all required modules from Package Manager
Game Creator > Install...to import samples: Stats (Classes, UI), Inventory (Items, UI), Dialogue (any skin), Quests (UI), Melee (Sword)- Scene structure:
Title,WorldMap,Town_01,Dungeon_01_Floor1,Dungeon_01_Boss
Stats Design
Attributes:
| Attribute | Max Reference Stat | Initial % |
|---|---|---|
hp | max_hp | 1.0 |
mp | max_mp | 1.0 |
Stats:
| Stat | Base | Formula | Description |
|---|---|---|---|
level | 1 | table.level[source.stat[exp]] | Calculated from cumulative EXP |
exp | 0 | - | Cumulative experience |
max_hp | 20 | 20 + 10 * source.stat[level] | Scales with level |
max_mp | 10 | 10 + 4 * source.stat[level] | |
str | 5 | source.base[this] + source.stat[level] | |
def | 3 | source.base[this] + ceil[source.stat[level] / 2] | |
agi | 5 | - | Used for evasion checks |
Class: Use Hero (warrior) and Mage with different Base values.
Damage Formula:
max[ 1, source.stat[str] * source.var[skill_power] - target.stat[def] + random[-2, 2] ]
Table (EXP Table): Create > Game Creator > Stats > Table, Type Linear, Coefficient 20 → LV2 at 20 EXP, LV3 at 40 EXP…
Inventory (Items, Currency, Shops)
Currency: Gold (single Coin, Value 1)
Item Examples:
| Item | Category | Purpose |
|---|---|---|
| Copper Sword | Weapon (Equipment) | On equip: Add Stat Modifier(str, +3) |
| Iron Sword | Weapon | attack +8 |
| Leather Armor | Armor | On equip: Add Stat Modifier(def, +2) |
| Herb | Consumable | On Use: Change Attribute(hp, +20) |
Equipment: Set corresponding Bones for Slots (RightHand, Body, Accessory).
Merchant: Add Bag + Merchant to the tool shop NPC in Town. Stock, Buy Rate 1.0, Sell Rate 0.5. Execute Open Merchant UI on the NPC’s Trigger On Interact.
Dialogue (Conversations)
Villager NPC: Use Random nodes for different greetings each time. Branch using Tag Visited for “first time speaking / subsequent visits.”
Quest NPC (Village Chief):
- Text: “Our village is under attack by monsters… Hero, please defeat the boss in the cave”
- Choice: “Accept / Decline”
- Accept → Instruction:
Quest Activate(MainQuest_01) - Reporting Text node (Condition:
Is Quest Completed == true) for victory dialogue andChange Currency(+500)
Information NPC: Switch displayed dialogue based on specific flags (Global Name Variables). Dynamic values can also insert {player-name}.
Quests
MainQuest_01 “Ancient Cave” Tasks:
- Talk to the Village Chief (already completed)
- Head to the Ancient Cave (POI: cave entrance)
- Defeat the boss (
On Dietriggers Task Complete) - Return to the village and report to the Village Chief
Journal: Add a Journal component to the Player, Tracking Mode = Multiple, add Journal memory to Remember.
UI: Display Quest List UI and Indicator UI for “next destination” icons.
Field and Enemies
Symbol Encounters: Place enemy Prefabs on the field. When Trigger’s Event On Trigger Enter Tag (Tag = Player) fires, execute Transition to Scene(Battle_01).
Battle Scene: Player (Hero) and Enemy (dynamically Spawned) face off. Equip Melee Sword Weapon and attack with player control; Enemy chases and attacks via Behavior Tree.
Battle Results: On Enemy’s On Die, add EXP, add Currency, drop Herbs via Loot Table. On Level Up, fully recover hp/mp. Victory Dialogue → Transition back to the previous field.
Player Death: When hp = 0, catch it with On Attribute Change(hp) and transition to title or church respawn (with gold halved).
Behavior (Enemy AI)
Regular Enemy — Slime:
Entry
└── Selector
├── Sequence (HP < 20%)
│ └── Task: Flee (Move To AwayFromPlayer)
├── Sequence (Player in range < 2m)
│ └── Task: Play Melee Skill(BiteAttack)
└── Task: Move To Player
Boss — Cave Lord:
Entry
└── Selector
├── Sequence (HP < 30%, Enraged not yet)
│ ├── Task: Play Gesture(RoarAnim)
│ └── Task: Add Status Effect(Enraged)
├── Sequence (Player in Range)
│ └── Selector
│ ├── Task: Combo Attack 1-2-Uppercut (70%)
│ ├── Task: AOE Skill "Shockwave" (30%)
└── Task: Move To Player
Enraged is a Status Effect that increases Str by +10, boosts speed, and strengthens all attack Hit Reactions.
Level Up Effects
Place a Trigger (Event = On Stat Change, Stat = level) on the Player. When exp is added, level is recalculated via Formula, and the Trigger fires when the value changes.
On fire: Play UI Sound(LevelUp) → Dialogue popup “Level Up!” → Fully recover hp/mp
Save & Load
- Add
Save Game(slot=1)button to title / church / inn menus - Register Transform, Bag, Journal, and Stats in the Player’s Remember
- Turn ON Save for all Global Name Variables
UI Configuration
- HUD: Attribute UI (hp / mp), Stat UI (level / gold)
- Pause Menu: Tab switching (Status / Inventory / Quests / Options)
- Dialogue: Dialogue Skin
- Battle Results: EXP / Gold acquisition window
Camera Direction
- Field: Third Person Shot (Orbit, targeting Player)
- During conversation: Switch to fixed-position Shot framing Actor and Player
- Boss battle entry: Play cut-in Animation Shot aimed at boss → return
Scene Structure and Flow
Title
├─ "New Game" → Transition to WorldMap
├─ "Continue" → Load Game(slot=1)
└─ "Settings" → Options
WorldMap
├─ Town_01 (many NPCs, Merchant, full recovery at inn)
├─ Dungeon_01_Floor1 (regular enemies, treasure chests)
└─ Dungeon_01_Boss (boss battle BT activates)
Battle_01 (shared battle scene for symbol encounters)
└─ Battle ends → return to previous scene
Recommended Implementation Order
- Stats: Hero Class, hp/mp/level/exp, Formula, Table, UI
- Player movement, Third Person Camera, field exploration
- Inventory: Item / Bag / Wealth UI
- One NPC with Dialogue, verify Quest Activate from conversation
- Quests: MainQuest_01 task hierarchy and UI
- Melee: Sword Weapon, basic Skill, verify damage calculation
- Behavior: Slime BT, Boss BT
- Symbol encounter → Battle scene transition
- Win/loss processing, EXP / Gold / Level Up
- Merchant / inn / church (respawn)
- Save & Load, Title / Options
- Effects (Transitions, cameras, SE / BGM), finishing touches
Tips and Pitfalls
- Establish Stat reference ID naming conventions early. Typos cause Formulas to evaluate as 0, making bugs hard to find
- Formula circular dependencies: Stats won’t warn you, so never create loops like putting
hpin themax_hpFormula - Level Up detection: Since
levelis calculated via Formula, it can be caught with On Stat Change. It’s safer not to useChange Statmanually - Forgetting to add Journal to Remember will cause quest progress to be lost
- Preserving hp/mp across Battle scene transitions: Either hold them as Globals, or insert Local → Global copies during Transition
- Behavior Graphs cannot be swapped at runtime: Create separate Graphs for each enemy type
- Status Effect Max Stack 1: Prevents double-application of effects like the boss’s Enraged
- Quest Property Counter: “Collect 5 potions” can auto-link with Inventory
- Dialogue Global Dynamic Value can inject the player’s name into all conversations
Extension Ideas
- Add stealth elements with Perception — “enemies spot the player and chase them”
- Multi-language support with Localization
- Partially introduce Shooter to add an archer character
- Companion: Set a second Character as NPC mode with Follow, auto-executing via Behavior Tree during combat
4. Survival Craft (Inventory + Stats + Perception + Behavior + Melee)
Game Specifications
- Perspective: Third-person (F key toggles to first-person)
- Core Loop:
- Day: Harvest wood, stone, and food
- Night: Enemies (zombies, etc.) attack. Defend the base
- Craft: Combine materials into tools, weapons, and building parts
- Build: Freely placeable walls, doors, beds
- Survival stats: Manage HP / Hunger / Thirst / Stamina
Modules Used
| Module | Purpose |
|---|---|
| Core | Basic, Variables, Save & Load |
| Inventory | Resources, tools, building parts, crafting (Tinker) |
| Stats | Survival stats, Status Effects |
| Melee | Melee weapons like axes, stone picks, clubs |
| Shooter (optional) | Bows and slings |
| Perception | Enemy visual / audio detection |
| Behavior | Zombie AI |
| Cameras | Third Person, first-person toggle |
Initial Project Setup
- Install the above modules from Package Manager
Game Creator > Install...: Inventory (Items, UI, Examples), Stats (Classes, UI), Perception (UI, Examples), Behavior (Examples)- Scene
World_01: Place procedural-style terrain, trees, rocks, and water on a large Plane - Create Player, Third Person Camera, Locomotion Speed 4, Sprint State 6
Stats (Survival Stats)
Attributes:
| Attribute | Max | Description |
|---|---|---|
hp | max_hp | Health |
stamina | max_stamina | Consumed by running / harvesting |
hunger | max_hunger | Hunger gauge. HP decreases at 0 |
thirst | max_thirst | Thirst. Stamina recovery stops at 0 |
temp | max_temp | Body temperature. Drops at night, recovers near campfire |
Stats: max_hp, max_stamina (fixed at 100), max_hunger, max_thirst (100), max_temp (100, default 50), harvest_power (harvesting efficiency), craft_speed (crafting speed)
Time-based decrease (Master Trigger On Interval(10s)): hunger -1, thirst -1.5, at night (time_of_day > 0.8) temp -2
Status Effects:
Bleeding: Duration 30s, While Active hp -1/sPoisoned: Duration 60s, While Active hp -0.5/s, Save ONOvereaten: Duration 20s, Stat Modifier reduces stamina recovery by 50%Warm: Applied near campfire, Duration 10s, re-applied On End (while nearby)
Low stat effects: When hunger <= 0, permanently apply Status Effect Starving (hp -1/s). When thirst <= 0, stamina recovery stops.
Inventory (Resources / Tools / Building Parts)
Category Items (parent types): Resource, Tool (Is Equipable), BuildingPart, Food (Is Usable), Ammo_Arrow
Specific Item Examples:
| Item | Parent | Effect |
|---|---|---|
| Wood | Resource | Building material / craft ingredient |
| Stone | Resource | Stone tool material |
| Fiber | Resource | Rope / string |
| Berry | Food | On Use: hunger +15 |
| WaterBottle | Food | On Use: thirst +30 |
| StoneAxe | Tool | On equip: harvest_power +5 |
| WoodenBow | Tool (Shooter) | Bow |
| Arrow | Ammo | Bow ammunition |
| Wall | BuildingPart | For building placement |
Bag: Add a Bag (List, Max Weight 50kg) to the Player. Set up “Main Hand,” “Off Hand,” “Head / Body / Feet” slots in the Equipment asset.
Harvesting System
Set up Trigger (On Interact) + Hotspot + Stats (durability) on resource objects (trees, rocks, berry bushes, water sources):
Branch 1 (Condition: Player has StoneAxe equipped AND Self.hp > 0):
Play Gesture(ChopAnim)
Wait Seconds(0.5)
Change Attribute(Self.hp, -10)
Play Sound Effect(ChopSE)
Change Attribute(Player.stamina, -2)
Branch 2 (Condition: Self.hp <= 0):
Set Active(Self, false)
Add Item(Wood, 3) to Player.Bag
Emit Signal("tree_chopped")
Harvesting action cancellation: Use the Player’s Busy system (mark Arm Right as Busy) to prevent conflicts with other actions.
Crafting (Tinker)
Define recipes in each finished Item’s Crafting section:
Wooden Bow: Wood ×3, Fiber ×2Stone Axe: Wood ×2, Stone ×3, Fiber ×1Wall: Wood ×4
Tinker UI: On Interact with the Workbench → Open Tinker UI. Use Filter Item to separate Tool parent type (Tool-only workshop) and BuildingPart (building table).
Crafting success: On On Craft event, play crafting SE, slight Stamina decrease, add experience. The craft_speed Stat shortens crafting time.
Building System
- Generate a “hologram Prefab” in the Player’s hands and manipulate position / rotation
- Mouse wheel to rotate (
Change Rotation) - Click to confirm → Destroy hologram, Instantiate the real object
- Consume materials with
Remove Item(Wall x4)
Valid/Invalid placement: Use Physics-based Conditions (Raycast 3D, etc.) to check for overlap with other objects and ground contact.
Building durability and save: Each building Prefab has Stats (hp) attached, and a Remember component saves position, rotation, and durability.
Day/Night Cycle and Enemy Spawning
- Global Name Variables:
time_of_day(0–1),day_count - Master Trigger
On Interval(1s):time_of_day += 1/1200(= 20 minutes per day) - When exceeding 1.0:
day_count += 1,time_of_day = 0 - Fade environmental light brightness (Change Global Luminance) and skybox Material
- When
time_of_day > 0.8 && time_of_day < 1.0, executeSpawn Zombievia On Interval(15s). Spawn positions are 30–50m away from the Player
Enemy AI (Behavior Tree)
Basic Zombie: Character + Perception (Sight + Hearing) + Traits + Processor
Entry
└── Selector
├── Sequence (Awareness >= Aware)
│ ├── Move To Player
│ └── Play Melee Skill(BiteAttack, if range < 1.5)
├── Sequence (Awareness >= Suspicious)
│ └── Move To LastKnownPosition
└── Task: Wander
Multi-zombie coordination: Relay Awareness Knowledge lets the group share Player detection. On Die of a reached Zombie triggers EXP addition via a separate Trigger.
Dog (player pet): Friendly Character. Follows Player. Detects enemies via Perception and uses Add Target Candidate to add them to the Player’s candidate list.
Combat
Melee: StoneAxe / Wooden Club Weapon assets. Skills: light attack (Swing) / heavy attack (Chop). Striker is a Capsule Striker on the axe head. Reactions: Hit (small) / Stagger (large) / Knockdown.
Shooter (bow): Wooden Bow Weapon, Fire Mode = Charge (Min 0.3s, Max 1.5s). Projectile = Kinematic, Wind Influence 0.5. Ammo = Arrow (linked to Inventory Item).
UI
- HUD with Attribute UI: hp / stamina / hunger / thirst / temp
- When
hunger < 20, show “Hungry” icon in Status Effect List UI - Attribute UI Stall Transition for decay bar effects
Save & Load
- Bed (Bed Prefab) Trigger On Interact: During day, “Sleep until night?” → selection sets
time_of_day = 0.85. At night, skip to next morning. Auto-execute Save Game - Player Remember: Add Bag / Traits / Transform / Status Effects to Memory
- Save Global Variables (time_of_day / day_count) as well
Scene Structure
Title: New Game / ContinueWorld_01: Main content (terrain, NPC base, resources, enemy spawners)- On death: Transition to
Respawnscene → reload World_01 (bed position)
Tutorial via Quests (Optional)
Quest Survival Basics Tasks: Chop 5 trees → Craft a Stone Axe → Build a Shelter → Survive 1 night. Link to Bag quantities / building count via Property Counter.
Recommended Implementation Order
- Player, Third Person Camera, basic movement
- Stats (hp / stamina / hunger / thirst) and HUD UI
- Interval-based Hunger / Thirst decrease, threshold Status Effects
- Inventory: Bag / Wood / Stone harvesting (resource destruction via Trigger + Add Item)
- Crafting: Wall / Stone Axe recipes and Tinker UI
- Building system (hologram + confirm / material consumption)
- Day/night cycle (Change Global Luminance) and night detection
- Zombie Spawn, minimal Behavior Tree, Melee combat
- Food Items (eat Berry, drink WaterBottle)
- Bed save & time skip
- Perception, enemy coordination, dog companion
- Bow (Shooter) and crafting recipes
- Quest tutorial
- Effects, SE, BGM, finishing touches
Tips and Pitfalls
- Weight limit UX: Without real-time weight display in the HUD via Overloaded Trigger
On Add, players get confused - Resource regeneration: If you want trees to respawn, use
On Interval(300s)withSet Active(true)to revive them - Building collision detection: Use Overlap 3D to exclude placement over other buildings, Player, and enemies
- Mass zombie spawning: For frame rate, set Perception Update to Interval
- Stat Modifier order: Modifiers apply % → flat value. Keep this in mind when stacking attack +20% and +5 from equipment
- Status Effect Save: Turn Save ON to preserve remaining duration; turn it OFF to reset on load
- Temperature: Detect campfire proximity with Hotspot Radius, applying Warm only while inside. Remove via Forget Delay when moving away
- Canceling during crafting: Force-close Tinker UI when attacked while it’s open
- Night spawn range: Verify ground detection and that spawns occur outside the player’s view
Extension Ideas
- Multi-language UI and item names with Localization
- Expand Quests: Add biome-specific bosses as main quests
- Add “frostbite lowers def” to Stats Formula using temperature
- Perception Evidence: Zombies recognize that a door the player barricaded has been destroyed and take alternate routes
Level Up! The Guide to Great Video Game DesignView on Amazon →
Introduction to Game Design, Prototyping, and DevelopmentView on Amazon →
5. Apex-style FPS (Shooter + Stats + Inventory + Perception + Behavior)
Game Specifications
- Perspective: First-person (First Person Shot, IK for iron sight precision)
- Controls: WASD movement / Sprint / Sliding / Jump / Lean / Reload / Quick Reload
- HP Structure: Shield (100, no regeneration, recovered with batteries) + HP (100, recovered with meds)
- Weapons: 2 weapons equipped simultaneously (Primary / Secondary), switch toggle
- Abilities: Tactical (cooldown-based), Ultimate (gauge-based)
- AI Enemies: Behavior Tree for cover movement + shooting
Modules Used
| Module | Purpose |
|---|---|
| Core | Basic, Variables, Save & Load (settings only) |
| Shooter | Weapons, ammo, reload, sights, recoil |
| Stats | HP / Shield / Ammo Pool / ability cooldowns |
| Inventory | Equipment slots, ammo, healing items |
| Cameras | First Person Shot |
| Perception | Enemy visual / audio (footsteps, gunshots) |
| Behavior | Enemy AI (Behavior Tree) |
Initial Project Setup
- Install all target modules from Package Manager
Game Creator > Install...: Shooter (Examples, Weapons), Stats (Classes, UI), Inventory (Items, UI), Perception (UI, Examples)- Scene
Arena_01: Compact indoor/outdoor hybrid map with complete colliders - Create Player → Driver = Character Controller, Speed 6, Sprint State 9
- Camera Shot = First Person, Optics = Head Bone, Head Bobbing / Leaning ON
Stats (HP / Shield / Abilities)
Attributes:
| Attribute | Max | Description |
|---|---|---|
hp | max_hp (100) | Base HP |
shield | max_shield (100) | Rechargeable shield |
ult_charge | max_ult (100) | Ultimate gauge |
Stats: max_hp, max_shield, max_ult, tactical_cd (remaining seconds), move_speed_mod
Damage Processing Formula:
max[ 1, source.var[weapon_damage] - target.stat[def] ]
When hit, the design is to drain Shield first, then HP. In the hit Trigger (On Shoot Hit), if shield > 0, subtract from shield, and overflow flows to hp.
Recovery:
Shield Battery: On Use → enter Busy state + Play Gesture + shield +50 after 3sSyringe: hp +25 after 5sPhoenix Kit: Recovers both to 100 (long cast time)
Status Effect: Knockdown (triggers when HP reaches 0; Move Speed 1, shooting disabled. Death when final_hp reaches 0)
Inventory Configuration
Equipment Slots: Primary, Secondary, Helmet (Shield Modifier +20), BodyArmor (+40/+60/+80), Consumable_1/2/3 (hotbar)
Ammo Items: LightAmmo, HeavyAmmo, ShotgunShell, SniperAmmo (stackable, with weight)
Weapon Items: Register as Inventory Items (with Prefabs). On Equip Instructions call Equip Shooter Weapon to equip on the Shooter side.
Shooter: Weapon Setup
Common configuration: Unique ID, Fire Animation uses Human IK + procedural Recoil, Sight = Camera Center with Raycast, Biomechanics = Human IK (Scope Through ON)
Weapon Examples:
| Weapon | ID | Fire Mode | Projectile | Ammo | Magazine | Spread |
|---|---|---|---|---|---|---|
| R-301 | assault_rifle | Full Auto | Raycast | LightAmmo | 30 | Medium |
| Volt | smg_volt | Full Auto | Raycast | LightAmmo | 24 | High |
| EVA-8 | shotgun_eva8 | Single (Pellets=8) | Raycast | ShotgunShell | 6 | High |
| Longbow | sniper_longbow | Single | Raycast | SniperAmmo | 6 | 0 |
| Wingman | pistol_wingman | Single | Raycast | HeavyAmmo | 6 | Medium |
Recoil: R-301 is X=0.2° / Y=1.2°, Recover 2/s. Longbow is X=0.1° / Y=2.5°, Recover 1/s
Sights: IronSight (default), HoloSight, 1xScope–4xScope. Switch with Scroll Wheel via Set Sight ID. FOV changes from 90→60 during ADS
Ammo Pool: Ammo asset Value = Inventory Item possession count. Reloading transfers to the magazine while deducting from possession count.
Reload Asset: Reload_AR (animation 2s, Magazine Track, Quick-Reload Track 0.5s window)
Input Mapping
| Key | Action |
|---|---|
| WASD | Movement |
| Shift | Sprint |
| Space | Jump |
| Ctrl | Sliding / Crouch |
| Q | Tactical ability |
| Z | Ultimate ability |
| E | Interact |
| R | Reload Weapon |
| Left Click | Pull Fire Trigger / Release Fire Trigger |
| Right Click | Set Sight ID (ADS) |
| 1 / 2 | Primary / Secondary switch |
| 3/4/5 | Consumable use |
| V | Weapon swap |
| Tab | Inventory |
Ability Implementation
Tactical: Smoke
- On use: Instantiate Smoke Prefab in front, Emit Noise, Destroy after several seconds
- Cooldown:
tactical_cd = 20, decrement via Interval
Ultimate: AoE Attack
- Can only be activated when
ult_charge >= max_ult - Consume charge → Play Gesture → Overlap Sphere at impact point → hp -50 to hit Characters → Shake Camera Burst
How ult_charge accumulates: Kill (On Die) +20, Hit (On Hit) +1, Time (On Interval(10s)) +2
Camera
- FPS Shot: First Person Shot, Target = Player, Bone = Head, Head Bobbing (small for walking, large for sprinting)
- Hit Marker: Flash a UI icon at screen center for 0.2s on hit via On Hit
- Damage direction indicator: Show a red arc from the attacker’s direction on Player’s On Shoot Hit
- During Knockdown: Switch Camera Shot (downward angle, minimal Shake)
Enemy AI (Behavior Tree)
Enemy Character: Traits (Class: Soldier) + Perception (Sight + Hearing) + Processor
Entry
└── Selector
├── Sequence (HP < 30%)
│ ├── Move To NearestCover
│ └── Task: Use Heal Item
├── Sequence (Can See Player)
│ ├── Task: Face Player
│ ├── Task: Pull Fire Trigger (Interval 0.2s) until magazine empty
│ └── Task: Reload Weapon
├── Sequence (Heard Noise)
│ └── Move To LastKnownPosition
└── Task: Patrol Waypoints
Perception Settings: Sight Primary cone 60°/25m, Peripheral +30°/+5m, Use Luminance ON. Hearing Min 0.1 / Max 1.0, Decay 2s. Player’s shooting uses Emit Noise(Intensity 0.9, Radius 40, Tag "gunshot") On Shoot
Team coordination: When one becomes Aware, Relay Awareness Knowledge propagates to nearby enemies
UI Configuration
- HUD: HP and Shield bars (Attribute UI), weapon icon + ammo (Ammo UI), Tactical and Ultimate icons with cooldown, Crosshair UI, Mini-Map
- Inventory: Bag UI, Equipment UI, Wealth UI
- Damage display: Instantiate floating numbers on hit (Floating Text)
- Kill Feed: Updates upon receiving Signal
kill_event
Match Progression
| Variable | Type | Purpose |
|---|---|---|
kills | Number | Kill count |
deaths | Number | Death count |
match_time | Number | Remaining seconds |
match_state | String | warmup / active / end |
Flow:
- Warmup: Camera pans over the map with an Animation Shot, 5s countdown
- Active: Player control begins,
On Interval(1s)decrementsmatch_time -= 1 - When
match_time == 0: End.Transition to Scene(Result)for the summary screen
Save (Settings Only)
- Match progression is session-only (no slots needed)
- Sensitivity / key bindings / FOV etc. are saved to slot 0 (shared settings)
- Create Global Variables with
IsShared = true, andSave Game(0)on the Options UI Apply button
Scene Structure
Title
├── Play → Transition to Arena_01
├── Training → Range scene (targets + Merchant)
├── Options → Edit settings → Save(slot=0)
└── Quit
Arena_01
├── Warmup → Active → End
└── End → Result → Return to Title
Range
└── Practice, Merchant, infinite ammo option
Recommended Implementation Order
- Player (First Person Camera), movement, Sprint, Jump, Lean
- Shooter: 1 weapon (R-301) — equip, shoot, reload, Recoil
- Stats (HP / Shield) and hit processing (Shield → HP)
- Ammo Pool Inventory integration
- Sight switching (IronSight / 2xScope)
- Second weapon (Wingman) and Swap
- Healing items (Shield Battery / Syringe)
- Tactical / Ultimate (cooldown + gauge)
- Enemy Character + Perception + Behavior Tree (minimal)
- Hit Marker / damage direction / damage numbers
- Match timer, win/loss tally, Transition
- Options / settings save, key remapping
- Sound, Muzzle Flash, shell ejection, Kill Feed
- Final balance tuning, performance optimization
Tips and Pitfalls
- Sight’s Human IK is essential for FPS. Switch Sight when mixing with third-person view
- Fire Rate and Fire Audio loop handling: Full Auto uses Load Loop — ensure loop stoppage is thorough
- Recoil patterns: Weapon Recoil X/Y values are fixed. Randomness is expressed through Accuracy Kick and Spread Bias
- Projectile = Raycast: Best performance, but use a Line Renderer for a pseudo bullet-trail if you want to show bullet speed
- Separating Shield and HP: The key is to not use the same Attribute. Display them as separate bars in the UI as well
- Knockdown: Rather than instant death at hp <= 0, transitioning to a Knockdown Status Effect makes it easier to add team-play elements
- Ammo Pool synchronization: Verify that Magazine Size and Ammo Item possession count don’t contradict each other
- Enemy Perception Luminance: For harder detection in dark areas, set Use Luminance ON with Dim Threshold 0.2
- Enemy Relay: If coordination is too fast, it feels unfair. Add a 0.5s delay for naturalness
- Camera sickness: Watch out for excessive Head Bobbing. Keep Intensity small and turn it OFF during ADS
- Maintaining 60 FPS: Set enemy Perception Update to Interval and use Spatial Hash to reduce physics load
- Quick Reload: Set the green window to 0.3–0.4s and make the success SE distinct
Extension Ideas
- Multi-language UI and weapon names with Localization
- Inventory Sockets for an attachment system (scope / barrel / stock) that plugs into weapons
- Behavior: GOAP for smarter AI (auto-planning Reload → Heal → Flank)
- Dialogue to add a campaign mode (mission-based)
- Quests for daily missions like “get 10 kills” or “5 headshots”
- Melee integration: Add a melee weapon (hammer) using the Melee module
Official Links
- Game Creator 2 Official Documentation
- Game Creator 2 — Unity Asset Store
- Inventory 2 | Game Creator 2 — Unity Asset Store
- Dialogue 2 | Game Creator 2 — Unity Asset Store
- Stats 2 | Game Creator 2 — Unity Asset Store
- Quests 2 | Game Creator 2 — Unity Asset Store
- Behavior 2 | Game Creator 2 — Unity Asset Store
- Perception 2 | Game Creator 2 — Unity Asset Store
- Shooter 2 | Game Creator 2 — Unity Asset Store
- Melee 2 | Game Creator 2 — Unity Asset Store
Summary
In this article, we covered how to implement “five genre games” using Game Creator 2.
With just Core + Inventory + Dialogue (3 modules) you can build an escape game. Add Melee + Stats + Behavior for a fighting game. Layer on Quests, Perception, and Shooter to achieve RPG, survival, and FPS — all within the same framework.
Because Game Creator 2 uses an asset-based design, you can incrementally add modules to build completely different game genres on the same framework — this is its greatest strength. We recommend following the implementation order in each section, starting from a minimal configuration and gradually adding layers.
We hope you’ll check out our other articles as well.
📚 Series: Game Creator 2 Complete Guide (16/16)