Appreciate the pleasures of outdoor bowling in this short VR experience.
This project was developed during the class "Réalité virtuelle et augmentée" taught by Isaac Pante (SLI, Lettres, Université de Lausanne).
This experience tries to recreate a pleasent bowling experience in the wilderness, without the bad music, the weird scents or the unnecessary competitiveness. Enjoy some smooth music, relax and just throw some balls at the pins !
In this experience you can:
- Choose a bowling ball in the rack by clicking on it (it will appear on the bowling lane)
- Throw the ball at the pins by interacting with it (implemented using the physics system to handle collisions)
- Listen to some music by interacting with the radio (if the music doesn't start click another time – see Issues & improvements for further informations)
- Unlock achievements by playing! (implemented using LocalStorage to keep track of the achievements you already unlocked)
To test on your machine : download the folder, open it in VS Code and run Live Server. You're done!
VR_Bowling
│ README.md
│ index.html
│ main.js
│
└───assets
│ └───img
│ └───models
└───unused_mtl
│ └───sfx
│
└───images
index.html
contains all the A-Frame script and assets managementmain.js
contains the components developed to create interactionassets
contains the images, models, materials and sounds used (with a few unused.mtl
files that could be used)images
contains files used in theREADME.md
file
This experience was developed using:
- A-Frame for the main experience
- aframe-environment-component for the scenery
- aframe-physics-system for the collisions
This VR experience is based on ZakAttakk's A-Frame Bowling Game that we rewrote to update the scripts to modern A-Frame versions.
Most modern web browsers try and block autoplaying music on a website so you have to either click two times on the radio or have any kind of interaction in the VR experience before being able to play music on the radio.
A-Frame being mostly improved by open-source projects we ran into compatibility issues between A-Frame versions and certain libraries, such as aframe-physics-system. One of the problem we couldn't solve was the pins getting back up after collision.
You might notice bugs with the physics system or sounds, if that's the case just reload the page.
A few features we would like to implement would be:
- Adding a button to get the pins back to their original positions. This is currently not possible due to an incompatibility between certain 3D models handlers and the physics system.
- Adding improved bowling movements, such as ball picking and placing
We used the following assets to make this experience :
- Wood texture by lumoize
- Chair model by ammantilla2156
- Radio model and texture by yurii3ddesigner
- Table model by Javidan
- Pin model and texture by waelr
- Bowling ball rack by AI L.
- Bowling ball texture 1 on Kenflin's github
- Bowling ball green texture on Freepik
- Bowling ball orange texture on Freepik
- Palette model and textures by Lucif 3D
- Wine bottle model and textures by shmelevartem
- Pizza model by plaggy
- Strike sound by SieuAmThanh
- Ball roll sound by carbilicon
- Jazz ambiance by officeMIKADO (AI generated)
This project was created using ChatGPT for code review, code generation and debugging. We want to thank the JavaScript A-Frame community for its help and all the people that create free assets !