Virtual Rockclimbers Birthday
Tags: octograd2020
Published: 2020-05-20 17:41:06

[Comment]: # (All of this is placeholder text. Use this format or any other format of your choosing to best describe your project and experience.)

[Note]: # (If you used the GitHub Student Developer Pack on your project, add the "#githubsdp" tag above. We’d also love to know which services you used and how you used it!)

## Virtual Birthday
Since I could not have a traditional birthday party due to the quarantine, I built a virtual world (think MMO game) where my friends could log in, explore the world and use a chat box to talk. The world was based on a climbing gym (as they are all closed now too). I had over 50 unique connections from Canada, the US, Australia and the UK during my birthday.

## Demo Link
It costs too much to keep it running constantly on a cloud service, but message me if you'd like me to spin it up for a day.

## Link to Code
This repo contains the Unity WebGL build hosted with an express app. The source code is not public yet.

{% github https://github.com/oliviaperryman/personal-website %}

[Note]: # (Our markdown editor supports pretty embeds. If you're sharing a GitHub repo, try this syntax: `{% github link_to_your_repo %}`)

## How I built it 
Server: SmartFoxServer (Java server extensions)
Client: Unity 3D
Assets: Blender and opensource prefabs
Hosting: Google Cloud Platform Compute Engine 

I learned that I couldn't host the SmartFox server on Heroku for free because  SmartFoxServer requires IaaS (infrastructure as a service) instead of PaaS (platform as a service). 

I learned that I couldn't host the client on Itch.io because I didn't have SSL certificates for my server and it would only allow Secure WebSocket connections.

I ended up hosting everything on Google Cloud Platform, which worked perfectly for my birthday, but keeping it up and running indefinitely is too costly. 

I also learned a lot about physics in Unity to help smooth out the player movements and keep everyone synced.

## Additional Thoughts / Feelings / Stories
The project was built in about 8 days as I was pressured to have it ready for my birthday, so it was definitely a little rough around the edges. It served its purpose though, and I managed to talk with many friends throughout the day. Without this project, I probably would not have connected with so many people. I think it would be really easy to allow anyone to design their own world in Unity and use this codebase to host their own birthday parties. Many friends felt sentimental about being able to go to the climbing gym again and enjoyed recognizing all the little details and layout of the gym.

## Screenshots

![Singing](https://dev-to-uploads.s3.amazonaws.com/i/793yj12u77yctnqrm0sn.png)
![Stack](https://dev-to-uploads.s3.amazonaws.com/i/pmfbxn0uhhlkzzf97mi9.png)
![The cake is a lie](https://dev-to-uploads.s3.amazonaws.com/i/jn29v6oy032phux0q2f1.png)
![Couch](https://dev-to-uploads.s3.amazonaws.com/i/ndt4t7lt03fal5fmxedx.png)
![Gym](https://dev-to-uploads.s3.amazonaws.com/i/twv779y7mjo7eynfnhvq.png)
![For the GRAM](https://dev-to-uploads.s3.amazonaws.com/i/7jlz7si9ihr8u6r72a6c.png)
![Bat Cave](https://dev-to-uploads.s3.amazonaws.com/i/i514rl2f4tuvqf5hhuix.png)
![Cake](https://dev-to-uploads.s3.amazonaws.com/i/qkqif0sf1x64iij1btfb.png)
![Demographics](https://dev-to-uploads.s3.amazonaws.com/i/qugbi3mer4romn8mfn72.png)


[Final Note]: # (CONGRATULATIONS!!! You are amazing!)