8

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

  1. 我应该使用什么语言?解释还是编译?这有什么不同吗?SMAUG 是用 C 语言编写的。我对很多语言都很熟悉,学习更多也没有问题。
  2. 有没有我应该遵循的特定方法来不妨碍性能?面向对象,功能等?
  3. 我应该使用什么介质来存储数据?平面文件(这是 SMAUG 使用的),或类似 SQLite 的东西。两者的性能优缺点是什么?
  4. 是否有任何人知道如何开始这样的项目的指南?

我希望它可以扩展以允许 50 名玩家同时在线,而不会降低性能。如果我使用 Ruby 1.8(非常慢),与使用 Python 3.1(更快)或编译的 C/C++ 相比会有所不同吗?

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

4

2 回答 2

11

我试一试:

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

这有点过时了,我敢肯定有不同意见。:) 祝你好运!

于 2009-12-04T21:11:03.620 回答
1

这是一个基于文本的游戏,对吧?在这种情况下,使用当前的硬件,您似乎只需要担心不会意外创建 O(n**2) 算法。即使有 50 个用户,这也不会太糟糕。

于 2009-12-04T21:16:56.930 回答