撰写了文章 发布于 2020-03-29 09:18:53
【开发日志】游戏 Demo 开发日志 1(暂未定游戏名称)
【开发日志】游戏 Demo 开发日志 1(暂未定游戏名称)
Hello,大家好,这里是 Rayan。今天为大家介绍一下最近业余时间开发的一款游戏 Demo。
首先为大家介绍一下开发背景及其相关信息。
我本人非常喜欢 Roguelike 类游戏,玩过大量该类型游戏,尤其喜欢《以撒的结合》、《杀戮尖塔》、《死亡细胞》、《传说法师》等。
这里补充一下 Roguelike 的定义:
Roguelike是角色扮演游戏的一个分支类型,它以一系列随机生成关卡的地牢、回合制战斗、**基于磁贴的图像(tile-based graphics)和角色永久死亡(即一次游戏内无法无限制复活)**为特点。大多数Roguelike游戏创建在高度幻想的故事背景上,这一点是由于桌面角色扮演游戏(如《龙与地下城》)的影响。
--- 摘自《维基百科》
因此,我也一直想开发一款 Roguelike 类游戏。
在介绍我的游戏之前,首先来看一看《以撒的结合》,它最大的特色是拥有庞大数量、各式各样的道具,再加上随机生成的地图,使得每次开始都是完全不一样的体验,这种机制大大提高了游戏的可重复游玩性,至今我仍会在空闲时间玩上一局。不过由于它是即时的,对操作要求还是挺高的,上手有一定的门槛。
再看一看《杀戮尖塔》,它最大的特色是——它是基于卡牌的 Roguelike 游戏,因此它拥有卡牌游戏的优势:丰富的牌库以及卡牌构筑(Build)系统,回合制降低玩家操作门槛,并留给玩家思考时间。如何管理随机得到的卡牌,使其构筑出强力的流派是它的核心体验之一。不过也正是因为它是回合制游戏,使其少了一些操作感。
于是,我给自己这款游戏定了几个特点:
- 2D:毕竟只有一个人开发,怎么简单怎么来
- 俯视角:更容易展示游戏信息
- 即时战斗:具有一定的操作性,但难度不会像《以撒的结合》
- 丰富的道具:提升游戏的随机性和重复游戏性,但游戏内包装不一定叫道具
- 随机生成的地图:同上提升游戏的随机性和重复游戏性
- 具有一定的构筑(Build)机制:玩家要利用得到的道具排列组合成各种套路或流派
特点有了,接下来就要考虑通过怎么样的玩法机制和包装来实现这些特点了。
学习 Game Jam,为了避免陷入无穷的脑洞而迷失方向,导致最后什么都做不出来的窘境,我给自己定了一个主题:三个基本形状——圆、三角和矩形。
为什么会定这样一个主题呢,答案就是一切从简,毕竟是一个人开发,一定要控制成本,怎么简单怎么来,快速开发出原型来验证核心玩法。
接下来就是围绕这三个基本形状来做文章了。
三个不同的形状给人不同的感觉:三角形给人一种攻击的感觉,矩形给人一种辅助防御的感觉,圆形给人一种能量核心的感觉。
既然要具备构筑的要素,那么一定得有基本单元,比如杀戮尖塔中的卡牌。这里我将每一种形状称为一个单元(Unit),其中:
- 三角形为攻击单元(Attack Unit),一切与攻击相关的能力都由它来承载,比如发射子弹等
- 矩形为辅助单元(Assist Unit),一切辅助的能力都由它来承载,比如瞄准、提升能力等
- 圆形为能量单元(Energy Unit),一切以能量为核心的能力都由它来承载,比如移动、闪避、护盾等
有了上面这些设计,游戏玩法也基本成型:随机生成地图->玩家探索地图->击败敌人->随机获得单元->按照理解装配单元、升级单元->击败更强的敌人,验证自己的构筑思路
上面介绍了玩法设计层面上的思路,接下来就来介绍具体开发层面的思路了。
首先必然是选择开发工具了:
- 游戏引擎:Unity 2019.3,为何使用 Unity,原因很简单,我对 Unity 最熟悉,使用起来也最顺手,为何选择最新版本,而不是稳定版,通过这个小 Demo 也想尽可能了解和使用 Unity 最新的特性
- IDE:Rider,谁用谁知道,有自己 Github 公开项目的同学可以申请免费使用
- 版本控制工具:Git & Github,版本控制工具一定要有,避免出现代码丢失、修改了逻辑但是又想改回去等情况,可以创建私人仓库后的 Github 还是很方便的
- 任务管理:使用 Github Projects 的 Kanban 模板来进行 TODO 管理
编辑器一览:
具体代码框架这里就不提了,不然篇幅会很长,如果大家有兴趣的话,后面可以再写篇文章专门介绍一下。
目前实现的功能有:
将目前需要用到的 Unity Package 导入工程:
- Post Processing(后处理):用来调整项目后处理效果
- Cinemachine 导入:用来管理摄像机,实现跟踪角色等功能
- Burst & Job System:将一些性能敏感的代码使用 Burst + Job System 编写,可以有效提高性能(目前,角色移动是这么实现的,但效果并不明显)
- LRP:目前选择的是 Lightweight Renderer Pipeline(轻量级渲染管线),由于目前处于 Demo 阶段、开发人力成本有限,且想登录手机平台,而且设想中画面也比较简单,玩法制胜,因此 LRP 足以
游戏基本框架搭建(略过)
单元框架及一些基本单元功能实现 玩家所有的能力以及敌人所有的能力都是通过单元来实现的
装备单元、更换单元基本UI界面
通过现有单元组合出了基本的敌人逻辑
可以看到,当某一个单元被摧毁后,便失去了该单元提供的能力
目前进度基本上就这么多,不过框架已经搭好,接下来的主要工作(大体如此,可能会有不小的变化):
开发更多不同效果的单元
几个想法:
- 直接改变攻击手段的攻击单元
- 强化其他相邻单元的辅助单元
- 带来额外效果的辅助单元
- 改变玩家属性的能量单元
- 改变玩家移动方式的能量单元(飞行?)
- ......(后续继续补充)
完善装备单元的限制(一定要有一定的限制,才能使玩家获得成就感),比如:
- 一个能量单元可以为周围几个供能(如果没有能量,则这个单元不会生效)
- 一个单元只能放在其他单元的相邻位置,不能随意摆放
- 背包有数量限制,不能无限制携带备用单元(需要玩家进行取舍)
随机地图生成
类似以撒的结合房间系统,这样在清理完房间后,玩家有喘息的机会,来重新调整自己的构筑
添加敌人种类
敌人和主角一样都是由不同单元组合而成
添加击败敌人产出逻辑
随机产出单元 + Boss 身上装备的单元
单元具备等级概念,可升级(待定)
多个单元可合成(待定)
多个单元产生套装效果,或设计多个不同流派的单元构筑(待定)
至此,这篇日志就接近尾声了,写这篇日志的目的有三:
整理总结开发这款 demo 的心路历程,以及它的初衷、主题、特点、玩法等核心内容,时刻提醒自己,避免后续跑题
日志有 1 就有 2,督促自己抓紧时间继续往后进行
与广大小伙伴交流,集思广益,看玩法或者特点是否存在致命缺陷
感谢大家的耐心阅读,这里是 Rayan,关注我跟进后续开发内容。
目录