【开发日志02】游戏系统构建!!

修改于10/18183 浏览综合
大家好,这里是游戏程序晓痴,这期日志由我来介绍开发进程~

核心玩法的构建

作为一款游戏,需要至少有一个可以让玩家得到激励从而循环游玩下去的系统,也就是核心玩法。我们游戏的核心玩法同上一期日志所述,选择了卡牌玩法为主要方向。
卡牌类型属于回合制策略这一大类,也是我深有心得的一个方向。卡牌创建效果,效果影响卡牌。既然都深有心得了,那应该可以避免出现bug了吧!!然而我只看到摇摇欲坠的史山。
作为核心玩法,从程序的角度来讲,它理应占有一个独立的模块。设计上让核心玩法与其它模块解耦,不依赖其它模块,才能在开发核心玩法的过程中专注核心玩法,“心无旁骛”。
故而,我选择了先从核心玩法下手。
TapTap
来之不易的策划案——

观察者模式与低耦合

观察者模式是一种很常用的低耦合的设计模式。举个例子,你从冰箱里面取出一盘冷藏的食物,使用烤箱对食物进行加热,等待烤箱完成加热时“叮”的声响,便是观察者模式的一种应用。
在这个过程中,烤箱的工作就是完成加热。烤箱不需要“知道”是谁要吃这盘食物,它只需要完成加热,然后通过“叮”来广播它完成加热的通知。而你因为要吃这盘食物,所以需要“知道”是谁在加热这盘食物,然后通过侦听烤箱完成加热的通知,从而前往取出食物。
放到我们游戏的程序设计上也是类似的。战斗系统不需要“知道”到底玩家的界面有什么、玩家是怎么和界面交互的。战斗系统只需要关心如何处理卡牌的布置与攻击、效果的创建与生效,以及战斗怎么结束等
因此,在开发战斗系统时,我们就可以应用观察者模式来实现。当卡牌进行攻击时,战斗系统就广播是哪几张卡牌打起来了,打成了什么样;当玩家尝试抽牌时,战斗系统就广播玩家抽到了什么牌。战斗系统不需要关注这些通知发出之后会怎么样,它只需要负责广播就可以。于是我们就可以专注于战斗系统本身的开发,而不用担心其它模块改变影响战斗系统。
而在广播之后,其它模块可以做什么呢?例如,在玩家的界面上,收到战斗系统关于卡牌攻击的通知时,就可以开始播放卡牌攻击的动画;在进度管理器上,收到战斗系统关于战斗结束的通知时,就可以记录对局的结果并进行进一步操作。
TapTap
战斗系统开发了800行代码仍然可以无关于游戏引擎

玩家的操作界面

如上所示,我们的战斗系统开发了共计800行有效代码时,仍然无关于游戏引擎。这意味着:玩家在游戏中还是什么都看不见
显然一部常规的游戏,肯定要有玩家能看见的内容。所以,我们还需要开发界面系统。如果说我们上面的战斗系统充当了观察者模式的“主题”,那么界面系统就要扮演“观察者”。
界面系统负责显示游戏的可视化内容,并接受玩家的输入。玩家的任何点击、触摸、喊麦,以及敲键盘等操作,都属于输入。当玩家进行了符合游戏规则的输入时,界面系统就应该把相关的输入传递给对应的系统。比如摸牌操作,玩家在界面上点击了牌堆,界面系统就调用战斗系统的摸牌接口。如果摸牌成功,则战斗系统会发出相关的通知,界面系统则显示摸牌的动画。
除了玩法相关的功能,界面系统还需要考虑到对玩家的友好性,比如怎样显示内容让玩家看起来更方便、怎么展示信息让玩家体验更沉浸等。
截至日志编写时,界面系统还在开发中。相信我们的核心玩法很快就能完成落地!
TapTap
看不懂吧,只有白模的游戏界面

未完待续

很急,到什么时候才能玩到我们的游戏呢?
敬请期待我们的下一篇日志叭!
10
1
12