知乎上有人问:“贴吧都是十五、十六岁就用引擎写游戏的天才,你怎么看?”感觉现在做游戏真的是一件很幸福的事情。种种艰辛。现在做游戏很简单,有很多代码供你参考,有很多框架供你使用,大部分的事情Windows都帮你搞定了。我们这个年纪写游戏的时候,家里没有网络,找不到资料,也没有开源引擎。如果你想在1995年左右写游戏,你至少会面临:与显卡打交道,大概就是著名的显卡ModeX显示模式。现在很少有人听说过它。直接写显卡口需要N多技巧才能成功初始化。直接访问显存,我记得当时有个优化,((char*)0xa0000L)[x+(y<<8)+(y<<6)]=c,改为在左边加两次yy*320。使用调色板绘图,256色调色板,并创建多个索引表,快速索引两种颜色混合的结果。保护模式编程,自己初始化GDT和LDT,后来找了dos4gw,牛逼的watcomc++。自己实现线程,对8254时钟控制器进行编程,向CPU的IRQ0发送中断,调度最多32个不同的任务,时间一到就通过一条IRET指令进行切换。自己控制声卡,通过220端口控制声卡(估计没几个人用过),然后用DMA传输音频,实现声音播放。自己实现混音。当同时播放多个音源时,需要重新采样成声卡格式,每次DMA中断时混音后发送到声卡。自己播放音乐,使用声卡338端口的FMSynth合成器播放MIDI音乐中不同音轨的音符,使用之前实现的线程系统在后台线程中运行。大量汇编代码、图形复制、平铺缩放、RLE、显卡控制、多边形填充、键盘中断接管。自己画字体,HZK16,估计没几个人听说过。自己看图、GIF、PCX、BMP。自己播放视频,自己实现对动画师和3ds输出的FLC视频格式视频的解码和播放。自己实现脚本,不用LUA,不用PYTHON,但是你需要为你的游戏实现脚本来描述一些简单的剧情。我从未见过其他游戏如何做到这一点。在没有任何参考代码的情况下,我意识到开发游戏需要依赖Scripts来提高效率,然后自己实现一个脚本系统。凭空实现游戏。当你没看过任何游戏代码的时候,想想状态机怎么写,游戏对象怎么同时移动,图像前后遮挡怎么做,游戏的各种逻辑怎么写.学美术设计,虽然没有美术功底,但是要熟练使用当时常用的animator、3ds等软件,能自己制作一些简单的界面和角色,能对其他图片进行二次处理,绘制像素图,合并调色板。请记住,那时候没有互联网,也没有现在那么多的开源软件。书店里的书基本上都是C语言调用BGI画图的。偶尔有一两本书讲显卡的原理,偶尔一两本书讲声卡的原理,你捡起来就算了。宝藏,在《电脑报》《编程技巧与维护》上,发文教你FLC格式视频动画格式原理,可喜可悲。记得,一开始你没有网民,没有可以交流的朋友,很多事情都是通过仔细观察、猜测和试错来完成的。记得1995年看仙剑奇侠传的时候,被它的效果惊艳到了。我什至不知道45度图像应该如何逼真以及如何处理遮挡关系?我不能问我周围的人。后来想了想,发现远距离按(x+y)排序对象是可以的。自己亲身试验后,果然奏效。记得1992年上小学的时候,我写了自己的第一款游戏。我曾经在编程时一次做一件事。我想不通十多架飞机怎么能同时飞。没有实现模拟任务系统,绞尽脑汁,有一天在一本书上看到,UNIX分时系统的逻辑是每个任务运行一小段时间,然后切换。顺着这个思路,终于想通了所谓的状态机模型。框架在处理每一架飞机时,会根据当前状态移动一小步,然后更新状态,再处理下一架飞机。然后就兴冲冲的跑到电脑前,码了一整天,终于实现了。然后我就带同学们去我家玩,看着他们玩的那么兴奋,我突然觉得做游戏是多么的惬意。当年一个游戏差不多写了半个操作系统,全城就你一个人在研究这些。老师只教NOI,书上只教你用BGI画图。没有出版与游戏开发相关的书籍,关键是你还在中学,没学过作文原理,计算机绘图,全靠书店里的几本破书,杂志上的零零碎碎和自我认识。与今天的孩子相比,windows已经为他们做了那么多事情。自己买了一本书,跟着书实现了下三角的绘制,模型导入,场景管理,碰撞检查,不懂的可以问知乎,不会的可以去gamedev.net,如果不会写游戏,可以看别人的代码复制过来,脚本可以用lua和python。简直是天造地设,有什么可夸的?行业总是要发展的,我也是从《编程技巧与维护》《VGA显示原理》开始的。..我从各种杂志中获得了很多知识。写这些文章的人和我身边的计算机人都比我大很多。幼小的心灵总有一种冲动,觉得自己一定会超越他们,不是因为看不起他们,也不是因为我狂妄自大,只有这样,站在他们的肩膀上,我才能成为无愧于这个人人热爱的行业,人人共同追求的事业。但是今天,我会尽量利用业余时间到处培训游戏开发,帮助大家如何实现各种事情。目的只有一个,就是让今天的孩子在未来的某一天能够超过我,而不是因为他们狂妄自大。或者我贬低了自己,但是因为只有这样,让他们站在我的肩膀上,我才配得上这个大家热爱的行业,这个大家共同追求的事业。
