Pixel Runner

Clear Code’s Pygame intro, endless runner, sprite + input + collision.

📄 Docs only

Upstream: https://github.com/clear-code-projects/UltimatePygameIntro

Tags: port tier-0

Pixel Runner: SimVX Port

Faithful port of Clear Code’’s Ultimate Pygame Intro endless runner to SimVX.

Run

uv run python ported_games/ultimate_pygame_intro/simvx_port/main.py

Controls

Key

Action

SPACE / / W

Jump

SPACE / Enter

Start / restart after death

Left mouse button

Start / restart

Esc

Quit

Web export

uv run simvx export web ported_games/ultimate_pygame_intro/simvx_port/main.py \
    -o ported_games/ultimate_pygame_intro/simvx_port/web/index.html

Asset license

All graphics, fonts, and audio in assets/ are CC0 (Clear Code project).

Source

 1#!/usr/bin/env python3
 2# /// script
 3# requires-python = ">=3.13"
 4# dependencies = ["simvx-core", "simvx-graphics"]
 5# ///
 6"""Pixel Runner: Clear Code's Pygame intro, endless runner, sprite + input + collision.
 7
 8# /// simvx
 9# tags = ["port", "tier-0"]
10# upstream = "https://github.com/clear-code-projects/UltimatePygameIntro"
11# web = { width = 800, height = 400, responsive = true, disabled = true, reason = "Blocked on audio refactor (uses old 'SFX' bus name)." }
12# ///
13
14Run::
15
16    uv run python ported_games/ultimate_pygame_intro/simvx_port/main.py
17
18Web export::
19
20    uv run simvx export web ported_games/ultimate_pygame_intro/simvx_port/main.py         -o ported_games/ultimate_pygame_intro/simvx_port/web/index.html
21"""
22
23import os
24import sys
25
26# Allow running this file directly via ``python main.py``: make the package
27# importable by adding its parent directory to sys.path.
28_HERE = os.path.abspath(os.path.dirname(__file__))
29if _HERE not in sys.path:
30    sys.path.insert(0, _HERE)
31
32from simvx.graphics import App  # noqa: E402
33
34from nodes.runner import Runner  # noqa: E402
35
36
37def main():
38    App(title="Pixel Runner", width=800, height=400).run(Runner())
39
40
41if __name__ == "__main__":
42    main()