{"id":22393794,"url":"https://github.com/tobybenjaminclark/shapeshifters","last_synced_at":"2025-03-26T22:26:20.715Z","repository":{"id":219420997,"uuid":"749009281","full_name":"tobybenjaminclark/shapeshifters","owner":"tobybenjaminclark","description":"🕺 3rd Place at RoyalHackaway v7! Networked Computer-Vision Hole in the Wall Game deployed using OpenCV2, Tensorflow, GMS2, Azure, Python3, Java \u0026 REST.","archived":false,"fork":false,"pushed_at":"2024-06-03T16:09:58.000Z","size":67661,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T19:36:14.565Z","etag":null,"topics":["gms2","movenet","networking","opencv"],"latest_commit_sha":null,"homepage":"https://devpost.com/software/shapeshifters","language":"Game Maker Language","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tobybenjaminclark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-27T10:13:20.000Z","updated_at":"2024-12-31T17:04:40.000Z","dependencies_parsed_at":"2024-06-03T19:04:55.430Z","dependency_job_id":null,"html_url":"https://github.com/tobybenjaminclark/shapeshifters","commit_stats":null,"previous_names":["tobybenjaminclark/hole","tobybenjaminclark/shapeshifters"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobybenjaminclark%2Fshapeshifters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobybenjaminclark%2Fshapeshifters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobybenjaminclark%2Fshapeshifters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobybenjaminclark%2Fshapeshifters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tobybenjaminclark","download_url":"https://codeload.github.com/tobybenjaminclark/shapeshifters/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245745122,"owners_count":20665386,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gms2","movenet","networking","opencv"],"created_at":"2024-12-05T05:07:55.495Z","updated_at":"2025-03-26T22:26:20.689Z","avatar_url":"https://github.com/tobybenjaminclark.png","language":"Game Maker Language","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Improved compatibility of back to top link: See: https://github.com/pull/73 --\u003e\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/tobybenjaminclark/shapeshifters\"\u003e\n    \u003cimg src=\"assets/logo.png\" alt=\"Logo\" width=\"650\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eShapeshifters\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    🕺 3rd Place at RoyalHackaway v7! Networked Computer-Vision Hole in the Wall Game deployed using OpenCV2, Tensorflow, GMS2, Azure, Python3, Java \u0026 REST.\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://devpost.com/software/shapeshifters\"\u003eView Devpost\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com//tobybenjaminclark/shapeshifters/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/tobybenjaminclark/shapeshifters/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\nShapeshifters is a mixed reality, online networked game similar to the TV Show [Hole in the wall](https://youtu.be/kOTLKQAHIPg?si=L509Vuv0bszSmlG7) - where players have to hold poses to fit through the wall. We wanted to promote stretching, and at home exercise in a sociable way without the need for specialist hardware, only WiFi and a webcam! You can think of it similarly to an online Wii/Kinect game.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/video.gif\" alt=\"Logo\" width=\"500\" height=\"275\"\u003e\n\u003c/p\u003e\n\nWe use a dedicated raw-UDP client to talk to the computer vision, from the game with a separate, azure-networked endpoint for storing game data. We also have a raw-TCP relay server to provide low latency multiplayer, which acts as a low latency proxy. We chose low-level data transmission to minimise latency and increase gameplay fluidity \u0026 responsiveness.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Gallery \u0026 Information\n##### Computer Vision for Human Pose Estimation\nShapeshifters uses [MoveNet](https://www.tensorflow.org/hub/tutorials/movenet) to calculate human pose estimates from the webcam. MoveNet initially returns a list of positions on the body, however we decided to convert these to angles to ensure that people of different heights and dimensions are all portrayed similarly, see visualisation below.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/poserecognition.jpeg\" width=\"250\" height=\"300\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003ca href=\"https://www.linkedin.com/in/eden-h-7720b9280/\"\u003eEden\u003c/a\u003e demonstrating the Human Pose Estimation\u003c/p\u003e\n\n##### Game Client \u0026 Visualisation\nDeveloped in [Gamemaker](https://gamemaker.io/en), the client communicates with the networked azure instance, and the locally hosted CV-client to get information about the current players pose, and the networked players pose. This is visualised as 2 players on the screen, captioned 'You' and 'Them\".\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/game.jpeg\" width=\"480\" height=\"300\"\u003e\n\u003c/p\u003e\n\n##### Networking \u0026 Architecture\nngles retrieved from the computer vision server are sent to the GameMaker client over a raw (P)UDP. connection. A raw-TCP Relay connection was established between an Azure server and GameMaker clients to constantly transfer pose data across clients. This ensures you can see your opponent's live pose on the screen, at a low latency. Furthermore, a second TCP Server was established to transfer extra information about the game, such as game states, average-accuracies \u0026 score!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\nSince the project was born out of a 24-hour hackathon, there are countless issues and bugs - note the lack of installation guidance here as an example. If, despite the complete lack of documentation, you wish to contribute to Shapeshifters, please feel free to create a feature branch or raise an issue! If you encounter any big issues, or get really stuck - feel free to contact whoever you think is most relevant to the issue you are encountering. \n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003e I'd really advise against trying to fix this repository particularly - to get this functional on the day involved using 2 laptops alongside a networked azure instance. If you are looking to create a game using HPE, feel free to take a look at snippets but **I would wholeheartedly advise against trying to fix this source code.**\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n## Contributors\n[Amber Swarbrick](https://github.com/aswarbs) - Human Pose Estimation\n\n[Eden Hamilton](https://github.com/EdenH1234) - Networking \u0026 Multiplayer\n\n[Toby Clark](https://github.com/tobybenjaminclark) - Game Design \u0026 Interaction\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobybenjaminclark%2Fshapeshifters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftobybenjaminclark%2Fshapeshifters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobybenjaminclark%2Fshapeshifters/lists"}