首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >狼人(社会演绎)游戏设计模式

狼人(社会演绎)游戏设计模式
EN

Stack Overflow用户
提问于 2019-12-02 19:30:39
回答 1查看 90关注 0票数 0

我正在尝试开发一个像狼人(黑手党)这样的社会演绎游戏。

在游戏中,有一些具有可用和被动能力的角色。在夜间,玩家可以选择1个可用能力,并选择0或多个目标。在晚上的最后,所有的能力同时发生,第二天,这些能力的结果是有效的。

可用的能力包括:杀死某人,阻止某人在当晚使用某一异能,阻止任何异能被使用在某人身上。

被动能力可以是对任何类型的可用能力的免疫力。

我正在寻找一种软件设计模式/体系结构,以防止不同能力之间的相互依赖。

对于这个(也许)一般性的问题,我很抱歉,但我已经想了很长一段时间了。

EN

回答 1

Stack Overflow用户

发布于 2019-12-06 18:14:01

正如您所提到的,这是一个有趣的问题,也是非常笼统的问题。据我所知,黑手党的游戏有玩家,每个玩家都有指定的角色,每个角色都有一个或多个能力(通常是1)。没有必要在两种能力之间有依赖性。我们可以通过两种方式来模拟玩家利用他的能力否定或取代其他玩家的能力的场景:

1)正确排序能力的执行。例如,一个角色黑手党的玩家可以使用技能杀死一个特定的玩家,比如说我们将该玩家标记为待决被杀。但是,在同一天晚上,如果有角色医生的玩家拯救了同一个玩家,我们就可以取消被杀的玩家的标记,从而通过调用医生的“晚于”的能力来抵消杀人能力的影响。

2)如果我们不想按照适当的顺序执行这些能力,或者我们有一个无法进行排序的场景,那么我们也可以这样做。在一个晚上,能力集是有限的,可以有多个相同能力的实例(例如,有3个玩家指定为医生),但是即使在这种情况下,总能力实例(在这种情况下,“保存”能力)也是有限的。现在,class类可以有一个公共方法来使自己挂起。例如,如果一个具有某种特殊角色的玩家想要阻止黑手党当晚杀人的能力,它可以通过调用中央GameController类上的一个方法来调用他的能力,他想要执行他的这个能力。然后,GameController可以对游戏中存在的杀伤能力的有限实例调用挂起方法。

因此,在上述两种能力建模和执行方法中,能力之间不存在依赖关系。基本的想法是,一种希望被执行的能力,独立于其他能力向中央GameController注册自己。GameController控制执行,并在每晚结束时计算最后的游戏状态。

在每个夜晚的开始,每种能力的新实例都可以被创造出来。如果有跨夜生活的能力,那么他们就可以这样做。但无论如何,必须有有限的能力实例。

本设计中的一些实体是玩家、角色、能力、GameController、GameState。

希望这能有所帮助!

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

https://stackoverflow.com/questions/59145515

复制
相关文章

相似问题

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