象棋遭遇战开发记录

首先,这个游戏有一个参考对象-暗棋圣手。这是我最早接触到的游戏之一,当年玩得还挺开心的。

决定开发一个这种类型的游戏有2个原因:

1.现在市面上能下载下来的暗棋游戏,都是圆形棋子这样的,缺少了一种生动。这样的游戏,本身没什么难度,最适合小孩子玩,如果没了生动性,小孩子都吸引不了。

2.这个游戏看上去比较简单,开发周期应该可以很短。

于是,稍微评估了一下,就开始动工。

每次要开发一个新游戏,总有2件事情很头痛。一个是素材的准备,一个是游戏性设计。素材现在是我的软肋,我并不打算将这个外包出去,因为我现在的定位是独立游戏开发者,照理,这应该也是我技能栈的一环。于是,哗啦啦开始了原型设计。

游戏性设计里面系统设计还好说,毕竟我也从事了软件相关行业这么多年,做这种事情本身也没什么难度。就是怎么让这个游戏更好玩就很难处理了。传统的玩法中,最直接的游戏性是吃光对方的棋子。而这个很大程度上靠运气,没有什么策略空间。参考的暗棋圣手中引入了道具来增加可玩性:

我也要引入这样的东西-_-.

现在我只增加了2种实用又不会太夸张的道具,保护罩和透视镜。在测试的实际对战中,这两个东西往往能帮助我死里逃生反败为胜,只要在合适的地方和时机使用。以后会逐渐增加更多。

这个游戏首先是设计为单机游戏的。无聊的时候,可以随时快速地跟AI来一场对弈。于是就要给这个游戏设计AI 。 这个阶段的目标是游戏能玩, 先写个简单的AI吧. 初步思路是, 仿照人的思维:

->先看看棋局里面有没有我能移动的棋子.如果能移动,就要分别评估每一个棋子所能走的每一步能得多少分;

->然后再平局揭开棋子,每一个能揭开的棋子,都要根据棋子周围的信息来评估分数.

->最后将这两种评估数来的行为进行分数排序,选最高分的进行.

这么做,确实能玩了,但还不够意思.要赢过这种AI实在没啥难度.所以,在后续的版本中,会考虑加入追杀、围攻、请君入瓮等作为高级AI。

为了填补AI太简单的空缺,加入真人对局是最好的办法了,毕竟人脑比这种AI厉害多了。实现在线对弈需要网络服务的支持。为此,我评估了好几种方案:

->Unity自身的MLAPI

->skynet+xlua+sproto

->Mirror

->Photon PUN

我最熟悉的就是中心服务器这样组合设计,也就是 skynet+xlua+sproto 。然而要倒腾完这么些东西,恐怕会花费我不少时间。Unity自身的网络编程是一个很奇怪的东西,客户端服务端代码写在一起的(不知道是不是我理解错误了)。Mirror虽然也是跟MLAPI一样的P2P设计,但是起码也提供了中心化服务这样的传统搭建方式,还是能接受的。最后一种PhotonEngine,是我在开发这个游戏的时候才接触到的。然而它却迅速成了我的首选,是因为它有2个优点:1.提供的Unity插件太方便,只要熟悉了它的联机理念,开发多人联机游戏简直不要太轻松了。2.是其提供云服务,你可以不用自己部署服务器。

最后这个项目在踩坑与修补中拖拖拉拉地上线了。写下此篇,以记录开发心得。