这个程序员疯了,竟然用汇编写游戏,狂赚3000万美元!

汇编语言代码大全--精通汇编 汇编语言代码大全--精通汇编的,里面有一些小代码, 通过运行可以了解汇编 立即下载

谁是历史上最厉害的游戏开发人员?

是瑞典程序员Markus Persson吗?他开发了《我的世界》,以25亿美元的价格卖给了微软,成为了亿万富翁。

是美国程序员Eric Barone吗?他一个人干了一个游戏团队的活:策划,设计,编程,测试、美工、音乐,开发了《星露谷物语》,卖了2000万份。

是美国程序员John Carmack吗?他开创了第一人称射击游戏,开发了《Doom》《Quake》等经典游戏,发明了众多革命性技术,如“快速平方根算法”,卡马克反转,表面缓存等。

不,他们都不是,有史以来,最厉害的游戏开发者苏格兰程序员Chris Sawyer,他开发了《过山车大亨》。

为什么他这么厉害呢?

首先,他是一个独立的开发者,和Eric Barone一样,独自一人开发了一个庞大复杂的游戏,在PC游戏时代,《过山车大亨》卖了1000万份,能击败它的只有《模拟人生》。

其次,他使用汇编语言开发了《过山车大亨》,把电脑性能压榨到了极致,游戏1999年发布,即使是当时性能最差的电脑,也能运行《过山车大亨》。

你没看错,这个游戏99%的代码是用汇编写的,只有少量的 C 代码用于与 MS Windows 和 DirectX 交互。

很多同学都在应用层用高级编程语言写业务逻辑,很难体会到用汇编写游戏意味着什么。

一个简单的hell world , 在Python就一句话 print("Hello World!)

但是在汇编中就变得复杂无比。

datasegment stringdb 'Hello,World!$'dataendscodesegment assumecs:code,ds:datastart:movax,data movds,ax movdx,offset stringmovah,9int21hmovah,4chint21hcodeendsendstart

你需要操作CPU的各种寄存器来设置参数,调用系统中断来输出。

直接和硬件打交道,极其底层,极其麻烦。

没有对CPU和硬件的精深理解,根本写不了。

汇编不仅难写,更是难读。这里没有变量名辅助记忆,相比于高级语言,汇编代码的复杂度可以说是呈指数级增长。

除非你要学习/编写编译器、操作系统、嵌入式代码,否则,尽量不要去碰它。

1

和很多大牛一样,Chris Sawyer从小就开始玩计算机,玩游戏,玩得不过瘾就自己写。

16岁就在Memotech MTX500上用Z80汇编写游戏,并且主动把游戏邮寄给Memotech 公司进行发行,赚了点小钱。

高中毕业后,Chris上了格拉斯哥斯特拉斯克莱德大学,学的是计算机科学和微处理器。

80年代,PC时代正式开启,MS-DOS一统天下,Chris在一家游戏公司做了很多把Amiga游戏移植到DOS平台的工作,对底层编程,尤其是汇编建立了精深的理解。

用他自己的话来说:“我已经在 x86 汇编中编程了很长时间,我很少需要用手册来查找东西。”

1994年,Chris受到《铁路大亨》的启发,开发了《运输大亨》,大获成功,版税成为他源源不断地收入来源。

Chris在欧洲和美国四处旅行时,迷上了过山车。

他去过数百个游乐园,玩了700多次过山车!

最疯狂的时候,他甚至两周时间参观了美国14个主题公园,只是为了坐过山车。

正是由于对过山车的热爱,他在制作《过山车大亨》时,考虑了各种各样的细节,让玩家身临其境。

在游戏中,玩家需要扮演游乐园经营者角色,目标是从头开始建造一个主题公园。

玩家需要改造土地,贷款获取资金,修建游乐设施,建造各种过山车(从木头到钢制的),旋转木马、卡丁车、摩天轮、鬼屋、迷宫、电影院和各种惊险游乐设施。

还需要安排机械师来修理设施,清洁工来打扫卫生,保安来避免破坏,还需要安排艺人穿着夸张的服装跳舞,为排长队的人们提供娱乐,甚至整个公园的浴室也必须精心布置。

一切的目的都是让客人满意,乐在其中。

在实现技术上,Chris选择了汇编,因为在1998年,电脑的性能还不够高,《过山车大亨》需要成千上万的游客在公园中游玩,多个过山车在不同的轨道行驶,不同的音乐和音效可以相互重叠播放,营造出一种喧嚣的氛围。

此时Java已经诞生,但是它主要用于服务器端编程,做这样的游戏肯定是不行的。

C++应该可以,但是对Chris来说,汇编才是一个自己做出极致优化的编程语言。

2

在苏格兰的一个小村庄里,Chris开始了《过山车大亨》的开发。

他装备了两台 PC:一台快速的用于编码,另一台较慢的用于测试。

后来,游戏的要求是Intel Pentium 90Mhz 和至少 16 MB RAM。

他的办公室还放着一台点阵打印机、一台传真机、一本关于 x86 汇编代码的袖珍指南,以及500 多页的参考书,这对他来说已经足够了。

由于使用汇编语言,Chris并没有良好的IDE可以使用,微软的Microsoft Macro Assembler (MASM)中自带了一个编辑器,Chris就用它来编程。

《过山车大亨》是唯一一个用x86汇编写的游戏吗? 

绝对不是,用汇编其实是90年代中期之前常见的做法,因为机器性能很差,没有专用的GPU,用汇编来提高性能是常见的做法,比如《帝国时代》也使用了大量汇编。

但是,那些游戏都是由团队完成的,只有《过山车大亨》,是Chris一个人用汇编一行行地码出来的。

两年的疯狂编码,用汇编对性能极致压榨,《过山车大亨》于1999年上市发行。

《过山车大亨》遇上了好时候,1999年,大约四分之一的美国家庭连上了互联网。

人们使用邮件,即时通讯工具,论坛等新兴的互联网工具来分享各自玩游戏的体验。

品质过硬,速度飞快的《过山车大亨》以前所未有的速度吸引了一批狂热的追求者。

仅仅在美国,1999年就卖了惊人的70万份!

最终,Chris从《过山车大亨》等游戏中赚了3000万美元。

3

真正的热爱加上精湛的技术成就了《过山车大亨》的巨大成功。

他写的游戏指南长达60多页,经常引用现实中的过山车游乐园,他对游乐园的热爱甚至体现在那些抱怨食物太贵和需要去洗手间的游客身上。

如果Chris对过山车不那么热爱,虽然他也能做出过山车游戏,但是绝对无法给玩家带来无与伦比的沉浸感,玩家也就不会自发传播。

而使用汇编则带来了最优异的性能,保证能在几乎所有电脑上玩得飞起。

有意思的是,两个游戏爱好者用C语言开发了一个《过山车大亨》的开源实现,修复了原有的一些问题,添加了一些多人游戏,高清支持,作弊代码等功能,感兴趣的同学可以去看看:https://openrct2.org/

疯狂Java:突破程序员基本功16课pdf+源代码 疯狂Java:突破程序员基本功16课pdf+源代码 疯狂java讲义的进阶书籍 立即下载

相关推荐

Ubuntu视频播放器怎么选?VLC、mpv、SMPlayer硬解与字幕配置指南

在Linux系统中,视频播放体验取决于播放器、解码器与显卡驱动的协同。硬件解码通过VA-API或VDPAU将解码任务交给GPU,能显著降低CPU占用,解决4K高码率视频卡顿问题。对于Ubuntu用户,合理配置解码环境与播放器,可流畅播放HEVC、多音轨及ASS特效字幕视频。无论是日常观影、番剧追更还是家庭影院场景,选择合适的播放器并正确启用硬解,都是提升体验的关键。本文围绕Ubuntu平台,详解VLC、mpv、SMPlayer等播放器的安装、硬解配置与常见问题排查,帮助你在Linux上获得流畅的本地视频播放

weixin_33801856的博客 510

这个程序员疯了,竟然用写汇编游戏,狂赚3000万美元!

谁是历史上最厉害的游戏开发人员?是瑞典程序员Markus Persson吗?他开发了《我的世界》,以25亿美元的价格卖给了微软,成为了亿万富翁。是美国程序员Eric Barone吗?他一个人干了一个游戏团队的活:策划,设计,编程,测试、美工、音乐,开发了《星露谷物语》,卖了2000万份。是美国程序员John Carmack吗?他开创了第一人称射击游戏,开发了《Doom》《Quake》等经典游戏,发...

码农翻身 4656

Oracle数据库的内存管理优化技巧

Oracle数据库作为企业级数据库管理系统,广泛应用于各种业务场景。内存管理是Oracle数据库性能优化的关键环节,合理的内存管理可以显著提高数据库的响应速度和吞吐量。本文的目的是深入探讨Oracle数据库内存管理的优化技巧,涵盖了系统全局区(SGA)和程序全局区(PGA)的管理、内存分配算法、内存参数调整等方面。通过详细的讲解和实际案例分析,帮助读者掌握优化Oracle数据库内存使用的方法,提高数据库的性能和稳定性。

2502_91592937的博客 998

基于汇编语言实现的贪吃蛇游戏设计

摘要 本文记录了作者初学8086汇编语言时实现贪吃蛇游戏的过程。文章介绍了游戏的基本功能实现,包括定时器模拟(通过空循环)、非阻塞按键接收(使用int 16h中断)和随机数生成(通过访问端口43h)。游戏实现了蛇身移动、碰撞检测、食物生成等基本功能,代码约400行。作者分享了从C++转学汇编的体会,指出虽然实现思路相似,但汇编语言表达方式更为繁琐。文章最后展示了游戏运行效果图,并提供了关键代码片段。

毕业作品网站 6205

论文翻译:arxiv-2023 Do-Not-Answer: A Dataset for Evaluating Safeguards in LLMs

随着大型语言模型(LLMs)的快速发展,出现了新的、难以预测的有害能力。这要求开发者能够通过评估“危险能力”来识别风险,以便负责任地部署LLMs。在这项工作中,我们收集了第一个开源数据集,用于评估LLMs中的安全保障,并以低成本部署更安全的开源LLMs。我们的数据集经过策划和筛选,只包含负责任的语言模型不应遵循的指令。我们注释并评估了六个流行的LLMs对这些指令的响应。基于我们的注释,我们继续训练了几个类似BERT的分类器,并发现这些小型分类器在自动安全评估上能够取得与GPT-4相当的成果。

CSPhD-winston的博客 1132

uniapp - 应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准(uniApp开发安卓APP上架应用市场审核被拒绝驳回,详细解决方案)

uniApp应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准。uniapp vue2 vue3解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题,关于华为应用市场上架需要同步告知使用权限的解决方案,uniApp应用软件在运行时,不符合华为应用市场审核标准。解决方案合集!app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。华为应用市场审核新规(未同步告知权限申请的使用目

🏆 前端领域优质创作者 4167

《信息科技》Pygame 再现 “ 星露谷物语 ” 游戏之主调程序 中文

运行函数,包含一个游戏循环,当 “ 运行 ” 为真时,循环,在循环中 “ 逻辑更新 物理渲染 ”,调用 Pygame 更新,实现后备表面与主表面间切换。即将由逻辑变化决定存在内存中画面比特拷贝入显存,实现渲染。“ 先逻辑更新 后物理渲染 ”,除非,退出钮被按下。首先创建一个游戏类。构造函数,Pygame 初始化,建立一个 “ 主表面 ” 一一 “ 窗口 ”,设置标题 “ 星露谷物语 ”,一个布尔变量,是/否运行。生成实例,初始化,再调用 “ 运行 ” 函数,实现游戏循环。一个游戏框架实现了,哥德焦伯。

flykid1971的博客 762

【仿真技巧】Smart Eye Probe在ADS信号仿真中的应用

Smart_Eye_Probe是一个眼探头,允许灵活数量的输入通道,输入通道支持单端或差分信号的混合,并且,可以使用一个共同的时钟信号触发通道的眼图。目前,仅支持瞬态(Transient)和通道(Channel Sim)逐位模式(Bit by bit)模拟,不支持信道统计(Statistical)模式和DDR总线(DDRSim)仿真。

一只豌豆象的博客 1271

这个程序员太硬核!用汇编打造爆款游戏,狂揽3000万美金!

本文讲述了程序员Chris Sawyer使用汇编语言开发经典游戏《过山车大亨》的技术传奇。通过极致优化和底层控制,他在90年代硬件限制下实现了流畅的游戏体验,最终获得巨大商业成功,狂揽3000万美金。

mm9012的博客 939

LPDDR6 技术标准详解(JESD209-6)

是继 LPDDR5/5X 之后的新一代低功耗 DRAM 标准,专为满足移动终端、AI、边缘计算等高带宽、低功耗场景而设计。该标准通过全新架构、动态功耗控制机制和增强型数据完整性机制,实现性能、能效与可靠性的全面升级。LPDDR6 并非仅是速度升级,更是内存架构设计思路的演进,围绕“低功耗 + 高带宽 + 强安全”的三维目标,构建下一代 SoC 平台关键基础。✅ 高带宽:支持 32B/64B 动态突发✅ 低功耗:动态电压、通道切换✅ 高可靠性:ECC + 自测试 + 安全区。

weixin_43199439的博客 2590

ABAP CDS 视图的 SAP 缓冲全解析:从 DDIC-based 到 View Entity Buffer 的最佳实践与可运行示例

本文深入探讨了SAP ABAP CDS视图中的缓冲机制,重点介绍了在DDIC-based CDS视图中使用@AbapCatalog.buffering.*注解以及在CDS View Entity中使用独立缓冲对象两种配置方式。文章首先阐述了SAP缓冲的价值,特别适用于读多写少的业务场景(如主数据访问),能够显著降低数据库负载和响应延迟。核心内容分为三部分:1)DDIC-based CDS视图中的三个关键注解(缓冲状态、缓冲类型和通用缓冲键字段数)及其使用限制;2)新一代CDS View Entity中通过独

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 188

程序员之神

公众号关注“GitHubDaily”设为 “星标”,带你了解圈内新鲜事!很多人认为程序员应该供的神里面排名第一的应该是 Linus Torvalds,因为他是 Linux 和 Git ...

GitHubDaily 593

基于YOLOv26的道路抛洒物检测系统原理实现

本文提出了一种基于YOLOv26的道路抛洒物智能检测系统,通过深度学习技术实现道路抛洒物的实时检测与分类。系统采用分层架构设计,包含视频采集、目标检测、分类评估和预警处理等模块,能够自动识别轮胎碎片、货物包装、金属零件等多种抛洒物,并根据危险程度分级预警。YOLOv26算法在检测精度和速度上的优势使其特别适合道路监控场景,结合背景建模和运动目标提取技术,有效提高了复杂道路环境下抛洒物的识别率。该系统可集成到现有智能交通监控平台,为道路安全管理提供实时决策支持。

一键难忘的博客 1257

地球程序员之神

很多人认为程序员应该供的神里面排名第一的应该是Linus Torvalds,因为他是Linux和Git之父。 然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代码农用他的开发工具吃饭。 Linus只用C编程而且不到30年,而这位神级程序员在近40年中一直创造引领潮流的开发工具(Turbo Pascal/Delphi/C#/TypeScript),他就是Ander...

mawei7510的博客 560

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

这个高中毕业生的简历,碾压了无数程序员!

这个高中生不是别人,正是大名鼎鼎的比尔·盖茨。(比尔·盖茨和保罗·艾伦)比尔·盖茨创立微软,开发Baisc解释器,购买DOS搭上IBM PC的快车,开发Windows的的故事家喻户晓。但是在微软之前,尤其是盖茨在高中的故事很少人知道。恰恰在这段时期的经历,对盖茨一生的成功有着极其深刻的影响。01有钱的妈妈们盖茨所在的中学叫做湖滨中学,这是一所私立的贵族学校,在60年代,每年的学费就高达5000美金...

码农翻身 1098

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

把程序显示在最前面 delphi_程序员之神

公众号关注“GitHubDaily”设为 “星标”,带你了解圈内新鲜事!很多人认为程序员应该供的神里面排名第一的应该是 Linus Torvalds,因为他是 Linux 和 Git 之父。然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代码农用他的开发工具吃饭。Linux 只用 C 编程而且不到 30 年,而这位神级程序员在近 40 年中一直创造引领潮流的开发工具...

weixin_39631445的博客 277

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

把程序显示在最前面 delphi_地球程序员之神

来源 |金捷幡很多人认为程序员应该供的神里面排名第一的应该是Linus Torvalds,因为他是Linux和Git之父。然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代码农用他的开发工具吃饭。Linus只用C编程而且不到30年,而这位神级程序员在近40年中一直创造引领潮流的开发工具(Turbo Pascal/Delphi/C#/TypeScript),他就是An...

weixin_39805087的博客 78

把程序显示在最前面 delphi_我眼中的程序员之神不是 Linus,而是他

(给程序员的那些事加星标)作者:金捷幡,本文仅代表原作者观点很多人认为程序员应该供的神里面排名第一的应该是 Linus Torvalds,因为他是 Linux 和 Git 之父。然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代程序员用他的开发工具吃饭。Linux 只用 C 编程而且不到 30 年,而这位神级程序员在近 40 年中一直创造引领潮流的开发工具(Turbo...

weixin_39526546的博客 99

把程序显示在最前面 delphi_地球程序员之神:没上过大学,曾拒盖茨的 Offer,4 代码农靠他吃饭...

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法作者 | 金捷幡来源 |金捷幡(ID:jin-jiefan)导读:很多人认为程序员应该供的神里面排名第一的应该是Linus Torvalds,因为他是 Linux 和 Git 之父。然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代码农用他的开发工具吃饭。Linus 只用 C 编程而且不到...

weixin_39713538的博客 189

把程序显示在最前面 delphi_地球程序员之神:没上过大学,曾拒盖茨的Offer,4代码农靠他吃饭...

脚本之家你与百万开发者在一起导读:很多人认为程序员应该供的神里面排名第一的应该是Linus Torvalds,因为他是Linux和Git之父。然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代码农用他的开发工具吃饭。Linus只用C编程而且不到30年,而这位神级程序员在近40年中一直创造引领潮流的开发工具(Turbo Pascal/Delphi/C#/TypeScri...

weixin_39705018的博客 60

没上过大学,曾拒绝盖茨的 Offer,四代码农靠他吃饭 | 人物志

作者 | 金捷幡 责编 | 伍杏玲 封图 | GitHub作者头像 很多人认为程序员应该供的神里面排名第一的应该是Linus Torvalds,因为他是Linux和Git之父。 然而我要试图反驳这个观点,因为地球上有另外一位伟大的程序员,有超过四代码农用他的开发工具吃饭。 Linus只用C编程而且不到30年,而这位神级程序员在近40年中一直创造引领潮流的开发工具(Turbo...

程序人生的博客 8292
上一篇: 50年前的一本奇书,早已预测了AI编程的未来!
下一篇: 今年金三银四的实感。。
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值