游戏逻辑开发:掌握 c/c++与数据结构,突破技术瓶颈

游戏逻辑开发:掌握 c/c++与数据结构,突破技术瓶颈

1.学好C/C++,走遍世界就不怕了。

很多游戏引擎都是用 C/C++ 开发的,以提高效率。即使是像 Unity3D 这样使用 C# 脚本逻辑的引擎,在 iOS 上发布时,C# 源代码也会转换为 C++ 代码(il2cpp),然后再进行编译和部署。

很多语言都以没有指针为荣,但那只是广告语而已,C++ 里所有对象(引用)都是指针,只是说的不一样而已,并不会让你直接进行指针索引操作!

随着技能的发展,您会发现不了解 C/C++ 指针或多或少会阻碍您的进步。

2.学好数据结构和相关算法。

游戏开发物理学_游戏开发物理学pdf_物理开发学游戏教案

虽然写的是游戏逻辑,但是也需要用到各种常见的数据结构,比如动态数组、双向或单向链表、各种树结构(游戏引擎场景管理、碰撞检测等核心功能都是基于各种类型的树结构,后面会讲到)、图结构、红黑树、哈希表等等,还有各种排序算法(经典的应用就是在渲染引擎中,对效率影响最大的就是渲染状态的变化技能特效,所以为了加快渲染速度,需要实现批处理系统,在每一帧渲染的时候,会根据渲染状态对批处理中的对象进行排序合并,这就需要有针对性的、高效的排序算法)

其实你会发现创作人,大部分C/C++游戏引擎并没有使用STL标准容器库,而是自己手动实现一个经过高度优化的容器数据结构库,因为STL太过通用,游戏引擎更针对性、可优化性更强。

3.如果没有扎实的数学知识,开发游戏引擎和游戏逻辑只是一个梦想

由于游戏的特殊性,游戏基本都是跟数学打交道的,逻辑千变万化,对数学的要求丝毫不比引擎开发低,这里总结了一些基本的数学知识:

游戏开发物理学pdf_游戏开发物理学_物理开发学游戏教案

(1)向量 向量数学要求你了解它的几何和代数意义。它是所有图形数学的基础!

(2)矩阵变换数学,包括很多内容:比如旋转矩阵,仿射变换矩阵,刚体变换矩阵,平移,旋转,缩放,投影,物体定向......

矩阵的本质就是进行空间变换,将一个空间中表示的点或点集(向量表示)转换为另一个空间中表示的点或点集。

(3)四元数数学在空间中难以想象(人类最多只能想象三维,无法在头脑中形象化四维)。不管怎么说,只要知道它是用来表示旋转的,就能排除欧拉角表示的缺陷(万向节锁其实就是因为角度表示不唯一造成的,具体可以查资料)。

四元数的更强大的力量来自于slerp插值,在骨骼动画运动合成中有着巨大的应用。

我写这篇文章的目的是让大家知道开发游戏需要哪些知识

(4)计算几何。比如点到点,点到线游戏开发物理学,点到三角形,点到多边形,点到网格集合的包含或碰撞检测。有很多不同的需求和算法。虽然大部分常用的算法都被引擎封装好了游戏开发物理学,并且提供了相应的API给逻辑端调用,但是你也需要知道如何使用它们,以及在没有API的情况下如何查找资料和获取算法,对吧?

(5)参数曲线、曲面。

游戏开发物理学pdf_游戏开发物理学_物理开发学游戏教案

你需要知道各种参数曲线曲面的使用方法,比如经典的贝塞尔曲线曲面,其实参数曲线曲面的内容还有很多,不只是贝塞尔,可以自己去查资料,类别​​是参数曲线(曲面)

(6)刚体动力学。如果你的游戏是写实类的,那么你必须了解刚体动力学,了解物理引擎的原理、流程和使用方法。如果没有相关知识,现有的物理引擎就没法用。在游戏逻辑编程中,物理引擎用得比较多。

给大家介绍一本非常好的书《游戏开发的物理学》。

这几乎就是我在地铁上能想到的所有与数学相关的知识。

游戏开发物理学_物理开发学游戏教案_游戏开发物理学pdf

4.最好能做个游戏demo研究一下,这样会更有帮助

这些是目前的基础知识,适合游戏逻辑编程。

我对游戏引擎开发有一定的经验,有时间的话会总结一个完整的版本。

游戏开发相当困难。

但它也非常有趣!

文章来源:https://www.jianshu.com/p/5a4baf08890f