1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

现在想开发个游戏,比当年可简单多了

本帖由 漂亮的石头2015-04-12 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    如何看待贴吧里的十五六岁就用引擎写游戏的开发者?

    [​IMG] 韦易笑,二十年老程序员

    现在做游戏很简单,大把代码给你参考,大把框架给你使用,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 显示原理》。。。和各种杂志上获取了不少知识,当年写这些文章的人,和身边搞计算机的,都比我大很多,我幼小的心灵里总有一份冲动,冥冥之中觉得将来自己肯定能超过他们,这不是因为我看不起她们,异或我狂妄自大,而是只有这样,站在她们肩上,才能对得起大家共同爱好的这个行业,大家共同追求的事业。

    而今天,我会尽量利用业余时间,于各处培训游戏开发,帮助大家该如何实现各种东西,目的也只有一个,让今天的小孩将来有一天能够超过我,不是因为她们狂妄自大,异或我妄自菲薄,而是因为只有这样,让她们站在我的肩上,才能对得起大家共同爱好的这个行业,大家共同追求的这个事业。

    查看知乎原文
     
正在加载...