APSchmidt 发表于 2022-8-31 15:32

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

前言:之前未接触过游戏开发但又对其感兴趣的朋友,可以参与咱们的网易游戏开发3天集训营,体验一次激动人心的游戏开发过程——提出需求、思考原理、实现功能、定位bug、设计关卡、更换美术资源......麻雀虽小五脏俱全。戳下方链接便可轻松报名:
<hr/>大家好,我是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了。兴奋!

Doris232 发表于 2022-8-31 15:37

[爱]

NoiseFloor 发表于 2022-8-31 15:40

学到了
页: [1]
查看完整版本: 非典型萌新的游戏开发学习笔记:chapter 1 面向对象,以及 ...