02 / Time
Time Tag
PrototypeA tag game with obstacle-aware dashes, movement rewind, round rewards, and saved cosmetic collections.
Playback is unavailable. Open the original capture.
I made these hobby projects independently, including the builds, UI, gameplay, and supporting code. Libraries and adapted techniques are credited where relevant.
Dash to a target or rewind your movement
The game plans a route for the seeker’s dash. Rewind follows a recorded movement sequence, with a ghost and connecting line showing the previous positions.
How a dash route is planned and checked
The solver checks the level for places the character can stand, then searches walk and jump connections. The movement plays on the player’s computer, with a final position check on the server.
- 01 / Find possible standing positionsSample the level and check space above the character.
- 02 / Choose a routeSearch walk, jump, and higher-cost super-jump connections.
- 03 / Play and check the movementRun the movement locally, then check its endpoint on the server.
A simplified explanation based on the project code.
Movement abilities backed by rewards, shops, and saved progress.
Dash and rewind
Dash around obstacles to a target, or retrace earlier movement with a visible ghost and trail.
Round rewards and leaderboards
Round results rank players and award coins, keys, and XP.
Shops and monetization
The prototype includes currency purchases, purchase-receipt handling, and a rotating trail-crate shop.
Cosmetic inventory and saved progress
Collect and equip trails, with currency, inventory, and progress stored in a player profile.
MORE FROM THE GAME
Short gameplay demonstrations
Playback is unavailable. Open the original capture.


Have a feature in mind?
Tell me what you want players to be able to do. I can discuss the implementation and answer detailed questions about this project.
Discuss your project ↗How it works — optional technical details
01 / IMPLEMENTATION
Finding a route through the level
The game checks obstacles and landing space when planning a dash.
Reviewed in project codeTechnical details
ParkourSolver samples downward hits along a corridor and filters for walkable normals. A five-point upward ray fan checks headroom without treating the empty space above a wedge as an obstruction. Walk edges use passage sweeps. Natural jumps solve vertical projectile motion and test the required horizontal speed, then sweep along the arc. The A* search yields when its configured time budget is used.
Limitations
Super-jump edges carry an inflated search cost to favor natural routes, so this is not a claim of minimum real travel time. The search uses a linear open list. The arena itself is authored, not procedurally generated.
02 / IMPLEMENTATION
Checking where a dash or rewind ends
The player’s computer plays the movement, then the server checks the final position.
Reviewed in project codeTechnical details
Both abilities follow request → server approval → local playback → completion-position report → endpoint validation/reconciliation. Rewind is checked against independent server history; dash uses geometric bounds and landing-clearance checks. Observers receive server-derived replica state with frame-rate-independent smoothing.
01 / Owner client
Request approval, play the movement locally, then report the final position.
02 / Server
Check the endpoint against history or geometric bounds, then accept or correct it.
03 / Observer clients
Receive and smooth the server’s replica state.
Limitations
The server checks where a dash or rewind ends, not every step along the way. This is not rollback netcode or input-replay prediction.
03 / IMPLEMENTATION
Saved profiles and prototype trade handling
Currency and inventory use a shared saved profile; the prototype also contains trade coordination.
Reviewed in project codeTechnical details
SessionLock stores ownership in the protected DataStore record and uses UpdateAsync to reject an active competing owner, with stale takeover rules. A trade takes two profile/resource types for each of two players in deterministic order, revalidates and snapshots state, then applies the swap with failure and rollback branches.
Limitations
This is prototype architecture. Trading is not a released feature, and saving is not claimed to survive every possible failure.
NEXT PROJECT / Force