Crowd Rush Project Report
1. The Concept
Crowd Rush is a fast-paced 3D casual strategy runner designed for web browsers. The player controls a growing crowd, moves left and right across a colorful track, chooses mathematical gates, avoids rotating obstacles, defeats enemy groups, and reaches the finish line with as many characters as possible.
The game combines one-touch controls with quick risk-and-reward decisions. Each level is designed to be easy to understand, fast to replay, and visually satisfying when the crowd grows.
2. The Stack
The Stack: HTML5, CSS3, JavaScript, Three.js, WebGL, and THREE.InstancedMesh.
Three.js handles the 3D scene, camera, lighting, toon materials, character rendering, environment, animation, and collision logic. HTML and CSS provide the responsive home screen, HUD, level display, shop, result screens, and interface animations.
The AI Assist: AI helped transform the initial idea into a working game plan, define the target audience, design the gameplay loop, generate the first interface assets, implement Three.js systems, diagnose control and collision problems, improve performance, redesign the art style, organize the project files, test the game in a browser, and document the project.
3. The 1 Day Sprint
Morning (Hours 1–3): The sprint began by defining the game concept, target players, one-minute gameplay loop, and technical direction. The first playable version was created with a Three.js scene, camera, lighting, track, automatic forward movement, mouse and touch controls, mathematical gates, a following camera, and an instanced crowd system.
Afternoon (Hours 4–6): The prototype was expanded with rotating obstacles, individual crowd collision detection, enemy groups, scoring, progress tracking, game-over and victory states, multiple levels, and responsive controls. The basic capsule characters were replaced with low-poly characters made from instanced heads, bodies, arms, legs, and blob shadows. Instanced trees, clouds, toon materials, running animations, and gate effects were also added.
The Finish Line (Hours 7–8): The final stage focused on interface polish, compatibility, testing, and cleanup. The home screen received a premium casual-game design, title and button animations, and responsive layouts. HTML, CSS, and JavaScript were separated into dedicated files. The Three.js loading setup was adjusted for deployment compatibility, unused images and dead formation code were removed, browser tests were completed, and the README and project report were written.
4. The Roadblocks
Roadblocks: The first major issue was inverted horizontal movement because the camera faces the positive Z direction, making visual screen-right correspond to negative world X. Another challenge was obstacle collision: checking only the crowd's center was not accurate enough, so collision detection had to test individual character positions against the rotating obstacle in local space.
The project also encountered character-performance concerns, Khmer text encoding issues in the terminal, ES module restrictions when opening the game directly, and unused assets left behind after several interface redesigns. These were addressed through instanced rendering, Unicode-safe file handling, classic Three.js script loading, browser testing, and a final dependency and asset audit.
5. Key Takeaways
A casual game can have simple controls while still offering meaningful decisions through gates, obstacles, crowd management, and fast retries.
Performance must be considered from the beginning. Reusing geometry and materials through THREE.InstancedMesh makes it possible to display animated crowds and environment objects without creating hundreds of separate Three.js objects.
Visual feedback is essential. Running animation, blob shadows, toon shading, gate flashes, scale-pop effects, score changes, and clear result screens make each player action easier to understand and more satisfying.
Testing the real interaction is as important as writing the code. Browser testing revealed issues that were not obvious from static code review, especially control direction, collision behavior, external script loading, and interface state transitions.
My final thought: Crowd Rush shows how a focused idea can become a polished and playable web game in a short sprint when gameplay, performance, visual clarity, and iteration are treated as equally important parts of development.