首先,我们可以把游戏当做一个多agent的环境。一个游戏的基本的元素有:
-
Fluents,
Values of fluents, states. 其中每一个State包括一些fact (a mapping from fluents
to values), 也包括每个player对当前State的认识或者对别的agent对当前状态的认识的认识 (Reasoning about
knowledge),等等。 -
Action:一些基本的可以改变fluent的值,也包括改变agent对State认识的action。
-
transition graph: 一个从State 和 Action 到 State 或者 State集合的映射。
-
初始状态&结束状态:也就是到达哪一个state的时候被看作赢了或者输了。通常情况下是有个objective function。比如说,三国杀中的血和牌,围棋中的所围的范围大小。
设计一个游戏时要考虑的因素:
-
随机性:在这多个Agent中,环境也可以看作是Environment执行了一个action以使得不同玩家有不同的牌;再比如,三国杀中,每个人不同的身份,每人每次起牌,都可以看作是环境在执行action;大富豪游戏中掷骰子,也可以看作是环境的作用。围棋游戏中可以认为没有Environment这个agent。可以这么说:
-
随机性会缩短水平高玩家和水平低玩家之间的差距。这种不确定性可能是为了平衡各势力,
-
可能是以比较小的概率到达某个某些特殊的配置,我们可以叫作奇异点,以使得某些玩家(即使水平一般的玩家),在适当时候也能风光一把。
-
这种随机性也增加了游戏的不确定性和趣味性。
-
同时,这种随机性应该不是决定因素。不然,起牌的好坏就直接决定是否输赢,那这样的游戏想必不会很流行。
-
平衡性:平衡性是指各个玩家初始情况的平衡,也包括一个玩家各个action的配置。比如说,星际争霸中各个兵种中也要有平衡。
-
渐进性:这是指玩家在玩的过程中有提高的可能。比如说,围棋你可能玩得越多,技巧越多,推理时所用的步骤就会越多。
-
奇异点:就是说,环境的随机性也可能使得普通玩家在某些情况下可以呼风唤雨。也包括高级玩家在某些情况下做些较复杂的安排可以大比分胜利。
-
除了终点外无平衡点:就是说,不要达到一个没完没了的状态。比如说,三国杀中刘备(给别人牌)和华佗(给别人牌可以加血)的配合基本就可以保证不败。游戏设计时应尽量避免类似情况。
-
游戏中推理时的依据:区别于当前状态是不是所有agent都知道。很多棋都是明确知道当前状态的。比如,围棋中当前状态都是明确的。很多牌类游戏中每个player对当前状态的了解都是不完全的。这就需要根据其他player过去的action做推理。
在服务类或者社交类网站中引入Game的特性:
-
这应该是一个挺有意思的方向。包括拼多多等产品也都在这个方向有不错的尝试。