欢迎光临散文网 会员登陆 & 注册

非典型萌新的游戏开发学习笔记:chapter 1 面向对象,以及做回合制对战游戏

2022-08-30 18:14 作者:皮皮关做游戏  | 我要投稿

之前未接触过游戏开发但又对其感兴趣的朋友,可以参与咱们的网易游戏开发3天集训营,体验一次激动人心的游戏开发过程——提出需求、思考原理、实现功能、定位bug、设计关卡、更换美术资源......麻雀虽小五脏俱全。添加下方网易小伙伴联系方式(备注B站)便可轻松报名:

大家好,我是Stinger。由于之前放了狠话,咱们的学习笔记如约而至。

上一篇传送门:

今天的主要内容是写写学习制作回合制对战游戏时的感想。

回合制游戏历史非常悠久。如果要追溯的话,人类历史有据可考的最早游戏之一“塞尼特”就是典型的回合制游戏。严格说,绝大部分桌游都是回合制游戏。

妮菲塔莉坟墓的古画,妮菲塔莉在玩塞尼特。

进入到电子游戏时代,回合制游戏那更是层出不穷。给我10秒钟,我能快速说出10个:最终幻想仙剑奇侠传女神异闻录真女神转生如龙7八方旅人宝可梦英雄传说勇气默示录地球家园......

电子游戏中的回合制游戏又称排排站(bushi),基本的机制是“你打我一下,我打你一下”。

这样的游戏听着规则甚是简单,但待到我一头栽进去的时候才发现——坑还蛮多的。

不过在这之前,我首先恶补了一下面向对象的知识。

由于我脑海里关于编程的仅有的回忆都是十余年前的那些有关C的,一方面学的又是个半吊子,另一方面这些半吊子的记忆又死赖着不走,要从面向过程过渡到面向对象,还真不是一件容易的事儿。

我在学习这部分内容的时候,刚好在看一本皮皮关老师推荐的游戏设计书籍(英文原版)。里面讲了一个概念:量化生活(quantifying life)。

大意就是,我们可以为生活中的每件事物都创造出一条或者多条属性,用来将该事物的各个特征进行量化。举个例子,我们针对“人”这样一件事物来思考一些属性。

第一时间能想到的无疑是一些最一目了然、可以直接通过测量得到的:

身高;

体重;

血型;

年龄;

鞋码;

etc.

再转念一想,又会想出一些没有那么直观的:

幽默感;

领导力;

情商;

etc.

这些属性定性比定量更容易。

再借鉴借鉴典型游戏里的属性,又能弄出一些更抽象的:

洞察力;

精神力;

血量;

精准度;

etc.

这些属性更不好量化。

以此类推。

属性思考得得差不多了之后,再根据需要,从已经建立的属性库中筛选、或者整合出游戏里真正需要的属性。

在这之后就可以为“人”设计各种各样的行为。比如:

行走;

站立;

攻击;

受击;

负伤;

死亡;

etc.

无论这些属性与行为抽象与否、好量化与否,咱们这样“确立一个事物、且为该事物确立各种属性和行为”的过程,现在看来其实就跟面向对象的思想非常相似。

重点在于“事物”本身。任何事物都可以被归类到一个特定的类里去;该事物本身则可以被看作该特定类的一个对象。

恶补了这部分内容之后,再回过头来做回合制对战游戏,我猛然发现一切简单多了。

假设我要实现一个简易版的《仙剑奇侠传》,简单的思路是:

那么我创建一个“角色”类。这个类中,有名字、HP、MP、攻击力、防御力、身法六项属性,同时还具有攻击、防御、仙术、使用道具、死亡这五种行为。

其中“防御”的效果是“被造成的伤害减半”——相当于是把伤害计算出来之后最终再乘一个系数0.5。

额外还需要创建两个类。

其中一个类是“仙术”,这个类可以有名字、作用对象、消耗、效果值、持续时间五项属性:

作用对象指的是仙术对哪项属性值产生作用。举个例子,“御剑术”的作用对象是HP,表明它是一个直接造成伤害的仙术;而“仙风云体术”的作用对象是身法,表明它是一个buff效果。为了简单起见,仙术如果是buff/debuff,那么仅限于“增减角色的属性值”,而不涉及到诸如封印、混乱等特殊状态。

消耗表明使用该仙术需要消耗的cost。注意,消耗可以是MP,也可以是HP,也可以混搭;

效果值表明该仙术对作用对象所产生的影响数值——正数表示恢复或者buff,负数表示伤害或者debuff;

在我的实现里,“使用仙术”和“使用道具”本质上是一回事

持续时间仅对作用对象为攻击力/防御力/身法的仙术有效(即buff/debuff类),表明持续的回合数。

另一个类是“道具”,这个类和仙术类似,也可以有名字、作用对象、消耗、效果值、持续时间五项属性。

这些准备好了之后,就只需要创建两个角色对象,然后令这两个角色交替行动。初始化的情况如下:

角色的属性值在一定范围内随机确定;

每个角色都拥有御剑术(造成50点伤害)和仙风云体术(身法加倍)两种仙术;

每个角色都拥有2个恢复100点HP的道具“金创药”;

角色行动的先后顺序由“身法”决定,身法高的人先行动,如果身法相同则随机一个角色先行动;

角色会随机从攻击、防御、仙术、使用道具这四种行为中挑选一个来自动执行(概率相同)。

下面是一次战斗过程:

老实讲,这样“从0开始逐渐搭建起作为玩家再熟悉不过的一些动态”,给到人的感觉是非常美妙的——我深刻体会到了那句“玩游戏哪有做游戏好玩”的合理之处。

本篇笔记差不多就到这里,下一篇笔记预计就是直接上Unity了。兴奋!

非典型萌新的游戏开发学习笔记:chapter 1 面向对象,以及做回合制对战游戏的评论 (共 条)

分享到微博请遵守国家法律