Taking my original shiny-stones for web as starting point, I've ported the game to expo, allowing it to serve as an example of a multiplatform game, supporting iOS, Android and Web from the same codebase. To achieve this, Expo Router is used as a base.
Just like the original project, the graphics are still rendered using three.js and react-three-fiber under the hood. This allows us to render the gameplay elements in a declarative way, which will look familiar for React Develoeprs. Furthermore the 3D canvas provided by three.js makes things look and feel more interesting, while using the devices' GPU to render the game.
Clone this repo and run npx expo
, select the option to run the code on web.
The codebase is generated from an expo template, and is still completely compatible with Expo go. More about Expo Go.
⚠️ This project depends heavily on expo-gl and expo-three. openGL does not work well on iOS simulator, therefore it is best to use real devices when running the application.
- Scoring (incl combo bonusses)
- More gameplay elements, e.g. level with time limit, level with limited amount of moves or level where user needs to reach a certain score.
- Graphical improvements are done, uses dynamically generated environment maps to provide nice lightning. Improvements can be done by having some levels have different lightning or color schemes compared to others.