Articles of 泥

在执行动作之前,如何处理断开动作的主题?

假设我有一个CEntity类来描述游戏中的每个实体。 每个实体类都有它自己的std::vector CAction std::vector 。 每个CAction只是一个实体可以执行的操作,例如CActionFight将具有战斗的逻辑。 要命令我的玩家(或任何其他实体)打我所做的一切是: CActionFight *pActionFight = new CActionFight(); pActionFight->SetTarget(pTargetEntity); pPlayer->AddAction(pActionFight); 在这个动作开始之前,所有其他先前排队的动作都必须完成。 想象一下玩家开始通过pTargetEntity执行pTargetEntity ,突然, pTargetEntity断开连接。 pTargetEntity无效,这是我的问题。 你通常如何处理这些行为? 如果在服务器端收到一个实体的断开连接事件,是否遍历映射中所有实体的动作,并删除与刚刚断开连接的实体有关的动作? 编辑喜欢乔希的方法,并实施解决scheme,听起来非常明智,像一个魅力工作。 // Example of an action, checking wether Entity is still valid. void CActionFight::Execute() { m_iCycles–; if(m_iCycles>0) { if(m_pTarget->IsValid() == false) { m_pTarget = NULL; m_bValid = false; } else { printf("Attacking.%s\n", m_pTarget->GetName().data()); } […]

通过套接字延迟命令执行

我一直在试图修复游戏循环实时(滴答延迟)MUD。 我意识到使用Thread.Sleep在用户通过select客户端(Zmud等)(例如east,south,southwest )的垃圾邮件命令时会显得很笨重,然后等待三个move ticks,然后输出以前的几个房间的所有内容。 游戏循环基本上在每个打勾期间(50ms)为每个套接字调用一次Flush和Fill方法, private void DoLoop() { Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); while (running) { // for each socket, flush and fill ConnectionMonitor.Update(); stopWatch.Stop(); WaitIfNeeded(stopWatch.ElapsedMilliseconds); stopWatch.Reset(); } } Fill方法触发命令事件,但如前所述,它们当前阻塞使用Thread.Sleep 。 我试图给状态对象添加一个“准备好”标志,试图执行命令以及一系列垃圾邮件命令,但是它最终执行一个命令并排队,即每个后续命令执行一些排队的命令之前已经执行了。 我必须错过关于计时器的事情。 private readonly Queue<SpammedCommand> queuedCommands = new Queue<SpammedCommand>(); private bool ready = true; private void TryExecuteCommand(string input) { var commandContext = […]

默认移动键绑定roguelike?

我正在开发一个基于文本的MUD,但不像MUD,我正在开发没有telnet和制作自定义界面。 考德城堡或矮人堡垒。 游戏只有6个方向你可以走路。 北,东,南,西,上,下。 所以主要的方向加上和下来。 问题是我想把这些方向映射到数字键盘上。 但往往这些types的游戏包括中间方向东北,西北,东南,西南,所以我不知道我应该真的使用其他游戏的键绑定。 我可能是错的。 我不知道任何其他游戏只使用我使用的方向,还包括一个自定义的界面。 我个人的感觉是这个方向会和numpad绑在一起,但是如果有一种事实上的标准,那我更喜欢。 我打算添加关键的重新绑定,但我试图找出默认应该是什么。 n = 8 e = 6 w = 4 s = 5 u = 9 d = 7

任何人都有来源的图片/屏幕截图/泥MOC OLC系统的演示?

我真的想获得一些MUD(多用户域/多用户地下城)OLC(泥在线创建)的图像,使用我自己的网页游戏项目泥浆使用的npcs /怪物/角色/区域/房间的结构http://www.ninjawars.net ),其特点是近乎主要的使用文本本身。 我已经玩了好几年了,经历了这个泥浆的OLC系统,但是泥浆已经stream失了,所以我正在寻找 我试着编译从源代码(ROM 2.4)的泥浆types,但一直没有能够完成。 我期待已经有一些物品/怪物等的图像,但是我一直没有find任何可以在我的游戏中执行相同的概念。 如果有一些现场的方式可以访问OLC的演示,那会更好。

我怎样才能为我的MUD引擎建立一个graphics地图?

我正在从头开始编写基于文本的游戏,有一件事我不知道该怎么做,就是地图系统。 在我完全用Javascript编写的泥泞的引擎(这将在Node.js环境中执行)中,我使用这种数据来devise一个区域和房间之间的链接。 /** * [003]-[004] * | | * [001]-[002] [007] * | | * [005]-[006] **/ var map = { "001" : { "Id" : "001", "Name" : "Room 001", "Directions" : { "N" : "", "S" : "", "E" : "002", "W" : "" } }, "002" : { "Id" : "002", "Name" […]

我怎样才能让MUD永久性的死亡对玩家来说似乎是可以接受和公平的?

我已经考虑过写MUD多年了,我有很多想法,我的朋友认为是非常酷的(这就是我希望得到的任何地方 – 口口相传)。 事情是,有一件事我一直想要,我的朋友和陌生人讨厌:永久的死亡。 现在,我得到的情绪反应是每次都是内心的反感。 我很确定我是唯一一个想要这个的人,或者如果我不是,我只是一小部分人。 现在,我想要的原因是因为我希望球员的行为很重要 。 与其他很多MUD不同,这些MUD有一套静态的城邦和社会机构等等,我希望我的球员能够做些什么,如果我能得到的话,实际上改变这种状况。 这包括杀人。 如果你杀了一个人,你没有让他们超时,你杀了他们。 当你杀人时会发生什么? 他们走开。 他们半小时之内不会回来再说一遍。 他们走了 永远 。 通过使死亡不是永久性的,你可以使死亡无关紧要。 如果角色弧顶的高潮正在获得超速票,那将是相似的。 它削减它。 非永久性死亡唾弃死亡。 我怎么能:1)说服我的玩家(和随机的人),这实际上是一个好主意? 2)find一些其他的方式来使死亡和暴力事件与现实生活中一样重要(除了在游戏中,当然)无字符删除? 那里有什么替代方法?

MUD源代码

我一直没能find很多旧的,开源的泥源代码。 我发现他们的方式非常适用于基于文本的/基于浏览器的游戏,我希望能够浏览他们的部分灵感。 例如,我们有这么大的泥土清单以及它们之间的关系,但是很less有通过访问源代码的方式。 http://en.wikipedia.org/wiki/MUD_trees 通常(我在看你,dikumud, http://www.dikumud.com/links.aspx )泥浆本身甚至没有一个工作链接的来源。 https://github.com/alexmchale/merc-mud有一个merc的副本,我发现它肯定包含了它的历史中的其他作品,但是挑选似乎很稀疏。 有没有人有更好的资源获得访问MUD源代码比这些?