The host owns the frame, not your gameplay scripts
Splitframe treats frame lifecycle, renderer health, presentation, and recoverability as native runtime concerns instead of leaving them implicit in a loose scripting loop.
Splitframe Engine
Splitframe is being built as a native-first engine with deterministic content contracts, first-class plugins and mods, a code-first path to tooling, and a credible runway from strong 2D foundations toward eventual 3D. The point is not to be another feature-bucket engine. The point is to make the runtime, content pipeline, and shipping path behave like real production systems.
Why Splitframe
Splitframe is aiming at a specific final state: native host ownership, deterministic content and packaging, first-class extensions, editor and tooling growth, and a believable path from 2D runtime strength into a more general engine.
Splitframe treats frame lifecycle, renderer health, presentation, and recoverability as native runtime concerns instead of leaving them implicit in a loose scripting loop.
Cooked content bundles, shader/runtime compatibility, and runtime profiles are enforced as contracts so production behavior is shaped deliberately instead of emergently.
Scenes, systems, and game behavior stay scriptable, but the scripting layer rides on top of a stricter host and render pipeline rather than pretending to be the runtime.
Splitframe exists as a reusable engine with its own docs, release surface, and contracts. Gwoop is a consumer, not the definition of the engine.
Design Philosophy
Splitframe puts hard edges around runtime profiles, cooked content, renderer compatibility, extension boundaries, and project packaging. Python remains central, but not as an excuse to keep the engine loose or the shipping path improvised.
from splitframe import GameEngine, EngineConfig, Scene
class BootScene(Scene):
def handle_event(self, event):
return True
def update(self, dt):
pass
def render(self, game):
pass
engine = GameEngine(
EngineConfig(
game_title="Splitframe Project",
screen_width=1440,
screen_height=900,
tile_size=32,
)
)
engine.scene_manager.push(BootScene(engine))
engine.run() Docs Preview
The docs are organized to make the engine direction legible first: what Splitframe is trying to become, which architectural stances are non-negotiable, and which runtime/content contracts already exist in code.
Install Splitframe, run the engine locally, and understand the first runtime concepts.
Understand the native runtime, engine modules, and Python gameplay layering.
The target state for Splitframe and the milestones required to reach it.
High-level engine layout, current core surfaces, and repository ownership.
Python package setup and native runtime build commands for the engine.
Boundary checks, import smoke coverage, and standalone engine verification.
Extraction status, deferred cleanup work, and compatibility notes for the repo split.
Release Signal
Changelog entries should prove that Splitframe is getting stronger at runtime discipline, extension boundaries, tooling foundations, and packaging, not just accumulating miscellaneous subsystems.
Next Move