Homework4W15
Contents |
Jenga Simulator
This project is designed for use with either the Razer Hydra or the zSpace.
The Immersive Visualization Laboratory at the Qualcomm Institute made 3 zSpaces with Windows PCs available for the project. They will need to be time shared between the groups that use them.
The Razer Hydras will be distributed in class on Tuesday, February 17th.
There will be a homework discussion on Wednesday, February 18th at 4pm in CSE lab 220.
Jenga is a popular game in which players take turns removing one block at a time from a tower constructed of 54 blocks. Each block removed is then balanced on top of the tower, creating a progressively taller but less stable structure. The player who successfully removes and places the last block wins.
Starting configuration | Mid-game configuration |
Devices
There is a Piazza poll for which device you would prefer to use. There are only a limited number of Hydras as well as zSpaces available - hopefully we can agree on a device distribution. Please fill out the poll by Monday evening (Feb 16th) so that we can hand out the Hydras on Tuesday.
Here are some pros and cons for each device to help your decision:
Hydra:
+ Teams can take it home with them. + Two hand-held controllers allow for 2-handed interaction. + The Hydra is a popular gaming controller which will soon be succeeded by the Sixense STEM system. - No head tracking. - The tracking of the Hydra controllers is quite accurate but not as accurate as the zSpace stylus (it is electro-magnetic).
zSpace:
+ Excellent high definition stereo display. + Very accurate optical tracking. + Precise head tracking. + A very accurate stylus is the controller. It has three buttons on it. + zSpace computers have the free version of Unity installed. + The zSpace is a professional VR display used in industrial, medical and educational environments throughout the world. - Teams need to go to the instructor's laboratory to use it and time share the three systems.
The Windows drivers for both devices, C++ API and Unity, are equally well implemented and documented and no issues are anticipated. For Mac it looks a bit less optimal but hopefully it'll be possible.
Hydra
To use the Hydra in Windows, you will need to first download and install the driver.
There is even an open-source Linux driver for the Hydra.
The Hydra SDK can be downloaded through Steam, but it's much easier to download it by its direct URL, which depends on your OS:
Getting the Hydra to work on a Mac seems a bit hacky. We hope you'll manage to do this one way or another.
If you use Unity you will need the Unity plugin for the Hydra. Note that we did not test this so we would appreciate comments on your experience with it on Piazza. Some people say that you need Unity Pro to make it work - keep in mind that there is a Unity Pro 30 day trial available, and our final projects are due on March 19th, so if you hold off on the installation until February 17th or 18th you can use it for both this and the final project, should you so choose.
For instructions on how to get the Unity plugin to work look here.
zSpace
The zSpace drivers and the SDK are already installed on the zSpace developer workstations, along with Visual Studio and Unity.
We installed this Unity plugin. Note that, just as with the Hydra, we have not tested the Unity installation and rely on your pointers to fix any problems there might be.
The Game
Based on information in a research paper from Carnegie Mellon University the Jenga blocks are (on average) 8.1cm long, 2.6 cm wide, and 1.8 cm tall, and they weigh 19.6 grams. The static friction coefficient they give is μ=0.4. You will need to implement a Jenga block with these parameters, including its physical properties.
You need to texture the bricks with a wood texture of your choosing, to make them look realistic.
Then you will need to build the tower in its initial configuration (see picture above). Note that you should introduce tiny amounts of randomness for each block's placement, to make the game playable and fun.
For this homework project, we simplify the game a little bit, in that we don't require that the player put the blocks back on top of the tower.
At the heart of the game are the players' turns in which they have to remove one block at a time. You don't need to distinguish between multiple players - just allow the user to remove a block at a time. How exactly you do the user interaction is up to you.
You will get points for the following things:
- Initial tower construction. (20 points)
- Application of physics parameters and fine tuning. (10 point)
- Textures on the blocks. (5 points)
- You have to use objects with physical properties to remove the blocks - for example you might attach a rigid stick to the controller, with which the user can push a block out of the stack. (35 points)
- You are allowed to use a maximum of 3 buttons per controller. (5 points)
- You need to implement a way for the player to move the tower or the camera, so that the player can see and reach all blocks in the tower from either side. (20 points)
- There needs to be a way to restart the game with the initial block configuration at any point. (5 points)
Extra Credit (10 Points Maximum)
You can obtain up to 10 additional points if you do the following things:
- Once a block has been removed, you require the player to put it on top of the tower (5 points).
- Jenga gun, like in this video. (5 points)
- You come up with a way to visualize the force the player is pulling with (for instance, a spring loaded stick to push, or you attach a spring to a block to pull on it) (10 points).
- You offer the player visual aids to know which blocks are looser, which you can do by visualizing the static forces in the entire stack. OpenSees might work for this but we haven't tried (10 points).
- If you have other ideas, ask us!