// the find
EvanBacon/Expo-Crossy-Road
🐥🚙 Crossy Road game clone made in Expo (iOS, Android, web), THREE.js, Tween, React Native. 🐔
A Crossy Road clone built with Expo, Three.js, and React Native that runs on iOS, Android, and web from a single codebase. It's a showcase project by Expo maintainer Evan Bacon demonstrating what Expo can do with 3D graphics — not a production game engine template. The models are custom-built in MagicaVoxel and the whole thing is playable in a browser.
The cross-platform 3D rendering approach is genuinely interesting: Three.js runs inside Expo via react-native-web on the web target and via a GL context on native, which sidesteps the usual 'no WebGL on native' problem. The asset pipeline is well-organized — characters, vehicles, and environment objects each get their own directory with .obj and texture, making it easy to swap or add models. Row-based procedural generation (src/Row/) is cleanly separated from the node types (src/Node/), so the game logic isn't tangled with rendering. GSAP for animation instead of Three.js's built-in AnimationMixer is a reasonable call for a tween-heavy arcade game.
This is a ~2019 project that's been minimally updated; the Three.js integration almost certainly relies on compatibility shims that newer Expo SDK versions have deprecated or broken. There are no tests at all — not even smoke tests for the game logic. The audio asset naming is a mess (files like 'Earn Points #010699.mp3' and 'bannerhit3-g #010642.wav') suggesting these are raw exported files never cleaned up, which will cause problems on case-sensitive filesystems. State management is thin — a single context with no persistence, so score and character selection vanish on reload.