Skip to content

bearlikelion/SurfsUpSDK

Repository files navigation

SurfsUp SDK

SurfsUp SDK Logo

The official SDK for creating custom levels for SurfsUp on Steam.

SurfsUp is a free-to-play multiplayer game inspired by Counter-Strike surf.

Documentation

View Full Documentation

Features

  • Easy level creation with pre-built ramp prefabs
  • Built on Godot 4.5+ game engine
  • Import and port Source engine BSP maps
  • Custom texturing with included materials
  • Hot reload testing with in-game developer console
  • One-click export to SurfsUp installation

Requirements

Getting Started

Installation

git clone https://github.com/bearlikelion/SurfsUpSDK.git
cd SurfsUpSDK

Or download and extract the latest release from GitHub.

Setup

  1. Download and install Godot v4.5.1 or newer
  2. Launch Godot and click "Import"
  3. Navigate to the SurfsUpSDK folder and select project.godot
  4. Click "Import & Edit"

Create Your First Map

  1. Duplicate Levels/test_level.tscn and rename it
  2. Drag ramp prefabs from Levels/Ramps/Parts/ into the Level node
  3. Position, rotate, and scale your ramps
  4. Apply textures from Assets/Textures/

Export and Test

  1. Go to Project → Tools → [SurfsUp] SDK Tools → Set Maps Directory
  2. Point to your SurfsUp installation's Maps folder
  3. Click the Export Map button in the top-right corner
  4. Launch SurfsUp and press ~ to open the console
  5. Type: map <your_map_name>

Note: The exported PCK filename must match your scene path: /Levels/<map_name>.tscn

Workflow

Using Ramp Prefabs

Pre-made ramp GLB files are in Levels/Ramps/Parts/. Drag them into your scene's Level node.

Ramp Prefabs Documentation

Texturing

  1. Right-click on a ramp prefab and enable Editable Children
  2. Drag a StandardMaterial from Assets/Textures/ onto the ramp mesh

Texturing Documentation

Porting BSP Maps

  1. Decompile BSP to VMF with bspsrc
  2. Import VMF into Blender using Plumber
  3. Export as GLB to Levels/<level>/ folder
  4. Import into Godot and scale to (2.5, 2.5, 2.5)

BSP Files Documentation

Project Structure

SurfsUpSDK/
├── Assets/
│   ├── Characters/      # Y-Bot reference character for scale
│   └── Textures/        # Standard materials
├── Levels/
│   ├── Ramps/Parts/     # Pre-made ramp prefab GLB files
│   └── test_level.tscn  # Example level template
├── docs/                # Documentation site
└── project.godot        # Godot project file

Support

Join the SurfsUp Discord Server and ask your questions in the #mapping-help channel, share your custom maps, download others, and receive feebdack from the community on your creation in the #custom-maps channel.

Contributing

Contributions are welcome:

  • Submit bug reports and feature requests via GitHub Issues
  • Fork the repository and submit pull requests
  • Share custom prefabs and textures with the community

License

This project is provided as-is for creating custom maps for SurfsUp. Please respect map creators' work when porting or modifying existing content.

When porting BSP files, always ask for the original map maker's permission.

Links