<p>I'm familiar with C#, php and python. I'm debating picking up GoLang for a networked <a href="https://en.wikipedia.org/wiki/MUSH">MUSH</a>. For those familiar with MUSHes and Go, does this sound feasible?</p>
<hr/>**评论:**<br/><br/>xenith87: <pre><p>It works fine, I've built one myself in Go. It was much nicer working with Go than C, but that was probably more due to the aging C codebase than anything.</p></pre>butwithrobots: <pre><p>Thanks much! Can I ask some things like what you use for deployment and DB stuff?</p></pre>robertmeta: <pre><p>Start with SQLite and "scp binary". :) </p></pre>xenith87: <pre><p>Go compiles down to a single binary, so either compile the binary on the target server, or make sure you cross compile it correctly if developing on a different platform. Then its just a matter of copying it to the server and building an appropriate startup script (sysvinit, upstart, supervisor, systemd, etc).</p>
<p>Like <a href="/u/robertmeta" rel="nofollow">/u/robertmeta</a> said, you should just start with sqlite if you want to use a database, or you can just keep it simple and start with filesystem storage (perhaps using json as the data format).</p></pre>robertmeta: <pre><blockquote>
<p>or you can just keep it simple and start with filesystem storage (perhaps using json as the data format).</p>
</blockquote>
<p>I think an argument could be made SQLite is simpler than custom marshaling. Heck, if nothing else for having ACID for multiplayer transactions I feel it gives a great simplification over custom marshaling. </p></pre>xenith87: <pre><p>Heh, I just use the DB/files as a cold storage. Anything active is kept in memory, and just saved/written to disk every 15 minutes. No need to sync reads/writes/transactions. Works fine for something small scale like this.</p></pre>robertmeta: <pre><p>You still have to deal with order of operations even in memory. Transactions and guaranteed order are awesome for this. Additionally, SQLite can be an in-memory database!</p></pre>everdev: <pre><p>What was your game? Would be curious to check out the code too of its open source.</p></pre>fubo: <pre><p>Just make the in-game scripting language something slightly saner than TinyMUSH/PennMUSH has, please. :)</p></pre>natefinch: <pre><p>A MUD was one of the first things I worked on in Go, just as a way to feel my way around the language. I have no experience coding a MUD, but played them a lot in college, so figured, why not? Go is a great language for it... possibly the perfect language, honestly. High concurrency and all text-based networking stuff is perfect for Go. Here's my repo: <a href="https://github.com/natefinch/claymud" rel="nofollow">https://github.com/natefinch/claymud</a>, though it's no where near complete... I honestly don't even remember what state I left it in. At one point I could walk around in the world, but then I started refactoring some stuff and I'm not sure where I ended up.</p>
<p>I started using boltdb (<a href="https://github.com/boltdb/bolt" rel="nofollow">https://github.com/boltdb/bolt</a>) for storage, since it required zero setup and is pure go, so I didn't need any external dependencies. It's technically a key value store, but it works well enough for a MUD if you're not too worried about the integrity of highly relational data... which I suspect you're not.</p>
<p>Check out wolfmud: <a href="http://www.wolfmud.org/" rel="nofollow">http://www.wolfmud.org/</a> That guy wrote his original MUD in Java back in the day and is now rewriting it from scratch in Go. He and I have talked back and forth some. He seems a lot more dedicated than I could really be on mine, though it's obviously still a side project for him.</p>
<p>As for scripting languages, I highly recommend looking into Lua - it's what a lot of MMOs use, and it's a lot more sane than most hand-rolled scripting languages. There are a couple Lua interpreters in Go, I recommend <a href="https://github.com/Shopify/go-lua" rel="nofollow">https://github.com/Shopify/go-lua</a>, since it was written by a large company and should be well supported and complete.</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传