🐻 North Jungle
Real UEFN island for Codewood Grove: dense jungle terrain with an elevated rally circuit connecting the pin landmarks — starting grid clearing (Palm Grove), cliff climb (Clifftop Lookout), rope-bridge canyon crossing with a physics-free swinging gate prop (creative_prop animated
What you'll be able to do
- Barnaby's Jungle Mod-Rally
Lessons
- 1
Nouns of Verse: Values and Types
Read and declare int/float/string/logic values and understand every type used in the rally code.
- 2
Variables: State That Changes Mid-Race
Declare var vs constant, use set, and track a changing lap counter.
- 3
Functions: Name Your Logic
Write functions with parameters and return values and call them from OnBegin.
- 4
If/Else: Branching Race Decisions
Write failable conditions and if/else chains that gate gameplay logic.
- 5
Loops: Repeat Until the Finish Line
Use for and loop/break to iterate collections and run countdowns.
- 6
Strings: Length, Slicing, Name Tags
Measure and build strings to format racer name tags and HUD text.
- 7
Arrays: The Checkpoint List
Create, index (failably), and iterate arrays of devices and players.
- 8
Sum an Array: Total Boost Score
Accumulate over an array to compute totals like collected boosts.
- 9
Count Matching: How Many Racers Passed?
Count array elements matching a condition (racers past checkpoint N).
- 10
Filter an Array: Still-Racing List
Build a new array of only the elements passing a test.
- 11
Maps: [player]int Progress Tracking
Store and update per-player data in [player]int maps — the pattern that carries progress between zones.
- 12
Optionals: Maybe There Is a Vehicle
Declare ?type, unwrap with if(X := MaybeY?), and return false-y absence safely.
- 13
Tuples: Return Lap AND Time Together
Return and destructure tuples for multi-value results.
- 14
Named Tuple Elements: Readable Results
Access tuple elements by position and keep multi-value returns readable.
- 15
GetRandomFloat / GetRandomInt: Roll the Mod Box
Generate random ints/floats for loot tiers, spawn chances, and shuffles.
- 16
Player Position: Distance to the Finish Line
Read GetTransform().Translation, compute distance between players and props.
- 17
Classes & Structs: Model the Racer
Define rally_racer class and mod_reward struct, instantiate, and choose class vs struct.
- 18
Abstract Classes & Override: The Checkpoint Family
Define an abstract base_checkpoint with an overridden OnPassed per subclass.
- 19
Interfaces: Anything Can Be Scoreable
Declare and implement an interface so unrelated classes share a contract.
- 20
Modules: Organize the Jungle Codebase
Split code into modules, control access, and use using { } imports.
- 21
Build CodewoodKit: Your First Shared Module
Author a reusable helper module (FormatTime, Distance, PickRandom) that later zones import — the start of the cross-zone module arc.
- 22
Trigger Device: Checkpoint Sensors
Reference a trigger_device with @editable and Subscribe to TriggeredEvent in Verse.
- 23
Cable Splitter: One Signal, Many Reactions
Fan one event out to multiple devices, and when to do it in Verse instead.
- 24
Player Reference Device: Spotlight the Leader
Capture and display a specific player (race leader) with player_reference_device.
- 25
Player Counter: The Starting-Grid Gate
Gate game flow on how many players are in a zone (lobby ready-check).
- 26
Speaker Device: Jungle Fanfare
Play positional audio from Verse on game events.
- 27
Drum Player: Countdown Beats
Drive rhythmic Patchwork-style audio from Verse for pacing cues.
- 28
Custom Events: The CheckpointPassed Event Bus
Declare event(payload), Signal it, and Await/Subscribe across classes — decoupling checkpoints from the race manager.
- 29
Item Spawner: Banana Boosts on the Track
Spawn pickup items at runtime and cycle what spawns from Verse.
- 30
Item Granter: Custom Reward Items
Grant custom items to a specific player from Verse (the custom-inventory foundation).
- 31
First Verse UI: Lap Counter HUD
Get GetPlayerUI[], AddWidget a text_block, and update it live — the START of the UI arc.
- 32
Canvas Layout: The Rally HUD Panel
Compose a canvas with anchored slots for lap, boost meter, and position.
- 33
Enums & Race Phases: State Machine Intro
Model Lobby→Countdown→Racing→Finished as an enum and switch behavior per phase.
- 34
MoveTo: The Swinging Gate Hazard
Animate a creative_prop with MoveTo/TeleportTo — the first rung of the animation arc (→ ease → prop_mover → control rig).
- 35
Scene Graph: Checkpoint as Entity + Component
Wrap checkpoint logic in an entity with a Verse component instead of a bare script.
- 36
Custom Component: Reusable Checkpoint Prefab
Author a custom component, attach it, and save the checkpoint entity as a PREFAB other zones can drop in.
- 37
Capstone: Barnaby's Jungle Mod-Rally
Assemble every lesson into one playable rally mode: state machine, checkpoints, mod boxes, boosts, HUD, and persistence — launchable as a real island.