COLD START Switch
More actions
| COLD START | |
|---|---|
| General | |
| Author | etonedemid |
| Type | Shooter |
| Version | 3.1.0 |
| License | Mixed |
| Last Updated | 2026/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
|
|
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/, andcharacters/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);touchcontrolscompiled 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; commandswave 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
UpgradeQualityenum - 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 —
deserializeAndInstallModsvalidates 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
Disconnectpacket before tearing down the ENet connection; guarded against double-callingonPlayerLeft
v1.0.4
- Linux bundle: stop bundling glibc —
ld-linux-x86-64.so.2,libc.so.6, andlibm.so.6no longer copied intolibs/;run.shusesLD_LIBRARY_PATHinstead, fixing a SIGSEGV on launch from incompatible glibc versions
v1.0.3
- Version string sync across
GAME_VERSION, SwitchAPP_VERSION, and AndroidversionName - Linux bundle: loader execute permission fix (
chmod +xafter 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 zeromaxHp) - 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.cppfrom JNI sweep; header-only minimp3) - Windows CI DLL bundling fix using an iterative
objdumpworklist - Linux bundle:
libminiupnpc.soalways 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