Infinity PBR by Magic Pig Games
  • Infinity PBR Documentation
  • Game Modules 4
    • ➡️Quick Start
    • 📽️Video Tutorials
      • Quick Start: Creating Game Module Objects
      • Automating Start Actions on GameModulesActor
      • Inflicting Damage with Conditions
      • Updating UI (and more) with Blackboard Notes
      • Dynamic Menus with Item Objects and Dictionaries
      • Create Custom Quest Rewards
      • Save and Load Game Data
      • Stats: Deep Dive
      • Items: Deep Dive
      • Conditions: Deep Dive
      • First Person Movement
      • Tutorial: "Overheal" Effect with Condition & Stats
      • Tutorial: Create a Character & Actor Class Inheriting from GameModulesActor
    • 👀Game Modules Viewer
      • Viewer: Dictionaries
      • Viewer: Stat / GameStatList
      • Viewer: ItemObject / GameItemObjectList
      • Viewer: ItemAttribute / GameItemAttributeList
      • Viewer: Condition / GameConditionList
      • Viewer: Quest / GameQuestList
    • V4 Migration Tips
      • Introducing GameModulesActor
      • Interfaces
      • No More Tick*
      • Dictionaries
      • Repositories
      • Tips from Upgrading "Legend of the Stones"
    • Important Information
      • Game Modules Overview
      • Inherit from GameModulesActor
      • Things to not forget to do
      • Bugs, Backups, and Demos
      • FAQ / Tips & Tricks
      • Required Prefabs
      • Game Module Repository
      • Release Notes
    • Module Documentation
      • Game Modules Actor
      • Game Module "Lists"
        • Get() Methods
          • GameStatList Get() Methods
          • GameItemObjectList Get() Methods
          • GameItemAttribute Get() Methods
          • GameConditionList Get() Methods
          • GameQuestList Get() Methods
        • Contains() Methods
          • GameStatList Contains() Methods
          • GameItemObjectList Contains() Methods
          • GameItemAttributeList Contains() Methods
          • GameConditionList Contains() Methods
          • GameQuestList Contains() Methods
        • Count() Methods
          • GameStatList Count() Methods
          • GameItemObjectList Count() Methods
          • GameItemAttributeList Count() Methods
          • GameConditionList Count() Methods
          • GameQuestList Count() Methods
        • Remove() Methods
          • GameStatList Remove() Methods
          • GameItemObjectList Remove() Methods
          • GameItemAttributeList Remove() Methods
          • GameConditionList Remove() Methods
          • GameQuestList Remove() Methods
        • GameStatList
        • GameItemObjectList
        • GameItemAttributeList
        • GameQuestList
        • GameConditionList
      • Blackboard
        • Blackboard.cs
        • Blackboard Follower
        • Blackboard Note
        • Blackboard Event
        • Blackboard Values
        • Tips & Tricks
          • Use extension methods to check BlackboardNotes (or events)
      • Stats
        • IHaveStats
        • Stat.cs
        • GameStat.cs
        • GameStatList.cs
        • Mastery Levels
      • Loot
        • LootItems.cs
        • LootBox.cs
        • GameLootBox.cs
        • Generating & Handling Loot
        • Custom Loot Generation Algorithm
      • Items
        • ItemObject.cs
          • Manage Item Objects
          • Allowed Item Attributes
          • Starting Item Attributes
          • Item Attribute Variables
            • Variables Methods
        • GameItemObject.cs
        • GameItemObjectList.cs
        • ItemAttribute.cs
          • Manage Item Attributes
          • General Settings
          • Name Settings
          • Requisite Attributes
        • GameItemAttribute.cs
        • GameItemAttributeList.cs
        • Code Examples
      • Conditions
        • Condition.cs
          • Main Settings
          • Condition Time
          • Effects on Points
        • GameCondition.cs
        • GameConditionList.cs
        • Expiration Condition Handler
        • Code Examples
      • Quests
        • Quest
          • Main Settings
          • Quest Step Settings
        • Quest Steps
        • Quest Conditions
          • Create a Custom Quest Condition
            • Your Quest Condition
            • Your Quest Condition Editor
            • Your Quest Condition Drawer
          • Quest Condition Details
            • Blackboard Value Bool
            • Blackboard Value GameObject
            • Blackboard Value Number
            • Blackboard Value String
            • Final Stat Is
            • Game Condition List Contains
            • Game Item Object List Contains
            • Game Stat List Contains
          • Quest Condition Enums
        • Quest Rewards
          • Create a Custom Quest Reward
            • Your Quest Reward
            • Your Quest Reward Editor
            • Your Quest Reward Drawer
          • Quest Reward Details
            • Point Reward
            • Condition Reward
            • Quest Quest Reward
            • Item Object Reward
          • Custom Quest Reward Handler
        • GameQuest
        • GameQuestList
        • Quest Events
        • Demo Scene Quests
          • Push the Button
          • Add Money
          • Don't Get Poisoned
          • Rescue the Puppy
      • Voices
        • Voices
        • Voice.cs
        • Code Examples
      • Dictionaries
        • Dictionaries Setup
        • Dictionaries Methods
        • KeyValue Methods
        • Save and Load
        • Object Reference
      • Gametime & Timeboard
        • Timeboard
          • Timeboard Events
          • TimeboardFollower
        • Gametime
          • Pause Level
          • Time Options
          • Properties & Methods
        • TimeSpan
        • Code Examples
      • Property Code
      • Lookup Table
      • Save and Load
        • GameList & GameFile
        • Making objects saveable
        • Saving, and Loading
        • BlackboardEvents sent by Save and Load
    • Game Module "Systems"
      • Drag-and-Drop Inventory System
        • Scripts
          • PanelManager
          • OnScreenItem
          • Panel
          • BoxManager
        • Scene & Class Setup
        • Item / Object Setup
        • Item / Inventory Setup
        • Box Setup (Chests, Bags, Other Inventories)
        • Setup Your Scene
      • First Person Movement
      • Character Creation
    • Game Module Demo Projects
      • Party Based RPG
        • Title Scene
        • Character Creation Scene
        • World & Dungeon Scenes
    • Magic Time for Game Modules
  • ✨Northstar Tracking System
    • ✅Overview & Quickstart
      • ➡️Quick Start
      • 🫐Demo Scene
      • 🛠️Customizing & Overriding
        • Create a Custom Navigation Bar
        • Create a Custom Compass / Radar
        • Runtime Overrides
          • Screen & Edge Overlay
          • Navigation Bar
          • Compass / Radar
      • ☄️Tips & Code Examples
    • Northstar Documentation
      • Global Northstar Settings
      • Northstar Overlay Settings
      • Compass & Radar
        • Compass
        • Radar
      • Northstar Screen Overlay
        • Screen & Edge Overlay
        • Navigation Bar
      • Tracked Target Compass Radar
      • Tracked Target Overlay
        • Types
        • Override Values
      • Overlay Icon
      • Compass Icon
      • Distance Text
  • 🚀Projectile Factory
    • 👀Overview & Quickstart
      • ➡️Quick Start Guide
        • Create Your First Projectile
        • Add Projectile Factory & Create a Projectile Spawner
        • Use 3rd Party Integrations
        • Extending Projectile Factory
        • Making Lasers & Similar Attached Projectiles
      • 💡FAQs + Important Reminders
    • Game Modules 4 Integration
      • Projectiles with TimeMod
    • Magic Time for Projectile Factory
    • ✅3rd Party Particle Integrations [16]
      • ▶️Archanor VFX [5]
        • Sci-Fi Arsenal
        • Polygon Arsenal
        • Magic Arsenal
        • Retro Arsenal
        • Rainbow Magic
      • ▶️Gabriel Aguiar Prod [2]
        • Unique Projectiles Vol. 1
        • Unique Projectiles Vol. 2
      • ▶️HOVL Studio [4]
        • Toon Projectiles
        • Toon Projectiles 2
        • AAA Stylized Projectiles Vol. 1
        • AAA Projectiles Vol. 2
      • ▶️kripto289 [1]
        • Realistic Effects Pack 4
      • ▶️FORGE3D [1]
        • Sci-Fi Effects
      • ▶️Knife [1]
        • PRO Effects - Sci-Fi Shooter FX
      • ▶️Jean Moreno [1]
        • Cartoon FX Remastered
      • ▶️Synty Studios [1]
        • 🟡Synty Studios Particles
    • Projectile Factory Documentation
      • 🔫Projectile Spawner
        • Projectile Spawner Code
      • 🚀Projectile
        • Projectile Code
        • Projectile Data
      • ✨Spawn Behavior
        • Spawn Behavior Code
        • Spawn Behavior Modification
      • 🕊️Behaviors
        • Behavior Examples
      • ⚡Events
      • 👁️Observers, Global Observers, and Observer Objects
        • Toggle Objects At Events Observer Object
      • 👩‍💼Factory Manager
      • 🏹Trajectory
      • 🎱Object Pooling
      • 🤩Create Custom Behaviors
      • Spawn Point Manager
      • Helper Tools
        • Projectiles Quick Editor
        • Set Trail Auto Destroy to False
        • Set Layer of All Projectiles
        • Remove Colliders
      • Additional Scripts
        • Destroy or Pool Object
        • Project Force
        • Raycast Shooter + Handlers
        • Projectile Utilities
  • Additional Systems & Tools
    • 🎨Runtime Color Sampler
      • Quick Start
      • Demo Walkthrough
      • Runtime Color Sampler (Prefab & Class)
        • Sampler Sphere
        • Sampler Camera
      • Runtime Listener
      • Runtime Color Settings
      • Scripting
      • Additional Classes
    • 🙎‍♀️Portrait Avatars
      • Setup
        • Create a Portrait Avatar
        • Create a UI Portrait
      • Portrait Avatars
        • Scripting
      • Portrait3D
      • Portrait2D
      • Portrait UI
      • Avatar Camera
      • Important Considerations
    • 🎛️Audio Clip Combiner
    • 🌈Color Shifter
    • 🛠️Support Classes
      • Utilities.cs
      • InfinityExtensions.cs
  • ⌛Magic Time - Local Time Scale
    • Overview
    • ➡️Quick Start
    • 🛠️Integrations
    • 💡FAQ
    • Local Time Scale
      • Local Time Scale Scripting
    • Magic Time Manager
      • Magic Time Manager Scripting
    • Magic Time User
      • IHaveLocalTime
      • Magic Time User Scripting
      • Additional "Magic Time User" Components
    • Time Zone
  • Equipment Systems
    • Overview
    • Blend Shapes Manager
    • Blend Shapes Preset Manager
    • Prefab and Object Manager
      • Humanoid Demo & Setup
      • EquipmentObject.cs
      • Prefab Groups
      • Variables
      • Scripting Examples
    • Wardrobe Prefab Manager
  • 📽️General Tutorials
    • Quick 3rd Person Controller
  • ⚔️Legend of the Stones
    • Actors, Players, NPCs
    • Systems
      • Game State
  • External Links
  • Get them at the Asset Store
  • Connect on Discord
  • YouTube
  • Twitch
  • 🚧Work In Progress / Coming Soon
Powered by GitBook
On this page
  • Gold Quest
  • Condition Pillars
  • Save the Puppy for the Sad Sad Goblin
  • Magic Pedestal & Projectiles
  • Treasure Box
  • Final Quest
  • Goblins
  • Demo Demon
  • Lots to explore in the code

Was this helpful?

  1. Game Modules 4
  2. Game Module Demo Projects
  3. Party Based RPG

World & Dungeon Scenes

v4.0

There are two scenes to explore. The player starts in the "World" scene, and later can travel to the "Dungeon" scene, where they can fight monsters including the feared "Demo Demon" boss.

We include two scenes to demonstrate the Save and Load module, and one way to transition between scenes in your project.

There are multiple points of interest in the scenes which demonstrate Game Module 4 features.

Hold "shift" while walking to move faster!

Gold Quest

The first quest the player experiences is right at the start. An NPC is blocking the path, asking for 100 gold. The player must have at least that much to succeed in the quest. There are "Demo / Debug Buttons" in the top left, one of which will add gold to the parties "Stat" list.

This demonstrates how the Stat module can be used to track points, such as gold or experience, as well as more robust stats or skills.

When you have sufficient gold, you will complete the quest. Your reward is actually -100 gold, which is how the system removes gold from your posession. Not all rewards are "good"!

Condition Pillars

The next section features three pillars which utilize the Conditions module.

Buffs and Debuffs

The right most pillar will give the active player the condition "Haste". This demonstrates the Condition module, and how it affects the players Stats automatically. Once added, everything else happens automatically!

You can see in the Condition list the "Haste" condition is added, and the stats are modified at that point. When the "Haste" condition expires, it is set to automatically be replaced with an "Exhausted" condition, which also affects stats. When that expires, stats return to normal. Check the UI panels to see all of this automatic amazingness.

Periodic Effects

The middle pillar will give "Poison" to the active player. This is a period effect condition. While active, every so often, the palyer will lose hit points. See the red health bar go down as this happens.

Once it expires, the health will no longer be drained.

Instant Effects

The left most pillar has a "Healing" instant effect. This is great to use after being poisoned!

This Condition is set to be "instant", meaning it will have an effect, but not be added to the GameConditionList on the object. There are many use cases for this kind of condition, and while you may achieve a "healing" effect in multiple ways, this works well for a single point of action.

Save the Puppy for the Sad Sad Goblin

The next quest is given by a sad goblin who has lost his puppy. This quest demonstrates a few features of the Quest module. In this quest, you must rescue a puppy before it dies to succeed. If the puppy dies, you fail.

However, you will not "fail" the quest until you return to the Goblin with the puppy -- dead or alive.

If you find the puppy and interact with it before it dies, you will "Succeed" in the quest when you return to the Goblin, and be rewarded with some items.

If you return to the Goblin with a dead dog, you will not get the items, and will have failed the quest. However, both outcomes will result in the big door opening, and an effect on your stats.

Quests can affect stats! Each quest can have effects on stats while the quest is "In Progress", "Succeeded" or "Failed. In this demo quest, your "Personality" stat will be increased if the quest succeeded, or decreased if it failed. This is a great way to add permenent stat changes to your actors based on their actions in the game.

Magic Pedestal & Projectiles

After going through the Big Door, the player may be hit by projectiles spawned out of a Magic Pedestal. This demonstrates how an Actor (in this case the enemy which is an object that happens to have Stats) can spawn projectiles that can then cause damage.

It also demonstrates one way to add damage to the player.

Treasure Box

There are a few treasure boxes around the world. This one has a bunch of weapons and armor. This demonstrates the LootBox module. This module is also used when getting loot after defeating enemies in the dungeon.

The loot is randomly generated. Once you collect it, be sure to equip it. Selecting a player portrait which is already active will load up the players inventory, demonstrating the "drag and drop" Inventory system. While you don't have to use this in your game, it's a great demo of how to have a fun mini-game inventory.

Final Quest

You finally will meet the last quest giver. This person will ask you to defeat the Demo Demon in the dungeon, but will also give you a choice in your reward. This is to demonstrate the Quest system feature allowing custom rewards to be added to GameQuest objects that were not part of the original Quest created in the inspector.

Also, if you select the "800 experience" option, notice that when you succeed in the quest later, each player is given 200 experience. If you dig into the code, you'll find that the "GameData" object has an "Experience" stat, and when that is modified, a method automatically divides the value amongst the active players.

Now you can go into the dungeon, showing how to transition between scenes in a game.

Goblins

The dungeon features a few goblin enemies. These will not move toward you, but will attack you if you get close enough. By pressing the "interact" button or hitting the space key, you can attack the goblins. (Make sure you've equipped weapons!)

This demonstrates how you might set up the math behind damage and armor calculations using the Stats on your Actors. It also showcases how the LootBox module can be used to provide Loot to the players when the defeat bad guys.

Once the Goblins die, interact with them once more to "pick up" the body, which will disappear.

(You can also skip through by just running by them)

Demo Demon

Finally, at the end of the dungeon path, you'll find the fearsome Demo Demon. She's pretty easy to beat, as she'll admit to you. Once you defeat her, use the portal to warp back to the World scene.

Then, you can talk to the final quest giver, and complete the demo.

Lots to explore in the code

This walkthrough just scratches the surface of what this demo includes. The code is well commented and should be easy to follow. The most important classes have the most comments with explanations of why we do things this way or that.

For more discussion, please join the Discord!

PreviousCharacter Creation SceneNextMagic Time for Game Modules

Last updated 1 year ago

Was this helpful?