斯坦福大学学生整理的游戏开发资源大全

这篇游戏开发资源大全由斯坦福大学的Amit整理。

这里有什么?

我喜欢由简单的部分进行延伸。这个页面包含了我在从事游戏开发过程中收集的内容,这里的内容并不是全部,而是代表了我需要了解的一些内容:几个主题(并不是全部与游戏开发有关),一般概念而不是特定平台的信息(图形、音频、编译),思路或者设计模式而不是源代码(我发现从思想到代码比从代码到思想要容易),像Gamedev Tuts+GamedevGamasutra覆盖的主题范围比我的更广。

最短路径

在地图上选择行动路径是一个有趣的问题,有很多不同的方式,从简单(比如直线行走直到遇到障碍)到复杂(启发式路径探索算法)。这里包含了一些常见的寻路算法,其中一些偏向于A*:

这些页面是寻路和物体移动的技术

A*

A*是我当前最喜欢的算法,因为它在各种空间中的花销都不高,而且似乎比大多数的图形搜索算法都要快。然而,它只是寻路问题的部分解。地图设计和表示出现在A*之前,网格使用起来更方便,但有时得不到最优路径。编队、路径跟踪、移动、路径修正、动画出现在A*之后。很多游戏根本不需要A*:它处理离散的移动而不是连续的,它应用在图上,没有充分利用空间相关性(比如一个点与它的邻居位置接近)或者时间相关性(比如几秒前我们找到了一个路径,我们再试一次的结果可能是相似的)。如果游戏内改变很频繁,那就没必要预测的太远。A*是一个好的工具,但并不是唯一的选择。

代码和例子

A*代码的链接是第二版本,修复的一些bug,做了一些优化,对不同的启发法和代价函数进行参数化处理。第一个版本的代码可以在Steve Woodcock的页面获得,这个版本可能更易读和理解。

人工智能

我玩游戏的很多时候希望电脑对手能更强一点。有些时候电脑玩家给予了不同的规则,有些时候给予了更多的资源。结果就是游戏让人感觉不平衡了:很显然电脑的智能不够,本来应该是脑力对决的游戏,却变成了脑力和体力对决的游戏。同时,我也不希望电脑的水平太高,如果那样的话,它会经常击败我,我会很沮丧的。

计算机人工智能常常被应用在电脑玩家上。然而,它也可以用在环境上(比如铁路大亨中所有的交易),协助玩家上(比如文明中自动化的城市管理),或者是中立的游戏角色上(比如角色扮演游戏的非玩家角色)

人们在高谈阔论将神经网络、遗传算法或者机器学习应用在游戏开发上,在你这样做之前先读一下这个。我并不打算提供任何参考,我将指出一些最近谈论太少的技术。

在为你游戏中的人工智能选择技术时,记得越简约越好。如果你知道答案,直接把答案写在程序里。如果你知道如何得到答案,那就把解答过程写到程序里。只有当你既不知道答案也不知道解决方案的时候,才有必要求助复杂的算法(神经网络、模拟退火、遗传算法、包容结构、增强学习、遗传程序设计)。这些技术在编程时间、游戏性能、调试难度、控制性等方面都要付出很高的代价。

游戏设计

关于游戏开发,如何选择正确的设计是比较困难的一部分。什么使得游戏有趣?游戏设计是一门艺术而不是一门科学,它包含的不仅仅是游戏的规则,还有你与游戏交互的方式。

区块游戏

我喜欢基于区块的游戏,因为它可以从简单的部分衍生出很多复杂的东西。这里有很多关于区块游戏的话题。数据结构就是典型的二维数组的变种,呈现方式就是把区块的数据转换成以2D、2.5D、3D的视角呈现,也有关于侧视视角的,我这里并没有写。区块游戏也可以使用创世算法,比如暗黑破坏神、文明、矮人要塞。

数据结构

基本的区块结构不依赖于你以2D、2.5D还是3D的方式呈现,这些文章是关于如何存储你的数据。

区块显示

2D区块的呈现方式有很多种。最直接的是自上而下或者侧视。但是最近更常见的是2.5D和3D视角。这里的大多数2.5D视角都不是真的,而是四边形的。

算法

创世

尽管地图产生可以应用在非区块世界上,但它更常应用在区块上。在某个时刻观察地图上的某一点,产生的地图质量很难跟人工绘制相比,然而它有三个优势:(1)如果有许多世界需要绘制,它的花销更少。(2)更多的复用数据因为下一次产生的世界会不同(3)游戏演变过程中潜在的进化。

六角区块

很多战争游戏使用六角区块而不是四角区块。四角区块与四个邻居都有重合边,但在某一时刻也与四个邻居相邻。这常常使得移动变得困难,因为对角线移动很难用整数来表示。在四角区块中,你或者有四个方向,或者有八个方向。但在六角区块中,你有一个折中选择——六个方向。六角区块在某一时刻不会接触任何一个邻居,它有更小的周长面积比,它看起来更整齐。不幸的是,在我们四角像素的计算机世界里,六角使用起来不太容易,所以我收集了一下文章帮助你把通常的四角区块算法转换成六角区块算法。

面向对象编程

我发现面向对象编程对用户交互、操作系统、游戏中是十分有用的。同时,通常也认为面向对象是最佳的编程方式(尤其是在我创建这个页面20世纪90年代),在另外一些条件下,其余的编程方式可能是更好的选择。因为我的大多数读者都熟悉面向对象的编程,这里我收集的内容大多数是通常方式的替代选择。

冒险游戏

冒险游戏通常有很好的谜团和故事结构。当我创建这个页面的时候,我对MUDS和交互小说很感兴趣。TADS是使用的工具。从那时起,有了很多的工具,比如Curveship, Hugo, Inklewriter, Twine, Quest, 和ADRIFT。我从没有参与过交互小说项目,所以我并没有很丰富的资源。你可以从互动小说的Wiki获得更多。

脚本语言

脚本语言能让你用较少的代码写出一些对性能要求不高的程序。你可以在游戏中设计你的特定语言,这样你的工作量就会比使用通用语言少一些。你也可以写编译器来优化很多事情(比如文件大小而不是速度),支持更多的特色(比如运行时动态匹配),甚至是用户自定义配置(对于发烧用户)。

经济学

经济学是一门关于人类在管理资源(金钱、时间、幸福、原材料、货物等)中如何做出选择的学科。在很多策略游戏中,经济学都是设计的很重要的一个方面。平衡你的游戏中的资源可以成为游戏中有趣的一部分。经济学也是多人游戏中很重要的一部分:你想要通过挣钱奖励玩家,但你不能让他们太富有,这样新来的玩家就得不到乐趣了。我想探索的一件事是位置如何影响经济。在高中经济学中,商业活动通过定价完成,交易少的人将会获胜。但如果考虑上运输成本,那任何商业都可以共存,玩家必须考虑哪里要放置新的设备来平衡各种变量(劳动的易得型、原材料的运输成本、产品的运输成本、税率、地区法律等)

0 Likes

你目前的身份是游客,评论请输入昵称和电邮!