Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
A multiplayer-focused, inheritable, state-based first/third-person character controller for Godot 4, written in statically typed GDScript. Based on the Quake movement code and the physics/mouse-look feel of Valve's Source SDK 2013 - the same lineage that powers bhop, surf, and every Source-engine mod you've ever loved.
SUCC - SurfsUp Character Controller
A multiplayer-focused, inheritable, state-based first/third-person character controller for Godot 4, written in statically typed GDScript.
Based on the Quake movement code and the physics/mouse-look feel of Valve's Source SDK 2013 - the same lineage that powers bhop, surf, and every Source-engine mod you've ever loved.
This is the character controller from SurfsUp, now open-sourced for anyone to use, learn from, and build on.
Features
- First-person and third-person cameras with mouse look and smoothed step-up/down.
- Source-engine-inspired physics: ground acceleration, air acceleration/strafing, friction, step climbing, bhop, slope surf.
- State system:
MovementStateandGameStateextension points with signals and overridable hooks. - Multiplayer-first: built around
MultiplayerSynchronizerand a stripped-downSUCCPawnfor remote peers. Transport-agnostic (ENet, WebSocket, GodotSteam, etc.). - Fully configurable via a Resource: swap
SUCCConfigfor light/heavy characters, low-gravity modes, bhop vs. surf profiles. - Editor warnings for missing InputMap actions - no mystery silent failures.
- Zero singleton coupling - drop into any Godot project.
Quickstart
- Copy
addons/SUCC/into your project'saddons/folder (or install via the Godot Asset Library). Scripts register automatically viaclass_name- no Plugins toggle needed. - Add these input actions to your Input Map:
forward,back,left,right,jump,duck,crouch,sprint. Missing actions produce editor warnings and are disabled at runtime. - Instance or inherit
addons/SUCC/scenes/succ_character.tscnas your player. - Extend
class_name SUCCto add your game-specific state (health, ammo, roles, etc.).
class_name MyPlayer extends SUCC
enum MyGameState { ALIVE, DEAD }
var health: int = 100
var my_state: MyGameState = MyGameState.ALIVE
func _can_move() -> bool:
return my_state == MyGameState.ALIVE
Full docs: https://bearlikelion.github.io/SUCC/
What's included
addons/SUCC/
βββ scripts/
β βββ succ.gd # class_name SUCC extends CharacterBody3D
β βββ succ_pawn.gd # class_name SUCCPawn - remote peer mirror
β βββ succ_camera.gd # class_name SUCCCamera - SpringArm3D + mouse look
β βββ succ_config.gd # class_name SUCCConfig - physics/feel tuning Resource
βββ scenes/
β βββ succ_character.tscn
β βββ succ_pawn.tscn
βββ resources/
β βββ default_config.tres
βββ demo/
βββ test_level.tscn # gray-box: ramp, stairs, flat ground
βββ test_level.gd
What SUCC is not
SUCC is just the controller. It does not provide health, ammo, scoring, checkpoints, UI, chat, VOIP, or leaderboards. Those live in your game code, extending SUCC.
Example games and game modes will be published in the separate SUCC Demos repository.
Games built with SUCC
- SurfsUp by Mark Arneman & Nerdiful - the surf/bhop game whose controller SUCC was extracted from.
Shipped or working on something built with SUCC? Open an issue with your game's name, a link, and the author(s), and it'll be added here.
Heritage & credits
SUCC stands on the shoulders of:
- Quake - id Software's original movement code defined the shape of FPS player physics.
- Source SDK 2013 - Valve's open-source engine release inspired the air acceleration, friction, and mouse-look math used here.
- GoldGdt by ratmarrow - the Godot port that SUCC began as a fork of.
- SurfsUp v1 by Mark Arneman - rewrote GoldGdt to ship the Steam release.
- SurfsUp v2 by Nerdiful - refactored the controller for SurfsUp's 2.0 update.
- SUCC by Mark Arneman - overhauled, extended with state and pawn systems, documented, and open-sourced for everyone.
License
SUCC is released under the MIT License - see LICENSE. Use it freely in commercial or non-commercial projects, attribution appreciated but not required.
Contributing
Issues, pull requests, and questions are welcome on GitHub. See CONTRIBUTING.md for guidelines.
A multiplayer-focused, inheritable, state-based first/third-person character controller for Godot 4, written in statically typed GDScript. Based on the Quake movement code and the physics/mouse-look feel of Valve's Source SDK 2013 - the same lineage that powers bhop, surf, and every Source-engine mod you've ever loved.
Reviews
Quick Information
A multiplayer-focused, inheritable, state-based first/third-person character controller for Godot 4, written in statically typed GDScript. Based on the Quake movement code and the physics/mouse-look feel of Valve's Source SDK 2013 - the same lineage that powers bhop, surf, and every Source-engine mod you've ever loved.