问题标签 [mud]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
416 浏览

c# - 游戏项目的类层次结构建议

我正在编写一个 MUD 引擎,我刚刚开始研究需要可扩展的游戏对象模型。

我需要帮助主要是因为我所做的事情感觉很混乱,但我想不出另一种更好的解决方案。

我有一个名为 的类MudObject,另一个名为的类Container,一个容器可以包含多个MudObjects,但它MudObject本身就是一个,但是MudObject需要知道它们包含在什么中。

所以它们看起来像这样:

(请注意,这些只是示例,一些限定符和访问修饰符、属性等被遗漏了)

现在这本身看起来很混乱,但让我们添加一些其他的东西:

Item是一个MudObject所有视觉物品(例如武器)都将从中继承的,但是其中一些也需要是容器(例如箱子)。但是在c#中没有多重继承之类的,所以归结为接口,最好的选择是使容器成为接口(据我所知)但是我不希望它是有原因的,那就是向容器中添加一个MudObject将导致容器更新MudObjects.containedBy值。

有什么想法可以完成这项工作,还是我陷入了让事情变得过于复杂的陷阱?
如果是这样,你还有什么建议?

0 投票
6 回答
1033 浏览

client - 跨操作系统远程登录客户端的远程登录库和语言选择?

我正在寻找启动一个MUD 客户端应用程序,它连接到托管在 telnet 服务器上的 MUD。对我来说唯一重要的是它可以在任何操作系统上轻松高效地运行。除了这个要求,我真的不喜欢任何语言。

因此,我正在寻找一个免费可用的 telnet 客户端库,我可以在此基础上构建我的应用程序,这样我就不必过多地处理协议的细节。

0 投票
7 回答
894 浏览

mud - 有没有人有任何有用的资源可以分享或提供开发 MUD 的提示?

作为一个爱好项目,我正在尝试创建一个 ROM(基于 Diku-Merc)的衍生产品。(现已不复存在)如果有人做过类似的事情并有一些有用的资源可以分享或提供提示,我将不胜感激。我发现很多资源(例如邮件列表)不再有效,并且许多链接已失效。

我选择了 ROM,因为这是我作为玩家所熟悉的,但源代码比我遇到的任何东西都复杂,我不介意选择更容易理解的代码库。在我认真潜水之前的任何建议也将不胜感激。

至于一般的泥泞社区,除了泥泞连接器之外,我知道的不多,因为我一直扮演的用户/玩家角色多于开发人员。我最看重的是一个可以让我得到问题答案的宽容和积极的地方。

0 投票
1 回答
1473 浏览

c# - C# Telnet 代理

我正在用 C# 开发一个可扩展的 MUD/ORPG 游戏服务器框架。作为软件包的一部分,我想包含一个可以安装在用户机器上的 SOCKS5 代理客户端。该代理客户端将位于用户的标准 telnet 客户端(zMUD、GMUD、MUSHclient 或只是普通 telnet)和 MUD 游戏服务器之间,并查找某些数据包。这些数据包会告诉客户端打开不同的窗口和信息,这些信息在传统的基于文本的 telnet 客户端上是不可用的。由于这是一个游戏应用程序,例如,可以显示世界地图或穿戴设备列表。

我正在寻找有关代理开发如何工作的任何信息/指导,以及我可以从哪里开始制作它。我目前有一个基本的 C# telnet 客户端,并且服务器本身有一个多线程的 telnet 监听器,这一切都已经解决了 - 所以系统可以进行全面测试,我只需要知道我应该做什么来制作中间人(代理) . 任何建议都非常感谢。

0 投票
5 回答
607 浏览

database - 你能提供一些关于设置我的数据库的建议吗?

我正在用 Python 开发 MUD(多用户地牢),现在我需要添加一些房间、敌人、物品等。我可以硬编码所有这些,但看起来像这样更多的是数据库的工作。

但是,我以前从未真正使用过数据库,所以我想知道您是否对如何设置有任何建议?

  • 我应该以什么格式存储数据?
    • 我正在考虑为每个实体在数据库中存储一个 Dictionary 对象。以 htis 的方式,我可以简单地即时向数据库添加新属性,而无需更改数据库的列。这听起来合理吗?
  • 我应该将所有信息存储在同一个数据库中,但存储在不同数据库中的不同表或不同实体(敌人和房间)中。

  • 我知道这将是一罐蠕虫,但是对于一个好的数据库有什么建议?MySQL是一个不错的选择吗?

0 投票
2 回答
1398 浏览

networking - MUD 编程问题

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

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

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

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

0 投票
2 回答
697 浏览

java - 我应该如何处理 Java MUD 中的持久性?OptimisticLockException 处理

在获得原始开发人员许可的情况下,我正在用 Java 重新实现一个旧的 BBS MUD 游戏。目前我正在使用带有 EJB 会话外观的 Java EE 6 用于游戏逻辑和 JPA 用于持久性。我选择会话 bean 的一个重要原因是 JTA。

我对网络应用程序更有经验,如果你得到一个 OptimisticLockException,你只需抓住它并告诉用户他们的数据已经过时,他们需要重新申请/重新提交。在多用户游戏中一直以“再试一次”来回应会带来可怕的体验。考虑到我希望几个人在战斗中瞄准一个怪物,我认为 OptimisticLockException 的可能性会很高。

我的视图代码(呈现 telnet CLI 的部分)是 EJB 客户端。我应该捕获 PersistenceExceptions 和 TransactionRolledbackLocalExceptions 并重试吗?你如何决定何时停止?

我应该切换到悲观锁定吗?

在每个用户命令过度杀伤后都坚持吗?我是否应该将整个世界加载到 RAM 中并每隔几分钟转储一次状态?

我是否让我的会话外观成为一个 EJB 3.1 单例,它可以作为一个阻塞点,从而消除执行任何类型的 JPA 锁定的需要?EJB 3.1 单例用作多读取器/单写入器设计(您将方法注释为读取器和写入器)。

基本上,对于应用程序中的高并发数据更改,在向用户呈现重新提交/重试提示是不可接受的情况下,最好的设计和 java 持久性 API 是什么?

0 投票
1 回答
1059 浏览

multithreading - Clojure实现多线程的最佳方式?

我正在开发一个用 Clojure 编写的 MUD 客户端。现在,我需要两个不同的线程。一种接收来自用户的输入并将其发送到 MUD(通过一个简单的 Socket),另一种从 MUD 读取并显示输出给用户。

我应该只使用 Java 线程,还是应该求助于某些 Clojure 特定的功能?

0 投票
2 回答
435 浏览

python - 如何让多个玩家连接到我的 MUD?

我最近创建了一个简短的多用户地牢。我制作的东西是游戏的引擎和实际的 MUD 本身,所以当我点击文件时,你可以播放 MUD。我遇到的问题是,我不知道如何连接它以便多个玩家可以玩。你把它连接到服务器还是什么的?我不知道该怎么做,因为我是 Python 和 MUD 的新手。有些人可以通过提供一些示例来帮助我解决代码以及如何连接并启动和运行这个游戏吗?

0 投票
7 回答
1795 浏览

python - 关于定时事件的MUD(游戏)设计概念问题

我正在尝试构建 MUD(多人互动小说游戏)

我处于设计/概念化阶段,遇到了一个我无法提出解决方案的问题。我希望一些更有经验的程序员能给一些建议。

这是我能解释的最好的问题。当玩家决定执行一个动作时,他会向服务器发送一个命令。然后服务器处理命令,确定是否可以执行该操作,然后执行该操作或以无法执行的原因进行响应。一个动作可能失败的一个原因是玩家正忙于做其他事情。例如,如果一个玩家在战斗中刚刚挥动了一把巨大的阔剑,他可能需要 3 秒才能重复这个动作。如果玩家很快再次尝试挥杆,游戏将响应指示他必须等待 x 秒才能这样做。现在,我可能可以毫不费力地设计这个。我遇到的问题是如何从 AI 生物中复制这种行为。服务器自行执行的所有事件,也不是对玩家所做的事情的立即反应,必须是时间敏感的。一些邪恶的怪物对你施了咒语,但必须等待 30 秒才能再次施法……我想我可能会将所有这些事件添加到某种事件队列中,但我怎样才能使该事件队列对时间敏感?