个人觉得fc最神奇的游戏还属超级玛丽,32个关卡,每关都不同,各种隐藏要素,好像代码区才10多k,数据区10多k。反汇编看完还是不敢相信这点东西能玩一个童年…现在helloworld的二进制都可能比这大多了。 首先128k并不小 主要消耗存储空间的不是程序 当然对于128k来说程序大小自然也要考虑 鉴于fc是八位机 而且FC采用的是CISC处理器 一条指令就能完成很多事情 所以程序的大小也就现代64位RISC处理器的十几到几百分之一 资源才是大户(包括图像 音乐 地图数据 关卡数据 等等) 就拿图像和音乐来说 图像在没有压缩之前 消耗存储空间和 像素深度和大小有关 FC上的图像 像素深度就2bit的索引而已 而现在广泛使用的真彩色是24bit 包含alpha的需要32bit 这里就差了12倍到16倍 图像大小更是差距巨大 FC普遍一个角色也就是 宽高十几个像素而已 与现在动辄宽高几千像素图像资源相比差了 数万倍到数百万倍 所以图像资源消耗的存储空间 至少差了5~7个数量级 音乐的话 FC采用的是8位midi音乐 而现在普遍用的是PCM音乐 类比到图像中 就像矢量图像和位图的区别 总之PCM音乐的大小和采样深度 采样率 通道数 以及长度有关 midi仅仅和谱子的复杂度有关 所以FC实际上对空间的要求和现代游戏相比至少差了5~7个数量级 你把128k放大10w倍到1000w倍 你就不觉得小了 一些人还提到了什么64k 3d程序什么的 这完全是两码事 FC程序小只是因为需求的资源本来就很小而已 而那种64k 3d程序是因为采用Procedural generation方法 简单的说就是通过数学来描述 而不是通过记录结果的采样 Procedural generation 不光需要的存储空间极小 而且可以做到无限精度 缺点是难以描述复杂事物 并且对算力要求高 而不是用了什么外星压缩法 总结: 1.游戏大量复用图块,图块还使用调色板索引,好像每个像素才占用2bit。 2.程序员精心优化各种数据结构,每一bit存储都不浪费。 3.声音只存储发声通道的调制参数序列,能复用就复用。 4.代码全是汇编写成,直接操作硬件,基本不存在浪费的指令。 小编也整理了21个简单易学的小游戏开发项目供大家学习实践,既可以帮助你提高编程能力,又能让你感受到游戏的乐趣!这些项目的技能要求并不高,零基础的同学也能学会哦~ 编程资料获取方式:转发文章+私信【资料】 一、web前端: 1、基于HTML5 Canvas实现小游戏 image 此课程较为简单,基于 HTML5 的 canvas 实现了一个小游戏,着重介绍了 HTML5 游戏开发的流程及游戏开发中需要处理的东西。对 Web 游戏开发感兴趣的同学可以通过这个项目实践 HTML5 及 JavaScript 基础知识。 2、网页版别踩白块游戏 不同于移动端采用手指触碰,网页版需要我们点击黑块,黑块才会消失。为了使代码尽量简单,逻辑清晰,去掉了很多的事件控制按钮,刷新页面即可以开始游戏,只保留了实现这个小游戏最重要的部分代码,让初学者也能很快看懂。 3、网页版拼图游戏 此课程基于 HTML+CSS+JavaScript 实现网页版的拼图游戏。实现过程中将用到 HTML5,CSS3 及 JavaScript 相关知识。完成这个项目,可以进一步扎实前端基础知识。 4、基于 JavaScript 实现打地鼠游戏 此课程基于 HTML+CSS+JavaScript 实现网页版打地鼠,你能学到如何开发一款 Web 小游戏,从布局到编写游戏逻辑。如果你刚入门前端,这是个不错的实践练习。 5、网页版扫雷 此课程带领大家实现经典小游戏扫雷的网页版,通过学习该课程,可以实践 JavaScript 和 CSS 等基本的 Web 开发知识,学习如何对游戏中的对象进行抽象、封装。 6、网页版2048 《2048》是一款风靡一时的,非常简单易上手的小游戏。此教程带领大家使用 HTML+CSS+JS+jQuery 实现一个网页版的《2048》。 二、Python 1、200 行 Python 代码实现 2048 实验仅用200行的 python 代码完成2048小游戏的编写。通过本实验将学习 Python 基本知识,状态机的概念,以及编写 python 游戏的步骤。需要用户具有 Python 的语法基础。 2、Python3 实现推理游戏Bagels Bagels 是可以和朋友一起玩的一个推理游戏。你的朋友想到一个随机的、没有重复的3位数字,你尝试去猜测它是什么。每次猜测之后,朋友就会给出3种类型的线索: 3、人机对战初体验:Python基于Pygame实现四子棋游戏 实验利用Python模拟AI和玩家进行四子棋游戏,利用游戏实验Pygame库,为游戏提供界面和操作支持。AI算法借用蒙特卡洛搜索树思想。通过设置AI的难度系数,即AI所能考虑到的未来棋子的可能走向,从而选择出最佳的方案和玩家对抗。难度系数越大,AI搜索范围越广,它所能做出的决定越明智。 4、用Python做2048游戏 5、基于Pygame开发贪吃蛇和俄罗斯方块 6、数独游戏的 Python 实现与破解 7、Python 实现推箱子游戏 8、Python 实现康威生命游戏 三、C/C++ 1、C 语言制作 2048 2048是之前十分火爆的一款益智游戏。此课程将使用 C 语言完成一个2048游戏。适合对C语言有一定基础,想做项目练手的同学,本课程学习后将会了解C语言,以及绘图库ncurses的实用。本课程适合有C语言基础,希望在动手能力上得到提升的同学,熟悉模块与主流程的运行流程。 2、C++ 实现俄罗斯方块 此课程将用C++动手实现经典游戏-俄罗斯方块,课程难度适中,适合初学C++并且有一定基础的同学,通过课程可以掌握C++编程的基本方法以及游戏设计中的逻辑算法,既能提高编程能力,又能感受游戏的乐趣! 3、C 语言实现贪吃蛇 4、C 语言快速实现五子棋 5、C语言版 Flappy Bird 四、其它 1、Shell脚本实现打字游戏 此课程使用 Shell 脚本在终端实现了一个打字游戏,体现了shell命令的强大和实用,在项目实现的过程中学习并实践了Shell脚本编写的知识点。熟悉了read,exec,trap,local,date等命令的用法。本课程适合有一定编程基础,与对于linux有一定了解,想更加熟悉和巩固shell命令的同学 2、GO语言开发2048 以上就是我们整理的游戏开发入门项目,也非常适合新手学习,大家可以收藏起来慢慢练习~ 编程资料获取方式:转发文章+私信【资料】 |
|