{"count":6,"items":[{"slug":"the-block","name":"The Block","blurb":"A GTA-style open world, built twice: first in Three.js, then rebuilt in Unity 6.","description":"A small but genuinely playable 3D open world with a four-mission campaign. You can walk it, swim it, drive it, ride it and fly it. The project first shipped as a browser game on Three.js and Rapier, then I pivoted mid-project and rebuilt the entire game in Unity 6 rather than shipping a slice of it. Both builds exist, and the two repositories are meant to be read together.","year":"2026","highlights":["Two complete implementations of the same game: 175 TypeScript modules on the web, 219 C# scripts in Unity","Four-mission campaign that runs through to a win screen","Five traversal modes: on foot, swimming, car, motorcycle, jet ski","Physics via Rapier in the web build, Unity's built-in physics after the pivot"],"tech":["Unity 6","C#","Three.js","TypeScript","Rapier physics","Vite","Supabase","Blender","Vercel"],"links":[{"label":"Playable Unity build (zip)","href":"https://drive.google.com/drive/folders/186tblV6VY5XPdYJDbw1Z-ARdQ-WxO-Du","kind":"download"}],"image":{"src":"https://roeesivan.com/projects/the-block.jpg","alt":"The Block key art: a cel-shaded coastal city at sunset, palm-lined beach highway with a rider on it, a helicopter and a jet ski over the water."},"video":{"youtubeId":"57tQ9NJhcGE","title":"The Block — Unity 6 trailer","caption":"Gameplay from the Unity 6 build: the city, the four-mission campaign, and all five ways of getting around it."},"featured":true,"url":"https://roeesivan.com/projects/the-block"},{"slug":"uni-rate","name":"Uni-Rate","blurb":"A bilingual course-review platform used by 166 students at Reichman University.","description":"Students at my university had no shared record of which courses were worth taking, so I built one. Uni-Rate hosts course ratings, written reviews, AI-generated course summaries, prerequisite graphs and a schedule planner, in English and Hebrew with full RTL support. It runs in production on Vercel with real users and real data.","year":"2026","highlights":["166 registered users at Reichman University","Full EN/HE bilingual UI with right-to-left layout support","Custom email-verification auth plus optional LinkedIn OAuth for verified reviews","AI course summaries generated from aggregated review text via Gemini","Scores 99/100 on is-agentic.com for AI-agent readability"],"tech":["Next.js 16","React 19","TypeScript","Prisma","PostgreSQL","SCSS Modules","Gemini API","Resend","JWT / jose","Vercel"],"links":[{"label":"Live site","href":"https://www.uni-rate.com/","kind":"live"}],"image":{"src":"https://roeesivan.com/projects/uni-rate.jpg","alt":"Uni-Rate key art: the Uni-Rate mark beside the line “Real reviews, real students”, with two course-review cards floating alongside it — one in English and one in right-to-left Hebrew, each showing a star rating and an anonymous student's write-up."},"featured":true,"url":"https://roeesivan.com/projects/uni-rate"},{"slug":"neon-highway","name":"Neon Highway","blurb":"A Three.js endless-runner on a neon road with music features.","description":"An arcade endless runner rendered in WebGL: you weave a car down an infinite neon highway, dodging traffic and collecting pickups, with particle effects and a synced soundtrack. Six level themes swap the skybox and hazards as the speed climbs, all of it built on a modular vanilla-JS scene graph with no framework underneath.","year":"2026","highlights":["Custom Three.js scene: procedural road, GLB vehicle models, particle system","Modular vanilla-JS architecture, no framework, 14 ES modules","Six level themes with swapping city skyboxes, drones and laser hazards"],"tech":["Three.js","JavaScript","WebGL","glTF / GLB","Web Audio API","Vercel"],"links":[{"label":"Play it","href":"https://neonhighway.vercel.app/","kind":"live"},{"label":"Source","href":"https://github.com/RoeeSivan/Neon-highway","kind":"source"}],"image":{"src":"https://roeesivan.com/projects/neon-highway.jpg","alt":"Neon Highway key art: the game's low-poly vehicle lineup — supercar, motorbike, police cruiser, van and more — parked across a magenta-lit highway above a night coastline."},"video":{"youtubeId":"b7dciOfVsEw","title":"Neon Highway — gameplay trailer","caption":"A run through all six level themes: the neon road and its pickups, the drones and lasers that shoot across the lanes, and the city skyboxes that swap out as the speed climbs.","published":"2026-08-26"},"featured":true,"url":"https://roeesivan.com/projects/neon-highway"},{"slug":"hasidic-tower","name":"Hasidic Tower","blurb":"An Icy Tower-style canvas platformer you can play with your hands, via webcam tracking.","description":"A vertical-scrolling platformer written in vanilla canvas 2D with selectable characters, enemies, collectibles and a leaderboard. The interesting part is the input layer: alongside keyboard and touch, it supports optional webcam hand tracking through MediaPipe Tasks Vision, so you steer the character by moving your hand in front of the camera.","year":"2026","highlights":["Webcam hand-tracking input via MediaPipe Tasks Vision, running fully client-side in WASM","Three input modes sharing one controller abstraction: keyboard, touch, hand tracking","18 ES modules with a clean loop / state / renderer split","Selectable characters, enemies, collectibles and a persistent leaderboard"],"tech":["JavaScript","Canvas 2D","MediaPipe","WebAssembly","Web Audio API","Vercel"],"links":[{"label":"Play it","href":"https://hasidictower.vercel.app/","kind":"live"},{"label":"Source","href":"https://github.com/RoeeSivan/hasidic-tower","kind":"source"}],"image":{"src":"https://roeesivan.com/projects/hasidic-tower.jpg","alt":"Hasidic Tower key art: the nine pixel-art playable characters standing on braided-challah platforms inside the tower, under the title “9 characters, one holy tower”."},"video":{"youtubeId":"hy3mpfcq3m0","title":"Hasidic Tower — gameplay trailer","caption":"Climbing the tower: character select, the platforms and collectibles, the enemies that get in the way, and the webcam hand tracking steering it all.","published":"2026-08-26"},"featured":true,"url":"https://roeesivan.com/projects/hasidic-tower"},{"slug":"table-tennis-analyzer","name":"Table Tennis Analyzer","blurb":"A computer-vision pipeline that watches a table tennis match and reports on it.","description":"Feed it a match video and it returns an annotated render plus analytics. It tracks both players with YOLOv8 pose estimation, detects and speed-measures the ball through a hosted detection model, and reads the scoreboard with OCR behind a monotonic-score validator that rejects impossible readings. Outputs include player heatmaps, a score progression chart, a shot-placement map and a fastest-shot highlight clip.","year":"2026","highlights":["YOLOv8n-pose player tracking with close-up, crowd and referee frames filtered out","Ball detection and per-frame speed in km/h via a Roboflow-hosted model","EasyOCR scoreboard reading gated by a monotonic-score validator","Generates heatmaps, score chart, shot-placement map and an auto-cut highlight clip"],"tech":["Python","YOLOv8","Ultralytics","OpenCV","EasyOCR","Roboflow","Matplotlib"],"links":[{"label":"Source","href":"https://github.com/RoeeSivan/Table-Tennis-Analyzer","kind":"source"}],"image":{"src":"https://roeesivan.com/projects/table-tennis-analyzer.jpg","alt":"Table Tennis Analyzer key art: an annotated rally frame with both players outlined in cyan and orange pose skeletons, the ball's flight traced across the table, heatmap panels for player coverage and ball positions, and a readout of the run's counts."},"video":{"youtubeId":"HT1j_05tPi4","title":"Table Tennis Analyzer, pipeline walkthrough","caption":"A pass through the whole pipeline: pose tracking, the geometry gate that throws out close-ups and replays, the rally supercut, scoreboard OCR behind its validator, and the analytics. For this reel the ball was re-detected on every frame rather than every tenth, and the scale was measured off the table, which is what makes the speed figure worth reading.","published":"2026-08-26"},"featured":true,"url":"https://roeesivan.com/projects/table-tennis-analyzer"},{"slug":"teaching-a-robot-to-walk","name":"Teaching a Robot to Walk","blurb":"A Unitree Go2 quadruped learns to walk in MuJoCo — and then to score a goal.","description":"Reinforcement learning on a twelve-joint Unitree Go2 in MuJoCo, trained twice on purpose. A genetic algorithm written from scratch in NumPy ran 1,186 generations and moved the robot 0.74 m; PPO on Stable-Baselines3 reached a stable gait over 20 million timesteps, and the genetic version stayed in the repository as the comparison baseline rather than being deleted. A third layer sits on top of the finished walker: a high-level policy running at 10 Hz that steers the frozen gait by velocity command and learned to push a ball into a goal, without the walking policy ever being retrained.","year":"2026","highlights":["PPO across 20M timesteps on eight parallel MuJoCo environments — 48-dimensional observation, twelve torque-controlled joints at 50 Hz","An eleven-term locomotion reward logged per component, under friction, mass and random-push domain randomization","A pure-NumPy genetic algorithm kept as the baseline: 1,186 generations, behaviour-cloned warm start, anti-gaming curriculum gates","Hierarchical RL for soccer: a frozen walker driven by a 10 Hz policy, scoring on 95% of its last hundred episodes"],"tech":["Python","MuJoCo","Stable-Baselines3","PyTorch","Gymnasium","NumPy","Matplotlib"],"links":[{"label":"Source","href":"https://github.com/RoeeSivan/Teaching-a-robot-to-walk","kind":"source"}],"image":{"src":"https://roeesivan.com/projects/teaching-a-robot-to-walk.jpg","alt":"Teaching a Robot to Walk key art: three MuJoCo frames of a Unitree Go2 quadruped — the PPO champion mid-stride on the flat course, the genetic algorithm's champion pitching onto its nose, and the soccer policy standing over a yellow ball — beside the PPO reward curve and a readout of the run's training figures."},"video":{"youtubeId":"9CfPllFlreU","title":"Teaching a robot to walk, and then to score","caption":"The soccer policy first, milestone by milestone from its earliest flailing to a 95% goal rate, then the two walkers side by side on the same robot and the same physics: the genetic algorithm's champion at generation 1,186 against the PPO champion at step 18,000,000. Both panels carry live telemetry, so the distance and fitness figures are the run's own numbers rather than captions added afterwards.","published":"2026-08-26"},"featured":true,"url":"https://roeesivan.com/projects/teaching-a-robot-to-walk"}]}