// k-engine WIP
A custom C++/OpenGL game engine where the player swaps between a top-down RPG view and a Doom-style first-person view at runtime. The mode-swap is a gameplay mechanic — bosses are designed to favor one mode over the other: bullet-hell readable from above, melee readable in first-person.
## // PILLARS //
Two views, one simulation. Tab flips the camera + input + render path while the world keeps ticking. Same entities, same physics, same combat window — only the lens changes. Bosses lean into the asymmetry: a bullet-hell phase that reads cleanly from a 60° top-down tilt, then a melee transition that demands the first-person view to track a swinging weapon tip.
Mordhau-style FPS melee. Real weapon-tip tracking with 8 sub-steps per sim tick during active swings. Per-zone hurtboxes (head / torso / arms / legs). Parries are directional in FPS, timing-only in top-down. Successful parries open a riposte window — short, hard-hitting follow-ups.
Arx Fatalis-style glyph spellcasting. Hold the cast button, draw the glyph with the mouse, release to fire. $1 Recognizer matches the stroke against a per-player spellbook. Tomes teach new glyphs. A wand archetype trades the glyph mechanic for fast-casting from a fixed spell cycle.
Dark Messiah-style environmental play. Surfaces and status effects are data-driven and combinatorial: frost on water → ice → enemies slide off ledges; fire on oil → burning patch; kicks send bodies off platforms.
BUILD-engine geometry. Sector polygons (vertices + walls + sectors with portal links) rather than a tile grid. Arbitrary room shapes, per-wall texture + UV control, sloped floors and ceilings, room-over-room via floor and ceiling portals. The tile grid lives on as the AI pathfinding feeder.
## // TECH //
- Language: C++20, ~50k LOC. Component-bag entities (flat POD structs, generational IDs) — not a full ECS. - Renderer: OpenGL 3.3 core. Two render paths (top-down, FPS) share a textured-quad shader and Z-axis billboard sprites, so the same artwork is reused across both views. - Sim: 60 Hz fixed timestep, render interpolation for smoothness at any framerate. Combat runs 8 sub-steps per tick during active swings to keep a fast-moving weapon tip from tunneling. - World editor in-engine. Sectors authored interactively with a 2D top-down plan view + a 3D preview pane that re-renders the level live as walls move. Wall splits, portal conversion, slope painting, texture-alignment mode, vertex / wall / sector / prop / spawn-point / light / trigger selection. - Audio: small SFX engine with procedural events keyed by surface material, weight class, and impact velocity.
Source release: TBD. The engine is private while the v1 vertical slice lands. Watch the devlog for the in-progress feature drops.
// RELEASES //
No releases yet.