Progress:
This week I continued my work with learning Unity by finding and modifying game assets (3d models, textures, etc.) for the items we plan to include in our game. To the right is an image showing a sample scene with a few of the items we plan to include. After the guidelines for the Design Review were posted on Tuesday, my focus shifted toward finalizing as much of the design of my portion of our project as possible. I did a few hours of research on network protocols in order to determine which would be most appropriate for our latency requirements for video streaming and gameplay. Originally we had intended to use WebSockets through a relay server, but some manual benchamarking showed that WebSockets on an AWS EC2 t2.micro instance were nearly 4x slower than our minimum 100ms requirement while TCP sockets were much faster, so we decided to try TCP first. Looking into other protocols like UDP, RTSP, or WebRTC showed they were more commonly used commercially, but more difficult to use and with fewer examples and libraries online, so we decided to try TCP first then switch if it failed to meet our latency requirements. I also spent some time looking for libraries for the game and video streaming portion of our app and chose XInput.NET for Xbox controller input in Unity and OpenH264 for decoding the video stream from the pi camera.
Schedule:
Because I spent a significant amount of time doing research for our design this week, I was only able to finish one of the two tasks I had planned. However, my experiments with Unity have shown that one of the later tasks I had planned was unnecessary, so I should be able to switch things around a bit and remain on schedule. I’m also going home for spring break and not doing much so I can use that time to catch up if necessary.
Deliverables:
When our team meets tomorrow we plan on redoing our schedule with the new information we’ve gathered this week, but for now it looks I’ll be working on setting up the race HUD, Unity Multiplayer connectivity, and race progress state management.