Table of Contents
I do not own the stories included in this project--this is the gesture-driven version of the original Twine/hyperlink-based stories. The sources for the original stories are included in the reference section at the end of the stories.
Link to the wireframes for the website.
This is Next.js application that guides users through a choose-your-own-adventure game using Windrift. During the game, instead of inputting text or clicking on buttons to proceed like usual, users can interact using hand movements through the devices’ web camera to answer questions prompted on the screen. For example, a thumbs-up gesture would mean “yes”, and a thumbs-down gesture would mean “no”. Handedness (i.e. left or right hand) can also be used to provide input to questions, depending on the story chosen.
Included in this project are 2 stories: a beach walk and procrastinate. Two stories are rather text-based (though a beach walk includes more visual materials than the other).
Through this project, I also want to introduce additional advanced features compared to the original Windrift JS framework:
-
ChoiceBlock
component that involves making choice based on user's gesture- Navigate based on Google MediaPipe model's classification classes (gestures are accepted only if the prediction confidence score is > 0.6):
- "None": "No action",
- "Closed_Fist": "Close your fist ✊",
- "Open_Palm": "Show your palm 🖐️",
- "Pointing_Up": "Point your (index) finger upwards ☝️",
- "Thumb_Down": "Put your thumb down 👎",
- "Thumb_Up": "Put your thumb up 👍",
- "Victory": "Make a V sign ✌️",
- "ILoveYou": "Do the I Love You sign 🤟 (you can try doing 🫶 to see what happens)"
- Navigate based on handedness
- Display category, confidence score, and handedness in real-time
- Adjust the number of hands the model can predict for.
- Navigate based on Google MediaPipe model's classification classes (gestures are accepted only if the prediction confidence score is > 0.6):
-
Additional configuration to the original
Choice
,Nav
classes to allow custom handling, add custom styling, ... -
A variable management system that allows keeping track of variables within the story.
- Score keeping feature
- Update/access the variables any time during the story
-
Audio/music playlist for stories (play, pause, next, previous control)
- Wireframes
- Set up game in Windrift
- Integrate MediaPipe
- Set up MediaPipe component to listen to events of the story
- Refactor instructions and camera into a component (called game block)
- Set up game blocks to listen to each other
- Enhance the UI
- Add animations
- Add gradient background config setup
- Finish story (edit UI, texts, citations, ...)
- Add background music widget
See the open issues for a full list of proposed features (and known issues).
- NodeJS
- React v18.3.1
- MediaPipe (Tasks-vision: v0.10.14)
- Next.js v13.5.6
- React Bootstrap v2.10.4
- Ionic React v8.2.6
For complete list, please view the package tree in requirements.txt
.
- Node 18.20.3
- [email protected]
- [email protected]
- @mediapipe/[email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- @ionic/[email protected]
- @ionic/[email protected]
For complete list, please view the package tree in requirements.txt
.
- Clone the repo
git clone https://github.com/LynnHaDo/GestureVerse.git
According to the Windrift repo:
- Install a fully-compaticble version of Node:
nvm install 18
nvm use 18
- Install packages
npm install
- Run the local development environment
npm run dev
- interstellar-bird (n.d.). Beach Walk by interstellar-bird. [online] itch.io. Available at: https://interstellar-bird.itch.io/beach-walk [Accessed 16 Jul. 2024].
- j-mo (2024). Procrastinate. [online] itch.io. Available at: https://j-mo.itch.io/procrastinate [Accessed 6 Aug. 2024].
- Becci (2020). Congee. [online] itch.io. Available at: https://becciness.itch.io/congee [Accessed 12 Aug. 2024].
Email: [email protected]