如何看待贴吧里的十五六岁就用引擎写游戏的开发者? 韦易笑,二十年老程序员 现在做游戏很简单,大把代码给你参考,大把框架给你使用,Windows 帮你作完了大部分事情。我们那个年纪写游戏时,家里还没有 Internet,什么资料都查不到,什么开源引擎都没有,95 年左右你要写一个游戏,你起码面临: 同显卡打交道,显卡著名的 ModeX 显示模式,估计现在没几个人听过了吧,直接写显卡端口,N 多 trick 才能初始化成功。 直接访问显存,记得当年有个优化是,((char*)0xa0000L)[x + (y << 8) + (y << 6)]=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 显示原理》。。。和各种杂志上获取了不少知识,当年写这些文章的人,和身边搞计算机的,都比我大很多,我幼小的心灵里总有一份冲动,冥冥之中觉得将来自己肯定能超过他们,这不是因为我看不起她们,异或我狂妄自大,而是只有这样,站在她们肩上,才能对得起大家共同爱好的这个行业,大家共同追求的事业。 而今天,我会尽量利用业余时间,于各处培训游戏开发,帮助大家该如何实现各种东西,目的也只有一个,让今天的小孩将来有一天能够超过我,不是因为她们狂妄自大,异或我妄自菲薄,而是因为只有这样,让她们站在我的肩上,才能对得起大家共同爱好的这个行业,大家共同追求的这个事业。 查看知乎原文