(翻译)Tricks of the windows game programming Gurus(Windows游戏大师之路) --- 前言(作者:ANDRE LAMOTHE 1999)...

前言:在一篇零编程学习游戏编程的文章文章中提及此书,而且书评很不错,在当时反响很剧烈。因此下了个PDF版的慢慢学习。虽然接触游戏编程很久,玩的五花八门的游戏也有很多,但真正完成的游戏只有一个扫雷游戏。文章中建议学习游戏编程的入门游戏是:方块(拥有基本的游戏元素且不需要太多美术功底,只要会画方块就可以)弹球(需要进阶的处理物理碰撞,对碰撞要求提高了一层) PAC-MAN(比较高级的游戏,拥有敌人AI的设计,其中四种不同的AI类型无论在当时还是在我觉的都是令人振奋的想法,给人很多启发) 马里奥(横版过关的小游戏,其中有关卡设计,敌人AI设计及BOSS设计等等,很值得尝试)。 可惜方块游戏我还没完成,做到一半就被自己的想法卡住了。其中放弃的原因很多,有想法不完善,逻辑不清楚,还有就是目的不纯,出于想炫耀的目的(在任何事情上这都是大忌)。很多有经验的人都提及,编写程序要有始有终,不管你的IDEA是多么臃肿,烂,都应该至少完成个大概,能实现你最初的想法。我觉得说的不错。 现在就再根据自己的想法边读书边慢慢完成上面的入门游戏吧。 后面完成后会附上代码。我由于水平和时间有限,只能翻译个大概,望看到的人见谅,读个大体意思就可以。大部分凭个人语感,有错的地方欢迎指正!

真正的文章前言翻译(^ ^):

  我记得第一次和计算机互生情愫要追溯到1983年在Apple IIe上编程Logo(thanks,Woz!). 我在这次经历中获取的力量的感觉让我很着迷并且让我神经为之一怔。 电脑无论你想要它做什么它都会听之任之(PS:要说是第二女友也不为过)。它不会因为不断重复的做同一件事情而和你闹翻,而且它会完成任何特定的任务却不会问你为什么。它只会默默的完成这一切。我把我事业的成功归功于电影《War Games》以及一个名为ANDRE LAMOTHE(后面简称A.L.) 的作家。我买的第一本书就是A.L.写的,叫《Sams Teach Yourself Game Programming in 21 Days》,出版于1994年。之前我决没有想过以视频游戏编程为业。但这本书让我看到了编程的热恋与视频游戏的沉迷之间的共通点。一个无时无刻都想着怎么玩Galaga(日本Namco推出的射击游戏,就是街机上的飞机打小蜜蜂)也能够成为一名NB的研发人员?A.L.的写作和教学风格激励着我,让我有信心相信我也能够做一款视频游戏。我记得我曾和他再电话上聊过(真不敢相信他真的和其他人在交流,并且共享了他的电话号码)并在一个简单程序上向他寻求帮助,这个程序是我根据他的gas模型Demo实现的physics类。我怎么搞程序都跑不动。他直接检查了我的程序并像这样很快答复我:“Rich,你这不是坑爹嘛,你每句后都没有分号!”好吧,这就是我的第一次。之后我的第一个编程杰作通过编译并顺利运行。

    几年后,我有幸能和A.L.共同制作一款视频游戏Rex Blade(DOS游戏).我在其中担当工具编程员及关卡设计员。这对我来说真是一笔巨大的财富。我们工作的出奇艰难(A.L.是个很严厉的上司),但也乐趣非凡(看电影,打枪,滑雪,还有很多类似--有人能说出“沙鹰51的口径”?《大笑》)。我们最终完成了这个3D交互视频游戏三部曲。我们从Rex Blade只是仅仅有个概念到最终上架销售仅花费了六个月的时间(如果以后回忆起Rex,肯定能获取很多的乐趣)。Rex的制作让我知道做一款实实在在的视频游戏需要投入什么,和A.L.工作真的是夜以继日--我也确实是夜以继日的在奋斗。当时他说他一周工作100小时,我以为他在开玩笑,看来我错了。

有几项软件工程技术打破了硬件的限制,其中有软件,程序员自己还有游戏编程。在游戏编程中有很多错综复杂的模块需要完美的共同协作:算法,物理效应,AI,图形图像,声音,音乐,GUI,数据结构以及等等之类的东西。这就是Tricks of the Windows Game Programming Gurus不管是现在还是将来在视频游戏编程艺术上展现自己魅力的原因。

这本书带你进入游戏编程技术的一个新境界。相信单单人工智能就能让你垂涎欲滴了(Make your mouth water ,原来想译为口吐白沫,哈哈)--但Demo能让你痛不欲生。除此之外你还能在哪里学到包含模糊逻辑,神经网络及通用算法的详细信息,并把它们应用到你的游戏中?这本书也会带你领略DX的所有主要组件(DirectDraw,DirectInput(with forc feedback coverage:不知其意--Yes!),DirectSound,以及最新最伟大的技术DirectMusic。)

之后是物理模型封装。知道自己所想的人都花时间去钻研完全碰撞相应,动量传递,前向运动学(Foward Kinematics)以及如何对它们进行实时仿真。 想象一下,游戏中的生物能够学习,物体能够碰撞就像现实世界一样,还有你的敌人甚至能够记得和你的最后一次遭遇中他是如何败于你的剑下。这些都是创造一款在明日受欢迎的游戏的基本功。

我必须把这本书的写作交给Andre,他总说如果他不做,谁还会做?这倒是真的:一个愿意将自己20年内辛劳工作,秘密,技巧拿来帮助别人的人真的很COOL。

随着技术的突飞猛进,我觉得能够活在当代真是一件很幸运的事,尤其你还是一个游戏程序员。似乎每隔几个月就有新的CPU,显卡以及其他硬件打破我们以前认为的技术极限(我的意思是说,很难想象Voodoo III 能够在一秒内完成700亿次运算)。然而,这项伟大的技术也是很昂贵。我们期望我们创造的游戏中能够使用这一技术。这也对将来的游戏发展提出了更高的要求。如此看来,也许在不久的将来,游戏将会仅仅受限于我们的知识和想象力。

一想到下一代的游戏程序员会用这本书来激发灵感和学习知识,我就非常激动。并且我认为A.L.也希望21世纪在某地的某人能够取代他的位置,继续散布这个神奇的Black Magic 给其他人,因为他实在需要休息一下。

签名

Richard Benson
3D Game Programmer
DreamWorks Interactive

转载于:https://www.cnblogs.com/daweixj/archive/2011/11/15/2249498.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言那年踩过的坑--局部变量,静态变量,全局变量在内存中存放的位置

先看几个概念: 1、bss是英文block started by symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。bss段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定,用户应…

如何阅读3,500万个博客?

博客至今已经出现5年了,目前这股热潮正在愈演愈烈。博客又叫网络日志,现在已经非常普及;跟踪3,500多万个博客的Technorati Inc.称,博客的总数量每6个月就增加一倍。这就带来了一个问题:如何从浩如烟海的信息中找到想要…

u-boot与bootloader及其区别

Bootloader比Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后…

assets目录与res/raw目录下文件的区别

assets目录与res/raw目录下文件的区别 assets目录下的文件不会被编译成二进制,直接被打包到apk中。 assets目录中的文件不会在R.Java中建立索引。 assets目录下的文件需借助AssetManager访问。 assets目录下可以建立自己的子目录。 res/raw目录下的文件会被编译成二…

linux gdb 忽略信号,linux gdb调试基本命令

近年来,随着嵌入式技术飞速发展,嵌入式产品随处可见,Linux的应用也越来越广泛。接下来是小编为大家收集的linux gdb调试基本命令,希望能帮到大家。linux gdb调试基本命令1.启动调试前置条件:编译生成执行码时带上 -g,如果使用Makefile&#x…

Adobe Dreamweaver 添加库、标签和属性

您可以在 Dreamweaver 中使用标签库编辑器添加标签库,并将标签和属性添加到标签库中。 添加一个标签库在标签库编辑器(“编辑”>“标签库”)中,单击加号 () 按钮,然后选择“新建标签库”。在“库名称”框中&#xf…

白话debounce和throttle

遇到的问题 在开发过程中会遇到频率很高的事件或者连续的事件,如果不进行性能的优化,就可能会出现页面卡顿的现象,比如: 鼠标事件:mousemove(拖曳)/mouseover(划过)/mouseWheel(滚屏)键盘事件:keypress(基于…

Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)

Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案) Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案) 目前网上找到的Subversion的配置说明中,关于用户权限控制…

wireshark抓包工具的使用及分析

前段时间看到群里在讨论Wireshark抓包工具,想写一篇使用笔记但一直没来得及写,本篇就通过实例来分享wireshark抓包工具的使用。Wireshark简介 Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详…

EventLoop笔记

node环境 Event Loop各阶段: - timers 阶段:这个阶段执行 setTimeout 和 setInterval 的回调函数。- I/O callbacks 阶段:不在 timers 阶段、close callbacks 阶段和 check 阶段这三个阶段执行的回调,都由此阶段负责&#xff0c…

如何实现android和服务器长连接呢?推送消息的原理

转载地址:http://blog.csdn.net/q376420785/article/details/8653958 前言:现在的大多数移动端应用都有实时得到消息的能力,简单来说,有发送消息的主动权和接受消息的被动权。例如:微信,QQ,天气…

linux入门系统那个好,初学Linux哪个发行版本好?这些更合适!

Linux是非常受欢迎的技术,现在很多人都开始转行学习Linux,不过大家都知道Linux发行版本众多,在学习的时候我该选择哪个发行版本呢?为大家介绍一下。其实在挑选Linux发行版本之前,我们首先要根据自己的需求决定。如果抱着试试的心…

git 使用及常用命令介绍

一、git 常用命令 git clone 地址 克隆项目 git status 查看当前状态 git add 文件或文件夹 (加入本地暂存目录) git commit -m "注释" 提交到本地版本库(暂存区) git commit -a -m "注释" 提交全部改动文件 …

asp.net中的记忆盲区

<1> 连接数据库 用read方法取出数据 在web.config取出连接字符串 string sqlconn ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString(); SqlConnection connnew SqlConnection (sqlconn ); SqlComman…

调试网络收发不通问题

今天在做之前一个项目重构的事情&#xff0c;需要把之前的代码重新做功能&#xff0c;我们有两个设备&#xff0c;他们通过网线连接&#xff0c;用UDP来传输数据。很多人都怀疑UDP丢包什么&#xff0c;不及时什么之类的&#xff0c;如果想把事情做得足够快&#xff0c;最好还是…

VB6.0和VB.Net对照表

想在网上找一下VB.Net中&#xff0c;哪些是VB6.0遗留下来的东西&#xff0c;哪些是VB.Net增加的东西。结果中文的没有找到&#xff0c;找到了一个日文网页。简单的翻译了一下&#xff0c;放在这里&#xff0c;供需要的人参考。 VB6.0和VB.Net的对照表VB6.0VB.NETAddItem Object…

hibernate的初次使用

转载地址&#xff1a;http://blog.csdn.net/aboy123/article/details/10222675 一、Hibernate概述 &#xff08;一&#xff09;什么是Hibernate&#xff1f; hibernate核心内容是ORM&#xff08;关系对象模型&#xff09;。可以将对象自动的生成数据库中的信息&#xff0c;使…

linux 关联数组,linux 普通数组和关联数组

数组&#xff1a;就是借助索引将多个数据存储为一个集合。普通数组&#xff1a;数组的索引只能使用整数关联数组&#xff1a;数组的索引可以使用整数和字符串(要bash4.0以上的版本才支持关联数组)数组通常与循环或者其他判断式交互使用才有比较高的意义普通数组的定义array1(a …

layui之在table的编辑的按钮的思考

点编辑的时候&#xff0c;如果没有在html界面写form&#xff0c;而是在同级目录下写的 修改html的话呢&#xff0c; 就可以在点 编辑 按钮的时候&#xff0c;调用打开tab的方法&#xff0c;把form的html打开&#xff0c;而不用去后台转发转载于:https://www.cnblogs.com/fuckin…

删除rz上传失败乱码的文件

通过rz上传文件失败时&#xff0c;会产生大小为0的乱码的文件&#xff0c;如下 ls -l -rw-r–r– 1 root root 47031 12-15 13:48 ?ղ??.htm 这种类型的文件可用以下命令 find . -maxdepth 1 -size 0 | xargs rm -rf 说明&#xff1a;这种文件大小为0&#xff0c;并且在上…