The Dread Thicket Raceway - Forest Racetrack + Cat-Up-Display, Split Time

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 (°^° ) !!!!!! ( °^°)

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).

Click here for details about road condition

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.

2024-10-11 23-12-19_4

1 Like