从零开始独立游戏开发学习笔记(二十六)--Unity学习笔记 ...
其实本来想去学麦克的 3drpg 的,但是突然无意间点进了 unity 的官方学习网站 Unity learn。之前我一直很不喜欢这种,就是把几个视频连在一起的路径形式,因为明明可以做一个播放列表,非要把这个做成路径很傻。(绝不是我听力太差和网络差的原因)
但是万万没想到, unity learn 的路径居然是文章的形式,确实是我过于刻板印象了。既然如此,那官方出的教程必须得看的。
看啊,这令人安心的文章形式,比视频更方便查阅,也更容易把知识点讲透:
这篇文章便是关于其中的新手路径 Unity Essential。讲了很多原理和 unity 是什么。我认为了解这些基础原理相当有用。
1. real-time creation
第一节叫做 real-time creation,那么什么是 real-time 呢。当然喜欢玩游戏的大家肯定不陌生,这个名词实在是太熟悉了。但如若不是进入游戏行业,很少有人会深入探究其代表的含义。或者说,尝试从另一个视角去看待 real-time。
1.1 什么是 real-time?
就像所有富有教养的教程一样,这个教程也喜欢上来就抛出“什么是xxx”这种句式。
所谓 real-time 就是能够快速地在屏幕上渲染画面,最好的 real-time 理应让人无延迟感地和画面互动。Unity 致力于在两个方面实现 real-time:制作者使用 unity 制作游戏的时候,以及玩家游玩用 unity 制作的项目的时候。
在过去,电脑性能不够强大,一个画面就要渲染很久。因此每次改动都要等很久才知道效果,影响开发效率。同时在商业游戏中,一个新点子要花很久时间去实现和验证,因此也不容易被采纳,因为有 ddl。
这种渲染叫做 offline rendering,cg 和电影等媒体中使用比较常见,因为没有交互性,渲染的图片不会改动。real-time rendering 则用于 video game,早期的 real-time rendering 通常会牺牲画质,动画效果,特效等等来维持实时性,随着电脑性能的提升,实时性的效果也逐渐提升起来。目前 offline 和 real-time 的区别正在逐渐减小。
1.2 什么是 Unity?
Unity 最初是作为游戏引擎开发的,之后逐渐变成其他行业的生产工具。但是其主要目的仍然是游戏引擎,因此我们就从游戏引擎说起。
1.2.1 什么是游戏引擎?
简单来说,游戏引擎就是为了让你不用从零开始做游戏,让你更关注游戏内容创作的一个制作游戏的工具(怎么感觉开始嘲讽我的文章标题了)。假如脚本,3d模型,声音,美术是原材料的话,游戏引擎就是那口大锅。
1.2.2 你在游戏引擎里干什么?
创作者在游戏引擎里创建出玩家将要体验的所有体验。你有了素材,有了游戏引擎,接下来就主要关注在创作体验上了。
1.2.3 你不会在游戏引擎里干什么?
你将不会在游戏引擎里创建 assets(素材,就是构成游戏体验的所有东西,音乐,模型,脚本,动画等等,都是 assets)。这些 assets 会在外部工具里创建(也被称为 DCC,Digital Content Creation)。许多 DCC 已经和 Unity 集成以方便导入 assets。
DCC 有很多种,像是:
[*]3D DCCs:诸如 blender,3dmax,maya 这些
[*]2D DCCs:像是 PS, IL, AI 这些
[*]Audio DCCs:像是 logic pro,cubase,AU 这些
[*]IDEs:像是 VS,VSCode 这些
[*]Real-time engine:比如 Unity 自身,Unreal 等
1.2.4 Unity Asset Store
Unity 提供了素材商城,如果不想自己用 DCC 创建的话,可以去商城购买或者找免费素材来用。
1.2.5 关于 Unity 的故事
1.2.5.1 这个引擎诞生自游戏
听起来很绕,但是实际上,使用 Unity 技术制作的第一个产品,并不是 Unity 引擎,而是一个游戏。
2005 年,3 名男性青年(中年?):Joachim Ante,David Helgason,和 Nicholas Francis。在 MacOs 上发布了一款叫做 GooBall 的游戏。这个游戏的发布公司名叫 Over the Edge Entertainment,发布这个游戏的时候这个公司已经成立了一年,当然,就是这三个人创建的公司。当时他们从脚手架开始搭建了这个游戏的引擎,制作引擎的时候已经想好之后要把这个引擎通过许可证来卖给别的开发者了。
http://pic3.zhimg.com/v2-3b638562f1bc243cd4aff8c77fc0556e_r.jpg
上图从左到右分别是 Joachim Ante,Nicholas Francis,David Helgason。
大家可以去搜一下他们现在长啥样了。
1.2.5.2 Unity 诞生前大家都是怎么做游戏的
当时每家公司都会自己制作引擎,自己使用。有些公司会做很多引擎用来满足不同的游戏需求。由于制作引擎需要时间,很多公司中引擎的开发和游戏的制作是同时进行的。导致制作游戏中途需求发生变化后,又要去改引擎,中间设计很多对接的改变。因此很耗费时间和人力。
而对于独立开发者和小型开发团队来说,引擎的开发是一项非常艰难的问题。除非有强大的编程能力,不然就要像其他公司购买昂贵的引擎许可证。因此直到 2005 年左右之前,独立游戏非常少,而其中能做到商业成功的就更少了。
1.2.5.3 Unity 引擎的诞生
GooBall 并没有成功。但是 Unity engine 成功了。3 位创始人在苹果开发者大会上首次亮相了这款引擎,一开始并没有很受关注,但是随后,独立开发者开始关注到这款引擎。
2005 年左右,Unity Engine 迅速席卷市场,当时的游戏行业也是风起云涌,Unity 在 “独立开发者革命” 中占了一个非常重要的位置。Unity 成功的因素有三个:①可信赖的数字版游戏模型的引入(意思是无实体纯数字版游戏的引入)②主要关注独立开发者③对早期智能手机的支持。
我只能说,这三点完美诠释了目前 Unity 的现状。可以说是不忘初心吗。当然,第一点在 Unreal 的资本投入下显然是完全被打败了,不过好歹通过模仿还是赶上了一些。第二点和第三点表明了 Unity 如何能够坚持住目前的市场。如果能够坚守本心,我觉得 Unity 还可以保有一席之地的,嘿嘿。Unity 第一次上市的时候,高速网络正在兴起,这使得发布数字版的游戏第一次成为一个可选项。在此之前,独立开发者只有很少的渠道去发布游戏,游戏基本上都是实体店里贩卖,而贩卖主要又由发行商安排。
高度网络发展后,用户终于可以快速在网上下载游戏了,网上也有很多服务用于贩卖游戏,又了这些帮助,独立开发者终于可以安心开发游戏了。自此,独立开发者开始步入消费者的视野。
Unity 进入市场的时候,并不是第一个卖许可证的引擎(这个之前也提到过),但是其价格是最低的(现在不是了),易于独立开发者接受。此外,Unity 也花了很多心思在优化开发者的开发体验上,这是当时其他引擎忽视的一点。这两点也是让 Unity 在独立游戏开发市场上大放光彩的原因。
当苹果把 app store 开放给第三方的时候,Unity 也是第一批支持者。这让其奠定了手机游戏中的地位。当时超过一半以上的 apple store 里的游戏都是 Unity 制作的。如今在安卓和苹果市场上也是。
开发一个手机平台独立游戏是不是就能吃满 BUFF 了(不是)1.2.6 在此之后
Unity 现在已经逐渐不再只是一个 game engine 了,而是 real-time engine。除了游戏也开始包含其他行业的功能。
1.3 Unity 可以干啥?
刚刚才说到 Unity 已经不只是 game engine 了,那现在就看看还有哪些行业用到 Unity 吧。
[*]游戏:不用说
[*]媒体娱乐:迪士尼就用过,
[*]工程设计。
[*]自动驾驶。
[*]其他一些需要交互的应用。
好的,别说了。Unreal 5 都已经发布了,这些大部分都用不上你了。下一章是请一些 Unity 的创作者来吹 Unity,我就不放了。 之后是一些简单的 unity 操作,也不说了。直接跳到最后一章。
2. 游戏工业
2.1 标准游戏开发流程
我们经常会说到什么开发啊,prototype啊,我们也都知道这些是工业流程的一环,但是具体是个什么样呢?其实也说不大清楚,这下就来好好学习一下: 总共流程分为 4 大部分:
[*]pre-production
[*]production
[*]post-production
[*]operations
2.1.1 pre-production
[*]首先,工作室产出一个设计文档。这个文档是一个指导创意方向的来源。如果是电影,那就是脚本和分镜,关于内容,外观,感觉等。如果是游戏,那就是游戏设计文档,关于故事,gameplay,艺术方向,目标群体,可访问性等。
[*]pre-production 的一个重要目的是为了早点开始设计迭代,加入新 idea。因为早期更改方向加入新 idea 比较容易。
[*]pre-production 结束后,会有一个产出给 stakeholder 或者 investor 看。如果通过那就可以进行到 production 阶段了。
2.1.2 production
production 是产品开发中最长也是最难的阶段。这个阶段是所有人一起做出一个真正的产品出来,也就是一般玩家想到游戏开发的时候,脑海里蹦出的画面。所有人尝试把设计文档中的东西实现出来。
这个阶段往往会设计到很多种职业如下图:
其中,有一个 producer 全程盯着整个项目的开发进度是很重要的。同时 producer 还要避免 feature creep,防止加上一堆新奇的 feature 和设计文档逐渐偏离。
production 会在 deadline 之前停止。deadline 会在 pre-production 的时候被定好。
2.1.3 post-production
post-production 指游戏技术上完成了,但是还没有发行之前的阶段。
这个阶段,项目会被评估,修改,润色,修复等等。一般包含 alpha testing 和 beta testing。其中 alpha 测试往往是在内部进行的,用于确定一些问题和修复。而 beta 测试则会找一些潜在用户来测试。两者都会产出一堆 bug 列表和新的需求 feature 列表。
post-production 阶段会在产品发行后结束。
2.1.4 operations
产品发行后就进入了 operation 阶段,所有为了让产品继续维持的行为都属于这个阶段。诸如销售,分析,维护等等。这个阶段在不同行业做的事差距很大。
以 video game 为例,一个 opertion 阶段可能包含以下部分:
[*]Support:处理来自用户和 partner 的各种问题,需求等。
[*]Monetization:内购,内置广告等
[*]Analytics:分析用户行为以确定游戏功能等是否需要修改。
[*]Server Maintainance:维护服务器。
[*]Website Maintainance:维护游戏相关网站。
[*]Business and Sales:提升游戏的销售额。
2.1.5 Unity 在这 4 个阶段中的作用
实际上 Unity 提供了很多功能,在所有阶段中都能起到作用。比如说就提供了内购的功能,分析的功能以方便 operations 阶段。
2.2 游戏行业标准工作岗位
我们经常听到诸如程序员,美术,制作人这种称呼。但是具体都有哪些。分工是如何的,其实也不甚了解。那现在就来看一下。
从大的层面来看,可以分为两种类型:①艺术设计类②程序类。
2.2.1 艺术设计类
一些比较常见的艺术设计类有这么些工作岗位:
[*]3D 艺术家:创建 3D 物体和背景,优化图形性能。
[*]2D 艺术家:同上,更改成 2D。
[*]灯光艺术家:开发优化灯光特效,还包括一些后处理诸如景深,颜色校正等
[*]音频设计师:创建和实现音效,旁白,音乐等声音
[*]人物艺术家:给人物建模,包括一些素材诸如头发,衣服,饰品等
[*]技术艺术家:也就是我们常说的 TA,或者技美。和艺术家以及程序员都要打交道,将他们的作品统合为最终产品。
[*]视觉特效艺术家:创造好看的视觉特效,诸如岩浆,火焰之类的。实现物理特性,诸如碰撞,掉落等。
[*]动画师:创造并优化所有物体和人物的动画。确保灯光和视觉特效在动画的时候表现良好。
[*]游戏/关卡设计师:设计 gameplay;设计游玩测试和反馈;和艺术家程序员以及测试者讨论以获得游戏性的反馈。
2.2.2 程序类
一些比较常见的程序类有这么些工作岗位:
[*]质量保证:也就是 QA,主要是测试 bug,写报告。写一些测试案例。
[*]程序分析:根据设计文档写代码,修改应用以维护功能
[*]C# 开发:开发新功能和应用;管理产品发布。
[*]Unity 开发:用 Unity 开发新功能和应用
[*]研究工程师:设计实现研究一些前沿算法
[*]软件开发:设计,开发,测试新功能和工具
[*]VR/AR 开发。
[*]手机开发:开发手机端功能和应用;了解最新手机端技术
[*]UI 程序员:编写 UI 代码以满足设计文档;将 UI 和功能整合在一起。
[*]gameplay 程序员:分析设计文档;开发 gameplay 相关系统。
页:
[1]