{"id":17011408,"url":"https://github.com/merumerutho/socks","last_synced_at":"2026-05-03T09:34:22.813Z","repository":{"id":252292847,"uuid":"128478505","full_name":"merumerutho/Socks","owner":"merumerutho","description":"Socks is an experimental server developed with the purpose of learning how to build a real-time multi-client application with C and Löve2D.","archived":false,"fork":false,"pushed_at":"2018-04-08T22:35:59.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-27T12:49:06.657Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","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/merumerutho.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":"2018-04-06T23:03:28.000Z","updated_at":"2018-12-01T10:52:48.000Z","dependencies_parsed_at":"2024-08-08T21:44:58.511Z","dependency_job_id":null,"html_url":"https://github.com/merumerutho/Socks","commit_stats":null,"previous_names":["merumerutho/socks"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merumerutho%2FSocks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merumerutho%2FSocks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merumerutho%2FSocks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merumerutho%2FSocks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merumerutho","download_url":"https://codeload.github.com/merumerutho/Socks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244960170,"owners_count":20538761,"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":[],"created_at":"2024-10-14T06:07:00.805Z","updated_at":"2026-05-03T09:34:17.793Z","avatar_url":"https://github.com/merumerutho.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Socks\nSocks is an experimental server developed with the purpose of learning how to build a real-time multi-client application with C and Löve2D.\n\n## Client\n\nNeeds [Love2d](https://love2d.org/)! \n\n- Install Love2d\n- Download the client\n- Configure its host editing the source\n- Open a terminal in the folder\n- Execute\n```bash\nlove .\n```\nIt's that easy! Try opening multiple clients with the server on!\n\n## Server\n\nWritten in POSIX C.\nCompile server with gcc, then execute. Should have no problems with that.\n\n## Features\n\nAt the current stage, Socks implements a basic \"connection\" protocol defined at application level based on UDP packets (which are actually connectionless datagrams). This is a workaround used by many online games to keep the performances high and still allow for connections. \n\nUsers are allowed to connect with a unique ID to the server (uniqueness check not yet implemented, in next revision the ID will be assigned from the server itself, instead of client). \n\n- __Movement Prediction__: \nA connected client starts periodically sending packets containing player position and movement direction.\nIf the server recognizes a movement change, it sends a packet containing that information to all the clients.\nThis way, the clients can render the movement in that direction.\nAs soon as the server recognizes another movement change, it sends that info to all the clients again, so that they can re-adjust the current position and movement of the player moving.\nThis allows for only two packets per direction change to be exchanged instead of a periodical exchange of the actual position which could easily congest the network and appear laggy for any user. \nThe clients are actually rendering a predicted movement which isn't validated by the server until a direction change packet arrives.\n\n- __Chat__:\nAn ASCII chat with server-based spam timeout and hash control for integrity. It just works.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerumerutho%2Fsocks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerumerutho%2Fsocks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerumerutho%2Fsocks/lists"}