游戏程序

摘要: 英文原文:The Principles of Good Programming 1. 避免重复原则(DRY - Don’t repeat yourself) 编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。 2. 抽象原则(Abstraction Principle) 与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。 3. 简单原则(Keep It Simple and Stupid) 简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。 4....阅读全文
posted @ 2011-11-23 22:53 cm186man 阅读(21) | 评论 (0) 编辑
摘要: 角色扮演游戏(RPG)是深受广大游戏迷们喜爱的一种游戏, 它以独特的互动性和故事性吸引了无数的玩家。它向人们提供了超出现实生活的广阔的虚拟世界,使人们能够尝试扮演不同的角色,去经历和体验各种不同的人生旅程或奇幻经历。这些体验都是在现实生活中无法实现的。在玩过许多游戏后,许多玩家都不再仅仅满足于一个游戏玩家的身份,而会思考游戏是如何制作的,并且打算制作一个自己的游戏,网上的各种游戏制作小组更是如雨后春笋般涌现。下面我就给大家介绍一下角色扮演游戏引擎的原理与制作,希望能对游戏制作爱好者有所帮助。一、游戏引擎的原理说到引擎,游戏迷们都很熟悉。游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的阅读全文
posted @ 2011-07-02 21:56 cm186man 阅读(68) | 评论 (0) 编辑
摘要: 同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的。其实呢,解决同步问题的最简单的方法就是把每个玩家的动作都向其他玩家广播一遍,这里其实就存在两个问题:1,向哪些玩家广播,广播哪些消息。2,如果网络延迟怎么办。事实上呢,第一个问题是个非常简单的问题,不过之所以我提出这个问题来,是提醒大家在设计自己的消息结构的时候,需要把这个因素考虑进去。而对于第二个问题,则是一个挺麻烦的问题,大家可以来看这么个例子: 比如有一个玩家A向服务器发了条指令,说我现在在P1点,要去P2点。指令发出的时间是T0,服务器收到指令的时间是T1,然后向周围的玩家广播这条消息,消息的内容是“玩家A.阅读全文
posted @ 2011-07-02 21:44 cm186man 阅读(18) | 评论 (0) 编辑
摘要: 大多数的网络游戏的服务器都会选择非阻塞select这种结构,为什么呢?因为网络游戏的服务器需要处理的连接非常之多,并且大部分会选择在Linux/Unix下运行,那么为每个用户开一个线程实际上是很不划算的,一方面因为在Linux/Unix下的线程是用进程这么一个概念模拟出来的,比较消耗系统资源,另外除了I/O之外,每个线程基本上没有什么多余的需要并行的任务,而且网络游戏是互交性非常强的,所以线程间的同步会成为很麻烦的问题。由此一来,对于这种含有大量网络连接的单线程服务器,用阻塞显然是不现实的。对于网络连接,需要用一个结构来储存,其中需要包含一个向客户端写消息的缓冲,还需要一个从客户端读消息的缓.阅读全文
posted @ 2011-07-02 21:33 cm186man 阅读(12) | 评论 (0) 编辑
摘要: 三维图形学:搞三维图形学首先还是要扎扎实实的先看解析几何、线性代数、计算几何的教材,后面的习题一个都不能少。国内数学书还是蛮好的。苏步青大师的《计算几何》称得上具有世界级水准,可惜中国CAD的宏图被盗版给击垮了。现在是我们接过接力棒的时候了。It’s time!《Computer Graphics Geometrical Tools》《计算机图形学几何工具算法详解》算法很多,纰漏处也不少。《3D Math Primer for Graphics and Game Development》浅易,可作为三维数学的“速食“。《Mathematics for 3D Game Programming &阅读全文
posted @ 2011-07-02 21:24 cm186man 阅读(34) | 评论 (1) 编辑
摘要: 我见过一些朋友,他们想学习游戏编程,太过急于求成,总是一位的追求最新的技术,最高深的技术。例如一个刚刚大学毕业的朋友,我看他对于C语言指针的概念理解的很混乱,就劝他应该加强语言基础学习,过了一段时间又遇到他,他却想和我讨论多线程的程序设计。基础知识不牢固,等遇到问题的时候往往摸不到头脑。就像《Joel说软件》中说的那样:抽象层往往是有漏洞的,所以在一个项目中必须至少有一位了解所有细节的“编程高手”!下面是我认为一个职业游戏程序员需要具备的知识,或者是学习路线。匆匆写来,也许有疏漏,但是花时间去学下面这些东西肯定是值得的!1、基础知识首先是编程语言。现在游戏开发的主流语言是C++。C++是一门复阅读全文
posted @ 2009-09-06 11:57 cm186man 阅读(269) | 评论 (0) 编辑