MUD编程问题

时间:2009-12-04 20:12:02

标签: networking mud

我曾经根据Smaug Codebase播放MUD。它是高度定制的,但核心是相同的。我有这个MUD的源代码,我有兴趣编写自己的(只是为了一个有趣的项目)。我有一些问题,主要是关于设计方面。也许有人可以帮我一把忙?

  1. 我应该使用哪种语言?解释还是编译?这有什么不同吗? SMAUG是用C语言编写的。我对很多语言很满意,并且学习更多内容没有问题。
  2. 我是否应遵循特定的方法来阻止性能?面向对象,功能性等?
  3. 我应该使用什么媒介来存储数据?平面文件(这是SMAUG使用的),或类似SQLite的东西。两者的表现优点/缺点是什么?
  4. 有没有人知道如何开始这样的项目的指南?
  5. 我希望它可以扩展到允许50个玩家同时在线,而不会降低性能。如果我使用Ruby 1.8(非常慢),与使用Python 3.1(更快)或编译C / C ++相比,它会有所不同吗?

    如果有人可以伸出援手并提供一些信息或建议,我将永远感激。

2 个答案:

答案 0 :(得分:11)

我会试一试:

  1. 2009年,对于50人游戏,没关系。你可能想要选择一种你熟悉分析工具的语言,如果你想进一步增长它,但是由于RAM现在如此便宜,驱动早期LPMUD(我有经验)和DikuMUD(这对你的Smaug来自)不适用。 (LPMUD可以在8MB RAM的机器上处理大约10-15名玩家)
  2. 编程风格并不一定会导致性能上的困难,像Amazon's 'obidos' webserver这样的大型网站是用C语言编写的,但像原始Yahoo Stores这样的大型网站都是用Lisp编写的,StackOverflow是用ASP编写的.NET等我个人/使用C但很多人会称我为虐待狂。
  3. 平面文件在当今大量数据存储的时代都是毫无意义的,有特殊情况例外(大型邮件服务器有时使用'maildir',例如结构化平面文件)。您的游戏规模可能意味着您不会因数据检索延迟而陷入巨大的缓慢,但是在崩溃的情况下数据完整性可能会成为最有说服力的论据。
  4. 不知道任何指南,但我要做的是尝试将游戏作为一个愚蠢的聊天服务器启动,确保用户可以登录并做某事(接受他们的输入并将其转发给所有人其他用户),然后构建允许特定登录,所以你将开始面临用户名/密码处理和用户选项设置/存储/检索的挑战...然后开始添加gamedriver元素(得到tic tac toe游戏在游戏中工作),然后再复杂一点(使用可以拾取/放下/互相攻击的对象进行5室设置),然后添加一些非玩家角色,然后担心在Diku中啜饮-derived smaug城堡/等与他们一起工作。 :)
  5. 这有点偏离袖口,我确信有不同意见。祝你好运!

答案 1 :(得分:1)

这是一款基于文字的游戏,对吗?在这种情况下,使用当前的硬件,似乎你不必担心的是不小心创建一个O(n ** 2)算法。对于50个用户来说,即便这样也不会太糟糕。