The Dread Thicket Raceway
3 Lap / Day - 241 473 866
3 Lap / Night - 182 935 602
Description
With every lap, you’ll find yourself navigating through a deep forest with smooth banking turns and rough patches that add a tactile challenge, making you experience every bump and crack on the road…
The track is essentially a forest circuit with banked turns (created by duplicating angled road segments) and smoothed transitions using convex track pieces.
Special Features
- The race has 3 checkpoints (including the start line), and the best split time is displayed on the HUD.
- Split Difference Δ
- The difference between the best split and the current split.
- When the split time improves, a major notification shows “NEW BEST TIME!”
- The HUD features a simple animation of a cat that changes depending on:
- Split improvement
⊂(・ω・⊂)
↔(つ・ω・)つ
- No Split improvement
T ノ(・ω・ノ)
↔(ノ ́・ω・)ノ ミ |___|
- No Split to compare yet
(_ _ ) Z z Z
↔(_ _ ) z Z z
- Collision with other players, environment or smashables
(°^° ) !!!
↔!!! ( °^°)
- Split improvement
Let me know if you’re experiencing performance issues or any other problems with the circuit, or if you’d like a specific version (e.g., different weather, laps, or even cat states).
How it’s programmed
Player Variable Register
The ‘RULES OF PLAY’ Editor resembles a register machine. To keep track of player variables, I created this system:
# NAME
-------------------------------------
1 ~
2 ~
3 ~
4 CAT_COLLISION_COUNTER // on collision goes +5
//
5 CAT_HAPPY // : -1 cat is unhappy | 1 cat is happy
6 ONLOAD_STATE // : 0 | 1
7 CAT_AVAILABLE // : 0 | 1, toggles sleep state, if lap > 1, then it's set to 1
8 ~
9 TICK // Increment each tick (Continuous per player, add 1),
// if TICK >= 25 multiply TICK_STATE with -1 and set TICK to 0
10 TICK_STATE // -1 | 1
11 ~
12 ~
13 ~
14 ~
15 ~
16 SPLIT_TIME_BEST_0 // default set to 9999
17 SPLIT_TIME_BEST_1 // default set to 9999
18 SPLIT_TIME_BEST_2 // default set to 9999
19 ~
20 SPLIT_TIME_DIFF_0 // number 'Split Time' - SPLIT_TIME_BEST_0
21 SPLIT_TIME_DIFF_1 // number 'Split Time' - SPLIT_TIME_BEST_1
22 SPLIT_TIME_DIFF_2 // number 'Split Time' - SPLIT_TIME_BEST_2
23 ~
24 PRINT_1 // 'SPLIT 1' Checkpoint 1 (from Start Line to Checkpoint 1)
25 PRINT_2 // 'SPLIT 2' Checkpoint 2 (from Checkpoint 1 to Checkpoint 2)
26 PRINT_3 // 'SPLIT 3' Checkpoint 0 (from Checkpoint 2 to Start Line)
27 PRINT_4 // 'Δ' SPLIT_TIME_DIFF_<Checkpoint ID> set by Checkpoint after first Lap
28 ~
// ~ are unused register,
// Example: CAT_COLLISION_COUNTER is Variable 'Triggering Player' 'Player Variable 4'
Tip: I ordered it like this because e.g.: SPLIT_TIME_DIFF_<Checkpoint ID> has the offset of
20 + 'Checkpoint ID'
. I can simply copy the Rule for each checkpoint and increment the player variables.
Cat-up-display - How is the cat animated?
The Game has different states. Depending on those states the HUD Element 5 is set.
CAT_COLLISION_COUNTER
CAT_HAPPY
CAT_AVAILABLE
TICK_STATE
let’s look at ‘Cat is Happy’ '⊂(・ω・⊂)
↔ (つ・ω・)つ
The Cat is happy if
- CAT_HAPPY == 1 (split time improvement)
- CAT_AVAILABLE == 1 (set to 1 after first lap)
Based on TICK_STATE (which alternates between 1 and -1 every 25 ticks), either ⊂(・ω・⊂)
or (つ・ω・)つ
is displayed.
Cat is (°^° ) !!!
if
- CAT_COLLISION_COUNTER > 0
- 5 is added to CAT_COLLISION_COUNTER on collision and each tick it’s decremented by 1 (if greater than 0; Otherwise, it’d go negative indefinitely each tick)
and so on…
This results in 4 different cat states, with each state having 2 alternating frames, for a total of 8 cat variations.