{"id":13697766,"url":"https://github.com/bbuck/dragon-mud","last_synced_at":"2025-04-15T16:38:56.440Z","repository":{"id":51605482,"uuid":"49964592","full_name":"bbuck/dragon-mud","owner":"bbuck","description":"A text-based game engine written in Go and scripted with Lua.","archived":false,"fork":false,"pushed_at":"2023-10-24T18:42:53.000Z","size":4486,"stargazers_count":117,"open_issues_count":3,"forks_count":16,"subscribers_count":20,"default_branch":"develop","last_synced_at":"2025-03-28T22:27:26.958Z","etag":null,"topics":["game-engine","golang","lua","mud","mud-engine","mud-server","plugin-system","telnet"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bbuck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2016-01-19T16:07:12.000Z","updated_at":"2025-01-12T06:52:13.000Z","dependencies_parsed_at":"2024-06-20T15:43:34.065Z","dependency_job_id":"cdf8b1fd-3ce4-4cfa-9449-0c9e9fcf050b","html_url":"https://github.com/bbuck/dragon-mud","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbuck%2Fdragon-mud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbuck%2Fdragon-mud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbuck%2Fdragon-mud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbuck%2Fdragon-mud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbuck","download_url":"https://codeload.github.com/bbuck/dragon-mud/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249109811,"owners_count":21214228,"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":["game-engine","golang","lua","mud","mud-engine","mud-server","plugin-system","telnet"],"created_at":"2024-08-02T18:01:02.527Z","updated_at":"2025-04-15T16:38:56.414Z","avatar_url":"https://github.com/bbuck.png","language":"Go","readme":"# DragonMUD\n\n[![Build Status](https://travis-ci.org/bbuck/dragon-mud.svg?branch=develop)](https://travis-ci.org/bbuck/dragon-mud)\n[![Code Climate](https://codeclimate.com/github/bbuck/dragon-mud/badges/gpa.svg)](https://codeclimate.com/github/bbuck/dragon-mud)\n[![Issue Count](https://codeclimate.com/github/bbuck/dragon-mud/badges/issue_count.svg)](https://codeclimate.com/github/bbuck/dragon-mud)\n[![Discord Channel](https://img.shields.io/badge/discord-DragonMUD-blue.svg?style=flat)](https://discord.gg/78TCMuq)\n[![Go Report Card](https://goreportcard.com/badge/github.com/bbuck/dragon-mud)](https://goreportcard.com/report/github.com/bbuck/dragon-mud)\n\nDragonMUD is a dream of mine, building a new MUD engine for experience and fun\nbefore building my own game on top of it. The engine will be a firm foundation\nfor any kind of text based adventure (for now just Telnet, but eventually web\nand websocket versions as well). It will feature a plugin system allowing the\ncore of the game to be moldable from the ground up into what you truly desire\nfor your game.\n\n### Why should I use this?\n\nThat's really up to you. This project is for me, but I believe in sharing. I\nalso feel yet another new MUD engine may inspire some new games to be created\nin the genre, which would be amazing. I'm a huge fan of MUDs and feel that new\nentries have kind of become almost non-existent. Perhaps a new game and an\naccessible low-setup server framework would make it easier for new games to be\nquickly created.\n\n### What exactly is it?\n\nDragonMUD started life as an engine designed specifically for the MUD that I\nwanted to build, but before long it pivoted to being a base for text based\nmulti-user games. Leverage the power of Lua running on top of Go, DragonMUD\naims to provide a quick entry into the genre. Once you generate a new game you\ncan immediately start adding plugins that the community has put together to\npiece your game together. Want classic rooms? Grab a plugin, what geographically\norganized rooms? Grab a plugin, want a mapping system? Grab a plugin -- if you\ncan't find one, the build your own and share it with the community!\n\nDragonMUD provides the foundation and the glue code to allow many different\nplugins to come together and form a cohesive bond, allowing you to build the\ntext based game of your dreams (or non-game, if that's your thing).\n\n### What exactly is it not?\n\nDragonMUD is engineered specifically for text based games running over TELNET.\nIt doens't have to be games though, but it does need to function over TELNET.\nThere are plans to provide an HTTP server with websocket support in the future\nbut for the time being you should probably find another engine if you're\nlooking to do anything that isn't text-based.\n\n## Why Go?\n\nI love C and C++ but they're older and slightly more complex languages to set\nup and maintain. [Go](https://golang.org/) strives to be a \"modern\" C and was\ntherefore a good choice in my opinion. It also supports concurrency out of the\nbox in a very easy to use and understand way. It's also relatively low level\nenough for the purpose of a running a game server.\n\n## Why Lua?\n\nI wanted to write my own language, and for a Ruby attempt at this project I\nactually did. You can find it [here](https://github.com/bbuck/eleetscript) but\nit was a lot of work, has a lot of holes and is relatively unfamiliar to anyone\nwho may or may not be used to scripting games. On the other hand, Lua has been\naround. It's been tested and it has a slew of core features that would be\ngreat to leverage. It's also very common among games as a scripting layer and\nbecame a prime choice to replace a custom built engine.\n\n# Roadmap\n\nI have grandiose plans. At the moment, they're not divided into versions but as\nthis project matures I will clean up and define these details more and more.\n\n - [x] TravisCI integration to easily demonstrate stable builds\n - [x] Code climate monitoring GPA of code, maintaining an A - B grade for overall\n   project\n - [x] Test suite to validate working state of features, capturing as many\n   differing/edge cases as possible\n - [ ] Neo4j backed database features\n   - [x] Neo4j database connection library available to Lua (in development)\n   - [ ] ActiveRecord-esque Entity framework for the scripts to leverage\n - [x] Script engine for loading and executing Lua files.\n - [ ] Plugin system to allow for creation of whatever game one desires\n - [ ] Plugin manager (like `go get` but for DragonMUD plugins)\n - [ ] Telnet Server\n\n## Future\n\n - [ ] Web layer for defining and building any kind of web server on top of\n   the chosen application\n\n# Contributing\n\nPlease reference CONTRIBUTING.md for details on becoming a contributor and/or\ncollaborator.\n\n## Building From Source\n\nTo manage this project and ensure reproducible builds I chose to use the [glide](https://github.com/Masterminds/glide)\ndependency manage for Go. What this means is that you'll need Glide to ensure\nyou get the same build that I do. *Please do not update any dependency without\nexplicit reasoning to defend the upgrade.* If required to install new\ndependencies you can simply do `glide get`. This will add the dependency to `vendor/`\nwhich should not be committed.\n\nSo the process to set up for contributions is to fork it, and then `go get` your\nproject:\n\n```sh\ngo get github.com/bbuck/dragon-mud\ncd $GOPATH/src/github.com/bbuck/dragon-mud\nmake get-glide\nmake get-deps\n```\n\nTo build your project:\n\n```sh\nmake install\n```\n\nAnd if `make` is not available**, then install with the following command:\n\n```sh\nglide install\ngo get github.com/onsi/ginkgo/ginkgo\ngo get github.com/jteeuwen/go-bindata/...\ngo-bindata -pkg assets -o assets/assets.go -prefix assets/raw assets/raw/...\ngo install github.com/bbuck/dragon-mud/cmd/...\n```\n\n\\*\\* But keep in mind, `make` is used to engineer standard multi-step processes for\nbuilding/installing so it's highly advantageous to get a version for your OS\nup and running to use in place of trying to do everything manually.\n\n# Contributors\n\nBrandon Buck, [@bbuck](https://github.com/bbuck), \u003clordizuriel@gmail.com\u003e\n\n# License\n\nCopyright 2016-2017 Brandon buck\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","funding_links":[],"categories":["Codebases"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbuck%2Fdragon-mud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbuck%2Fdragon-mud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbuck%2Fdragon-mud/lists"}