{"id":20565019,"url":"https://github.com/aermoss/aerics","last_synced_at":"2025-04-14T15:14:11.185Z","repository":{"id":57408341,"uuid":"451977455","full_name":"Aermoss/Aerics","owner":"Aermoss","description":"A networking library written in Python for online games.","archived":false,"fork":false,"pushed_at":"2024-12-06T14:01:16.000Z","size":16,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T15:14:06.086Z","etag":null,"topics":["client","multiplayer","multiplayer-game","multiplayer-game-server","server","server-client"],"latest_commit_sha":null,"homepage":"","language":"Python","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/Aermoss.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":"2022-01-25T17:34:06.000Z","updated_at":"2024-12-06T14:01:27.000Z","dependencies_parsed_at":"2024-11-16T05:01:19.603Z","dependency_job_id":null,"html_url":"https://github.com/Aermoss/Aerics","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"21d25a02b339e79c46a6e28163b4b00ea027d348"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aermoss%2FAerics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aermoss%2FAerics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aermoss%2FAerics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aermoss%2FAerics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aermoss","download_url":"https://codeload.github.com/Aermoss/Aerics/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248904637,"owners_count":21180835,"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":["client","multiplayer","multiplayer-game","multiplayer-game-server","server","server-client"],"created_at":"2024-11-16T04:30:27.817Z","updated_at":"2025-04-14T15:14:11.173Z","avatar_url":"https://github.com/Aermoss.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aerics\r\nA networking library written in Python for online games.\r\n\r\n## Getting Started\r\n1) Install Python\r\n2) Open cmd/terminal and type:\r\n\r\n```\r\npip install Aerics\r\n```\r\n\r\n## Examples\r\n# Creating a server\r\n``` python\r\nimport aerics, sys\r\n\r\ndef main(argv):\r\n    server = aerics.Server(\"localhost\", 5656)\r\n\r\n    @server.event\r\n    def setup(globals):\r\n        pass\r\n\r\n    # @server.event\r\n    # def update():\r\n    #     pass\r\n\r\n    @server.event\r\n    def on_connection(connection, address, id, clients, globals):\r\n        print(\"New connection\")\r\n        return {\"x\" : 0, \"y\" : 0}\r\n\r\n    @server.event\r\n    def on_disconnection(connection, address, id, clients, globals):\r\n        print(f\"Client {id} disconnected\")\r\n\r\n    @server.event\r\n    def on_recv(connection, address, id, clients, globals, data):\r\n        data = data.split(\",\")\r\n\r\n        if data[0] == \"move\":\r\n            clients[id][\"x\"], clients[id][\"y\"] = int(data[1]), int(data[2])\r\n            return clients\r\n\r\n        if data[0] == \"get_id\":\r\n            return id\r\n\r\n        if data[0] == \"close\":\r\n            server.disconnect(connection)\r\n            return None\r\n\r\n    server.listen()\r\n    \r\nif __name__ == \"__main__\":\r\n    sys.exit(main(sys.argv))\r\n```\r\n\r\n# Creating a client\r\n``` python\r\nimport forges, aerics, sys\r\n\r\nclass Window(forges.Window):\r\n    def __init__(self):\r\n        super(Window, self).__init__()\r\n\r\n        self.client = aerics.Client(\"localhost\", 5656)\r\n        self.client.connect()\r\n        self.client.send(\"get_id\")\r\n        self.id = self.client.recv()\r\n        self.clients = []\r\n\r\n        self.player = forges.prefabs.TopViewController()\r\n\r\n    def update(self):\r\n        self.client.send(f\"move,{self.player.x},{self.player.y}\")\r\n        clients = self.client.recv()\r\n        del clients[self.id]\r\n\r\n        while len(clients) != len(self.clients):\r\n            if len(clients) \u003c len(self.clients):\r\n                self.clients[0].destroy()\r\n                self.clients.pop(0)\r\n\r\n            else:\r\n                self.clients.append(forges.Entity(width = 50, height = 100))\r\n\r\n        for index, i in enumerate(clients):\r\n            self.clients[index].x, self.clients[index].y = clients[i][\"x\"], clients[i][\"y\"]\r\n\r\ndef main(argv):\r\n    window = Window()\r\n    forges.run()\r\n    return 0\r\n\r\nif __name__ == \"__main__\":\r\n    sys.exit(main(sys.argv))\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faermoss%2Faerics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faermoss%2Faerics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faermoss%2Faerics/lists"}