首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于计时事件的MUD (游戏)设计概念问题

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

Stack Overflow用户
提问于 2010-05-01 06:37:23
回答 7查看 1.8K关注 0票数 4

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

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

这是我所能解释的最好的问题。当玩家决定执行一个动作时,他会向服务器发送一个命令。然后,服务器处理该命令,确定是否可以执行该操作,并且要么执行该操作,要么响应不能执行该操作的原因。一个动作可能失败的原因之一是玩家忙于做其他事情。例如,如果玩家在战斗过程中,刚刚挥舞了一把巨大的大刀,他可能需要3秒才能重复这个动作。如果玩家尝试再次挥杆,游戏将做出响应,指示他必须等待x秒才能这样做。现在,我可以毫不费力地设计它。我遇到的问题是如何从人工智能生物中复制这种行为。所有由服务器自己执行的事件,也就是不是对玩家所做的事情的即时反应,都必须是时间敏感的。一些邪恶的怪物对你施了魔法,但必须等待30秒才能再次施法。我想我可能会将所有这些事件添加到某种类型的事件队列中,但是如何才能使事件队列对时间敏感呢?

EN

回答 7

Stack Overflow用户

发布于 2010-05-01 06:43:15

MUDs操作通常在“ticks”上执行,而不是立即执行-这允许延迟的有限影响,并允许monster的命令插入队列并公平处理。

就我个人而言,我不喜欢这种方法,但几乎99%的MUD都使用它。您需要设计一个健壮的命令队列和事件队列,它可以处理AI和用户命令。然后,您可以向AI命令添加“虚拟延迟”,这些命令可能是预定义的,也可能是所有用户的平均延迟,或者您喜欢的任何东西。

票数 4
EN

Stack Overflow用户

发布于 2010-05-01 19:57:42

AI是客户。

它们只是从最远的角度看“服务器的一部分”。它们实际上在主游戏引擎之外。他们是没有人类的专业客户。

AI客户端与服务器具有与人类客户端相同的接口。

票数 3
EN

Stack Overflow用户

发布于 2010-05-01 07:18:52

好吧,你的人工智能控制的实体有某种“我下一步该怎么做?”方法,对吧?当另一个操作正在进行时,只需让该方法返回“我很忙,继续做我正在做什么”结果即可。

例如。

代码语言:javascript
复制
class ToughGuy(AI):
   Action_Idle, Action_BroadswordSwing, Action_CastingMagic = range(3)

   MagicRange = 10
   MagicTime = 8
   MeleeRange = 4
   MeleeTime = 2

   def __init__(self):
      self.action = ToughGuy.Action_Idle
      self.actiontimer = 0

   def Update(self, timestep):
      if self.actiontimer <= 0:
         self.action = ToughGuy.ActionIdle
      else
         self.actiontimer -= timestep

      if self.action == ToughGuy.Action_Idle:
         global player # don't do this
         if self.AmIFacing(player):
            distance = DistanceBetween(self, player)
            if distance < ToughGuy.MeleeRange:
               self.action = ToughGuy.Action_BroadswordSwing
               self.actiontimer = ToughGuy.MeleeTime
            elif distance < ToughGuy.MagicRange:
               self.action = ToughGuy.Action_CastingMagic
               self.actiontimer = ToughGuy.MagicTime

等等。对于可变编码标准,很抱歉...;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2748084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档