Final Project · Interactive Graphics · Prof. Marco Schaerf · La Sapienza University of Rome
Runs entirely in the browser, no installation required.
For a smoother experience (or for development), you can also run it locally:
git clone https://github.com/SapienzaInteractiveGraphicsCourse/final-project-intentionallyblankname.git
cd final-project-intentionallyblankname
npm install
npm run dev # localhost:5173A simulated basketball match between selectable procedural robots, set in a GLTF basketball court under a dynamic procedural sky. No external models are used for the robots: they are built in Three.js using primitives and THREE.Group hierarchies, animated entirely via code. The user selects a robot class from a selection screen—each with different stats and special moves—and a time of day (Sunrise/Day/Sunset/Night, with an animated transition between lights and skyboxes), then observes or directs the match simulation.
| Class | Locomotion | Special Move |
|---|---|---|
| MOBILE MANIPULATOR | Wheels | Dash |
| LEGGED MANIPULATOR | Legs (gait cycle) | Jump |
| DRONE | Flight | Flight |
Selectable from the Main Menu for both the player and, in 1v1 mode, the AI-controlled opponent, without requiring a page reload.
| Input | Effect |
|---|---|
| P | Debug Panel / Camera |
| M | Spectate (free-fly) / Play (third-person) |
| Spectate: mouse + WASD + Space/Shift | Free flight |
| Play: mouse | Orbit camera |
| Play: WASD | Camera-relative movement |
| Play: Left Shift | Special move (Dash / Jump / Flight) |
| Play: Right click (held) | Grab ball, free aim |
| Play: Left click (while holding ball) | Shoot basket |
| Play: Approach a loose ball | Automatic pickup |
| Play: Q (1v1, without ball) | STEAL |
| Play: E (1v1, without ball) | BLOCK |
| ESC (during Play) | Pause menu |
| 1-8 | Collision debug wireframe |
| Category | Tools |
|---|---|
| Core | |
| Rendering | |
| Robot | |
| Basketball | |
| Deploy |
Alessandro Carotenuto, MSc Artificial Intelligence & Robotics, La Sapienza University of Rome

