大家好!
总体而言,本周感觉很不错。 我一直在阅读https://gamedesignconcepts.wordpress.com/(完成1级和2级)中的材料,并从Udemy开始新的Unity课程(https://www.udemy.com/unitycourse/)。 我也开始在星期三写这篇文章,而不是像最近几篇文章一样一直等到本周末。 我觉得这让我更有理由,而且我还记得发生了什么事。
- 以色列的视频游戏产业问题
- 《时光之石》的背景艺术或我如何作弊以正确理解观点
- 游戏体验:新的Harvest Moon有什么问题
- 关于黑客现实本身 迷失青春
- GameDev Protips:如何让您的独立游戏被媒体报道
我还要提一下,我终于要重新进入微积分。 我开始上麻省理工学院的课程之前,由于一些琐碎的事情而停下来。 我实际上还没有赶上这个小技巧,但是我报名参加了以MIT课程为基础的EdX calc课程,我对此感到更好。 这可能是因为我不再参加冗长的讲座。 更令人难忘。 无论如何,要学到的东西!
Unity见解
我完成了Unity课程的Text101课程,该课程专注于构建带有简单分支的基于文本的冒险游戏。 到目前为止,与我正在做的有关移动游戏开发的其他统一课程相比,我确实很喜欢本课程及其结构方式。 尽管感觉有些慢,但我喜欢他们介绍与游戏设计相关的不同部分或概念,然后自己挑战一下。 他们还明确表示他们希望本课程是编程,编程和游戏设计概念的一部分,这样很酷。 这几天似乎我的大脑在哪里。
状态机
他们相当简单地崩溃的一件事是一台状态机。 之前我也谈到过,但是我将给出它们的定义供大家查看。


状态机的想法是它可以控制您的各种游戏状态以及它们之间的过渡。 为了说明这一点,我将引用游戏设计师的挑战
考虑一下游戏中正在发生的一切,如果有人转弯或离开“暂停”菜单,则可能会更改。 我们称这张图片为游戏状态-可能在游戏中更改的所有相关虚拟信息的集合。 在国际象棋中,游戏状态包括棋子列表,棋子在棋盘上的位置以及基于先前动作的某些信息。
可编写脚本的对象

因此,在故事中,您有各种游戏状态,在这种情况下,介绍了新场景和玩家可以做出的选择。 除了将所有内容保留在脚本和字符串中之外,我们可以使用ScriptableObject。

如您所见,我的ScriptableObject就像是要构建其他资产的模板。 它包含用于保存故事文本的变量和该状态可以进入的下一个状态的数组。
添加[CreateAssetMenu]使我可以直接从创建菜单创建一个可编写脚本的对象。
他们介绍给我的另一件事是在统一编辑器中使用游戏对象数组的更简便方法。 有时,您有一堆要引用的游戏对象。 就我而言,这是下一场比赛的状态。 通常,我将其设置为序列化字段,然后将每个游戏对象逐个手动拖动到数组中。 不过我才发现,您可以锁定检查器屏幕并多选所有想要的游戏对象,然后将它们拖到阵列点中即可。 简单。

在完成Text101游戏之后,我开始研究Brick Breaker克隆。 提到的一件事是,您应该在构建游戏之前设置菜单。 他们的理由? 大多数人在完成游戏时要做的最后一件事就是菜单,这成为他们不发布游戏的原因。 因此,他们建议您先完成它,然后再解决它。
最酷的部分是他们使用了之前制作的游戏骨架。 这就是为什么我比统一移动开发人员更喜欢此课程的原因之一,因为每个单元都是在最后一个单元的基础上构建的。 移动开发人员只是一步一步地指导您完成克隆,但并未假定您上过这些课程。 因此没有凝聚力。
无论如何,所以我决定采用从软盘鸟克隆构建的菜单系统,并将其带入该游戏。 起初工作有些繁琐,因为很多系统都依赖于一堆虚弱的鸟类特定资产和事物。 因此,我将其简化为最低限度,即主菜单屏幕(标题,开始和退出按钮)和一个游戏级别(保持完整的暂停菜单,恢复游戏按钮以及返回菜单按钮)。 我还完整保留了场景推子。 同样,关于团结的一件很酷的事情是,如果您想暂停游戏,则可以执行Time.timscale = 0f; 这冻结了游戏时间。 问题是,如果您有一些动画,它们也会冻结。 如果您不希望它们冻结,则Unity的新功能是使动画使用实时而不是游戏时间。

在第一部分中,我的屏幕推杆淡入淡出,但是当它淡入淡出时,它只是立即消失了。 这是因为在级别1中,我将游戏时间设置为0以冻结所有内容。 因此,要修复衰落,我只需要将更新模式设置为非标度时间即可。
我仍然在努力的一件事是如何设计游戏。 就像我对需要多少经理和控制员感到困惑一样。 现在,我有一个游戏UI控制器,一个场景推子,一个音乐播放器,一个游戏管理器和一个游戏管理器。 现在的游戏管理员什么也没做,但是我的游戏管理员只专注于一个级别。 我现在的想法是,我可能需要游戏管理器来管理整体游戏,而另一个游戏玩法管理器来管理较小级别的游戏。
这样,我想重做我的UI系统。 以前,由于有人按下了暂停按钮,所以会弹出暂停菜单。 这在脚本中调用了一个方法,该方法将显示暂停菜单并冻结游戏。 相反,我希望UI对游戏状态更改做出反应。 如果游戏状态为就绪状态,则将有一个指令菜单,如果将其切换为活动状态,则所有菜单和面板都将消失,如果游戏结束,则会弹出游戏结束屏幕。
为此,我必须使用委托和事件。 我在第2周之前谈到了这些。基本上,我创建了一个事件,每次播放状态更改时都会触发该事件。 然后,我的UI控制器订阅了此更改。 每当播放状态更改时,UI都会做出相应的反应。 在构建此游戏时,我正在考虑可以在其他游戏中重用其中的多少。 通过使我的UI像这样做出反应,如果我删除了按钮或更改了按钮,那么实际上就不需要花费很多时间来重新制作系统。 只要有什么东西触发了播放状态的暂停,暂停菜单仍会弹出。 不管是屏幕上的按钮还是键盘按下都没关系。
游戏设计概念
2级主要关注系统游戏设计。
系统设计是关于定义游戏的基本规则。 有什么碎片? 你能控制什么? 您可以在转弯时采取什么动作(如果有“转弯”的话)? 当您执行每个动作时会发生什么,它如何影响游戏状态? 通常,系统设计是创建三件事:设置规则。 游戏如何开始? 比赛进行的规则。 游戏开始后,玩家可以做什么,当他们做事情时会发生什么? 解决规则。 什么导致游戏结束? 如果游戏有结果(例如胜利或失败),该结果如何确定?
就制作和原型游戏而言,它表明迭代和反馈越多,越好。 对于视频游戏而言尤其如此,因为要实际编写演示程序需要花费大量的工作。

在游戏中,我们具有游戏机制和游戏动力学。 游戏机制可以被认为是游戏的动词。 玩家可以做什么。 游戏动态是玩家创造的游戏模式。
例如,在卡坦岛定居者中,玩家可以收集资源并建立自己的土地。 这些是机制。 但是所产生的动力是诸如领土获取(玩家争夺更多土地的竞争)以及建立和打破联盟之类的东西。 规则(机制)没有明确说明游戏的动态性,而是由于玩法而发展起来的事物。
挑战性
每章的结尾都是对读者的挑战。
挑战1 —比赛结束
原型比赛到最后一场比赛(记住马里奥赛车)。 增加了挑战,想一想允许玩家相互互动的机制。
挑战2-领土获取
制作一款游戏,让玩家争夺有限的资源。 通常,玩家在获得大部分或全部领土时会获胜。
挑战3 —探索
对游戏进行原型设计,玩家必须探索您所建造的世界的各个部分。 线索就是一个例子。
挑战4 —捡起东西
对游戏进行原型设计,其中的游戏机制是让玩家拾取东西。 在Sonic中,您会拾起戒指。
当我阅读本文时,让我想到了我可以开发的各种迷你游戏,以挑战我想开发的Hangul Master(学习朝鲜语)游戏中的人。
竞赛到最后—寻找魔术大赛,寻找有前途的学生。 学生必须用韩语命名15项内容,以显示其对名称的掌握。 如果您掌握它的名称,那么您就可以掌控它。
领土收购-不确定这一点。 也许我可以进行某种战斗,让玩家移动碎片来占领土地并防御入侵者? 虽然不确定该如何适合主题。
挑战3和挑战4-实际上这可能是我游戏第一关的完美选择。 我当时在考虑让播放器处于未知的环境中。 寒冷而黑暗,所以他们想起火。 因此,他们必须探索该地区并捡起木材等必需的东西。 然后也许是饿了,所以他们尝试采摘水果或其他任何东西。
我认为,我的游戏的总体机制将基本上是通过在Hangul中输入名称来探索并与周围环境互动。 因此,我尝试考虑不同的场景,这些场景可能仅通过使用该机制即可带来所需的游戏动态。
无论如何,我认为现在就这样。 我喜欢现在有两门非常结构化的课程来帮助我进行游戏开发。
结论
我觉得本周我学到了很多东西,许多概念开始变得更加有意义。 我正在更广泛地考虑游戏的制作方式以及可以从其他项目中重复使用的东西。 作为一种附带说明,我第一次为自己创建了python脚本。 当我意识到自己可以自己编写程序时,我有一堆文件需要重命名,并不断尝试归档程序以执行所需的操作。 这样做使我意识到我忘记了多少Python。 更不用说我之前学过的关于javascript,vuejs和django的所有其他内容。 Web开发很有趣,我不想忘记任何东西。 我正在考虑花费一些时间进行C#点网络开发,并将其与一些前端东西联系起来,以继续练习我的js东西。
目前为止就这样了! 下周见。