游戏都是用什么编译器开发的,为何双鱼座很难找到女朋友相关资料

游戏开发者
点击:1055
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字·文化部监督电子邮箱:wlwh@·
文明办网文明上网举报电话: 举报邮箱:admin1@&&&&&&&&&&&&&&&&君,已阅读到文档的结尾了呢~~
求教:现在的主流3D网络游戏开发都使用哪些技术 引擎开发使用哪些语言 或者如果直接使用的引擎有哪些 模型开发大多使用哪些工具 3DMAX MAYA 或者其他什么 数据存放一般使用什么 MySQL DB2 还是自定义一种存储规范 外围脚本使用什么语言 VB E语言 其他 有比较好的开发平台 比较新的学习资料 可以自己找一些游戏的客户端和服务器端研究研究嘛 学习资料的话 很乱的 因为涉及很多个方面 具体可以找些培训课程资料..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
求教 现在的主流3D网络游戏开发都使用哪些技术
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口优秀游戏程序员学习资料推荐 -
优秀游戏程序员学习资料推荐
这两天给单位的技术做的一次学习材料推荐培训,直接ppt上拷过来的。&&&&&&&&&
优秀游戏程序员学习资料推荐
主讲人:臧旭
今天提到的纯粹是我个人心得和理解,可能片面,也可能以偏概全。
目的是给大家做一定的指引作用,想让大家知道自己还有哪些可以去学习,还有哪些不足,我们距离优秀还有多远。
对我今天提到的东西,如果大家有时间,一定要去深入了解,在技术的道路上才有可能看得远、走得稳、飞得高。
另外有一句对所有技术人员想说的话:
学无止境。切忌坐井观天、有一点小小的成就就沾沾自喜、止足不前。
扎实的基础
万丈高楼平地起,勿在浮沙建高楼。
有扎实的计算机理论基础:
1.对计算机知识体系有全局的理解。
2. 对任何一门技术都将有更深刻和透彻的理解。
数学是基础中的基础。
不会数学推导,你就看不懂各种文献,也不会明白各种算法的个中所以。
不会数学推导,在3D道路上你更将寸步难行。
当然,你也可以选择让度娘给你一个别人写好的现成的。
但是,对内部原理和推导一窍不通我们就不能变通?网上找不到现成的怎么办?
1.高等数学
积分和微分在任何数学场合都是基本功。
2.线性代数与空间解析几何
向量分析、矩阵分析。3D图形学中最重要的组成部分。
3.基础物理
刚体力学、柔体力学、流体力学,游戏开发中非常常见。
4.离散数学
数据结构的理论基础。
5.概率统计、模糊数学
人工智能的理论工具。
计算机学科专业基础
1.计算机组成原理与体系结构
2.汇编语言程序设计
3.操作系统
4.数据结构
5.程序设计算法
6.计算机网络
7.数据库原理
8.编译原理
9.C/C++语言设计
计算机组成原理与体系结构
组成原理和体系结构可以合并在一起,也可以单独的拆分为两个科目。
两个科目相辅相成,各有重叠的部分。但是总体都讲述了计算机的各个硬件组成部分,各个部分的运作原理以及各个部分之间是如何互通协作的。
总体来说,两个科目都偏硬,但是组成原理偏硬更多,体系结构相比略偏软。
这个是基础中的基础,不学习这个,我们就不明白计算机到底是什么,也不会深入地理解计算机是怎么运作的。当然,我们肯定更不明白自己写的程序本质上到底是什么了。
推荐材料:
找一本高校教材就可以了,推荐清华大学出版社的
汇编语言程序设计
最低级的语言。
学习的目的:
1.深入地理解高级语言的语言特性。高级语言只是给低级语言穿上了华丽的外衣,我们要想知道它到底是什么,必须查看汇编代码。
2.深入理解编译器。编译器会给我们优化,但是很多时候可能好心没做成好事,这个时候必须查看汇编代码才能看出猫腻。
3.性能优化。编译器的汇编指令优化已经很好,但是想要追求更好,自己写汇编代码是最好的选择。
4.深入理解系统内核。比如不开源的windows,那么多漏洞别人都是怎么发现的?当然是通过阅读反汇编代码了。
5.打发大家的一些无聊时间,有强大的汇编基础和操作系统基础,破(po)解(jie)和逆向分析都不会难。
6.有时间最好能独立开发一款反汇编工具,对汇编和逆向的帮助会很大。
推荐材料:
王爽 《汇编语言》
《C++反汇编与逆向分析技术揭秘》
《天书夜谈-从汇编语言到Windows内核编程》
《加密与解密》
操作系统是大家很熟悉的名词。不言而喻,基础中的基础。
学习目的:
1.进程、线程、cpu调度、死锁、内存管理、文件管理、I/O系统,这几块都是我们写程序的时候和操作系统打交道最多的地方。必须要有深厚的操作系统系统理论基础来知道我们实践。百度什么的只能给你吃一顿快餐,很难让你有深入地理解。
2.主流的操作系统无非linux和windows,但是他们的设计初衷是大同小异的,有通用的理论我们才能更好地去实践。
推荐材料:
恐龙书《操作系统概念》(《Operating System Concepts 》)
于渊 《自己动手写操作系统》
不懂数据结构的程序员就不是一个程序员。
数据结构内容非常多,建议大家把每种基础类型的数据结构都仔细地学习一下,一定全部要自己动手写程序实现一遍,还要自己动手计算最好、最坏以及一般时间复杂度和空间复杂度。
对于数据结构的学习千万不能马虎,绝对不能眼高手低,能完整地没有bug地实现任何一个基础的数据结构都不是一件容易的事情。
除了基础的那些之外,一些常用的变种也很重要。值得花时间学习和实践。
推荐材料:
严蔚敏 《数据结构》
程序设计算法
这里的程序设计算法,指的是六大基础算法。大家如果对ACM比赛有所了解,应该清楚通用计算机算法还有很多。但是对于我们平时遇到的问题,相信有这六大基础算法已经足够。
主要是:递归与分治、动态规划、贪心、回溯、分支界限、线性规划。
和学习数据结构一样,重要的是理解和动手实践。
推荐材料:
王晓东 《算法设计与分析》+《算法设计与实验题解》(推荐这个,后面两个太厚,讲的太多、太杂,而且《计算机程序设计艺术》三卷难度非常大)
《算法导论》
《计算机程序设计艺术》三卷
北大和浙大的ACM在线judge (无聊的时候做一两条稍有难度的题目也是非常有意思的)
计算机网络
和操作系统一样,所谓计算机网络基础,更加偏重的是理论,一层层地剖析七层网络协议,同时对各种类型的网络、物理媒介、网络拓扑、各种网络算法都有详细的描述。我们平时所关心的SOCKET、TCP、UDP之类的在整个计算机网络的知识体系中只是一滴水而已。
为什么要学习?
不学习这个,我们除了会用socket建立连接、发送消息、知道TCP有三次握手之类的之外,其他还知道什么呢?
所以再一次强调,学无止境,切忌坐井观天。
推荐材料:
潘爱民译《计算机网络》
《自顶向下网络设计》
数据库原理
数据库应该是一个很重要的学科。它的应用非常广泛。不要一想到数据库,就想到服务器开发人员用的。任何地方都可以使用数据库。
数据库原理主要描述的是关系模型、范式以及SQL规范。数据库原理是数据仓库、数据挖掘之类相关学科的理论基础。
建议大家学习使用任何的数据库之前,最好预先学习一下理论。不然建表和写SQL的时候会出现很多不合理的地方。
另外,对于数据库来说,自己动手写一个小型DBMS(数据库管理系统)的收获是最大的。因为实现一个DBMS涉及到的知识点太多了,需要丰富的编译原理、数据结构、操作系统知识。是一个把知识融会贯通的好机会。
推荐材料:
没什么特别优秀的理论书
一定要自己动手实现一个DBMS
编译原理,当然讲的最多的是和编译器相关的原理知识。
为什么要学习:
1.帮助我们理解平时写的高级程序语言最终是如何变成指令码的。
2.编译原理里面有限状态机的概念非常有用,编译器也是它的一个应用而已。
推荐材料:
龙书 《编译原理》
《加载器和链接器》
《程序员的自我修养:加载、链接和库》
LLVM源代码
C/C++
C++有非常强的语言特性,熟悉C++,对于任何一门其他的语言都能触类旁通。
而且,阅读高级C++代码绝非易事,绕过这道坎,我们阅读任何语言,任何代码都是小菜一碟。
C++的范畴太太广泛,水太深,需要学习的东西也太多。
推荐材料:
我们现在对C++的使用只是入门级别而已。
C/C++推荐书籍
语言基础:
《21天学通C++》
C++圣经《The C++ Programming Language》
《Effective C++》
《More Effective C++》
《深入理解C++11:C++11新特性解析与应用》
《深度探索C++对象模型 》(《 Inside the C++ Object Model 》)
模板,模板元,泛型,库:
《STL源码剖析》
《C++ Templates中文版 》(《 C++Templates:The Complete Guide 》)
《C++模板元编程》(《C++ Template Metaprograming:Concepts, Tools, and Techniques from Boost and Beyond》)
《深入解析ATL 》(《 ATL Internals 》)
《COM原理与应用》
《 Boost程序库完全开发指南——深入C++“准”标准库》
《深入浅出MFC》
夯实基础之后我们做什么?
看了前面一大串的知识和书籍,大家可能头已经晕了。
计算机是一门学科,不是大妈做手抓饼。你要想做一个真正优秀的程序员,前面的全部都是必须!
而且熟悉其中任何一个点都绝不是一天两天的事情。
我们至少要做好前面的80%的积淀,不然我觉得基本上就不要深入后面的内容了。
计算机是一门科学,它有无数的分支和小学科。
从技术选型和实现的角度来看,更是不计其数。
我们今天就关注我们现在做的:游戏编程。
语言只是工具,是我们为了实现完成一款游戏这一目的的工具。
高级语言一般分为静态(类型)语言和动态(类型)语言。
简单的区分手段(不一定):需要预编译的就是静态语言,不需要预编译的就是动态语言。所有的脚本语言都是动态语言。
深入了解语言是如何编译或者解释的,有助于我们更加深入地理解语言是如何实现、内部是如何运作的。基于此,我们才能更加灵活、高效、高性能地使用语言。
推荐材料:
基础的就是编译原理,但是现在已经有了很多其他的编译技术(如相对于AOT的JIT)。
要想对语言有更多的了解,可以直接看开源语言的源代码,或者查阅官方的文档。
建议大家要了解的语言,打星的是要熟练掌握的语言:
宿主语言:
C++(*)
Objective-C(*)
粘合剂语言:
ActionScript
JavaScript
工具语言:
Linux Shell脚本(*)
Windows批处理脚本(*)
Python(*)
学习一门脚本,不仅仅要学习它的语法,更重要的是要学习它的脚本引擎。Lua作为开源语言,以高性能和易使用而闻名。每一个游戏程序员(不管是服务器开发还是客户端开发),都值得投入大量的时间把它学习透彻。
什么时候算学习Lua毕业了?能独立开发一个Lua的单步调试IDE就行了。
友情提示:容易上手的东西精通都很难。我们现在对Lua的使用只是皮毛而已。
推荐资料:
《Lua程序设计》(lua基本语法,lua和C函数的互通)
Lua源代码 (Lua源代码的量非常小巧,但是密度很高,要一行一行的精读,调试)
LuaJIT源代码(Lua的JIT编译版本,可以和Lua源码比较阅读,精读)
tolua++源代码(开源Lua和C++绑定实现,精读)
云风的博客
云风 《Lua源码欣赏》
为什么有Java,因为我们要在安卓平台开发,所以我们必须要熟悉Java。但是这里提到的Java是和安卓无关的,安卓是另一个我们需要熟悉的庞大主题。
学习的要点:
Java的语言特性及基础库(匿名类、容器、并发、异常、反射、文件处理、网络)。
Java的AOT和JIT两种编译方式。
Java的JVM虚拟机实现。
Java的GC实现机制。
推荐材料:
《Java编程思想》(《Thinking in Java》)
《深入理解Java虚拟机:JVM高级特性与最佳实践》
《深入Java虚拟机》(《 Inside the Java Virtual Machine》)
《Java SE 7虚拟机规范》
JVM源代码(代码量大,对学习操作系统和各种编译手段很有帮助,泛读)
Objective-C
IOS上开发需要使用Objective-C,是一门优雅的语言。同样,这里提到的Objective-C只是语言级别的东西,不涉及IOS。
学习的要点:
oc的语法和基础库(oc对象模型、函数调用、Interface、Category、Extension、selector、arc、容器、并发、异常、反射、文件处理、网络、NEXTSTEP贡献的设计模式)
推荐材料:
苹果官方开发文档
《Objective-C基础教程》(《Learn Objective-C on the Mac ForOS X and iOS》)
游戏的运行平台
目前我们涉及到的游戏运行平台有三个:
所以要想更好的对我们的游戏做本地优化,我们必须熟悉各个平台操作系统。
学习要点:
Win32窗口程序开发。
MFC程序开发。
COM组件开发
ATL组件开发。
进程、线程、同步IO、异步IO、内存分配技术、API拦截和DLL注入、结构化异常。
内核、驱动编程。
推荐材料:
《深入浅出MFC》
《深入解析ATL 》(《 ATL Internals 》)
《 COM原理与应用》
《Windows核心编程》(《Windows via C/C++》)
《Windows驱动开发技术详解》
《Windows内核原理与实现 》
《天书夜谈-从汇编语言到Windows内核编程》
《寒江独钓——Windows内核安全编程》
WRK( Windows Research Kernel )源代码
不论Android或者IOS,它们使用的操作系统都是Linux的变体,所以熟悉Linux对学好Android和IOS是不可或缺的。
学习目标:就是操作系统必备的那一套,和Windows差不多,都摸熟了就可以了。(进程、调度、内存、中断异常、系统调用、信号、文件系统、同步和异步IO、驱动)
推荐材料:
《鸟叔的Linux私房菜》(入门教材,教你怎么操作,怎么使用命令的)
《UNIX 环境高级编程》(《Advanced Programming in the UNIXEnvironment》)
《Linux内核设计与实现》(《Linux Kernel Development》)
《深入理解Linux内核》 ( 《Understanding the Linux Kernel》)
《深入Linux内核架构》 ( 《Professional Linux KernelArchitecture》)
《Linux内核源代码情景分析》
《Linux设备驱动程序》 ( 《Linux Device Drivers》)
《精通Linux设备驱动程序开发》 ( 《Essential Linux Device Drivers》)
Linux源代码
学习要点:
Android原生应用开发(组件、工具包使用、api等级、manifest配置)
NDK(这个实际上是Java提供的,只是我们只在安卓上面用,才放在这里)(JNI实现原理,NDK编译工具链和mk文件写法)
adb(adb工具使用,adb通信协议)
Android压包和解包工具
Android内核和驱动开发
Dalvik虚拟机
推荐材料:
《精通Android》(《Pro Android 4》)
《 Android应用性能优化》(《Pro Android Apps PerformanceOptimization》)
《 Android底层开发技术实战详解:内核、移植和驱动 》
《 Android系统源代码情景分析》
老罗的博客 blog.csdn.net/luoshengyang
Dalvik虚拟机源代码
NDK工具链源代码
和Android相比,并不推荐大家花很多的时间在IOS上面。个人觉得ios对技术人员来说是个挺没有意思的平台。
学习要点:
熟悉xcode。
熟悉UI组件和工具库。
熟悉ios私有api。
了解objective-c和c++互通的原理。
推荐材料:
官方文档(精读)
《精通iOS开发》(《Beginning iOS6 Development》)
没事可以找个刷机的源代码研究研究
我们在写任何程序之前,一定要有一定的设计模式基础。不然写出来的代码会有各种毛病。
学习要点:
熟悉各种常用的设计模式,做到提到设计模式的名字就要想到对应的设计模式的意图、优缺点,以及对应的UML类图。
推荐材料:
GoF《设计模式-可复用面向对象软件的基础》
POSA 《面向模式的软件架构》 共5卷
游戏是最大也是最关键的主题。
笼统的讲,做出一款游戏,涉及到的东西应该有:
游戏资源管理、IO
游戏对象的管理和显示(渲染引擎)
游戏资源管理、IO
IO主要和操作系统相关,有了前面的积淀,对我们来说应该不成问题。
游戏资源管理主要是指文件资源打包机制和补丁机制。
打包对提高游戏性能至关重要,重点要解决的问题就是怎样更合理地设计文件资源包格式、合理地设计高效索引提高查找和读取的效率。可以理解为我们自己定制的一个简单的小型数据库。
推荐材料:
暴雪MPQ文件打包源代码
/ladislav-zezula/StormLib
技术要点:
计算机图形学
3D引擎基本结构和设计
各种3D对象是如何组织和渲染的
计算机图形学
2D/3D渲染引擎的数学基础。
学习要点:
光栅算法、不同类型图元的填充算法、反走样算法、三维几何变换、三维观察变换、样条逼近算法、场景树、子场景组织算法、可见面判别算法、光照模型以及面绘制算法(材质、光线、阴影、凹凸、雾、透明混合、镜面映射)、后处理算法。
学习计算机图形学,最忌讳的也一样是眼高手低、不求甚解。什么才叫学会计算机图形学?每一个公式推导你都能自己做,那才叫学会了。
推荐材料:
赫恩《计算机图形学》
《Mathematics for 3D GameProgramming & Computer Graphics》
Mesa 3D源代码(Mesa是OpenGL的开源实现)
Kazmath(cocos2d-x所用的开源数学库)
3D引擎基本结构和设计
也许很多人会问这个不是框架架构层面的东西么?为什么不是从OpenGL写小Demo入手?
这个道理和我们需要扎实的理论基础是一样的。了解什么是3D引擎,我们就有了一个全局的概念。然后才能一一击破。
学习要点:
第一次看:了解3D引擎层次结构,了解一个典型的3D所必须要有的功能模块和它们的作用,了解模块之间的关联关系,了解渲染引擎在3D引擎中的位置地位。
第二次看:结合开源引擎,深入理解各个模块的实现和当前最新的研究成果。
第三次看:灵活应用,自己动手模仿写基础的3D引擎。
第四次看:结合自己的实践和大量参阅开源3D引擎,明白当前流行的3D引擎各自的有点和缺点。然后弃其糟粕,取其精华。
推荐材料:
《游戏引擎架构》(《Game Engine Architecture》)
《3D Game Engine Design》
《 3D游戏编程大师技巧》
《REALTIME RENDERING》
其实DirectX和OpenGL在一个对等的位置,对于学习而言,两者都一样。DirectX函数设计封装更为彻底、方便,OpenGL的函数则更加简洁、干净、适合学习。但是冲着跨平台的特性,以后大部分人估计都会直接学习OpenGL了。
OpenGL是搭建3D世界的工具,所以一定要非常非常熟悉。OpenGL里面涉及的一些学习要点以前培训过,大家可以自己回顾一下。
推荐材料:
红宝书 《OpenGL编程指南》(《OpenGL Programming Guide》)
蓝宝书《OpenGL超级宝典》(《OpenGL SuperBible》)
Nehe 的OpenGL教程 nehe.gamedev.net
Mesa 3D源代码
各种3D对象是如何组织和渲染的
这个有了图形学和OpenGL基础,自然就会明白了。所有的3D对象只是复杂度不同,组织方式不同,渲染的原理都是一样的。
学习要点:
常用3D模型格式、地形、树、植被、水、光晕、粒子、布告板、骨骼动画
推荐材料:
《Focus On 3D Terrain Programming》(3D地形)
《Advanced Animation with DirectX》(模型和动画)
GPU编程是3D开发很重要的一个环节。说到底就是Shader语言的应用。Shader可以上3D世界变得更加丰富多彩。很多绚丽的后处理效果都需要依靠Shader来实现。当然,最大限度的利用GPU的能力,已经是3D游戏突破性能瓶颈的最大利器。
相关的技术还有GPGPU(General Purpose GPU),即利用GPU的高速并行处理能力来去掉CPU多线程编程。
推荐材料:
《GPU 精粹》(《GPU Gems》)3卷
《Shadersfor Game Programmers and Artists》
《 Advanced Lighting And MaterialsWith Shaders》
AMD和NVIDIA官网
ACM Siggraph文献
和游戏相关的物理主要有刚体力学、柔体力学以及流体力学。
推荐材料:
&&Game Physics&&
&&Game Physics EngineDevelopment&&
&&Real-time CollisionDetection&&
Box2D引擎源码
LiquidFun引擎源码
Bullet引擎源码
人工智能是一个非常广泛的话题。对数学的要求较高,横跨好多学科。
学习要点:
基础的算法都应该有所了解,至少要知道个每个算法的实现原理和使用情景。
基于图和树的搜索(A*等)(*)
不确定性推理(贝叶斯网络、模糊逻辑等)
机器学习、模式识别(决策树、神经网络等)(*)
计算智能(蚁群算法、模拟退火算法等)(*)
自然语言处理(*)
有限状态机(*)
推荐材料:
《人工智能及其应用》
《高级人工智能》
《游戏开发中的人工智能 》
网络最重要的是要掌握7层模型,掌握TCP模型,掌握Http协议。
学习要点:
搞清楚7层模型上各有哪些协议
TCP协议细节
Http协议细节
常见IO模型(阻塞IO、非阻塞IO、IO复用、信号驱动IO、异步IO)以及常见设计模式(最经典的是POSA中提出的reactor模式)
熟悉windows下的完成端口和linux下的epoll
熟悉游戏服务器中常见的几种网络架构
推荐材料:
《POSA -并发和联网对象》 第二卷
《C++网络编程》2卷 (关于ACE网络框架的好书)
《TCP/IP》3卷(第一卷和第二卷较为经典)
《 UNIX网络编程》(《Unix Network Programming》)2卷
《Windows核心编程》
《Win32多线程程序设计》
MaNGOS源代码
/mangos(魔兽世界服务器复刻项目源码)
学习要点:
存储过程使用
数据库的几种锁的使用
熟悉数据库常见的几种存储引擎
推荐材料:
《Mysql必知必会》
《高性能MySQL 》
《深入理解Mysql核心技术》(剖析源码)
Mysql源代码
多线程、内存池
多线程主要是要熟悉windows的Thread和内核对象,Linux下的pthread。然后就是如何处理线程竞争,做好同步工作。
内存池没有专门的书籍介绍,大家可以到网上搜索基础算法。也可以看看Memcache的源代码。
游戏编程精粹1-7
这套书总共有7卷,以小专题形式讨论游戏的各个方面,推荐大家阅读,非常有帮助。
其他一个比较重要而艰深的主题是Debug,有时间也要研究透。
更多相关文章
自从开始上大学读计算机以来,自己慢慢的也积累了不少计算机方面的文章和书籍,特别是一些自己读过的,觉得很不错的,一直想分享给大家.但是却没有时间一次性的把他们整理出来.于是我建了一个浪新微博:爱分享的程序员.每天分享一篇文章或者一本书,另外加上我自己的简单介绍,这样每天抽出时间整理一点,对于接受的人, ...
想 起写这篇文章是在看侯杰先生的&深入浅出MFC&时,突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码参考.一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值.我的原则是只写自己研究过或准备研究的资料, ...
想起写这篇文章是在看侯杰先生的&深入浅出MFC&时,突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序员的书单与源代码参考.一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值.我的原则是只写自己研究过或准备研究的资料,所以内容 ...
一个游戏程序员的学习资料 作者: weiqubo (3 篇文章) 日期: 三月 20, 2012 在 1:29 下午
想起写这篇文章是在看侯杰先生的&深入浅出MFC&时, 突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码 ...
一个游戏程序员的学习资料 //z
14:39:51 PM
想起写这篇文章是在看侯杰先生的&深入浅出MFC&时, 突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍 我眼中的游戏程序 员的书单与源代码参考.一则是作为自 ...
Choosing a good InnoDB log file size is key to InnoDB write performance. This can be done by measuring the a ...
描述 妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,. 输入输入含有一些数据组,每组数据包括菜种(字串),数量(计量单位 ...
我的博客,游戏运维一路走来的技术统计及分享,欢迎指点
服务器把 程序端口 封了. 2 用户权限不足,,,分配一个iis_iusrs
引用 问题描述: 现有3张表:分别是 学生信息表S(sno,sname) 课程信息表C(c ...
友情链接:
管理员邮箱:info@游戏该使用何种语言开发
这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。
  This is a question that belongs in every game programming FAQ.
It seems to be asked in a game development forum several times a
week. It's a good question, though, and not one with an easy
answer. There are computer languages that work better for some
applications than others. Here is a list of the major programming
languages used to write games along with descriptions, advantages,
and disadvantages. Hopefully this list will help you make a
  如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis
Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。
  If FORTRAN and COBOL were the first compiled high-level
languages, then C is their grandchild. It was created in the 70's
by Dennis Ritchie as a tighter and more coherent successor to
ALGOL, which was a structured successor to COBOL and FORTRAN. It
was designed to be a smaller and simpler version of its
predecessors, suitable for writing system-level programs, like
operating systems. Before then, operating systems were hand-coded
in assembly and were not portable. C was the first programming
language that made portability a reality for system-level code.
  C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。
  C is a language that supports structured programming. That is
to say that C programs are written as collections of disconnected
function calls that run top-down rather than a single monolithic
block of code with program control-flow happening via GOTO
statements. Hence, C programs are generally easier to follow than
monolithic FORTRAN and COBOL spaghetti-code. Actually, C still has
a GOTO statement, but its functionality is limited and it is only
recommended as a last resort if structured solutions are much more
complicated.
  正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。
  True to its system-programming roots, it is fairly easy to
interface C with assembly languages. The function-calling interface
is very simple, and assembly language instructions can be embedded
within C code, so linking in separate assembly-language modules is
not necessary.
  优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。
  Advantages: Good for writing small fast programs. Easy to
interface with assembly language. Very standardized, so versions on
other platforms are similar.
  缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
  Disadvantages: Does not easily support object-oriented
techniques. Syntax can be difficult and lends itself to abuse.
  移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
  Portability: While the core of the language and the ANSI
function calls are very portable, they are limited to control-flow,
memory management, and simple file-handling. Everything else is
platform-specific. Making a program that's portable between Windows
and the Mac, for instance, requires that the user-interface
portions be using system-specific function calls. This generally
means that you need to write the user-interface code twice. There
are libraries, though, that make the process a bit easier.
  用C语言编写的游戏:非常非常多。
  Games Written in C: Lots and lots.
  资料:C语言的经典著作是《The C Programming
Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The Waite
Group's C Primer Plus》。
  Resources: The classic book about C is [The C Programming
Language].It's gone through several iterations and has expanded to
about three times its original size, but it's still a good
introduction to the language. An excellent tutorial is [The Waite
Group's C Primer Plus].
  C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。
  C++ is the object-oriented successor to C. Object-oriented, or
OO, programs are the next step beyond structured programming. OO
programs are built out of objects, which are packages of data and
functions collected into discrete units. There are many libraries
of objects available that make writing programs as simple as
pulling together a collection of program "building blocks" (at
least in theory). For example, there are many GUI and database
libraries that are implemented as collections of objects.
  C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。
  C++ is the subject of controversy, especially in the game
development community. There are features of C++, like virtual
functions, that add an extra layer of decision-making to function
calls, and critics are quick to point out that C++ programs can be
larger and slower than C counterparts. C++ advocates point out,
however, that coding the equivalent of a virtual function in C
requires the same overhead. It's an on-going debate that's not
likely to be decided soon.
  我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。
  In my opinion, the overhead of C++ is simply the price you pay
for a better language. This same debate went on in the 60's when
high-level programming languages like COBOL and FORTRAN started to
displace hand-coded assembly as the language of choice. Critics
correctly pointed out that programs written in high-level languages
were inherently slower than hand-tuned assembly and always would
be. High-level language advocates pointed out, however, that the
slight performance hit was worth it because COBOL and FORTRAN
programs were much easier to write and maintain.
  优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
  Advantages: Much better than C for organizing large programs.
Supports the object-oriented paradigm nicely. Libraries of common
data structures, like linked lists and grow-able arrays, can remove
much of the burden of having to deal with low-level details.
  缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
  Disadvantages: Extremely large and complicated. Like C, the
syntax lends itself to abuse. Can be slower than C. Not many
compilers implement the entire language correctly.
  移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
  Portability: Better than C, but still not great. While it
shares the same disadvantage as C, most of the portable
user-interface libraries are implemented as collections of C++
  使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。
  Games Written in C++: Lots and lots. Almost all commercial
games are written in C or C++.
  资料:最新版的《The C++ Programming
Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《Who's
Afraid of C++》,如果你已经熟知C,那么试一下《Teach Yourself C++》。
  Resources: The latest edition of The C++ Programming Language
is excellent. As for tutorials, there are two camps, ones that
assume you know C, and ones you don't. By far the best ground-up
C++ tutorials are Who's Afraid of C++ and Who's Afraid of More C++.
If you already know C, try Teach Yourself C++.
3、我该学习C++或是该从C开始(Should I learn C++, or should
I start with C )
  我不喜欢这种说法,但它是继“我该使用哪门语言”之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:
  I thought this bore mentioning, as it's the second most
commonly asked question next to "which programming language should
I use?"Unfortunately, the answer isn't black and white. You could
save a lot of time by just teaching yourself C and writing apps,
but there are two disadvantages to this approach.
  你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。
  You're missing out on what will likely be a much more
effective way of modeling the data in your game. By not learning OO
programming off the bat, you could be enforcing bad programming
habits that you'll have to un-learn later. Trust me on this
  最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不“辛苦”的工作。
  Many of the biggest commercial games, including most
first-person shooters, get by without C++. The authors of these
programs, however, always insist that they're using object-oriented
programming techniques even though they're using plain old C. If
you want to just learn C, at least teach yourself OO programming
techniques. OO is the perfect methodology for simulations (read:
games), and you'll really be doing it "the hard way" if you push
off learning OO.
4、汇编语言(Assembly)
  显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。
  By default, assembly was the first computer language. Assembly
language is actually a command-based representation of the actual
instructions that your computer's processor runs. That means you
will be dealing with the low-level details of your processor, like
registers and stacks. If you're looking for a language that's
English-like and is relatively self-documenting, this isn't it!
  确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 —
这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。
  By definition, anything you can do in any other language, you
can do in assembly, only not as easily --of course, that's like
saying that anywhere you can go in a car, you can go on foot, only
not as easily. While the statement might be true, the later
technologies made things much easier to use.
  总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。
  In general, assembly language is not used on its own for
games. Games that use assembly language use it in bits and pieces
where it can improve performance. For example, DOOM is written
entirely in C with a couple of drawing routines hand-coded in
assembly. They are the routines that are called a few thousand
times a second, so making the routine as tight as possible really
helped the performance of the game. It's fairly easy to write a
function in assembly that is call-able from C, so using both
languages wasn't a problem.
  特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
  Special Note: The name of the language is "assembly". The name
of the tool that converts assembly language into true machine code
is called an "assembler". It's a common misnomer to call the
language "assembler", so start out on the right foot by calling the
language by its proper name.
  优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
  Advantages: Is, by definition, the smallest and fastest
language. A talented assembly programmer can write programs that
are faster than anything that can be done in other languages.
You'll be the first person to be able to take advantage of the
processor's latest new features, because you can use them
  缺点:难学、语法晦涩、坚持效率,造成大量额外代码 — 不适于心脏虚弱者。
  Disadvantages: Difficult to learn, cryptic syntax, tough to do
efficiently, and it takes much more code to get something done
--not for the faint of heart!
  移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。
  Portability: Zilch. Since the language is designed for a
single processor, it is not portable by definition. If you use
extensions specific to a particular brand of processor, your code
isn't even portable to other processors of the same type (for
example, AMD 3DNOW instructions are not portable to other
Pentium-class processors).
  使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
  Games Written in Assembly: I don't know of any commercial
games that are written entirely in assembly. Some games, however,
have the most time-critical portions done in assembly.
  资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly
Language: Step-By-Step》是很值得学习的。
  Resources: When you're looking for documentation for an
assembly language, you're basically looking for the documentation
for the chip. There is some online information at [Intel],
[AMD][Motorola] for their processors. As for books, [Assembly
Language: Step-By-Step] is well-reviewed.
5、Pascal语言
  Pascal语言是由Nicolas
Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“空心粉式代码”变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM
PC上的 Turbo
Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。
  Pascal was designed by Nicolas Wirth in the early 70's,
because he was dismayed to see that FORTRAN and COBOL were not
enforcing healthy structured programming disciplines in students.
"Spaghetti code" was becoming the norm, and the languages of the
time weren't discouraging it. Pascal was designed from the ground
up to enforce structured programming practices. While the original
Pascal was designed strictly for teaching, it had enough advocates
to eventually make inroads into commercial programming. Pascal
finally took the spotlight in a big way when Borland released Turbo
Pascal for the IBM PC. The integrated editor, lightning-fast
compiler, and low price were an irresistible combination, and
Pascal became the preferred language for writing small programs for
  然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows
编写程序的C++。Turbo Pascal很快被人遗忘。
  The momentum, however, did not stay. C compilers became faster
and got nice built-in editors and debuggers. The almost-final nail
in Pascal's coffin happened in the early 1990's when Windows took
over, and Borland ignored Pascal in favor of C++ for writing
Windows applications. Turbo Pascal was all but forgotten.
  最后,在1996年,Borland发布了它的“Visual Basic杀手”— Delphi。它是一种快速的带华丽用户界面的
Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。
  Finally, in 1996, Borland released its "Visual Basic Killer",
Delphi. Delphi was a fast Pascal compiler coupled with a gorgeous
user interface. Against all odds (and the Visual Basic juggernaut),
it gained a lot of fans.
  基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级操作,如位操作变得困难起来。
  On the whole, Pascal is simpler than C. While the syntax is
similar, it lacks a lot of the shortcut operations that C has. This
is a good thing and a bad thing. It's harder to write inscrutable
"clever" code, but it makes low-level operations like
bit-manipulation more difficult.
  优点:易学、平台相关的运行(Dephi)非常好。
  Advantages: Easy to learn. Platform-specific implementations
(Delphi) are very nice.
  缺点:“世界潮流”面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。
  Disadvantages: "World class" OO successors to Pascal (Modula,
Oberon) have not been successful. Language standards are not
adhered to by compiler-makers. Proprietary.
  移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。
  Portability: Dismal. The features of the language changes from
platform to platform, and there are no portability toolkits to
handle platform-specific features.
  使用Pascal编写的游戏:几个。DirectX的Delphi组件使得游戏场所变大了。
  Games Written in Pascal: A couple. The DirectX components for
Delphi have made the playing field more level.
  资料:查找跟Delphi有关的资料,请访问:Inprise Delphi page。
  Resources: The find out about Delphi, check out the Inprise
Delphi page.
6、Visual Basic
  哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无返顾的使用了GOTO充斥的“空心粉式代码”。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。
  Ahh, BASIC. Way back in the stone-age of the 80's, it was the
first language for budding programmers. The original incarnations
of BASIC, while easy to learn, were horribly unstructured, leading
to the a rash of GOTO-laden "spaghetti-code". Not many people wipe
away tears when reminiscing about BASIC's line numbers and the
GOSUB command.
  快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual
1.0发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple
II及Atari里的旧的ROM BASIC相比,更像是带Basic风格动词的Pascal。
  Fast-forward to the early 1990's. While not the monster that
Apple was hoping for, HyperCard was a compelling little programming
environment that had no equal under Windows. Windows-based
HyperCard clones like ToolBook were slow, clunky, and expensive. To
finally compete with HyperCard, Microsoft licensed a neat little
programming environment named Thunder, releasing it as Visual Basic
1.0. The user-interface was very innovative for the time. The
language, while still called Basic (and no longer all-caps), was
much more structured. Line numbers were mercy-killed. The language
was, in fact, much closer to Pascal with Basic-style verbs than the
old ROM BASIC that was built into every TRS-80, Apple ][, and
  经过六个版本,Visual
Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着“把代码关联到用户界面”的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。
  Six versions later, Visual Basic is pretty deluxe. The
user-interface has made some changes, but still retains its "attach
bits of code to the user-interface" motif. This, in combination
with instantaneous compiling, makes it a terrific environment for
fast prototyping.
  优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX
7已准备提供Visual Basic的支持。
  Advantages: Neat IDE. Easy to learn. Instantaneous compiling
makes for very fast and easy prototyping. Lots and lots of add-ons
available. While there are currently third-party DirectX add-ons
for Visual Basic, DirectX version 7 is going to include support for
Visual Basic right out of the box.
  缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。
  Disadvantages: Apps are large and require several large
runtime DLL's to run. While form and dialog-based apps are easy to
make, writing good graphical apps is more difficult. Calling
Windows API functions is clunky, because VB data structures don't
map nicely to C. Has OO features, but is not fully object-oriented.
Proprietary.
  移植性:非常差。因为Visual
Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。
  Portability: Worse than dismal. Since Visual Basic is owned by
Microsoft, you're pretty-much limited to whatever platforms they've
ported it too. That means that you've got the choice of Windows,
Windows, or Windows. Note that there are, however, a couple of
tools that help convert VB apps to Java.
  使用Visual Basic编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。
  Games Written in Visual Basic: A few. There are lots of
shareware games done in VB, and a couple of commercial
offerings.
  资料:微软的VB页面有一些信息。
  Resources: The [Microsoft VB page].
  Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画
它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。
  Java was originally designed by Sun to be a portable "small
C++" that could be used in embedded applications. The idea of
running little applications in a web-page really captured people's
imaginations, so the language caught on quickly. It turned out that
Java wasn't just suitable for embedding animated banners in web
pages --it was a downright nifty little language for application
programming! The "virtual machine" nature, garbage collection and
lack of pointers made it easy to make bulletproof apps that didn't
crash and had no resource leaks.
  虽然不是C++的正式续篇,Java从C++
中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。
  While not an official "sequel" to C++, Java borrows very
heavily from C++ syntax. It dumps many of the more difficult C++
features to reveal a rather compact and easy-to-learn language.
Unlike C++, Java enforces object-orientation with a heavy hand.
Writing a non-OO app in Java is as difficult as writing
spaghetti-code in Pascal.
  优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。
  Advantages: Binaries are portable to other platforms. Apps can
run embedded in web pages. The included class library is reasonably
standardized and extremely robust. Automatic allocation and garbage
collection all but eliminates resource leaks in applications.
Zillions of code examples on the web.
  缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。
  Disadvantages: Uses a "virtual machine" to run portable
byte-code rather than native machine code, so apps are slower than
true compilers. There are technologies (like "Just In Time"
compilers) that greatly improve the speed of Java, but the speed
will likely always lag behind true machine-code solutions. Early
features like the Abstract Windowing Toolkit were not well
thought-out and, while officially abandoned, have to hang around
for backward compatibility. Is very high-level, which makes dealing
with any low-level machine features very difficult. Sun is pretty
slow in adding new "blessed" features to the language.
  移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。
  Portability: The best of the lot, but still not what it should
be. The low-level code is very portable, but a lot of the UI and
newer features are wobbly on some platforms.
  使用Java编写的游戏:网页上有大量小的Applet,但仅有一些是商业性的。有几个商业游戏使用Java作为内部脚本语言。
  Games Written in Java: Lots of little applets in web pages,
but only a couple of commercial offerings. Several commercial games
use Java as the internal script language.
  资料:Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。
  Resources: [Sun's official Java page] has some good info. IBM
also has an excellent [Java page]. The [JavaLobby] is the best
place to go for news about Java.
8、创作工具
  上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。
  All of the programming languages mentioned above cover
pretty-much every commercial game out there. There is one
exception, but it's such a big one that it would be conspicuous by
its absence.
  “神秘岛”。没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说“神秘岛”99%是使用
3D建模工具制作的,其根本的编程逻辑是在HyperCard里完成的。
  Yep, the best selling commercial game of all time wasn't
written in any of the above languages. While some would say that
99% of Myst was written using 3D modeling tools, the underlying
program logic was done in HyperCard.
  多数创作工具有点像Visual
Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。
  Most authoring tools are a bit like Visual Basic, only they
work at a much higher level. Most of the tools use some kind of
click-and-drag flowchart motif to model control flow. Many contain
embedded interpreted programming languages, but these languages
aren't nearly as robust as the standalone languages mentioned
  优点:快速原型 —
如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。
  Advantages: Fast prototyping --if your game fits the motif the
tool's made for, you can probably get your game running faster than
any other language. In many cases, you can make a rudimentary game
without writing any code. You can broadcast many authored apps on
web pages with plug-ins like Shockwave and IconAuthor Player.
  缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。
  Disadvantages: Proprietary, so you're at the mercy of the
tool-maker as to what features will be added. You've gotta really
look at these tools to see if they'll do everything that your
game's gonna require, because there are things that authoring tools
simply can't do. Some of these tools produce frighteningly bloated
  移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。
  Portability: Since authoring tools are proprietary, your
portability is limited to whatever they offer. Some systems, like
Director, can author and run on several platforms. Some tools can
author on one platform but play on several. Some are
single-platform beasts.
  使用创作工具编写的游戏:“神秘岛”和其他一些同类型的探险游戏。所有的Shockwave游戏都在网络上。
  Games Written in Authoring Tools: Myst and a few other
"exploration" games of the same genre. All of the Shockwave games
on the web.
  资料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、结论(Conclusion)
  你可能希望得到一个关于“我该使用哪种语言”这个问题的更标准的结论。非常不幸,没有一个对所有应用程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向对象,但是非常复杂。Visual
Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。“试用三十天”的做法成为工业标准是件好事情。
  You probably were hoping for a more cut-n-dry conclusion to
the "what programming language do I use" dilemma. Unfortunately,
there's no solution that's optimal for all applications. C is
suited for fast and small applications, but doesn't support OO
programming well. C++ has very complete OO support, but is
frighteningly complicated. Visual Basic and Delphi are easy to
learn, but are non-portable and proprietary. Java has a lot of neat
features, but is slow. Authoring tools can get your app working
quickest, but are only useful for a narrow range of applications.
It might just be best for you to figure out what kind of game
you're writing and pick the language that would best support your
game. It's a good thing that the "try it free for 30 days" offer
has become the industry norm :-)
来源:IT168
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 matlab 未找到编译器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信