Check out our latest project ✨ OpenChapter.io: free ebooks the way its meant to be πŸ“–

SUCC - SurfsUp Character Controller

An asset by bearlikelion
The page banner background of a mountain and forest
SUCC - SurfsUp Character Controller hero image

Quick Information

0 ratings
SUCC - SurfsUp Character Controller icon image
bearlikelion
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.

Supported Engine Version
4.0
Version String
v0.0.0
License Version
MIT
Support Level
community
Modified Date
11 hours ago
Git URL
Issue URL

SUCC - SurfsUp Character Controller

README Godot 4.6+ README License: MIT README Release

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: MovementState and GameState extension points with signals and overridable hooks.
  • Multiplayer-first: built around MultiplayerSynchronizer and a stripped-down SUCCPawn for remote peers. Transport-agnostic (ENet, WebSocket, GodotSteam, etc.).
  • Fully configurable via a Resource: swap SUCCConfig for 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

  1. Copy addons/SUCC/ into your project's addons/ folder (or install via the Godot Asset Library). Scripts register automatically via class_name - no Plugins toggle needed.
  2. 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.
  3. Instance or inherit addons/SUCC/scenes/succ_character.tscn as your player.
  4. Extend class_name SUCC to 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

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

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
SUCC - SurfsUp Character Controller icon image
bearlikelion
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.

Supported Engine Version
4.0
Version String
v0.0.0
License Version
MIT
Support Level
community
Modified Date
11 hours ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers