找回密码
 立即注册
楼主: DomDomm

高中生如何坚持开发游戏引擎?

[复制链接]
发表于 2021-9-24 11:19 | 显示全部楼层
你讓我想起了現在的自己
於2017.6.30距離上一次前往上海一年之後的晚上回答完畢。

先更新一個觀點
回答裡面說所謂的「在合適的年齡做合適的事情」可能是正確的,對於大部分人來說。大部分人注定平凡,少部分的那些自認不凡的人大部分也注定失敗。

中二,有夢想是好事,但是要以認清自己能力為前提,認清自己所謂「興趣」的深層內容,再下定決心,也未晚。因此有夢想不會是壞事,只是差一點點的轉變,而不是只是一味地等待「日後」「大學以後」,儘管現在不能「完備」,但是絕對可以從現在開始準備。

第二的觀點是要堅持。具體親身體驗的事例我有空闡述。

第三個觀點是要跳出「比同齡人厲害」這一圈子。

遊戲引擎需要的東西太多,回答裡有提到「以後」、「上大學以後」等時間狀語,是有一定根據的。因為遊戲引擎並不是「中二地」「有能力地」「單槍匹馬地」就可以完成的,裡面包含了許多部分,而這些大大小小的部分完成搭建的基礎一定是他們所提及的「數學」等基礎知識。所以如果目標是寫一個「遊戲」,或者是「渲染器」,一個是引擎實例化的產物,一個是遊戲引擎專一化的產物,這樣可行性更好,可以抓到的重點也更明確。

另,其實很多所謂「過來人」也只是把自己的經驗和自己遇到的別人的經驗轉述了一遍。路怎麼走,實際情況如何,還是要看自己。因為他們其中很多人會抱著對你是「又是一個中二少年」「又是一個不知天高地厚」的等觀念先入為主,並自以為提出「先讀大學」「先好好學習」這種不叫「政治正確」的政治正確的觀念以老大哥的身分來對你進行泛泛的引導,因此我覺得我的回答(不知道你會不會認真看完那麼長的一段話)和他們的回答都是「只供參考」而已。

先說說我自己的經歷。首先,為了保持在網上的神秘感,我的具體身份與學歷僅供猜想。但是其實已經比較明確。我們都生活在一個信息時代,遊戲產業是我們最可能先接觸的產業。因此對其產生興趣也並不是不可能。有的人會選擇玩遊戲,有的人會選擇製作遊戲,顯然「你」是屬於後者,這裡就已經分化出了一個好壞區分度不明顯的分支。
我也類似。我從金源引擎的地圖製作到虛幻三,都是屬於「泛泛」的興趣,並無深入的學習。此時也有不少「同齡人」在網上嶄露頭角(但是很可惜的是,三年後的今日,仍在堅持的熟人已經少之又少)。由此可見堅持的重要性。想要做遊戲,但是那麼多獨立遊戲,怎麼樣脫穎而出?這是一個難事,或者說這裡因為「避難(nán)」引出了第二個分支,遊戲製作者和遊戲引擎製作者(這分支是對於「業餘愛好者」而言的進行的分類)。這時候就需要更深入的學習了。編程只是工具,學習編程只是「泛」地,淺嚐了一口這一個分支。同樣的處境來了,如何「脫穎而出」。我雖然沒有看過您的作品,但是我明白能提出這樣的問題的人一定是在同齡人中有著過人興趣,或天賦的,和我類似有過迷惑和不解,甚至有種年少氣盛的「裝逼」氣勢(非貶義,畢竟我也經歷過,包括這個答案)。但是自己製作的東西,實用價值真的存在多少?是成品還是半成品還是殘缺品,這個判斷我相信您在看過虛幻等引擎過G的項目後一定有了答案。因為「引擎」這個工程太過龐大了,這就是問題所在。
不是學了一下「DX」就能解決所有問題。這是「泛」的。浮在了表面,不願更深入,因為這裡真的需要動腦,真的需要強烈的興趣支持(甚至和平時基礎科目的學習是完全一樣的),比如說計算機圖形學(我舉這個例子,因為我比較熟悉(但是水平依然十分有限,知道得越多就會覺得自己知道得越少),望斧正,或大佬們提出批評)。
於是在網友還在研究如何連藍圖的時候,我自學了圖形學的有關知識(這裡需要感謝一群來自圖形學各領域的網友給我開始提供了許多幫助)。圖形學難,它不是只是寫寫glslhlsl就完事了,它涉及幾何光學,統計學,微積分什麼的更是基礎得不能基礎的學科。起初我連一個半球積分的符號都看不懂,深知自己的無知,用一個暑假自學了這裡深度相關的知識(具體我不指出來了),並寫了一些有趣的,具創新性的「渲染器」。此時在圖形學這一平行宇宙,對我而言算是入門得不能更入門的入門階段。

在上一年,我得到了一個機會。我單槍匹馬,獨自乘坐飛機來到了許多人夢寐以求的大都市。上海,一個月。我的第一份工作,是一位有想法有耐心的老闆提供的。因為這裡說的都是我內心感受,我也不做掩飾,但並無任何抱怨的意思,只是作為一個經歷,而且如今甚至懷念。我在辦公室裡算是異類,因為我的表面身份(見前文,我不多做闡述)。我們是創業公司,起初只有六個人,算上我,五個人都生活在一起,一起工作,生活了一個月。都做些什麼工作呢?VR行業,做和虛擬現實有關的一切。而我,儘管水平有限,但是還是擔任的是程序員的職務,其餘的同事皆是美術,或是技美。在我去之前,程序這一部分基本靠技美填充(他給我點讚了,我甚是想念他們)。我每日除了完成新的項目,還為公司提供新的,未來可用的技術解決方案(技術有限,因為VR內容基本引擎有現成的許多功能,因此這裡提到的東西並不是特別厲害。。。順勢所說),比如在虛幻4.8的版本裡寫了一個可壓縮的頂點緩存的格式(比後來的支持的abc早了半年),解決了流體和布料為節省資源離線預運算數據的加載。諸如此類。後來在我在的那一個月,我們公司有幸參加了chinajoy的展會,這也是我第一次見「市面」(我知道有一部份人對cj評價不高,因此在此處的感情色彩均以「我」為基準,還望斧正)。我印象最深刻的,是ceo在場外僱來的臨時模特。有點說得太多了。
不知道這樣算不算是「跳出與同齡人相比」,真正實現了自己的夢想呢?在上海近四十日,每日與喜歡的事情奮鬥,每日與可愛的同事、老總奮鬥,熬夜,早起,不眠,給我帶來的不僅僅是第一份厚重的工資和第一部親手購買的手機,更是「同齡人」所不能領悟的成長。

如今因為某些我認為十分可惡的情況,我不能在上海久留。但是對此的追求從來沒有停止。為了賺錢(不是養家,可能等你工作後你會有感悟),我在虛幻商場裡提供了一些特別的渲染的解決方案(材質目錄下),具體我不說了。這樣月入也有不少呢(具體我不說了)。這種「想要獨立」「想要養活自己」的感受,可能就是「副作用」之一。好處壞處尚未體現出來。

而這些一切的一切,只源於我當初的一個想念:CS真好玩,如果能編輯它的地圖就好了。

我目前經歷的經歷到這裡就結束了。我也曾徘徊,也曾迷茫,如今我也仍在徘徊,仍在迷茫。但是沒有什麼問題是有正確的答案的,不往前走,不嘗試,不跌倒,不改正,是絕不會有奇蹟的。
未來該如何?高中生應該如何堅持寫自己的遊戲引擎?不知道我和你心中會不會有一個更加明確的答案呢?
发表于 2021-9-24 11:20 | 显示全部楼层
好苗子,先给你个赞!
写游戏引擎这种事真的不适合一开始就做,你要是对游戏引擎感兴趣,可以先从使用别的游戏引擎开始,比如Unreal和Unity,最重要的是写引擎的知识基础你还没有,我看了下你的代码,大概你还不清楚矩阵的意思吧,大学的线性代数可以先去看一下,以你的能力应该能学会。
另外听你父母的,考大学这件事更重要,大学对你来说意味着进入一个环境,考上好的大学你就进入好的环境,身边有优秀的同学和资源可以帮你,你这个年龄心智的成熟更重要,加油
发表于 2021-9-24 11:29 | 显示全部楼层
建议你还是先使用现成的商业引擎(比如U3D)来开发一些游戏之后再考虑去写引擎,以你目前的水平离开发一个能用的引擎还有很大距离,你可能并不清楚一个引擎需要提供哪些特性,引擎需要解决游戏开发中的哪些问题,至于整体的架构设计还有性能优化之类对你可能就更抽象了,现在把时间浪费在超出你能力范围的引擎开发上,做不出什么有价值的东西来,等几年之后回头看看就会觉得自己走了弯路了。
发表于 2021-9-24 11:33 | 显示全部楼层
别闹,游戏都没写过,如何写游戏引擎。这个就像是从来没开过汽车的人要设计汽车一个意思。
发表于 2021-9-24 11:35 | 显示全部楼层
半夜睡不着,看到这个问题突然心血来潮想唠叨几句。。。如果题主真的想在未来从事游戏引擎开发相关的工作,高中最重要的任务就是好好学习,争取进入一流的大学学习。现阶段放弃学习对你未来的成长是非常不利的,下面具体说几点:
一、开发游戏引擎需要高中的知识做铺垫虽然学校里的课程并没有直接教你怎么开发游戏引擎,但是如果连高中水平的英语、数学和物理都没有掌握,将来最多成为一个API搬运工。也许题主说自己可以自学,但我觉得题主可能会高估自己的自学能力:自学编程可以给自己带来强烈的正反馈(编译运行得到预期的结果,或者是解决一个让自己卡壳很久的bug,又或者是看着工程的代码行数随时间线性增长,都能够给猿类带来持续不断的快感和刺激),但自学基础学科的过程是非常枯燥的,坚持下来需要极强的毅力。(在学校有老师的引导督促和同学间的帮助和竞争,想学好相对更容易)
二、大学可以开拓视野,提供更好的学习平台和资源虽然国内大学的考试一般都很水,但是并不代表大学里学的东西就没用了,操作系统、计算机组成、计算机图形学、编译原理、计算机网络、数据结构与算法、离散数学、线性代数……这些都是开发游戏引擎的基础(可以记不住细节,但是不能完全没有概念)。光学会使用DX接口就想开发引擎,题主可能把这件事想得太简单了。粗略看了一下题主的代码,DX 官方Sample 里随便拎一个出来都比题主现在的代码要复杂,建议题主去下载OGRE 或者UE4 的代码看看,感受一下什么叫做3D游戏引擎(当然,题主作为一个高一学生能做到这一步已经很强了,至少甩我当年十条街)。如果能够进入一所好大学学习,除了可以顺其自然地的掌握上面一大串知识链,还有很大的机会碰到一个好老师或者好湿胸带你做项目。在有人指导的情况下,可以避开自学路上的一大堆坑,省下大把的试错成本
三、当今社会,学历很重要对程序猿来说,学历非常重要,引擎开发尤其重要。我想没有哪个公司的老大和HR会这么无聊,招聘时完全对简历不做任何筛选,然后放着一堆清北985毕业生不要,冒着巨大的风险去招一个N本毕业的题主(这里做一个假设,如有冒犯见谅),当然如果题主有信心独立实现一个次时代3D引擎,再加上一点自我宣传,也不是完全没有机会
四、游戏引擎开发是深坑,高中生没必要这么早踩进来
如果题主立志进入游戏行业,那高中就是你享受美好人生最后的机会(别问我为什么,说多了都是泪。。。),学习之余把开发引擎当做自己的一个业余爱好(装逼资本)就好。而且在我看来,高中生就想做游戏引擎实在是言之过早,有时间多玩玩别人的游戏,自己尝试用Unity 做一两款小游戏,反而更能加深你对游戏引擎的理解

=======================2017-06-16 更新=======================
看到题主问题里补充了下面的内容:
补充:各位大佬看了代码都说没有内容。其实我都说了,重构之后,很多东西都给我删了,只有刚改好的框架了。我准备等学好dx11后再加功能。所以,不要在就这个话题来说我了。
那我也想补充几句:
我上面的回答提到的“代码复杂”,形容的不是代码量(毕竟复制粘贴是程序猿的基本功)和代码结构(毕竟项目里多定义一些结构混乱,表意不明的类型,再互相耦合一下,代码结构复杂度就可以呈指数形式增长),而是代码所涉及的知识点。
你现在“引擎”代码所涉及的内容仅仅是简单地调用DX9固定渲染管线的API,连最基本的Shader都没有,更无需妄谈光照模型之类的渲染基础知识。场景模块都没定义,就先写了个Physics,恕我直言,以你现在的水平还没有到达需要讨论“架构”的地步——连最基础的模块定义都走偏了,讨论“框架”、“耦合度”之类的词汇还有什么意义呢?
毕竟,一个游戏都没开发过的人,怎么能够知道游戏引擎需要哪些模块和组件呢?就算从其他地方抄了一个基本框架过来,没有真正写过游戏,又怎么能够知道如何让自己的引擎更好地为使用者服务呢?
发表于 2021-9-24 11:41 | 显示全部楼层
先搞定好高考,考上理想的大学(最好是本科,因为课程对你开发游戏引擎有帮助),不然学业荒废,离自己的理想也越来越远,考完之后你就有大把时间去做你爱做的事了,过了一段时间你会发现还是玩游戏安逸。(滑稽)
发表于 2021-9-24 11:43 | 显示全部楼层
在不耽误念一所好大学的前提下……

推荐你先写一些实际的游戏提高兴趣,或者直接拿你的引擎来做游戏。
引擎是为游戏服务的,没有游戏的支撑,引擎很容易浮在表面,做一些不靠谱的功能。
另外静下心来学好数学/英语/物理。 这三个在里会经常用到,相对游戏引擎本身来说,这三者其实更难。
发表于 2021-9-24 11:53 | 显示全部楼层
可以,高一做成这样的全国也拽不出来几个。
反对其他答主的回答,太功利。不说能不能做好,做好了当然好,做不好栽几个跟头也没什么大不了的。学生时期做啥都无所谓,重要的是锻炼自己的编程能力。
但是我也必须要泼盆凉水。
我高一的时候已经跳出做Framework的圈子了。从初二开始学C++我就一直在做一个叫做CGL的图形库(https://github.com/mikecovlee/covgl),虽说叫图形库但实际上和GUI库差不多了。CGL的整体抽象和框架应该都要比题主的这个游戏引擎要好一点的。大致看了看代码,题主的基本功只能说还可以,但离优秀还差几个身位。题主的代码放眼望去还是能直接揪出来几个不合适的地方甚至是Bug,现在做这么大的项目恐怕会摔得很惨,与其现在研究D3D11不如先把C++基本功打好。
至于坚持的问题,还是看自己,不影响学业的情况下可以继续坚持,但还是学业为上。高一学习不算紧张,玩玩还是可以的。

总结一下:值得鼓励,继续坚持,要认识到差距,与其做这种大项目,不如先打好基础。
发表于 2021-9-24 11:57 | 显示全部楼层
2周前的提的问题,希望还来得及。

题主虽然只是小小高中生一名,然而已经能动手开发引擎,甩出同龄人一大截,可谓少年英雄,前途不可限量。

能让题主拿”学业“这种能影响人生几十年的东西来做赌注,并能顶住全世界的压力和”冒天下之大不韪“的光环,那么,题主铆足劲要做的,一定不是一款踩蘑菇或者3D连连看吧?

(以下数据来自知名老中医搜索网)
1,以一个人的时间和精力和能力做出来上市的游戏,需要花多少世间并能做到什么程度呢?

undertale_百度百科,屎一样的画面,简陋的战斗系统,2D游戏,作者:toby fox,一人包办了程序,美术,音乐,剧本,使用的是垃圾引擎game maker大概是2.7年,也就是2年半的样子。
https://www.quora.com/How-long-did-it-take-Toby-Fox-to-make-Undertale
Undertale - Wikipedia

洞窟物语_百度百科,屎一样的画面,简陋的战斗系统,2D游戏,作者:天谷大辅,一个人包办程序,美术,音乐,剧本,使用c++开发,时间是5年(业余时间)。

Fez_百度百科,屎一样的画面,基本可以忽略的战斗系统,3D游戏(是的,3D),制作人:Phil Fish,引擎是团队成员写的,花费时间,5年(全职)。
这个“疯子”花5年时间做出一款独立游戏神作

2,如果同样是3-5年,商业团队又能做出什么样的东西来呢?

命令与征服:红色警戒3_百度百科,EA出品,暴死大作,开发团队:EALA,团队人数:400人(2005年新浪新闻)
EA洛杉矶分部开始裁减游戏开发人员_新浪游戏_新浪网

星战前夜_百度百科,开发公司:冰岛CCP,团队人数:600人,
https://zh.wikipedia.org/zh-hans/CCP_Games

3,如果不准备做游戏,而是单纯做游戏引擎,坐收渔翁之利呢?
(开发人员就不贴了,都是公司)

RPG Maker_百度百科,steam版全价204,现在打折购买,-65%哦
Save 65% on RPG Maker MV on Steam

Game Maker_百度百科,steam版全家248,现在打折购买,-20%哦
GameMaker Studio 2

Unity - Game Engine,个人版免费。

什么是 虚幻引擎 4,使用免费,游戏开卖时5%提成。

The complete solution for next generation game development by Crytek,免费,steam版可+1。

国内的就不贴了,逼格不够(我知道的国产3D引擎起码就有5款以上(自研,非磨砂贴牌),且都有知名代表作上市,好不好玩就不评价了)。

好了,上面是按照退学搞游戏引擎出游戏变现的路子,列出的参考对象和潜在的竞争对手。

--------------分割线
下面是”在不计较时间和精力投入下“,制作一款可以称的上是“现代游戏引擎”的技能树

miloyip/game-programmer,这个是大佬milo yip整理的,这样做出来的,先不说成品质量和性能,起码你游戏的图像,动画,声音,网络,AI,物理,数学基本功能齐活了。

你:有那么多前人,团体,公司开放了那么多的模块出来,我为什么要重头写呢?
那么,一名高中辍学生,又比一名从业个几年仍然拿3,5千工资,是个人就能干的“引擎组装工”,强多少呢?因为你可以拿同样的工资但一天工作24个小时?

===========题外分割线

我有认识几个的确是高中毕业就出来工作的(IT行业),98%混的惨的就不说了,没有"成功"的参考意义,有一个混的还不错的,在培训学校花了点钱学了三个月,出来做U3D开发,工作了2,3年,现在一个月能拿到10来K,项目不错的时候,年终奖有不少,折合平均一个月能有个20k+,想想也不少啊,对于一名高中生毕业的人来说。
一个月除掉吃喝拉萨玩,一年理论能存个10来W,这可是大款哦!在一线能考虑买一平方房子了,在二三线能考虑买个厕所(虽然5平方,但还是有点挤)

要是拿这钱开公司呢?诶,一个100平方的办公室,一个月租金1W起,不含水电气物业营业税等等等(员工呢?连自己都招不起了)

拿这钱理财?诶,不是进股市当韭菜,就是留在银行被通胀贬掉。

你:老子是做引擎的,不知道比垃圾U3D高到哪里去了。
咳咳,先不说realtime rendering和physical based rendering都吃透没有。在游戏引擎里真正派上用场的几本数学,线性代数,高等数学,离散数学,概率论,你都有看过吗?
放几个小人在屏幕上跑,根本用不着啥高中生,普通水平的初中生,考试不低于80分,稍微教教也能搞,可是这有啥意义?这是啥年代了?2017年都特么过了一半了!

你:老子一脑袋骚想法,卖的是玩法,不是画面!
哈哈,这就好说了,
若是为了钱:steam现在上游戏不用审核了,交个100刀就能发,国内若干平台对开发者年龄也没有限制,100刀可以从众筹网上讨,运气不差的话还是能讨到的。
若是为了名:game jam,ludum dare等等,极限竞速,48小时内快速实现你的骚想法给全世界的人看,一秒成名,就等你行动。

以上。
(文中”你:“皆为模拟对话,不代表题主真实观点)
发表于 2021-9-24 12:06 | 显示全部楼层
至少数学要学好吧,否则靠什么写游戏引擎啊?
至少英语要学得差不多吧,否则靠什么阅读文档和论文啊?
其他的我觉得你开心就好。
我读了你的代码,觉得从代码角度来说,层次清晰,可读性还不错。但是如果你满足于此的话,就只能写一个DX的游戏包装器,而不是真正的游戏引擎,你的游戏引擎中还缺少很多基础的,需要高中和大学数学知识的部分。我举几个游戏引擎中需要数学的简单例子。
卡马克提出的快速计算开方的算法,被经常性的用于各种图形引擎中,本质上是牛顿迭代法,而牛顿迭代法你需要对函数的基础知识才能理解。
另一个,三角形碰撞判断,作为最基础的游戏引擎的组件,你需要了解线性代数的一些知识,才能写出正确的碰撞判断算法。
读完这些,你还觉得数学没有用么?你还觉得高中是可以无所谓的东西么?如果你连高中这么简单的东西都搞不定,我真的不认为你能够完成复杂的游戏引擎的编写工作,充其量是像你现在做的这样,包装一个DX,然后说自己写了一个游戏引擎。

我可以明确的告诉你,高中是只要花费20%精力就能获得80%收益的典型例子。或许考上清华北大并不简单,但是考上次一级的学校并非难事。并不需要你花费巨大的精力在这之上。我初中高中就基本属于上课老师讲他的,我玩我自己的,到最后如果让我高考我也能考上一所不错的大学(虽然没有高考直接保送了吧,但也许高三努力一下差不多C9?)。我可以非常明确的告诉你,在好的大学就算是混4年之后,你能接触到的东西绝对比你现在能接触到的东西多得多。。。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 16:42 , Processed in 0.076592 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表