studyabroad 板


LINE

大家好 我最近刚从 University of Utah 的 Master of Entertainment Arts and Engineering 毕业了 跟大家分享一下第二年的心得 希望能帮到对游戏 program 有兴趣的人 我是 Engineer 所以以下几乎都是工程课 文有点长大家可以斟酌看 二上三门课 Game Projects II (硕士论文游戏) Game Engineering II Game Engineering III (前身是 Gameplay Engineering) 二下三门课 Game Projects III (继续硕士论文游戏) A.I. For Games Real Time Game Rendering (跟 Game Engineering II 同一个老师) 我下面一个一个详细点讲 1. Game Projects II 这个课其实就是做我们的 thesis game (硕士论文) 每周二四早上九点到下午一点 以往的硕论都是做一年半 我们这届变成一年 而且学期一开始做了两轮的 prototype 每一轮都是全部人 pitch 自己的点子然後大家投票 一轮会做个六七个出来吧,有点忘了 这里大家有点争议的地方是老师们一开始没说要做两轮 大家以为一轮结束就可以好好开始我们的硕论了 毕竟跟以前相比少了一学期 结果老师突然说要再做一轮 有些同学就很无言 还有人 pitch 的游戏就叫做 shit storm lol 不过我可以先讲一年下来的结论 大家的意见都还算是满正面的 花个之前一学期的时间大家乱搞然後比较了解到底怎麽进行一个 development cycle 然 後再用一年重新开始新的 project 其实後面那一年做的份量跟品质或许还比当初直接做一年半来的高 个人意见啦 所以大概开学一个月後硕论的组才组出来 我们这组绝大多数人都是暑假就已经开始在 prototype 一些东西了 所以有些死路已经大致知道算是省了不少时间 我在组上的定位是 Gameplay AI Engineer 一开始花了一些时间 prototype 一个勉强像 Horizon Zero Dawn 那样可以爬在移动物体 上的功能 因为我们当初的其中一个目标是有点像 Shadow of the Colossus 结果後来觉得这个坑下去可能一年就没了 所以就把这东西丢掉然後我完全走去做游戏里的 AI 我们组内主要分成几个小组 (strike team) Player, Environment, Goliath (boss AI) 会走这个模式是模仿一些业界的 Studio, 像是我们这的 Avalanche 我日常互动就是跟我们组的 designer 还有另一个 AI engineer 讨论一些 feature 还有 要怎麽做 像是我主要是做 AI decision making 这部分用 behavior tree ,但是不同武器的攻击 方式还有冷却都是另一个工程师做的,这中间有怎麽建立一个 robust scalable 的 interface 花了一些时间 等於说 boss 的大脑只知道他有四肢加胸口跟头 但右手是雷射右手还是大炮右手他没必要知道 这里有一大因素是因为我们想做模组化的 boss 目标是可以像乐高一样不同的手跟头还有脚搭配就可以变成一只完全不同的敌人 但是因为时间还有 artists 不够的关系 最後还是只有一只出来 所以我们的架构其实带来麻烦多於效益 不过也是很好的练习啦 不过当然做游戏有一大部分不只是游戏 还有人与人之间的关系 我们当初有一个组员态度非常负面一直抱怨其他人东西都不做完害他不能做事 然後另一组有个人暗地一直想说服他过去他们组因为想找人分摊工作量 後来他就转去另一组了 然後说他在我们这边的期间有忧郁倾向 我们组也是随他去 毕竟他真的是没什麽贡献又很负面 但我们组上的制作人处理得很好让组内的人都还是好好的继续工作 这件事背後的详细前因後果也不是太多人知道 後来整组的气氛跟感情都好很多 另外有个比较大的事就是我们在学期末的 play day (开放给外面亲朋好友还有媒体进来 ) 前两天决定从第三人称改成第一人称 这麽大的改变当然有很多人很犹豫 但我们迅速的把相机位置改一下试试看之後 几乎整组的人都同意这个决定 最後就这样改下去了lol 2. Game Engineering II 这门课的老师是以前在 Avalanche 工作的 Graphics Engineer 不过这门课不是图学 老师是个游戏引擎狂热份子 他都说如果让他从头到尾自己做一个游戏 他只会一直改良他的引擎而以应该不会做出游戏哈哈 这门课教的一部分是游戏 asset pipeline 还有怎麽写好游戏引擎的一部分跟提供 public interface 对於这一点他觉得一个很好的学习方式是同时写 Direct3D 11 还有 OpenGL 的 API Build x64 的时候用 D3D, x86 的时候就换成 OpenGL 一开始从怎麽好好设定 Visual Studio Solution 跟不同的 projects 还有 external dependencies 开始讲 後来就是开始建一些 Mesh 跟 Effect, Material 的架构 重点是要怎麽写好 public interface 跟 private implementation 毕竟 gameplay engineer 不应该去担心他今天想要 render 一个角色在画面上是用 D3D 还是 OpenGL 後来有着重在 pipeline 跟 binary file 一阵子 例如 artist 在 Maya 里面建了一个 3D 模型,然後我们可以用自己写的 plug-in 去把 他输出成我们引擎用的一个 Lua table 档案 在这个阶段还是 human-readable 可以人眼来看看 debug 接者在 build solution 的时候跑我们的 custom builder 把 Lua 转成 binary file 重点就是要非常小的档案然後可以很快速的读进游戏里 学期末大概一个月做期末 project 分成两部分 第一部份就是做引擎的一个 component 同学做的主题有 particle system, behavior tree, audio system, gamepad controller interface, 3D collision system 我做的则是一个 graph-based A* navigation 第二个部份就是大家报告完自己做的东西之後挑至少一个同学的加进自己的引擎 最後做一个简单的小游戏 demo 出来 我拿了 behavior tree 跟 audio system 来做了一个非常基本的类 Crypt of the Necrodancer 游戏出来 这门课另一个我觉得对我帮助很大的训练重点就是每周的作业都会要求我们写 write-up 放到一个公开的网站上让任何人都可以看 我是放到自己的 wordpress 然後後来在找工作的时候开始会把自己写的文分享到 LinkedIn 上 个人觉得好像有点帮助啦 lol 3. Game Engineering III (Gameplay Engineering) 这门课算是普遍同学间满有意见的一门课 老师以前在 Zynga 上班是 Unity 专家 我们上一届听说是自己选用 Unity 或 Unreal 写作业都可以 我们这一届变成强制使用 Unity 但基本上我们同学间 Unreal 跟 C++ 爱用者比较多 不过因为这门课作业量非常大 大家都觉得同样的系统要是能用 Unreal 来做就好了 课程的部分从 SOLID design pattern 开始然後花一学期做一个像当初魔兽三的 Warlock MOD 游戏出来 作的内容有角色有技能有商店(技能和物品还有升级) UI 後来也做了 AI 跟多人连线 虽然大部分的系统跟练习都是能转移的 也有少部分像是让我们用 Unity Particle System 和动画系统自己做一些出来就觉得这 种练习好像不是太有意义 我个人是觉得这堂课还是学到了非常多 老师人也非常好也很强 但要我在选一次我可能会有点犹豫 4. Game Projects III 接续上个学期做的东西继续做硕士论文 第一学期主要是做出 feature 然後打定 alpha 版本 第二学期除了 polish 外基本上就不做新的东西了 重点放成把素材慢慢加进去让游戏开始比较有个样子 不过当然 bug 还是很多 所以我们组基本上每个礼拜六都会在实验室加班 别组有人看到还说我们干嘛把自己搞得这麽忙 这边就感觉得出来国际生跟美国当地的学生压力真的不一样 美国人大多都觉得要有 work life balance 学校部份 ok 就好 国际生则是整天想着找不到工作就挂了 lol 一路加班加到 GDC 前虽然很累但是算是有达到目标 我们组的目标就是 GDC 回来後游戏就要发到 Steam 上然後让大家努力去找工作了 接着就只有修 bug 跟社群管理 不过後来还是做了一个新的排行榜出来 让玩家可以看到自己玩的时间跟其他人比较快慢 学期末的时候也会有口试 defense 公开 defense 就是一组做一个投影片然後轮流讲自己做的东西 私人 defense 则是一个一个去找教授群们闲聊听他们再给一点最後的 feedback 讲你这 两年有什麽成长这样然後说再见哈哈 5. A.I. For Games 这门课上一届的评价很差 印象中是找一个 CS PhD candidate 来教然後教的一大糊涂 今年则是给我们系上的一个助理教授教 他也是第一次教这门课 但是整体算是觉得架构的很不错 课程主要就跟着 Ian Millington 的 AI For Games 从基本的 Steering 开始 还有 Collision and Obstacle avoidance 然後做 A* 跟 Dijkstra graph search 接着在做 decision tree, behavior tree 跟 blackboard 单纯看这些部份会感觉份量好像满轻的 但其实很多时间花在自己架构 world interfacing 像是怎麽取得世界里的 obstacles 还有自己写个简单的 ray 跟 ray cast collision detection 原本有打算期末还要做一个 strategy AI (group AI) 但因为 GDC 跟春假放掉了两门课 教授自己也有事请假了一两次给 TA 上课 最後就没做了 其他的上课内容有 Goal orientated action planning 跟 decision tree learning (ID3 algorithm) 学期末有讲一些基本的 Procedural Content Generation 像是 procedural narrative 有一点值得一提的是教授原本打算规定用 Java 写作业 但经过一位同学的强力争取跟教授写信来往好几次 最後教授同意我们用 C++ 跟 Open Framework 这里真的是满佩服那位同学的 话说人家最近开始在 343 上班了哈哈 6. Real Time Game Rendering 跟 Game Engineering II 同个老师 我们这届很幸运的遇到他今年愿意开这个课 还有系上愿意不顾 CS 抗议他们已经有图学课我们还开的意见 跟 GE II 相比不一样的地方就是这们课当然着重在图学跟 Rendering Engine 有几周的重点是 render command 还有怎麽优化 draw calls 顺序 例如没有 alpha blending (order independent) 要先 draw 然後同样的 material 或 effect (shader) 还有 mesh 可以被放在一起减少 API calls 然後有 alpha blending (order dependent) 要从後往前 draw 接着做基本的 texture, normal map, 2D UI 还有 diffuse, specular lighting (用 Blinn-Phong) 後来有一周在讨论 color correctness, sRGB 还有 linear space 学期末做了 Physically based rendering (PBR) 还有 environment mapping 期末报告就是自己挑一个有兴趣的主题来做 有同学做 Ambient occlusion 我则是做 vertex-based wind simulation 虽然大部分同学以後都不是打算走 Graphics Engineer 但这门课算是给大家一个还不错的底子 两年下来总结觉得我们 program 或许不是会教出技术最强的 developer 但是会让大家很熟悉一个游戏从头到尾的开发大概是什麽流程 也很重训练人与人之间的相处跟专业合作 还有如何在不喜欢对方的状况下还是保持自己的专业态度 lol 我们 program 的弱势可能就在地点是 Utah 所以大公司不多 唯一一家比较大的就是 Avalanche 他们最近也是给了我们一堆毕业生实习职位 但都是九个月的合约而且很少听到他们给 sponsorship...... 另外就是靠毕业生跟业界的关系 Santa Monica 跟 Playstation 人资有一起来过 跟我们很详细的讲了他们收人标准然後也跟我们每个组的人见面 因为我是当 undergrad capstone class 助教所以他们跟大学生见面完之後我又把他们带 回来我们组上聊天哈哈 Santa Monica 最後收了我们这两个实习生 但其实就是他们的 Junior 职位 Jam City 也有一大批人来 Activion Central Tech 也是每年会来个一次 今年也有个 Blizzard 在 Diablo team 的来跟我们见面 但当然规模都无法跟在加州的学校或是 DigiPen 比 大概是这样吧 有兴趣的人欢迎留言或站内信 我会尽量回~ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 73.166.95.204
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/studyabroad/M.1557698495.A.61A.html nickchu35:转录至看板 GameDesign 05/13 06:02
1F:推 CarpeDiemAL: 2K欢迎你~~~ 05/13 07:20
哈哈有看到你分享的文!猛猛的!
2F:推 paulloxa: 恭喜毕业 05/13 07:37
3F:推 lf41001: 朝圣推 05/13 08:05
4F:推 philip09227: 详细推 05/13 08:12
5F:推 chenyao0910: 推 05/13 10:35
6F:推 d92001314: 感谢分享 05/13 10:47
7F:推 b10007034: 感谢分享,之前只有看过Cat大的digipen的分享一直觉得 05/13 11:53
8F:→ b10007034: 这行很厉害XD 05/13 11:53
9F:→ b10007034: 看到你的心得之後更是觉得太猛了 05/13 11:54
10F:推 PuptheDoggi: 推推推 05/13 13:45
11F:推 sam830917: 推 05/13 14:13
12F:推 allan08: 学长太猛~推推 05/13 18:23
谢谢大家,我跟 CJCat 大大差太多了,之前有联络过他给了我一些建议跟方向,真的太强 ※ 编辑: nickchu35 (73.166.95.204), 05/13/2019 23:21:50
13F:推 louis117228: 推 05/14 09:13
14F:→ vqawa: 推推 05/19 05:25







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP