0%

游戏开发日志1

【开发日志】游戏 Demo 开发日志 1(暂未定游戏名称)

Hello,大家好,这里是 Rayan。今天为大家介绍一下最近业余时间开发的一款游戏 Demo。

首先为大家介绍一下开发背景及其相关信息。

我本人非常喜欢 Roguelike 类游戏,玩过大量该类型游戏,尤其喜欢《以撒的结合》、《杀戮尖塔》、《死亡细胞》、《传说法师》等。

这里补充一下 Roguelike 的定义:

Roguelike是角色扮演游戏的一个分支类型,它以一系列随机生成关卡的地牢回合制战斗基于磁贴的图像(tile-based graphics)角色永久死亡(即一次游戏内无法无限制复活)为特点。大多数Roguelike游戏创建在高度幻想的故事背景上,这一点是由于桌面角色扮演游戏(如《龙与地下城》)的影响。

— 摘自《维基百科》

因此,我也一直想开发一款 Roguelike 类游戏。

在介绍我的游戏之前,首先来看一看《以撒的结合》,它最大的特色是拥有庞大数量各式各样的道具,再加上随机生成的地图,使得每次开始都是完全不一样的体验,这种机制大大提高了游戏的可重复游玩性,至今我仍会在空闲时间玩上一局。不过由于它是即时的,对操作要求还是挺高的,上手有一定的门槛。

再看一看《杀戮尖塔》,它最大的特色是——它是基于卡牌的 Roguelike 游戏,因此它拥有卡牌游戏的优势:丰富的牌库以及卡牌构筑(Build)系统回合制降低玩家操作门槛,并留给玩家思考时间。如何管理随机得到的卡牌,使其构筑出强力的流派是它的核心体验之一。不过也正是因为它是回合制游戏,使其少了一些操作感。

于是,我给自己这款游戏定了几个特点:

  1. 2D:毕竟只有一个人开发,怎么简单怎么来
  2. 俯视角:更容易展示游戏信息
  3. 即时战斗:具有一定的操作性,但难度不会像《以撒的结合》
  4. 丰富的道具:提升游戏的随机性和重复游戏性,但游戏内包装不一定叫道具
  5. 随机生成的地图:同上提升游戏的随机性和重复游戏性
  6. 具有一定的构筑(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界面

  • 通过现有单元组合出了基本的敌人逻辑

    可以看到,当某一个单元被摧毁后,便失去了该单元提供的能力

目前进度基本上就这么多,不过框架已经搭好,接下来的主要工作(大体如此,可能会有不小的变化):

  1. 开发更多不同效果的单元

    几个想法:

    1. 直接改变攻击手段的攻击单元
    2. 强化其他相邻单元的辅助单元
    3. 带来额外效果的辅助单元
    4. 改变玩家属性的能量单元
    5. 改变玩家移动方式的能量单元(飞行?)
    6. ……(后续继续补充)
  2. 完善装备单元的限制(一定要有一定的限制,才能使玩家获得成就感),比如:

    1. 一个能量单元可以为周围几个供能(如果没有能量,则这个单元不会生效)
    2. 一个单元只能放在其他单元的相邻位置,不能随意摆放
    3. 背包有数量限制,不能无限制携带备用单元(需要玩家进行取舍)
  3. 随机地图生成

    类似以撒的结合房间系统,这样在清理完房间后,玩家有喘息的机会,来重新调整自己的构筑

  4. 添加敌人种类

    敌人和主角一样都是由不同单元组合而成

  5. 添加击败敌人产出逻辑

    随机产出单元 + Boss 身上装备的单元

  6. 单元具备等级概念,可升级(待定)

  7. 多个单元可合成(待定)

  8. 多个单元产生套装效果,或设计多个不同流派的单元构筑(待定)

至此,这篇日志就接近尾声了,写这篇日志的目的有三:

  1. 整理总结开发这款 demo 的心路历程,以及它的初衷、主题、特点、玩法等核心内容,时刻提醒自己,避免后续跑题

  2. 日志有 1 就有 2,督促自己抓紧时间继续往后进行

  3. 与广大小伙伴交流,集思广益,看玩法或者特点是否存在致命缺陷

感谢大家的耐心阅读,这里是 Rayan,关注我跟进后续开发内容。

坚持原创、翻译 技术文章|心得体会|日常笔记,您的支持将鼓励我继续创作!