Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

third-person

The engine’s Third Person template, playable as it comes with keyboard and mouse, gamepad or touch: its character with its spring arm camera, game mode and player controller are Rust classes.

rusteal new MyGame --template third-person

From TP_ThirdPerson, the engine template it is made of.

Playing it

Open the project and press Play: WASD / left stick move, mouse / right stick look, Space / A jump.

Its classes

The Rust classes are in Rust/<crate>/src/; their Blueprint children, under the engine template’s names, are in Content/.

ClassParentFile
ThirdPersonCharacterCharactersrc/character.rs
ThirdPersonGameModeGameModeBasesrc/game_mode.rs
ThirdPersonPlayerControllerPlayerControllersrc/player_controller.rs

Variants

Each variant is a project of its own: the template plus the variant, opening on the variant’s level.

combat

Melee combat: combo and charged attacks driven by animation notifies, enemies run by a StateTree, enemy spawners, checkpoints and respawn, damageable props and a lava floor.

rusteal new MyGame --template third-person --variant combat

It opens /Game/Variant_Combat/Lvl_Combat. To play: WASD / left stick move, mouse / right stick look, left click / RB combo attack, hold right click / RT charged attack, R / D-pad down switch the camera side.

Its own classes, next to the template’s, in a module named after it:

ClassParentFile
CombatAIControllerAIControllersrc/combat/ai_controller.rs
AnimNotifyDoAttackTraceAnimNotifysrc/combat/anim_notifies.rs
AnimNotifyCheckComboAnimNotifysrc/combat/anim_notifies.rs
AnimNotifyCheckChargedAttackAnimNotifysrc/combat/anim_notifies.rs
CombatCharacterCharactersrc/combat/character.rs
CombatDamageableBoxActorsrc/combat/damageable_box.rs
CombatDummyActorsrc/combat/dummy.rs
CombatEnemyCharactersrc/combat/enemy.rs
CombatEnemySpawnerActorsrc/combat/enemy_spawner.rs
EnvQueryContextDangerEnvQueryContext_BlueprintBasesrc/combat/env_query.rs
EnvQueryContextPlayerEnvQueryContext_BlueprintBasesrc/combat/env_query.rs
CombatGameModeGameModeBasesrc/combat/game_mode.rs
CombatLavaFloorActorsrc/combat/lava_floor.rs
CombatLifeBarUserWidgetsrc/combat/life_bar.rs
CombatPlayerControllerPlayerControllersrc/combat/player_controller.rs
StateTreeCharacterGroundedConditionStateTreeConditionBlueprintBasesrc/combat/state_tree.rs
StateTreeIsInDangerConditionStateTreeConditionBlueprintBasesrc/combat/state_tree.rs
StateTreeComboAttackTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
StateTreeChargedAttackTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
StateTreeWaitForLandingTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
StateTreeFaceActorTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
StateTreeFaceLocationTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
StateTreeSetCharacterSpeedTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
StateTreeGetPlayerInfoTaskStateTreeTaskBlueprintBasesrc/combat/state_tree.rs
CombatActivationVolumeActorsrc/combat/volumes.rs
CombatCheckpointVolumeActorsrc/combat/volumes.rs

platforming

Double jump, wall jump, coyote time, a dash, local multiplayer and respawn.

rusteal new MyGame --template third-person --variant platforming

It opens /Game/Variant_Platforming/Lvl_Platforming. To play: WASD / left stick move, mouse / right stick look, Space / A jump (again in the air: double jump, against a wall: wall jump), Shift / B dash.

Its own classes, next to the template’s, in a module named after it:

ClassParentFile
AnimNotifyEndDashAnimNotifysrc/platforming/anim_notify_end_dash.rs
PlatformingCharacterCharactersrc/platforming/character.rs
PlatformingGameModeGameModeBasesrc/platforming/game_mode.rs
PlatformingPlayerControllerPlayerControllersrc/platforming/player_controller.rs

side-scrolling

A side view platformer: soft platforms to drop through, jump pads, moving platforms, pickups with a counter, interactables and an NPC run by a StateTree.

rusteal new MyGame --template third-person --variant side-scrolling

It opens /Game/Variant_SideScrolling/Lvl_SideScrolling. To play: A/D / left stick move, Space / A jump (again in the air: double jump, against a wall: wall jump), S / stick down + Space drop through a platform, F / X interact.

Its own classes, next to the template’s, in a module named after it:

ClassParentFile
SideScrollingAIControllerAIControllersrc/side_scrolling/ai_controller.rs
SideScrollingCameraManagerPlayerCameraManagersrc/side_scrolling/camera_manager.rs
SideScrollingCharacterCharactersrc/side_scrolling/character.rs
SideScrollingGameModeGameModeBasesrc/side_scrolling/game_mode.rs
SideScrollingJumpPadActorsrc/side_scrolling/jump_pad.rs
SideScrollingMovingPlatformActorsrc/side_scrolling/moving_platform.rs
SideScrollingNPCCharactersrc/side_scrolling/npc.rs
SideScrollingPickupActorsrc/side_scrolling/pickup.rs
SideScrollingPlayerControllerPlayerControllersrc/side_scrolling/player_controller.rs
SideScrollingSoftPlatformActorsrc/side_scrolling/soft_platform.rs
StateTreeGetPlayerTaskStateTreeTaskBlueprintBasesrc/side_scrolling/state_tree.rs
SideScrollingUIUserWidgetsrc/side_scrolling/ui.rs

Recipes taken from it: Character movement and input, Health, damage and death, Platforming, AI.