Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 07:21, 14 June 2026 by Hyatt (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
COLD START
General
Authoretonedemid
TypeShooter
Version3.1.0
LicenseMixed
Last Updated2026/06/14
Links
Download
Website
Source

Cold Start is a roguelike survival game featuring bombs, upgrades, parrying, and a console that allows players to spawn a car and run enemies over. It runs on PC, Nintendo Switch homebrew, and Android.

The project is licensed under the GNU GPL, except for its music, for which authors should be consulted before distributing. Sounds are sourced from Pixabay.

Features

  • PC, Switch, and Android builds from the same codebase
  • Arena, co-op, deathmatch, team deathmatch, playlist, and custom-map play modes
  • Host-authoritative online multiplayer (ENet) with full mod sync
  • In-game map editor, character creator, and built-in texture editor
  • Mod system: maps, packs, characters, sprites, sounds, gamemodes, items (soon)
  • Resizable window with automatic letterboxing; 4:3 mode on square/portrait displays

Installation

Building

PC (Linux):

cmake -S . -B build-pc -DPLATFORM_PC=1
cmake --build build-pc -j4
./build-pc/cold_start

Windows (MinGW cross-compile):

cmake -S . -B build-win -DCMAKE_TOOLCHAIN_FILE=toolchain-windows.cmake
cmake --build build-win -j4

The resulting binary is build-win/cold_start.exe.

Nintendo Switch:

make -j4

The resulting binary is cold_start.nro.

Running

Dedicated server:

./cold_start --dedicated --port 7777 --max-players 16 --name my-server

Available flags: --password, --name, --max-players.

Switch via nxlink:

nxlink -a <SWITCH_IP> -s cold_start.nro

Controls

Action Keyboard/Mouse Gamepad
Move WASD Left stick
Aim Mouse Right stick
Shoot LMB RT
Parry Space LB
Bomb Q LT
Melee E RB
Pause Esc Start

Modding

Mods live in the mods/ directory and are discovered at startup. A mod folder has the following structure:

 mods/mymod/
     mod.cfg
     characters/   (.cschar)
     maps/         (.csm)
     packs/        (.cspack)
     sprites/
     sounds/
     gamemodes/
     items/

Example mod.cfg:

 [mod]
 id=mymod
 name=My Mod
 version=1.0
 
 [content]
 characters=true
 maps=true
 sprites=true
 sounds=true
 
 [overrides]
 player_speed=600
 enemy_hp=5

Multiplayer mod sync ships all enabled mod content to clients before the match starts (cap: 64 MB). Character bundles sync separately (cap: 10 MB per player). Synced files land in mods/_mp_sync/ and are rebuilt each session.

Screenshots

COLDSTARTSwitch-01.png

COLDSTARTSwitch-02.png

COLDSTARTSwitch-03.png

COLDSTARTSwitch-04.png

Changelog

v3.1.0

  • Timeline bug fix; dragging now works

v3.0.0 - cutscenes

  • Cutscene editor and dialog system officially opened
  • Added better enemy pathfinding
  • Editor improvements; updated icons
  • Workshop closed

v2.5.1 - Multiplayer PvE Hotfix

  • Multiplayer PvE: bullets and melee now correctly damage enemies in online co-op (host authority race condition resolved)
  • Multiplayer PvE: melee kill events no longer broadcast on non-lethal hits

v2.5.0 - Old friend

  • Many UI fixes; character-to-mod is fixed
  • Sprite editor returns, but will be remade in the new UI style next update

v2.4.0 - switch workshop opening!

  • Switch workshop opening

v2.3.2 - Android mod detection fix

  • Android: mods now correctly detected and installed; mod paths now use CWD-relative mods/ instead of the read-only romfs assets directory
  • Android: first-run setup now creates mods/, maps/, and characters/ subdirectories so content can be added before launch

v2.3.1

  • Android folder picker: first-run setup lets you choose where game data and mods are stored — External (Shared, default), Internal (Private), or Browse for folder via the native picker
  • Android workshop: HTTP downloads and ZIP extraction now use Android native Java APIs instead of curl/shell
  • Known bug: Android does not detect mods/characters

v2.3.0

  • Workshop on Switch: browse and install mods from the workshop directly on Switch (previously crashed due to missing curl init)
  • Multiplayer & splitscreen fixes: 3-player splitscreen black panel fixed, lives scale correctly in local co-op, spectator mode no longer freezes, shared-lives death transition fixed
  • Custom map save state fixed: exiting a custom map or pack no longer carries over vehicles, boss waves, or crates
  • Character editor: saving an invalid character falls back to default instead of loading garbage sprites
  • Switch UI: main menu Workshop / Log Off indices fixed, weather text no longer clips, lobby chat opens the Switch system keyboard

v2.2.0

  • Release notes link to the full changelog comparison (v2.1.0...v2.2.0)

v2.1.0

  • Vehicle system alpha
  • Added support for two-layered editor mode

v2.0.0

  • Chat Enter key no longer starts/readies the game; typing in chat now works after clicking the field
  • Lobby < > spinner buttons no longer double-fire
  • Floating windows (browser, media player, credits) no longer let clicks pass through to menu buttons underneath
  • Chat cursor no longer shows both | and _ at the same time

v1.9.0

  • Android Beta
  • Visuals: letterbox / unrendered area is now pure black instead of dark gray
  • Build & Platform: Android Gradle build fully integrated; Switch build fixed (PKG_CONFIG_PATH-aware invocation + --static); touchcontrols compiled only on Android

v1.8.0

  • Blood/scorch decals fade over time with permanent tile tint
  • All bool upgrades now stack with scaled effects
  • Map editor Props panel (game mode, abilities, HP/bombs/speed/damage)
  • Post-last-boss endless mode: 1.3x enemies/wave, half spawn interval
  • Removed Piercing upgrade

v1.7.0

  • Boss Overhaul: bosses enrage at 50% HP (+30% speed, faster attacks); enraged BossBrute charge, BossSniper 3-shot burst, BossGunner 12-round burst
  • Enemy Changes: all enemy base speeds ×1.5, melee enemies overhauled, enemies deal contact damage, parried bullets travel at sniper speed
  • Progression: milestone spawns (Brute wave 40, Sniper wave 60, Gunner wave 80); boolean upgrades not re-offered until wave 25+
  • Dev Console: press ~ in single-player; commands wave N, hp N, god, clear, spawn TYPE [N], give NAME, bombs N, help

v1.6.0

  • Music player overhaul: sequential track advance, .ogg support alongside .mp3, artist name in pause player, fixed loop toggle
  • Low-HP vignette: screen fades to red below 40% HP, pulses at ≤20% HP, reverts on healing
  • Editor Win98 UI: toolbar and palette converted to Win98 style; config defaults to 50×50 maps; direct keyboard input for width/height
  • HUD cleanup: timer removed from STATUS panel; GAME panel widened

v1.5.1

  • Release notes refer to the README changelog

v1.5.0

  • Release notes refer to the README changelog

v1.4.1

  • Release notes refer to the README changelog

v1.4.0

  • Upgrade rarity tiers: Common 50%, Uncommon 30%, Rare 15%, Epic 4%, Cursed 1%; added UpgradeQuality enum
  • Three new upgrades: Auto Reloader (Uncommon), Vampire (Rare), Last Stand (Epic)
  • Multi-bomb: holding the bomb button with multiple bombs queued launches them in rapid succession
  • PvE kills now always credited per co-op slot on the scoreboard
  • Discord Rich Presence: zero-dependency IPC client on Linux and Windows; stubs cleanly on Switch and dedicated server
  • AmmoUp fix: now correctly grants +5 max ammo
  • Split-screen visual improvements: HP bars, invulnerability blink, parry tint, box-fragment fade

v1.3.0

  • P1 hotfix: the gamepad that opened host/join stays assigned to P1 during multiplayer splitscreen
  • Multiplayer splitscreen PvP hotfix: networked subplayers receive bullet damage and melee targeting as distinct local slots
  • Splitscreen presentation cleanup: post-processing shader composite disabled during local and multiplayer splitscreen
  • Primary controller routing fix
  • Gamepad crosshair expansion across singleplayer, custom maps, packs, and multiplayer
  • Fresh media pass: README and HB App Store screenshots updated

v1.2.0

  • Controller rumble support via SDL_GameControllerRumble (PC, Switch, Android)
  • Automatic update checker: checks GitHub API on startup; UPDATE button appears in main menu when a newer version is available
  • Unified menu + creator overhaul: shared visual style supporting keyboard, controller, mouse, and touch; character creator gains walking preview, frame stepping, click-to-place muzzle offsets, save-local/save-to-mod
  • Multiplayer character sync completed: remote players render their selected default or modded characters; hosts resend bundles to late joiners
  • Full multiplayer mod sync: maps, packs, tiles, sprites, sound and music overrides with runtime asset resolution
  • Mod sync hardening: payloads chunked, capped at 64 MB, validated before install, written through sanitized IDs and relative paths into mods/_mp_sync/

v1.1.1

  • Security: mod sync path traversal fix — deserializeAndInstallMods validates mod ID and each file's relative path; crafted payloads with .., absolute paths, backslashes, or null bytes are rejected

v1.1.0

  • Character creator rebuilt with visual preview (IDLE, SHOOT, LEGS, DEATH, DETAIL), 10 FPS playback, keyboard navigation
  • PNG sprite import: new "LOAD SPRITES" button scans mod folders, loads sprites into the preview, shows color-coded completion status
  • Enhanced parry system: parry now triggers a dash (1050 speed, 0.15s duration)
  • Player sprites upscaled from 32×32 to 64×64, render scale 1.5×
  • Texture editor removed in favor of external PNG workflow and character creator preview

v1.0.6

  • Network: instant disconnect notification — clients send an app-level Disconnect packet before tearing down the ENet connection; guarded against double-calling onPlayerLeft

v1.0.4

  • Linux bundle: stop bundling glibc — ld-linux-x86-64.so.2, libc.so.6, and libm.so.6 no longer copied into libs/; run.sh uses LD_LIBRARY_PATH instead, fixing a SIGSEGV on launch from incompatible glibc versions

v1.0.3

  • Version string sync across GAME_VERSION, Switch APP_VERSION, and Android versionName
  • Linux bundle: loader execute permission fix (chmod +x after copy)
  • Android CI temporarily disabled while vendored codec dependency issues are resolved

v1.0.2

  • Parry kills sync over network
  • Robust spawn position fallback in pickSpawnPos()
  • Enemy HP tint safety (clamped hpRatio, guarded against zero maxHp)
  • Audio shutdown fix
  • Ceiling render guard against out-of-bounds reads
  • CSM security hardening: map loader validates dimensions (≤ 4096) and trigger count (≤ 10 000)
  • Network protocol hardening with bounds-checked string readers
  • UPnP thread safety mutex
  • Mod file sync read check
  • Android build fix (excluded server_main.cpp from JNI sweep; header-only minimp3)
  • Windows CI DLL bundling fix using an iterative objdump worklist
  • Linux bundle: libminiupnpc.so always included

v1.0.1

  • Fixed IP Connect UI labels/status coloring and saved-server highlighting
  • Updated in-game title/version strings to v1.0.1
  • Cross-platform build fixes for the dedicated entrypoint (Windows/Switch)

v1.0.0

  • Shooter enemies now always face their target with smoother movement updates
  • Dedicated server and lobby-host authority improvements from the 0.9.x line
  • Version metadata fully synced to 1.0.0 across build files

v0.9.9

  • Dedicated server is no longer counted as a player
  • First joining client becomes lobby host on dedicated servers
  • Lobby host migrates to another player if the current host disconnects
  • Lobby host permissions can be transferred to another player
  • Host/admin/start permissions now follow lobby-host ownership

v0.9.8

  • Added dedicated server mode: --dedicated, --port, --max-players, --password, --name
  • Added DigitalOcean deploy assets: systemd service and install helper
  • Fixed lobby primary-controller behavior; carried previous networking/menu improvements

v0.9.7

  • Fixed multiplayer lobby input that could create an unintended local sub-player
  • Added lobby primary-controller handling for correct confirm/ready behavior
  • Version bump to 0.9.7

v0.9.6

  • Join menu: IP CONNECT address field supports text hostnames (letters, numbers, dot, dash, colon)
  • Increased address input length for real-world server endpoints
  • Version bump to 0.9.6

v0.9.5 — Splitscreen in Multiplayer

  • Release notes contain a "What's New" heading without further detail

v0.9.1

  • Release notes refer to the README changelog

v0.9.0

  • Release notes refer to the README changelog

v0.7.1

  • Release notes refer to the README changelog

v0.7.0

  • Release notes refer to the README changelog

v0.6

  • Map selector in lobby settings: host can cycle Generated / custom maps; selection sent to all clients
  • Mod maps included in the lobby map list
  • Map Width / Height disabled for custom maps
  • Ceiling tiles in map editor write to map_.ceiling[]
  • Undo / Redo in map editor: 64-level undo stack (Ctrl+Z / Ctrl+Y / Ctrl+Shift+Z; L3 / R3)
  • Custom tile textures bundled with maps
  • Editor direct re-save: Ctrl+S writes directly to the existing path
  • Wayland-first display driver (SDL_VIDEODRIVER=wayland,x11)
  • Bomb explosions leave scorch marks (DecalType::Scorch)

v0.5.8

  • Release notes refer to the README changelog

v0.5.7

  • Release notes refer to the README changelog

External links

Advertising: