README.md
# DragonMUD [](http://waffle.io/bbuck/dragon-mud)[](https://travis-ci.org/bbuck/dragon-mud)[](https://codeclimate.com/github/bbuck/dragon-mud)[](https://codeclimate.com/github/bbuck/dragon-mud)[](https://coveralls.io/github/bbuck/dragon-mud?branch=master)[](https://discordapp.com/channels/141274099262423040/141274099262423040) DragonMUD is a dream of mine, building a new MUD engine for experience and funbefore building my own game on top of it. The engine will have a very opinionatedidea of game rules (such as how skills works, etc.) but outside of game ruleswill be entirely customizable through scripts (using Lua) and being open sourcewould be open to forks with custom game rules implemented. ## Why Go? I love C and C++ but they're older and slightly more complex languages to setup and maintain. [Go](https://golang.org/) strives to be a "modern" C and wastherefore a good choice in my opinion. It also supports concurrency out of thebox in a very easy to use and understand way. It's also relatively low levelenough for the purpose of a game server running. ## Why Lua? I wanted to write my own language, and for a Ruby attempt at this project Iactually did. You can find it [here](https://github.com/bbuck/eleetscript) butit was a lot of work, has a lot of holes and is relatively unfamiliar to anyonewho may or may not be used to scripting games. On the other hand, Lua has beenaround. It's been tested and it has a slew of core features that would begreat to leverage. It's also very common among games as a scripting layer andbecame a prime choice to replace a custom built engine. # Roadmap I have grandiose plans. At the moment, they're not divided into versions but asthis project matures I will clean up and define these details more and more. - [ ] MUD Server - [ ] Database backed server, can choose which database (default SQLite) - [ ] Admin web interface with game building capabilities - [ ] Scriptable server hooks using Lua files - [ ] In game scripts written in Lua - [ ] Test suites with extensive coverage (protected with Coveralls) - [ ] Code climate monitoring GPA of code, maintaining a A - B grade for overall project - [ ] TravisCI integration to easily demonstrate stable builds # Contributing If you wish to work on this project with me, fork it, choose a task and do yourwork for that task before making a pull request. I will be using the [GitFlow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)methodology for maintaining this repository so keep your work out of `master`and `develop` but target `develop` for merging. I will reject any pull request (no matter how awesome) that aren't done in a'feature branch.' Sorry to be that guy, but I want to keep this project cleanand I want the master branch to represent the latest stable codebase. Do all of your work to resolve an issue on the original repository, if an issuedoesn't exist for what you want to do then create one for it. If I'm unsure ofthe necessity for you're work we'll discuss it on the issue and go from there. ## Building From Source To manage this project and ensure reproducible builds I chose to use the [glide](https://github.com/Masterminds/glide)dependency manage for Go. What this means is that you'll need Glide to ensureyou get the same build that I do. *Please do not update any dependency withoutexplicit reasoning to defend the upgrade.* If required to install newdependencies you can simply do `glide get`. This will add the dependency to `vendor/`which should not be committed. So the process to set up for contributions is to fork it, and then `go get` yourproject: ```shgo get github.com/myusername/dragon-mudcd $GOPATH/src/github.com/myusername/dragon-mudglide install``` At this point, you can either rename `/myusername/` to `/bbuck/` or you cansymlink `$GOPATH/src/github.com/myusername/dragon-mud` to `$GOPATH/src/github.com/bbuck/dragon-mud`to avoid having to rewrite import paths. To build your project: ```shgo install github.com/bbuck/dragon-mud/cmd/...``` # License Copyright 2016 Brandon Buck Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.