JJ

## History

The prisoner JJ23110205 (known as **JJ**) is the main protagonist of JJRacing, developed by Alter Ego. He is an outstanding challenger of the Xeronoid speed tests. He belongs to the human race, which is almost extinct.

Raised in a humble family, he was kidnapped and held prisoner of the Xeronoids, where he gained a lot of fame for being the prisoner with the fastest times, and for that, the one that has survived the longest. It seems like he will spend the rest of his days the same way... Unless some day his fate changes.

## Variables

**bool fuelFill**

**bool turboActivated**

**bool onTurboSurface**

**float fuel:** fuel current value.

**float maxFuel = 100:** fuel maximum quantity.

**float fuel\_Increment = 0.5:** quantity of fuel added per frame when requirements are met.

**float fuel\_DecrementTurbo = 0.4:** quantity of fuel subtracted per frame when requirements are met.

**float fuel\_DecrementAscension = 1.15:** quantity of fuel subtracted per frame when requirements are met.

**float normal\_Speed = 800:** default movement speed.

**float turbo\_Speed = 1200:** movement speed when in turbo mode.

**float FOV:** FOV current value.

**float FOV\_Max = 95:** FOV value in turbo mode.

**float FOV\_Min = 90:** FOV default value.

**float FOV\_Change = 0.5:** speed at which FOV changes per frame during the transition from default mode to turbo mode.

## Behaviour

**JJ** is a playable character in the game. He is a biped character moved by a pair of **aeroboots** that let him levitate and move at a higher speed throughout the terrain, and also being able make higher jumps and propel himself upwards.

* His behaviour is controlled by the default controls from almost any **first person** game:
	+ WASD - Movement
	+ Space bar - Jump/Jetpack (if pressed and maintained while in air)
	+ Mouse - Camera movement
	+ Shift - Turbo
* His **movement** must resemble as if he was levitating. The **base movement speed** is **800**, and the **friction** is value is very low, currently stated at **0.1**.
* He **jumps** with an impulse of **500**. **Air control** is set to a medium value of **0.6** (in a range from 0 to 1)
* While **in the air**, if space bar is **pressed again** and **maintained pressed**, **jetpack** is activated. This makes the character's **gravity scale** change from 1 to **-0.5**, what makes him go up. This **consumes fuel** (more details down below)
* The character's **default gravity scale** is set to **1.25** and his **mass** is **100**.
* The character can enter **Turbo Mode**. While in this mode, the character has a **movement speed** of **1200**. Plus, the **FOV** **transitions** from **90** (default value) to **95** while in this mode. This mode is activated when:
	+ The player **presses Shift.** This mode is maintained until the key is released. This action **consumes fuel** (more details down below)
	+ The player is **colliding** with a **turbo surface.**
* The player has a **fuel quantity** that can vary **between 0 and 100.**
	+ When in **Turbo Mode** while pressing **Shift**, fuel is **consumed at a rate of 0.4 u/frame.**
	+ When using the **jetpack**, fuel is **consumed at a rate of 1.15 u/frame.**
	+ When neither of these conditions are met, **fuel refills** automatically at a rate of **0.5 u/frame.**
	+ When colliding with a **fuel recharge**, **50** is instantly added to the **current fuel quantity,** without surpassing the **maximum fuel quantity**

## Aesthetic

As JJRacing is a first person game, there is no need for a model or certain aspect for the character behind the camera. Nonetheless, he does have **two visual elements:**

* His **hands** and the character's **hook (weapon)**. In this particular case, Unreal default model was used.
* **Fire particles** coming from the aeroboots. They leave a trail where the player goes for a short period of time.