首页 > 编程语言 > 详细

游戏编程算法与技巧 Game Programming Algorithms and Techniques

时间:2019-02-10 15:21:05      阅读:611      评论:0      收藏:0      [点我收藏+]

http://gamealgorithms.net

 

第1章 游戏编程概述

第2章 2D图形

第3章 游戏中的线性代数

第4章 3D图形

第5章 游戏输入

第6章 声音

第7章 物理

第8章 摄像机

第9章 人工智能

第10章 用户界面

第11章 脚本语言和数据格式

第12章 网络游戏

第13章 游戏示例:横向滚屏者(iOS)

第14章 游戏示例:塔防(PC/Mac)

 

第1章 游戏编程概述

  游戏编程的发展

世界上第一款商业游戏Computer Space在1971年推出.是后来Atari的创办人Nolan Bushnell 和 Ted Dabney 开发的.这款游戏当时并不是运行在传统计算机上的.它的硬件甚至没有处理器和内存.它只是一个简单的状态机,在多个状态中转换.Computer Space的所有逻辑必须在硬件上完成.

随着"Atari 2600"在1977年推出,开发者们有了一个开发游戏的平台.这正是游戏开发变得更加软件化的时候,再也不用设计复杂的硬件了.从Atari时期一直到现在,仍然有一些游戏技术保留着

家用机推出的时候,它的硬件就会被锁定5年多,称为一个"世代".家用机的优点也在于其锁定了硬件,使得程序员可以有效利用机能.

    Atari时期(1977-1985年)

这个时期的程序员需要对底层硬件有一定的理解.CPU运行在1.1MHz,内存只有128字节.这些限制使得用C语言开发不太实际.大多数游戏都是完全用汇编语言开发的. 更糟糕的是,调试是完全看个人能力的.没有任何开发工具和SDK.

    NES和SNES时期(1985-1995年)

然而到了1983年,北美游戏市场崩溃了.主要原因在于,市场上充斥着大量质量低下的游戏.

直到1985年推出的红白机(NES)才把产业带回正轨.

到了超级任天堂(SNES)时代,开发团队进一步扩大.随着开发团队的扩大,不可避免地会变得更加专业化.

NES和SNES的游戏仍然完全用汇编语言开发,因为内存依然不足.幸运的是任天堂有提供SDK和开发工具,开发者不再像Atari时期那么痛苦.

    PS和PS2时期(1995-2005年)

    Xbox360,PS3和Wii时期(2005-2013年)

    游戏的未来

尽管游戏开发多年来有许多变迁,有趣的是,许多早期概念到现在仍然适用,20年都没变的核心概念的基础部分: 游戏循环, 游戏时间管理和游戏对象模型

  游戏循环

整个游戏程序的核心流程控制称为游戏循环.之所以是一个循环,是因为游戏总是不断地执行一系列动作直到玩家退出.每迭代一次游戏循环称为1帧.大部分实时游戏每秒钟更新30~60帧.如果一个游戏跑60FPS(帧/秒),那么这个游戏循环每秒要执行60次.

游戏开发中有着各种各样的游戏循环,选择上需要考虑许多因素,其中以硬件因素为主

    传统的游戏循环

 

    多线程下的游戏循环

  时间和游戏

    真实时间和游戏时间

    通过处理时间增量来表示游戏逻辑

  游戏对象

    游戏对象的模型

    游戏循环中的游戏对象

  相关资料

    游戏编程的发展

    游戏循环

    游戏对象

第2章 2D图形

   2D渲染基础

    CRT显示器基础

    像素缓冲区和垂直同步

  精灵

    绘制精灵

    动画精灵

    精灵表单

  滚屏

    单轴滚屏

    无限滚屏

    平行滚屏

    四向滚屏

  砖块地图

    简单的砖块地图

    斜视等视角砖块地图

  相关资料

    Cocos2D

    SDL

第3章 游戏中的线性代数

   向量

    加法

    减法

    长度,单位向量和正规化

    标量乘积

    点乘

    问题举例:向量反射

    叉乘

    问题举例:旋转一个2D角色

    线性插值

    坐标系

  矩阵

    加法/减法

    标量乘法

    乘法

    逆矩阵

    转置

    用矩阵变换3D向量

  相关资料

第4章 3D图形

   基础

    多边形

  坐标系

    模型坐标系

    世界坐标系

    视角/摄像机坐标系

    投影坐标系

  光照与着色

    颜色

    顶点属性

    光照

    Phong光照模型

    着色

  可见性

    再探画家算法

    深度缓冲区

  再探世界变换

    四元数

    3D游戏对象的表示

  相关资料

第5章 游戏输入

   输入设备

    数字输入

    模拟输入

  基于事件的输入系统

    基础事件系统

    一个更复杂的系统

  移动设备输入

    触屏和手势

    加速器和陀螺仪

    其他移动设备输入

  相关资料

第6章 声音

   基本声音

    原始数据

    声音事件

  3D声音

    监听者和发射者

    衰减

    环绕声

  数字信号处理

    常见数字信号处理效果

    区域标记

  其他声音话题

    多普勒效应

    声音遮挡

  相关资料

第7章 物理

  平面,射线和线段

    平面

    射线和线段

  碰撞几何体

    包围球

    轴对齐包围盒

    朝向包围盒

    胶囊体

    凸多边形

    组合碰撞集合体

  碰撞检测

    球与球的交叉

    AABB与AABB交叉

    线段与平面交叉

    线段与三角片交叉

    球与平面交叉

    球形扫掠体检测

    响应碰撞

    优化碰撞

  基于物理的移动

    线性力学概览

    可变时间步长带来的问题

    力的计算

    欧拉和半隐式欧拉积分

    Verlet积分法

    其他积分方法

    角力学

  相关资料

第8章 摄像机

  摄像机的类型

    固定摄像机

    第一人称摄像机

    跟随摄像机

    场景切换摄像机

  透视投影

    视场

    宽高比

  摄像机的实现

    基础的跟随摄像机

    弹性跟随摄像机

    旋转摄像机

    第一人称摄像机

    样条摄像机

  摄像机支持算法

    摄像机碰撞

    拣选

  相关资料

第9章 人工智能

   "真"AI与游戏AI

  寻路

    探索空间的表示

    可接受的启发式算法

    贪婪最佳优先算法

    A*寻路

    Dijkstra算法

  基于状态的行为

    AI的状态机

    基础的状态机实现

    状态机设计模式

  策略和计划

    策略

    计划

  相关资料

    通用AI

    寻路

    状态

第10章 用户界面

   菜单系统

    菜单栈

    按钮

    打字

  HUD元素

    路点箭头

    准心

    雷达

  其他需要考虑的UI问题

    支持多套分辨率

    本地化

    UI中间件

    用户体验

  相关资料

第11章 脚本语言和数据格式

   脚本语言

    折中

    脚本语言的类型

    Lua

    UnrealScript

    可视化脚本系统

  实现一门脚本语言

    标记化

    正则表达式

    语法分析

    代码的执行和生成

  数据格式

    折中

    二进制格式

    INI

    XML

    JSON

  案例学习:<<魔兽世界>>中的UI Mod

    布局和事件

    行为

    问题:玩家自动操作

    问题:UI兼容性

    结论

  相关资料

第12章 网络游戏

  协议

    IP

    ICMP

    TCP

    UPD

  网络拓扑

    服务器/客户端

    点对点

  作弊

    信息作弊

    游戏状态作弊

    中间人攻击

  相关资料

第13章 游戏示例:横向滚屏者(iOS)

  概览

    Objective-C

    Cocos2D

  代码分析

    AppDelegate

    MainMenuLayer

    GameplayScene

    ScrollingLayer

    Ship

    Projectile

    Enemy

    ObjectLayer

第14章 游戏示例:塔防(PC/Mac)

  概览

    C#

    XNA

    MonoGame

  代码分析

    设置

    单件

    游戏类

    游戏状态

    游戏对象

    关卡

    计时器

    寻路

    摄像机和投影

    输入

    物理

    本地化

    图形

    声音

    用户界面

游戏编程算法与技巧 Game Programming Algorithms and Techniques

原文:https://www.cnblogs.com/revoid/p/9697847.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!