本文作者Mike Shafer在刚参与Bain's Redemption开发时只负责编程。 然而,他后来游走于设计、商业、营销,甚至艺术之间。 用努力换来的六大黄金法则或许可以为其他游戏开发者提供一些参考。
1、项目管理解决方案不可或缺
我父亲曾经告诉我,每个成功的项目背后都有一个组织良好的团队——游戏开发也是如此,良好的项目管理解决方案是高效组织的关键。 觉得钱包害羞吗? 无需 - 只需每月支付不到 10 美元的托管服务费用独立游戏开发,您就可以从服务提供商处选择免费的 PM(项目管理)解决方案。
PM可以达到事半功倍的效果,而且在游戏测试时,我个人使用了一个开源的缺陷跟踪系统,叫做Bugzilla。 当然,它不必像PM解决方案一样包含在开发计划中。 后者可以降低特定游戏功能出现缺陷的风险,而前者则是锦上添花。 因此,我更愿意区别对待两者。 无论您选择哪条道路,选择正确的工具以使您的开发团队保持最佳状态非常重要。
2. 心态开放,愿意接受失败:有些事情大公司做得更好!
我曾经使用GJK+EPA碰撞检测算法为贝恩的救赎构建了一个完整的布娃娃系统独立游戏开发,这种做法与Bullet、Havok和PhysX等物理计算引擎的工作原理类似(在使用后两者的过程中,您也可以使用GJK+EPA算法)。 然而3D场景,从中得到的一个宝贵的教训是:虽然GJK+EPA算法可以平滑地将不同的图形插入到物理模拟中,但某些图形组合需要特定的算法。
由于该算法适用于所有凸形状,因此我认为我可以执行它并坐下来放松。 不幸的是,累积盒测试表明我的物理引擎占用了过多的CPU资源。 此外,速度和位置求解器也是不可或缺的。 不管这听起来多么乏味,它仍然是事实。 所以最终我放弃了这个算法,改用了NVIDIA的PhysX物理计算引擎。 相比之下,后者表现更好。
我还学到了很多关于求解器、碰撞物理等方面的知识。 使用物理引擎并不困难。 关键是为其设置参数,以确保游戏开发与计划同步。 这不能用几句话来概括。 我很高兴我做了我必须做的事。 如果我早点接受这种开放的心态,我就能节省大半年的时间来专注于游戏开发。
3、了解目标用户群很重要!
这个问题看似很简单,目标人群是怎样的人? 他们不只是球员吗? 但到底是什么类型的球员呢? 这些都需要我们深入、细致地思考。 我喜欢想象我的游戏取得巨大成功,并想:“如果他们喜欢这款游戏,他们就会喜欢《贝恩的救赎》。” 从营销的角度来看,这并不是一个糟糕的指标,但是当您多次阅读此建议后,恐怕我需要尽快做出决定。
当我们最初决定开发《贝恩的救赎》时,一方面我们在想象一款适合成人的动画风格,另一方面我们想要《鬼泣》的机械质感(主要是因为那款游戏中将古代剑转化为现代手枪的想法是非常受欢迎),所以我们决定将这两个想法结合在一起。
我们今天的目标群体是怎样的人? 漫画迷和暴力游戏爱好者。 游戏中的模型实际上比看起来简单得多,因为我们很早就决定将它们设计为可以轻松被锋利武器砍碎的物体。 我们所说的物体是指整个物体,而不仅仅是一条腿或手臂,所以想象自己在游戏中轻松击败像武士这样强大的人会很有趣。 负面影响是:图形会受到影响。 无论如何,目标群体的概况是明确的。
4.定制引擎并不是一件容易的事
在选择游戏引擎时,很多独立开发者都会选择Unity,或者在虚幻引擎降价后选择Unreal 4。 起初,为了节省成本,我们决定定制自己的引擎。 结果,繁琐复杂的工作耽误了我们很多时间——记住,这条路并不是人人都能走得通的。 “定制有风险游戏运营,一定要慎重选择。”
例如,我们花了一周半的时间为自定义引擎添加云光,添加HDR和Bloom花了两周的时间,但Unity或Unreal省去了这些麻烦。 不同的游戏引擎/编辑器组合会触发不同的化学反应。 如果你有决心并且愿意从游戏开发的基层开始,那么你可以考虑直接使用Unity或者Unreal Engine。
5、先放数据,好就停。
对于游戏和其他类型的应用程序来说,有两个主要元素:数据和代码。 大多数游戏都有一个打包的图形文件(称为数据)和一个可执行图形文件(称为代码)。 另一方面,游戏引擎允许代码在循环运行时捕获数据并将其转换为屏幕上的彩色图案。 众所周知,数据驱动的应用程序比其他应用程序更简单、更容易调试。
选择一个 FX 图片编辑器,添加和预览特效并将其保存为 FX 图形文件并通过代码在游戏中渲染,或者为所有特效一一编写代码 - 您更喜欢哪一个? 不管怎样,超过后者的实践程序员都陷入了逻辑混乱的泥潭中无法自拔。 再加上复制代码的泛滥,导致系统臃肿。 “精简”、“有序”这几个词还是收起来吧。 相比之下,前者省力多省心。
另外,如果你和游戏设计师打交道,还需要把握“数据优先”的原则:游戏设计更喜欢参数而不是代码,参数本身就是数据。 下图是我们的状态机编辑器,它很好地配合了游戏中主角的攻击和其他动画效果的完成。 我曾经想用状态机编辑器来完成游戏中所有物体的动画制作,但很快我就意识到“物极必反”——事实上,很少有设计师关心AI状态机具有复杂的结构。 他们只会说:“这东西太费脑力了,算了吧。”
我们重新修改了游戏AI,使用了行为树中的选择/序列/并行节点。 这个过程对于大多数设计师来说太过晦涩(貌似虚幻引擎里有行为树编辑器),所以我们不得不向程序员寻求帮助(类似游戏框架频率的问题对于设计师来说无疑太繁琐了)。 简而言之,与设计师打交道时最好“数据优先”,但如果有必要,代码也应该放在第一位。