{"id":18017863,"url":"https://github.com/zac-garby/term-rpg","last_synced_at":"2025-08-17T20:33:29.400Z","repository":{"id":116696281,"uuid":"113887473","full_name":"zac-garby/term-rpg","owner":"zac-garby","description":"A terminal-based mmorpg.","archived":false,"fork":false,"pushed_at":"2017-12-11T17:19:51.000Z","size":105,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-30T06:27:41.645Z","etag":null,"topics":["client","game","golang","multiplayer","rpg","server"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zac-garby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-12-11T17:19:46.000Z","updated_at":"2023-11-22T09:37:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"93b3185a-426b-44ff-a3e4-78de4784f2d1","html_url":"https://github.com/zac-garby/term-rpg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zac-garby%2Fterm-rpg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zac-garby%2Fterm-rpg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zac-garby%2Fterm-rpg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zac-garby%2Fterm-rpg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zac-garby","download_url":"https://codeload.github.com/zac-garby/term-rpg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230170225,"owners_count":18184241,"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","game","golang","multiplayer","rpg","server"],"created_at":"2024-10-30T04:26:00.705Z","updated_at":"2024-12-17T19:28:08.736Z","avatar_url":"https://github.com/zac-garby.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# term-rpg\n\n![](screenshots/mainmenu.png)\n\nTerm RPG will eventually be a multiplayer terminal-based MMORPG. At the moment,\nnot much actually works. This is what I've done so far:\n\n - Server\n    - The server and client communicate through gobs\n    - Clients can connect\n    - Only allows a new player if the new connection instantly sends client info\n - Client\n    - Movement\n    - Rendering of the world\n - UI\n    - Text, buttons, text fields\n\nSo you can move around and the basics kind of work. What I haven't done is much\nmore (in rough order of how much I need to do it).\n\n 1. A more reliable server\n    - Make it actually work properly\n    - Make the server ping clients periodically to check the connection is still active\n 0. Make the clients handle sudden disconnects better, e.g. crashes\n 0. World generation -- probably just lots of buildings\n    - Will probably include adding more tile types\n 0. A player list, both server- and client-side\n 0. A server-side console, e.g. `kick \u003cplayer\u003e`\n 0. A chat system with private and global messages\n 0. Instead of having the world size as a global constant, it should be set in the\n    server and all clients of that server should use the server's world size.\n    - Also, it'd then make sense for the client to load the world dynamically\n 0. An inventory\n 0. Randomly spawned loot boxes\n 0. Let the player build things\n 0. Allow the players to choose what character they want to represent their player\n 0. NPCs -- merchants, maybe enemies too\n 0. Maybe host a server on Heroku or something so I don't have to leave my computer on\n\n## How to use it\n\nGet the code and run it with these commands:\n\n```\ngo get github.com/Zac-Garby/term-rpg\ncd $GOPATH/src/github.com/Zac-Garby/term-rpg\ngo run main.go\n```\n\nI might also put some binaries on GitHub at some point.\n\nRunning these commands will open the main menu, where you can choose to either\nhost a server or join one as a client. Hosting a server will prompt you to enter\nthe port to host on (it's recommended to use the default one in there already),\nand joining a game will ask for a username and an address to connect to.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzac-garby%2Fterm-rpg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzac-garby%2Fterm-rpg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzac-garby%2Fterm-rpg/lists"}