如何看待贴吧里的十五六岁就用引擎写游戏的开发者?
如何看待贴吧里的十五六岁就用引擎写游戏的开发者? 现在做游戏很简单,大把代码给你参考,大把框架给你使用,Windows帮你作完了大部分事情。我们那个年纪写游戏时,家里还没有Internet,什么资料都查不到,什么开源引擎都没有,95年左右你要写一个游戏,你起码面临:同显卡打交道,显卡著名的 ModeX显示模式,估计现在没几个人听过了吧,直接写显卡端口,N多trick才能初始化成功。
直接访问显存,记得当年有个优化是,((char*)0xa0000L)=c,把y两次左移相加代替y * 320。
用调色板绘图,256色的调色板,建立若干索引表,来快速索引两个颜色混色的结果。
保护模式编程,自己初始化GDT和LDT,后来找到 dos4gw,牛逼的 watcom c++。
自己实现线程,编程8254时钟控制器,给CPU的IRQ0发中断,来调度不同最多32个任务,到时间靠一条IRET指令实现切换。
自己控制声卡,通过220端口控制声卡(估计也没几个人用过吧),再用DMA传送音频,实现声音播放。
自己实现混音,同时播放多个音源时,需要重采样成声卡格式,并且每次DMA中断时混音后给声卡。
自己播放音乐,利用声卡338端口的 FM Synth合成器来播放MIDI音乐里面不同音轨的乐器音符,并用之前实现的线程系统,在后台线程运行。
大量汇编代码,图形拷贝,图块缩放,RLE,显卡控制,多边形填充,键盘中断接管。
自己绘制字体,HZK16,估计听过的人也没几个了。
自己读取图片,GIF,PCX, BMP。
自己播放视频,自己实现解码播放 animator, 3ds输出的 FLC视频格式的视频。自己实现脚本,没有LUA,没有PYTHON,但是你需要给你的游戏实现脚本来描述一些简单的剧情,没见过其他游戏是怎么做的,没有任何参考代码的情况下,意识到开发游戏需要靠脚本来提高效率,然后自己实现一套脚本系统。
凭空实现游戏,从来没见过任何一款游戏代码的情况下,自己想想状态机应该怎么写,游戏对象应该怎么同时移动,图像前后遮挡该怎么做,游戏各种逻辑该如何写。学习美术设计,虽然没有美术功底,但得熟练应用当时常用的animator,3ds,等软件,自己制作一些简单的界面和角色,自己能对其他图片进行二次加工,画像素图,合并调色板。
---------------------------
记住,当初你没网络,没有现在那么多开源软件,书店里书基本都是C语言调用BGI绘图的,偶尔一两本讲显卡原理的,偶尔一两本讲声卡原理的,你就算捡到宝了,《电脑报》《编程技巧与维护》上面,谁发一篇文章教你FLC格式的视频动画格式原理,你可以欣喜弱狂了。
记住,当初你没网友,没有朋友可以交流,很多东西都考仔细观察,猜测和反复试验来完成,我记得95年我看到仙剑奇侠时很惊讶它的效果,根本不知道斜45度图像该如何现实,如何处理遮挡关系,身边没有问不了任何人,然后左思右想,发现远来可以靠 (x+y)进行对象排序,自己一实验,果然成了。我记得92年小学时,写第一个游戏,以前编程都是从头到尾一件事情一件事情的干,想不通十多量飞机怎么能同时飞,当时又没多任务,我也还没实现模拟任务系统,绞尽脑汁,有一天在书上看到介绍UNIX分时系统的逻辑是每个任务运行一小段然后切换,顺着这个思路想下去,终于想通所谓状态机模型,每帧处理每架飞机时根据当前的状态移动一小步,然后更新状态,再处理下一辆飞机。然后兴奋的跑到电脑面前,编码一整天,终于实现。然后拉着同学来自己家玩,看到她们玩的那么兴奋的样子,突然感觉创造游戏,是一件多么令人愉快的事情。
当年做款游戏都快要写出半个操作系统来了,整个城市就你一个人在研究这些,老师只会教NOI,书本上只会教你用BGI绘图,没有任何一本游戏开发相关书籍出版,关键是你还在读中学,什么组成原理编译原理,计算机图形学你都没学过,全靠书店几本破书,杂志上的零零碎碎和自我领悟。比起今天的小孩,windows都帮她们做了那么多的事情了,自己买本书,照着书上实现下三角形绘制,模型导入,场景管理,碰撞检查,不懂可以问知乎,不行可以随便上 http://gamedev.net,游戏写不来可以看人家的代码照着抄,脚本可以用lua,python。简直是生在天堂里呀,有什么值得称道的地方呢?
行业总是要发展的,我也从《编程技巧与维护》《VGA显示原理》。。。和各种杂志上获取了不少知识,当年写这些文章的人,和身边搞计算机的,都比我大很多,我幼小的心灵里总有一份冲动,冥冥之中觉得将来自己肯定能超过他们,这不是因为我看不起她们,异或我狂妄自大,而是只有这样,站在她们肩上,才能对得起大家共同爱好的这个行业,大家共同追求的事业。
而今天,我会尽量利用业余时间,于各处培训游戏开发,帮助大家该如何实现各种东西,目的也只有一个,让今天的小孩将来有一天能够超过我,不是因为她们狂妄自大,异或我妄自菲薄,而是因为只有这样,让她们站在我的肩上,才能对得起大家共同爱好的这个行业,大家共同追求的这个事业。 在那个年纪,我已参与商业游戏开发好几年了,参与过3个已发行的项目,其中一个是做主程及主策。引擎开发、游戏编程、策划都做过了。
这并不需什么天才,那个年纪就是能自学那种程度的知识和技能。问题是环境是否容许,例如放学后去办公室搞到午夜才回家,同时学业成绩不能太差。
昨晚在另一回答中说到勇气和毅力的重要性,似乎仍适用于这里。
--
补充:节录上海麻辣马资深程序员叶劲峰:我的游戏人生
小学四年级,我当上了学校图书馆的管理员。有一天馆里送来一台Apple IIe,听说是一家公司换IBM PC而留给学校的。那台没软盘没录音机的Apple IIe,只能用来编写BASIC程序,不能玩游戏。当时心里传来一道声音——
“想玩游戏?自己写啊!”
我借来一堆Apple IIe书籍,阅读、上机编程,把午休和放学后的时间都用上了。课上和晚上,还会把程序写在纸上,在脑海中运行程序。那时候写的程序,主要围绕游戏和图形。记得曾经在Apple上重写BBC Micro上玩的“撞砖”游戏,从中学到了一点游戏模拟技巧,后来还学习了一点6502汇编。在学习的过程中,我意识到编程的世界是虚拟的、完美的,不像机械或电子等物理系统有许多限制,几乎凡是想得到的事情都能用编程实现,并且能完全自动化地执行。这让我感到,编程本身,比使用软件的乐趣要大得多。
初试啼声
从小学升上中学,1990年的暑假我终于获得人生第一台电脑——一台二手的286。那个暑假我躲在家中,使用GW-BASIC继续编程。286可以存档,意味着可以写更大型的程序。规模越大,更让我认识到BASIC语言在编程上的局限。尽管如此,当时仍然很快乐地编写了不同类型的程序:图形、音乐、游戏。通过阅读书籍,我还学会了画不同的二维图形,包括曲线、分形(fractal)、简单的三维渲染等。
在升中二的那年暑假,我就开始转为学习C语言。DOS对许多设备都没有直接支持,不同的设备甚至连标准的接口都没有。所以那时编程,还必须学一些x86汇编知识,以及使用不同设备的底层技术。
中二时得知有一个“微电脑教育(MIE)”比赛,这是我个人电脑比赛生涯的开始。我用Turbo C写了一个名为《3D Solid Maker and Viewer(三维实体制作及检示工具)》的软件,其实只是个非常原始的三维建模软件,可以设置简单的摄像机动画。当时花了许多时间去编写GUI系统,就是要由绘画控件、处理滑鼠键盘事件等做起。基于知识经验所限,系统架构很糟糕,并有大量硬编码。初试啼声,这个作品最后获得全场总亚军,大大增强了我对编程的信心。
进入业界
1992年前后,我在BBS上结识了一群有意开发游戏的朋友,成立了香港首家游戏工作室M&P System。最初我并没有直接参与开发,只是向朋友们学习更多游戏开发的知识,写过一些引擎和工具的原型,有时帮忙做点小事情。例如在公司首个作品《疯狂双响炮》(1993年)中,我设计了一个游戏关卡和做游戏测试。之后公司开发RPG《勇者传奇》(1994年)时,我在开发另一个RPG,做了地图编辑器和引擎,可操控主角行走,也有初步的战斗模式。
后来公司改组为阿博克。我在新项目里首次担负重任,那时我在读中四理科班。这个新项目《王子传奇》是我发出的提案,一个奇幻背景的策略角色扮演游戏(SRPG),采用等角(isometric)的无缝(seamless)游戏世界。我主要负责游戏策划、编剧、游戏性编程(gameplay programming)。项目的野心很大,或是太大。整个项目约由6位成员,历时18个月完成。
当时DOS运行于真实模式,能直接使用的内存只有640KB,完全不足以做无缝的地图渲染。最后,我们做了个大胆的决定,用汇编开发32位保护模式的引擎,用Turbo C++开发16位真实模式的游戏性部分。引擎部分由我那牛人拍档开发,而我主要编写游戏性部分。那个引擎,基本上就是要先从头写一个32位保护模式的操作系统,管理内存、磁盘读写、设备驱动等,再开发地图渲染引擎。游戏的“脚本”使用C语言来编写(包括用宏来做数据驱动),利用覆盖(overlay)机制的按需载入。
在那漫长的制作期,星期一至星期五,放学后经常会返回办公室,有时候晚上11点才回家。周末和假期,也会经常到公司干活。后来一些伙伴在项目结束前就离开公司,最后在不太欢乐的气氛下完成了这个作品,游戏内容有点虎头蛇尾。听说这作品在台湾卖得还不错,可是由于一些问题,我最终除了暑假获得的一点津贴外就没有其他经济上的收益,当然,开发经验除外。自此我离开了游戏业界,继续求学之路。
题主的问题描述的不是很详细,导致很多知友在讨论这位游戏开发者用的到底是什么引擎,这里我补充一下,作者用的是虚幻4引擎,原帖链接在这里 【游戏发布 】15岁妹纸自制3DARPG独立游戏发布~!UE4引擎
既然题目问的是「如何看待」,那我就就题论题说说自己对这个游戏及其作者的看法。
先说说游戏。
我根据帖子里的链接下载试玩了下,游戏优化很不好,就我自己的笔记本,跑老滚5还算流畅,但跑这个游戏时FPS大概不超过20帧。其次是UI设计很糟糕,用右Shift作返回键的游戏我还真是第一次见到...然后各种BUG也是相当的多,最致命的是主角死亡后出现的复活按钮点击后根本没用,这相当于游戏连个完整的流程都没有了。
游戏技能种类倒是挺多,但在游戏的其它基本功能都如此糟糕的情况下,难免有些瑜不掩瑕,简单的说,游戏太粗糙,制作太心急,还没学好走路就匆匆起跑了。
放上链接里的游戏截图吧,有想试玩的可以去帖子链接里提供的地址下载。
接下来说说游戏的作者。
首先验证了下,作者确实是个15岁的妹子,当然,这不是重点,重点是15岁的这个年纪,绝大部分人还只是顺从着体制,老老实实读书备战高考,对未来毫无打算,或者随意打算了个未来好支撑自己渡过高中,而这位妹子已经明确了自己以后的方向并为之早早努力,无论她的技术水平如何,光是这份勇气和热情,就让我敬佩得很。
可能诸位大神听我这样描述,概是觉得不过如此,然而一个资质并不出色,家境平凡的学生,即便清楚自己现在正在投入到真正热爱的事业中, 但是看着周遭人都在一心只读教科书,也不免产生些不务正业的自责和恐慌。
辛辛苦苦创造出一件作品并为之兴奋不已,可回过头来,面对的却是枯燥的课本,成堆的作业还有紧张的考试,这样的失落感,我也不是没有体会过。
我加了这个作者的QQ,她的动态里,也时不时地抱怨,教育的沉闷,现实的束缚。看到这些,我就想起那个时候的我,也差不多是这份德行,心急,无力,不甘,有时遇到些学业上的困扰,也会心血来潮想着早日跳出体制,却又因为没底气和实力而很快妥协下来,对于15岁的人来说,这倒也是常有的事。
很多大V在这个题目里说,15岁用游戏引擎做游戏,这算什么,我15岁的时候,自己写引擎了,做过几个项目了,那时候游戏引擎多难搞之类的。我也得承认,15岁学编程跟20岁学,并无甚区别,现在的许多游戏引擎也确实大大降低了游戏制作的门槛。而正如上文所说,我所敬佩的,并非是作者15岁写的代码,而是她在这个年纪所难得的对于未来规划的坚定和行动力,换作15岁作曲,15岁画漫画,15岁写小说,只要当事者确是把这些事当作是要热爱一生的东西来对待的,那我也佩服得很,并且羡慕他们的这股倔劲和热情。
最后说句题外话,15岁左右做游戏的,我在Unity3D吧也是见过一个,当然那位少年相比这位妹子就显得自负太多了,15岁的年纪也是最容易因为一些鸡毛蒜皮的小成就而沾沾自喜的,这时候狂傲就狂傲吧,但是千万不要受限于眼前的一些蜗角虚名而止步不前,望各位年轻人引以为戒,这段话与诸君共勉。 现在是2017年,十五岁的年轻人在2002年出生,如果6岁上学正好是初三到高一左右,说实话年龄已经不小了。这个年龄会开发游戏,可能算不上是天才。
1、当今多大年龄开发怎样的游戏算是天才?
引用新闻:卡马克(John Carmack)在Racket Users邮件列表上发帖,称他的10岁儿子Ryan使用Racket编程语言开发了一个游戏叫 FLY。这不是Ryan开发的第一个游戏,他去年开发了一个游戏叫 Angry Face。卡马克推荐新手程序员使用Racket。
另一个例子:
卡马克是大名鼎鼎的DOOM作者,现代3D游戏之父,他儿子的作品我曾经专门找到试玩了一下,是个仿Flappy Bird的小游戏,不过不太完整。后面团队挑战赛的新闻,由于他们的作品我也没玩过,不好评价。不过可以放心,大概率的说,这些孩子都是掌握一些游戏开发技术的,不用担心他们只是上去做做样子。(虽然最终游戏看起来可能比较简单)。
身边有朋友在做少儿编程教育,链接拿好:橙旭园 儿童编程与机器人,专门用很符合少儿思维的方式教授编程,特别是游戏编程。里面悟性较高的孩子的水平也是不容小觑的。
橙光游戏、RPGMaker里也有不少中学生作者,喜欢把一些EXO(韩国男团)、轻小说、动漫、连续剧里面的情节或是YY搬到游戏里去。其实这个完全符合“用引擎写游戏”的定义。“橙光”好歹也算游戏引擎,只不过对游戏类型有较强限制而已,可能有人把“用引擎做游戏”的概念理解的太高深了。
2、80后的人在当年可能更厉害
大部分人不知道,80后、90后的一些中学生,在当年知识传播不畅的条件下,最终达到的技术高度并不低,很多方面甚至比现在的年轻人还要厉害。他们的优势主要是自学能力强、基础扎实、底层掌握深刻,比如:
做电脑游戏需要直接操作显卡底层接口、还要自己想好内存怎么分配。做GBA游戏要善于运用任天堂提供的一些非CPU功能(比如DMA高速通道和定制的渲染方法)最奇葩的是做文曲星游戏,用效率极其低下的GVBasic语言和底层搏斗(GVBasic可以直接读写内存,利用这点创造了很多黑科技级别的玩法),后来出现的LAVA语言是某些人的C语言入门课程。
只是当时由于没有合适的平台,且知识流通不畅,最终无法实现各种吸引人的声光效果,只能在小范围内传播,导致影响力很小。其实那个年代如果你身边有中学生做游戏,那真是可以当半个天才来看待。他们在做游戏时运用的某些技巧可能是现在的开发者无法想象的。
互联网时代的知识爆炸我总感觉是最近才发生的事情,也可能是错觉吧。我感觉现在的年轻人知识增长的张力惊人,而且受常识约束小,敢想敢做,普遍具有强烈的自信心和自我表达欲望。
放一张动图,是我们的学生零基础学了一个月后,花了48小时3人组队完成的一个Demo:
(特别注明:美术资源用了官方资源,但所有代码和设计的部分都是他们自己完成的。因为我们主要教授游戏开发的技术方面,肯定不会教学生怎么画画,怎么建模,美术方面只能让他们自己用些不涉及版权的网络资源。)
很多同学在学习之前都是彻彻底底的零基础,但是最终他们在48小时内通宵着做游戏,竟然让游戏能流畅玩下来了。他们的技术不能说很强,但是应该也算是对得起他们自己的付出了。
所以,说了这么多,大概可以得出结论了:十五六岁会做游戏真不能算是天才(并不是写游戏引擎),因为现在游戏开发这一行的年轻化程度是水涨船高。
有一个需要注意的细节:由于全国各地发展不均衡,在较落后的地区小学生会做游戏真的可以认为有一定天才成分,至少是很有热情和才华;而目前一线城市的某些学校可能随便拉一个人都道怎样做个小游戏。到底是不是天才,不好一概而论。
(后生一直可畏。而且现在很多行业门槛都变低了,年轻人的力量彻底释放出来了,80后们怕不怕? XD) 这问题其实相当无聊,不过看过这么多回答能发现很多人心态很有意思。
游戏作为一种表达的媒介,处于蛮荒时期时,工具的制作和表达本身是无法分割的,所以才有这么多人说他们少年时候用多么原始的工具做多么原始的作品是一件多么牛逼的事情。不过你觉得做镜头的工程师会跟拍照片的说他5岁可以空手抛光30nm显微镜吗? CPU工程师会跟游戏程序员说他7岁可以徒手捏沙成硅并且雕个4核x86 CPU吗?不是不牛逼,只是关系真的不是很大。最重要的还是游戏作品本身。至于你克服了多少困难撸出个游戏,说句不好听的,谁在乎?
对于游戏设计者,游戏引擎是障碍,不是目标。等到不需要引擎,不需要知道技术细节就可以做游戏的时候,游戏才能摆脱枷锁作为一个纯粹艺术形式存在,才有更多的时间去思考叙事,情感,机制,和这个媒介独有的表达方式。十年前大家不哔哔这些,因为基本温饱还没解决,每次写游戏是需要从glClearColor写起的,这成就的一批程序员为核心的行业英雄。但是对于内容生产者,能够不打折扣的呈现自己的想法是最重要的,其余的一切都是表达的必要的成本。 这么强啊。我十五六岁的时候也就刚开始写引擎而已。 你们踩在巨人的肩上还在嘲笑巨人没你高?
哼哼。 「游戏截图」
高一用vb做的游戏 连美工都要包办简直跪下。。。现在想起来用vb 真是 呵呵 15岁写游戏不算什么天才吧。不过年幼的时候写写游戏还是很有助于开发智力的,以后就不一定有闲情干这些事情了。
不过我就没有@vczh 和 @龚敏敏 那么牛逼了,我16岁的时候还在努力学习Shadow Volume,BSP,Skinning和radiosity,直到17岁的时候才用half life的模型瞎拼凑了一个游戏。后来想搞个牛逼版的,但是无奈保送失败只好去准备高考了。所以我直到高三结束才真正开始尝试做引擎,最后当然也是因为工程量太大不了了之了。
那个年代几乎没有什么中文的参考书,所以被迫刷了很多http://gamdev.net / gamasutra 和一些siggraph。自己对着一些只言片语的blog文章苦思冥想引擎的各种东西是怎么实现的。现在的环境真是好多了,连unreal都开源了,有什么不懂的直接去看代码就能学习到。
附个截图: