Re: [请益] 大学期间自学游戏程式的方向与一些问题

楼主: kuku321 (halipapon)   2019-05-17 17:47:29
看到这段
: 1. 走游戏特效模拟之类的,需要需要往上读研究所吗
: 像是之前的这个大大就事先读研究所再去日本专门学校,
: https://www.ptt.cc/bbs/GameDesign/M.1460214009.A.A8C.html
简单回一下。
※ 引述《md9830415 (DavidHsu)》之铭言:
: 在准备比赛的时候开始接触到一些基本算法,就在那时候开始了解写游戏需要的知识,
: 如基本向量跟绘图,尝试从0开始用C#跟JS写了一些小游戏
: 最一开始写的C#小游戏
: https://i.imgur.com/IrctsiI.gif
: JS写的弹幕游戏
: https://i.imgur.com/ssZ6BcJ.gif
建议可以写些“完整的游戏”。
所谓的完整呢,不是说只是能射击,游戏可以玩、有计分有血条就好。
而是有个标题画面闪阿闪叫你press any button,
然后有教学页面,主关卡,计分结算,最后回标题,
这样一个完整的LOOP才能叫作一款能端上桌的“游戏”。
这有什么重要的呢?
重点在你有没有重复利用的概念,以及理解游戏真正的内部流程。
开始会去想要怎么去包装class或函数,开始考量到public private成员差异,
考虑那些资料应该被共通使用,
Unity直接提供给你的start update render finish到底是干嘛的。
做一个亲手打造的完整3D弹珠台,
会远比你用现成工具兜一个超屌爆干宛如3A大作的动作游戏。
看你是打算走手游还是家机来选择。
如果是手游的话,继续走2D和简单的3D,然后用现成引擎是没什么问题。
如果你打算作家机,甚至是搞到引擎层级内容的话,
强烈建议一定要用C/C++,然后看你要用DirectX还是openGL都行,
搞一个小型但完整的framework出来,然后再用他来作一个“完整的”洛克人(之类)。
玩法可以维持2D没问题,但一定要以3D物件为基础去作。
Layer分层也不用多,分成背景(2D+3D物件)、前景(2D+3D物件)、UI(2D),3层就好。
这样基本架构也练到了,还能顺便理解billboard的作用,
也可以开发些高速化billboard来玩玩看,强化自己的矩阵/算法熟练度。
这目的在让你了解Z-Buffer、ZBias或一些Layer sort的意义,
能够实际运用你所学的资料结构,增加link list之类的熟练度。
而且上述整个游戏作完,你也能分别建构出2D与3D的画面描绘的函式库,
理解矩阵转换和2D 3D投影差异。
基本上我觉得你毕业前能搞出一个能够让自己随时简单使用的framework,
然后用他来作出2~3款小游戏,并且抓出自己framework的改进点,
这样就差不多可以当家机游戏即战力了XD
(当然数理+物理等部分也需要,下述)
: 感觉游戏特效模拟的东西反而偏向科学综合,需要有扎实的数学物理,还要有扎实的电脑
: 科学知识,像是作业系统、GPU架构、算法等等,才能配合理论完成实作,所以也很好
: 奇走游戏领域要不要念研究所,因为真的是很多领域都有。
: 也因为写过那些小游戏后,感觉到自己底完全不够,很清楚大学应该是要好好打底的阶段
: ,然后我的很烦恼的问题就在,学校没有图学相关的课程,都教网页开发居多,课程深度
: 个人觉得不够,每天去学校上课都觉得自己离cjcat的经历越来越远,虽然知道学校只是
: 引路人,最后还是要靠自己学,但按照我之前教朋友写程式的经验,有人在前面带的学习
: 成效真的快非常多。
这就是我希望你能写一个完整游戏的原因,因为这才叫做一款“能上市的游戏”。
然后拿去给你的朋友/家人/或是PTT的大家来试玩,嘴越贱的越好。
因为你在拿去之前就会开始想这样是否堪玩,是否好玩。
你有没有把所有部分作到你的best,还是有些部分你根本作的鸟鸟的就想拿出去。
贴图连环动画格数有没有问题,角色动作连贯性是否顺畅,
你有没有物件排序出错导致有些景物被透明物件遮盖。
当你有自信这些【商品的基本】都没问题后,恭喜你得到了【程式设计师】的门票。
然后你在端上桌前的那一刻,回想起你所玩过的游戏和曾经给过它们的粪作评语,
开始为自己的作品是一团屎而感到丢脸。
为什么FPS不到30祯?
为什么分数结算是数字大辣辣的显示出来而不像吃角子老虎有转动特效?
为什么你的血条是80%瞬间扣到60%,而不是80% 79% 78%...62% 61% 60%的滑顺动画?
为什么你的角色移动和跳跃都是等速,重力去哪了?
为什么读取画面只有now loading一张图还不会动?
然后你会运用你的所有知识,知识不足你会开始翻书翻论文问google老师。
把一切你觉得是粪的要素通通移除后。
恭喜你,你终于拿到了【游戏程式设计师】的转职会场参加资格了。
在这途中你就会强化你的数学/物理能力,
学会多核心计算架构,
学会frame buffer跟render state等用法。
根据所增加的额外技能,你将获得【物理战士】【影像法师】【框架牧师】等转职资格,
当然其中也包括【落选】。
: 最后想问的问题是:
: 1. 走游戏特效模拟之类的,需要需要往上读研究所吗
: 像是之前的这个大大就事先读研究所再去日本专门学校,
: https://www.ptt.cc/bbs/GameDesign/M.1460214009.A.A8C.html
: CJCAT则是台大毕业后去DigiPen
看你有没有想出国或是想去哪个国家。
其实研究所/专门学校/台大/DigiPen,都没什么差别,
都是我上述所说让你增加附加价值的管道而已。
就以你的目标业界/目标职种,选择你能获得所需时间并有效增加背景知识的管道即可。
你提到的游戏特效模拟,是有考虑专精这方面吗?
有考虑作Graphics相关的话我之后再补充些这方面的经验,建议先思考个大概方向。
研究所部分,我觉得最大的帮助就是论文判读跟实验比较上吧,
基本上这个行业进去后还是需要常常看些论文,懒的话就看些别人总结的报告跟公式。
然后要有实装它的能力,我觉得这才是游戏业最重要的一项能力。
: 2. 如果想要走游戏开发是不是一定要出国到美国或日本
看你个人的最终目标而定。
: 3. 如果我继续自学的话会建议怎么规划学习路径
: 像是目前规划是先学好微积分、线性代数跟物理,然后分两个领域学,一边是图学跟2D物
: 理模拟,另一边是学算法解UVA题目、作业系统、计算机架构之类的...,期间都好好学
: 英文跟日文,这些大方向我目前算是知道,但细部都不是很清楚。
不管哪个职种,游戏程式对于内存和CPU/GPU使用量到了病态般的执著程度。
所以计算机架构、资料结构、算法算是非常重要的重点项目。
其他数学/线代/物理/或是图学甚至视窗程式等等等,有个印象就好,
当你遇到问题知道怎么问google老师,这就是最基本门槛。
而不是遇到问题你只能满头问号,连怎么问google都不知道就好。
: 4. 目前写过的东西几乎每个都从0开始造轮子,现在也在尝试模仿2D的简易游戏引擎框架
: ,像是动画、摄影机视角、碰撞体、物体继承架构规划、场景管理,每个功能自己想都花
: 很多时间,有时不太会下关键字,导致有些功能还只是用很烂的解法顶着用,但很多科技版、
: 软件版都说没事不要造轮子,我这样是不是在浪费时间
: https://i.imgur.com/iadVjvL.gif
游戏业framework就是很重要,
而且你一转职,每家公司用的自家引擎也都不一样,都是要重新学重新熟悉。
甚至是Unreal Engine也是,根据不同商业游戏,也会有很多特化内容要增加,
甚至你会觉得怎么跟自己在家下载的UE4用法完全不同的程度。
所以有办法自己处理框架问题,遇到bug有办法沿着架构追,
Task Manager不要看不懂,能够确实解决Bug就是作游戏最大的重点。
即使你不打算搞引擎,你可以不要造轮子,
但你一定要知道问题出在轮子的哪根螺丝上,所以从基底写起不会亏。
我觉得我做过最神经病的就是用命令提示字符(CMD)搞图像游戏了(?
SAO为主题的音乐节奏游戏
https://drive.google.com/file/d/0B62DAR7ZudpFMlZCNnRpcmowZXM/view
通通用文字,framework搞起来极为单纯,当初含游戏大概1个月就搞定了。
一开始准备了很多首歌,结果放两首就爆了,
推测是CMD上限被我玩到坏掉,当下还当机+各种诡异画面出现,吓死人XD
然后问题来了,当初觉得画面闪烁是frame drop的问题,
当我作另一款游戏时才发现不对,画面怎么闪到几乎不能玩,
我才意识到原来当初以为的每祯画面刷新,实际上是画一个文字就刷新一次,难怪会闪。
于是乎...
我又更神经病的在CMD基底的framework上实作了framebuffer跟render state功能(?
https://youtu.be/cLE9Plbpiew
我觉得这非常重要,即使你觉得从轮子开始搞很费工,
我也会建议你既然如此,至少花个1~2个月,用C语言和CMD搞个framework吧,
如果你觉得有其他项目比2D 3D图形游戏framework还重要的话XD
: 5. 如果走游戏开发,是不是赌注很大,感觉台湾工作机会不多
无法回答,Pass
不过我觉得人生本来就是不断的重复赌博(?
: 6. 因为自已平常只是用JS的Canvas元件绘图,会比较推荐学C++或C#写OpenGL/DirectX,
: 接Unreal/Unity,还是继续用JS写WebGL
: 非常感谢各位愿意看完我的问题。
会。
作游戏就是跟内存的无尽战斗,C++等内存层级的管理一定要熟悉。
除非你没打算作家机或出国。
(台湾状况不知道)
目前想到的大概是这样,提供参考。
有想到其他的以后再补充。
作者: zxshih (zxshih)   2019-05-17 19:44:00
又一篇文章要收藏了
作者: coolrobin (泳圈)   2019-05-17 21:13:00
作者: jackyT (Ubuntu5566)   2019-05-17 21:20:00
作者: nickchu35 (尼克邱)   2019-05-17 21:22:00
推!
作者: allensheng (上将帽子)   2019-05-17 21:43:00
作者: zseineo (Zany)   2019-05-17 22:51:00
作者: OmniAlter (^Q^)   2019-05-21 22:15:00
作者: cycutom (cycutom)   2019-05-23 14:04:00
push
作者: bill21010 (三横一竖鲤鱼王)   2019-05-24 20:40:00
作者: ilikekotomi (Young)   2019-05-25 10:18:00
感谢心得分享
作者: beef68 (牛肉)   2019-05-31 17:29:00
推然后说声谢谢
作者: s59654655 (s596546ff)   2019-06-18 16:07:00
神文
作者: TWayne (TWin)   2019-07-18 09:23:00
推推

Links booklink

Contact Us: admin [ a t ] ucptt.com