为什么要编写自己的游戏引擎?

去年12月,在2017年游戏聚会会议上,我们做了一份报告 ,讨论了从事游戏行业的公司是否需要编写自己的引擎。



面对各种游戏引擎的统一



为什么在存在Unity之类的巨头的现代世界中,自己做点什么,编写自己的游戏引擎?

这是一张幻灯片,其中包含Unity Technologies在2017年使用各种游戏引擎的数据。 如您所知,明年情况将会改变。 我们感兴趣的是41%,即我们自己设计的引擎。 如果您查看参加会议的5家最大的公司,则它们各自将拥有自己的引擎。 事实证明,在代表游戏行业的大多数公司中,都使用了某种内部开发方法。 这并不总是世界上最合理的决定,而是事实。

公司在考虑开发游戏项目时可以选择哪些基本技术?

七国军



您可以在幻灯片上看到的金字塔可以上下连续。 它绝对明确地限制了您。 最底层-操作系统,甚至更低-一些基本技术。 上面是引擎的附加组件,这些组件是游戏随附的现成工具包,例如Neverwinter Nights工具。 无论您做什么,无论哪种方式,您都会发现自己在这件事中。

假设我想进入下面这个金字塔的第二层。 但是,所有路径最终都通向金字塔的顶部。 我们将使用现有的引擎中的某些内容,但是很重要的一点是,我们可以在金字塔顶层的左上角看到该引擎,这是我们自己设计的引擎。

现在我们分析开发游戏所需的时间,精力和金钱。

回到基础



如果幻灯片上显示的整个饼图是一个游戏,那么引擎就是它的蓝色部分。 在理想的世界中,开发游戏时,您可以将蓝色部分取出,然后放在红色,黄色或绿色之间。 您可以将一个大的“ U”更改为另一个大的“ U”,也可以取一些小的“ x”,然后您选择的内容就可以在那里工作。 实际上,事实并非如此,但我们应该为此而努力。 在实际项目中,在游戏行业中经常观察到类似的情况。 也有可能整个引擎都占用了整个图表,但这仅适用于某些演示产品。

在这种情况下,金钱,时间和其他所有东西都是以这种方式分配的。 无论您做什么,都必须处理掉图表绿色区域中的所有内容。 不会因引擎而异。 因此,如果您有足够的资源来支持游戏项目的整个开发过程,那么引擎的开发就不会那么昂贵。 但是,如果公司中的某人开始谈论开发自己的引擎,那么他们很可能会遇到某些异议。 考虑他们。

神话般的人月



假设您决定创建自己的引擎并将其告知决策者。 作为回应,您将听到在幻灯片上可以看到的同一件事:“您将做很长时间,这非常冒险,这是不合理的,不会帮助我们实现目标。” 有什么可以回答的? 这里的重点是,除最后一个反对意见外,所有这些反对意见都不会受到批评。

引擎的长远发展? 但是,如果使用自己的引擎进行开发的速度更快,那么这不是争论。 总的来说,也许没有人知道“理性”是什么。 因此,所有这些反对意见都是非常主观的。

关于引擎是否有助于实现目标的最后一点非常重要。 如果您的目标是要获得Unreal 4的资助,那么您可能不需要创建自己的引擎,因为它不会实现此目标。 如果您有一个目标,而您需要在该框架内对某些技术进行某些操作,则您无需编写自己的引擎-您需要采取目标。 但是,要有效地使用现成的引擎并非总是可行的。 为什么同样要编写自己的引擎?

13个理由



您什么时候需要自己的引擎? 让我们按点分析这张幻灯片:

  • 上市时间-产品的上市时间。 这真的很严重。 大型公司现在使用的引擎中,有一半是因为当时该公司需要迅速占据一席之地而开发的,因此开发自己的引擎要比接受和掌握其他东西更快。

这是给你的故事。 一家公司在网站上为程序员提供了一个任务,该任务看起来像这样:“伙计们,如果您想与我们合作,请编写Asteroids,它应在Android平台上运行,而无需使用外部库。 我们相信8小时就足够了。 时间到了。” 然后时间增加到12小时。 也许看起来很有趣。 首先,我从外面观看了此事,然后看了这家公司,并请我告诉他们他们以对这项任务的答复的形式发送了什么。 事实证明,有200多个程序通过了选择,即这些程序已启动并运行。 这意味着,如果您突然想为Android发布“小行星”,那么至少有200个人可以在8小时内完成此操作。 我并不是说可以出售。 但是我告诉这个故事的事实是,事实上,引擎往往是上市时间。 可以说,仅仅是因为您的需求如此之小,所以与为自己制作一个虚幻引擎相比,您将花费更长的时间研究同一个Unreal的文档。

  • 平台之王是平台的主人。 有些平台没有现成的工具。 例如,机顶盒(STB),机顶盒(数字电视接收器)-有线电视盒,每三个美国人都在桌子上。

华纳有1.2亿用户使用该服务。 如果您在那里编写软件(包括游戏),那么您的收入便是一美元。 一年就是1.2亿美元。 同时,除了你之外,没有其他人可以为此写东西。 因为没有DirectX,所以根本没有任何东西。 如果您可以为STB编写程序,那么您就是该平台的主人,您每年就有1.2亿美元。 为什么不编写自己的引擎?

显然,我们现在更多地谈论诸如控制台玩具之类的东西,但是,在某些情况下,这可能是必要的。 在这里,例如,老虎机。 当然,现在主要是计算机。 但是我们面前有一个单独的熨斗设备和一个巨大的市场,为此,我们有可能自己编写一些东西。

可以说我们对电话感兴趣,但是我们谈论的是数百万美元。 为什么不为其他设备写? 结果,这样做有绝对明确的理由。
或者,例如,我们拥有最新的智能手表。 SDK尚未问世,没有人知道如何处理它们,如果您可以自己为他们编写高质量的产品,那么您说,从每台这样的设备中赚取一美元。 如果将它们出售200万美元,那么您将获得200万美元。 编写代码并不困难,但是为此您需要创建自己的引擎,因为这里没有陌生人,并且此类设备的制造商不会为他们开发公共引擎。

  • 弱但引以为傲的设备是小型但引以为傲的设备。 如果您制作手机游戏,至少要收集一些统计数据,那么您就会知道,使用Apple设备的硬件,一切都或多或少是正常的,但是对于Android平台而言,这只是一场灾难。

市场上一半的设备是基于ARM Mali-400芯片组的,任何廉价电话都是Mali-400。 而且,如果您因使用电话应用程序而获得报酬,那么您应该为这些小型但引以为傲的设备写书,这些设备不会离开市场,并且很快就会离开市场。

此外,对于iPhone,您至少可以押注进度。 例如,虽然在不考虑所有这些因素的情况下,预计虚幻引擎将在iPhone 10下运行,但是已经有一些iPhone 12、15或17。但是就整个世界而言,短期内很难取得进展。 因为设备的升级非常缓慢。

如果您想要一张有竞争力的图片,并且非常重要,那么您就不要选择低功耗设备。 但是您必须记住,所有现代引擎的缩放比例并不会非常小。 如果您不想获得竞争优势,则应考虑弱电的功能。 因此,例如,如果您对最快的设备不感兴趣,例如,您是葡萄牙或巴西某个地方的唯一分销商,则必须考虑一下。

  • 自己的语言表达自己的想法-自己的语言表达自己的想法。 当您自己制造引擎时,可以使用此概念。 事实是,我们行业的主要问题是游戏设计师的领域是语言学。 他用普通语言思考。 他无能为力。 但是程序员认为在编程领域中它们之间是有差距的。 结果,必须连续重复的某个迭代花费例如两美元。 而且您不断花这笔钱。

标准引擎试图覆盖所有人。 实际上,我们看到了他们是如何尝试从语言到语言以及从空间到空间进行自然领域转换的。 但是对所有人来说。 您有自己的想法,可以直接实现它们,制作自己的工具集。 显然,所有这些都可以以插件的形式在现有引擎之上完成,但是其引擎提供了完全不同的可能性。

  • 独特的力学=独特的引擎-独特的力学=独特的引擎。 我的朋友在第15年使用Unity编写了Minecraft。 做这一切是否有任何意义-一个悬而未决的问题。 但是他们选择了引擎并开始工作。 但是,发动机显然很困扰他们。 对他们来说很难。 他们有很长的迭代。 在咨询了他们之后,他们实际上在三天内就写下了自己的渲染图。 而且,负责构建世界的其余代码当然并没有消失。 一切都停止在C#中,停止在Unity中。 工作开始沸腾了。 我不知道他们是否能从中赚钱,但是这个故事的主要结论是,他们最初不必使用Unity。

就是说,有很多机械师不适合标准,大型,通用的引擎,因为它们是为所有目的而设计的。 因此,如果明天您想出一些特别的东西,某种复杂的体素机制,那么使用标准引擎将为您带来不便。 也就是说,有些机械师不适合使用标准引擎,并且很容易独立实现。

  • 游戏不是渲染-游戏是其他一切-游戏不是渲染,游戏是其他一切。 我们已经讨论过了。 如果您唯一的问题是绘画或使用声音制作多平台游戏,那么您可能会在前面讨论过的金字塔中看到类似的故事。 如果您说:“我想在三个平台上播放声音”,那么您不需要大的“ U”,小的“ c”就足够了。

我们考虑了开发我们自己的引擎的原因。 现在让我们来谈谈公司在开发自己的引擎方面所提供的优势。

开发自己的引擎的优势



根据幻灯片上提出的主要思想,考虑开发自己的引擎的优点:

  • 购买通常比抵押贷款更好-购买通常比抵押贷款更好。 无论如何,游戏开发就是金钱。 有多种货币化方法,使用这种方法购买不仅比抵押贷款更好,而且这是唯一的选择。

如果有人从事移动技术工作,那么您将了解一切。 如果引擎上的方框上写着:“特许权使用费的10%”,那么这绝对是不可接受的,您将不会赚到那么多钱。 您可以赚取100%的利润,但您需要2分。 也就是说,如果您有特许权使用费,那么这纯粹是出于经济原因而放弃了发动机。 但是我必须说,三个,或者说是当前最受欢迎的两个引擎,这只是推论的问题。 也就是说,此选项立即消失。

  • 从长远来看,特异性优于普遍性-在长距离上,专用工具总是比普遍性更好。 显然,普遍性总是较慢;与专门的事物相比,它的生产力和特定性较低。 与通用工具相比,为特定任务编写的引擎将更好,更快地处理它。 从长远来看,专用工具比通用工具更有利可图。
  • 在内部开发工具和管道-在内部创建管道和开发工具。 公司外部人员发明的任何引擎都必须遵循几项原则。 首先是最佳做法。 也就是说,另一家公司的引擎不是专注于艺术家的绘画方式,而是艺术家的绘画方式(从他们的角度来看很理想)。 您的画家可能会绘制不同的图像。 他们有自己的管道,并且成功。

您有两种选择:要么从最佳实践的角度对它们进行重新培训,要么使用自己的方法。 有简单的例子。 假设您说:“我们导入3D模型。” 您不知道另一面是什么。 因此,您需要一种中间格式。 中间格式为FBX。 FBX会对这样做的每个人都有缺陷。 而且您无处可去,因为您不知道在那里将要做什么,因此您将不会为450种3D建模工具编写插件。

当您在公司内部工作时,您可以实现已经拥有的相同管道,并在此基础上执行工作。 实际上,这非常重要。 事实是,所有这些都与开发时间有关,因此与成本有关。 因此,当您在家中进行开发时,可以处置已经拥有的管道。 否则,您将拥有一个名为“上传3D模型和为艺术家创建材料的规则”的文档,而不仅仅是设计文档,这是错误的。

  • 反应时间-反应时间。 我们正在谈论发动机制造商对您的要求的反应时间,关于为发动机配备新功能的可能性,以及有关新技术的运营研究。

说,在下一个办公室里是制造引擎的人。 每个试图修复通用引擎中的错误(即在错误跟踪器中编写Unity或Epic)的人都知道,最好甚至不要开始。 如果开发人员正坐在下一个办公室,则可以与他们联系并在15分钟内解决问题。

如果您有权这样做,则同样适用于新功能的建议。 通过使用我们自己的引擎,新技术的研究也得以简化。
假设您的程序员参加了一个会议,并听了关于那里的新内容的演讲。 他立即尝试了一下,您对这个新产品有了一个想法,并且知道是否需要它。 您可以直接做出反应,尝试尝试来自科学界的有趣事物。 顺便说一下,这意味着公司可能会有一个人被称为“研究者”。 同时,您可以对同一个虚幻引擎进行研究,因为它来自源代码。

  • 性能-性能。 游戏行业始终是生产力。 实现高性能的第一种方法是使用定制解决方案。 解决方案越具体,它们的生产率就越高。 第二种方法-顺便说一句,亲爱的是,对现成的发动机进行优化。 这看起来如何-高度依赖于这些引擎。

开发自己的引擎不仅是一个优势。 这些也是风险。 考虑他们。

与开发自己的引擎相关的风险



考虑一下我们自己的引擎的开发和使用带来的风险:

  • 开发时间-开发时间。 这个概念与我们所说的何时进入市场相交。 引擎的开发可能会非常长且足够快。 但是无论如何,引擎的开发时间会影响项目的总体开发时间。 因此,这也是一种风险。 例如,我知道在哪些团队中引擎的开发时间趋于无限。
  • 供应商锁的终端盒-绑定到供应商的终端盒。 这不仅适用于大型公司,也适用于小型公司。 假设您雇用了Vasya,他写了引擎,然后坠入爱河,辞职了,没人知道他写了什么。 因此,您的供应商锁定情况要比Google糟糕。 因为您仍然可以写信给Google,尽管他们不会回答,但是随着程序员的离开,这一切都结束了。 结果是浪费了开发时间和其他不愉快的后果。 您必须能够避免这些风险。
  • 重新发明轮子-轮子的发明。 关键是我们生活在一个您仍在发明自行车的世界中。 事实证明,在开发引擎时,自行车工厂已从游戏代码转移到了引擎代码,尽管它们不属于那里。
  • 封闭的生态系统-封闭的生态系统。公司内部所做的一切都属于该公司。我知道很多公司都有自己的脚本语言。可能是某种XScript只能作为其解决方案的一部分。

实际上,了解这项技术的程序员将无能为力。这可以被认为是挽留员工的因素之一。因此,对问题的好坏,使用自己的技术是否有风险的答案取决于具体情况。例如,我们尝试不使用我们自己的发明的概念。例如,我知道一家公司使用Pascal语法对Lua进行强类型化。可以掌握,但是这种知识已经死了,就像希腊文一样。我们非常努力地不采取行动。

生命,宇宙等所有主要问题



考虑一个非常重要的问题。开发您自己的引擎主要需要什么资源?没有资源,就没有必要考虑是否要制造自己的引擎了。当然,答案不是42。问题是-至少能够说出什么:“是的,我们至少有一些东西,我们可以开始做某事。” 这个问题的答案是需要程序员来开发自己的引擎。

程式设计师



为了创建自己的引擎,您需要程序员。如果您不知道,请在Google中搜索“开发人员”(developer)和“程序员”(programmer)之间的区别。这很重要。开发人员是主要群体。游戏行业的安排如此之多,以至于其中大多数人都不能称为程序员。抱歉,他们是开发人员。开发人员无法正确制作引擎。同样,如果您看一下第一个和第二个之间的差异,则开发人员将制作游戏,而程序员将制作工具。开发人员制造产品,公司从产品中获利,但是工具必须由程序员制造,否则它们将无法使用。

一方面,这是一个非常开放的世界。例如,我知道Unreal 4和CryEngine的代码,它是开放的。任何想知道的人都可以找到Unity代码,其中包含大量相关材料。这意味着,只要是懂英语的程序员,都可以做到这一点。那里没有火箭科学。但另一方面,事实证明,用英语阅读的程序员很难找到。因此,您必须知道在哪里找到它们,您必须能够招募,使用和推广它们。如果您知道怎么做,那么您已经可以考虑您的引擎。如果没有这样的人,那么您仍然不会成功。这样的例子是黑暗。不是有好的和坏的解决方案。最初有些事情是行不通的。

程序员需要能够雇用。知道如何雇用-您可以制造引擎。不知道如何聘用-那么您需要准备一些东西。而且,有趣的是,当您购买现成的东西时,如果您是一家大公司,您仍然需要这些程序员中的两个用英语阅读的人。

如果需要程序员来开发引擎,那么我们马上就会有几个问题。在哪里寻找程序员?如何组织工作?在考虑游戏公司的发展道路时应注意什么?

技术流行



现在可以回想一下寻找雇员的另一个方面了,它主要涉及大型公司。这样的公司有几种方法来招聘员工。

首先,您可以招募人员,开玩笑,安排实习,并在公司内部培训他们,从而以某种方式增长到期望的水平。这是正常的方法。同时,还解决了许多技术问题,因为与最初了解公司文化并研究某些技术的人更容易找到通用语言。

第二,原则上我们承认一种方法。开菲尔如何工作?他把一切变成了自己。您拿牛奶,把开菲尔扔到那里-没有牛奶,一切都变成了开菲尔。对于我们来说,它看起来像这样:“伙计,让我们聘请5位强大的程序员,这将是一个内部技术中心。”我告诉大家,如果您有能力做RnD部门,如果您是大公司,那就去做。从金钱的角度来看,不要让他们做任何有用的事情。如果公司加强了其在市场中的地位,并且出现了向何处扩展的问题,那么设立RnD部门可能就是这个问题的答案。当一家公司已经很富有时,这对它来说并不是损失,因为它已经因为效率问题而损失了很多钱,因此我们的游戏行业正在努力工作,现在它根本不会注意到研究成本。

现在考虑该方法,即该公司将组织一个团队来制造引擎或其他一些有趣的东西。这是未来的工作。您可以进行采访,说您捐钱,完成一项有趣的任务,创造引擎。您可以从应聘者中选择,人们会去找您,在公司内部,您总是会拥有这样的氛围,您可以激励,鼓励并最终实现自己的目标。

例如,我有一些食品公司正在开发的模块,因为他们需要它。也就是说,物理学是有序的,而不是看到我们自己的一些东西,我们说:“让我们去做。我们只是想出一些通用的通用接口,您将可以做到。”作为典型任务的一部分,这非常好。也就是说,原则上,在公司内部传播技术是很好的。

如果公司已经很大,可以承受自己内部做一些有趣的事情,那么即使从金钱的角度来看,它也能带来回报。因此,如果可以,请尝试一下。它可以看起来像您想要的-说,您创建了自己的Unreal分支,然后我们按照您想要的方式处理一切。例如,我在其中一家公司的浏览器中制作了一个2.5 MB内存的浏览器。和他一起工作。为什么-我不知道,但这是无限有趣的。

上面我们提到了游戏公司的问题,它是程序员和设计师之间有效互动的组织。让我们更详细地讨论这个问题。

两个世界



是时候向您展示我们游戏设计师的工作场所了。这是真实的画面。这里显示了一些演示,展示了行为的实现,稍后我们将对此进行更详细的介绍。

游戏界并存两个世界。人们要么专注于解决技术问题,要么专注于叙事。在中间-某种手工艺品。也就是说,实际上没有工具。单词,单词,单词-砰-代码。再一次的话-再一次的代码。我们认为,需要使用各种工具,使您可以连接到从事游戏工作,游戏设计师,经理和其他非程序员雇员所得到的结果。

在幻灯片上,您可以看到行为树,行为树。原则上,这只是从维基百科获取的,但在我们面前,它是虚幻引擎从那里获取的。这没有错。因此,有关此文档的文档位于Unreal网站上,使我们轻松构建与Unreal中所做的兼容的接口并不困难。也就是说,您可以从Anryl操作站点中获取任何示例,作为行为本身的示例,由于格式是完全相同的,因此可以将其重写为这样,然后它将起作用。这意味着我使生活变得更轻松,而不是在编写文档。而且有很多这样的事情。

在幻灯片的示例中,发生了一些事情,螃蟹奔跑,抓住了某个人,通常没关系。在内部,程序员解决了看起来像“去...”,“在...处射击”,“计算距离”之类的问题。所有其他行为都是由与编程完全无关的人员在此编辑器中编写的。与将文本转换为代码相反,这有效。此外,说到平衡。什么是余额?这些是可以更改的15个因素。这是行为,而不是系数。

也就是说,例如,“巡逻”的行为是由游戏设计师而不是程序员来描述的。这意味着我们已经采取了大多数人没有采取的措施。他们只是在设计文件中写了“巡逻”。程序员可以用50种不同的方式进行翻译。什么是巡逻?游戏设计师在这里准确地写出了他的意思。我的朋友们,这是一次胜利。为此,您需要自己的工具。为了使您从看游戏的有远见的人的口头定义过渡到程序员,这可以说是在脑海中。否则,他们将不再是程序员,将成为开发人员,并将终生除草。

总结



总结一下。我们讨论了编写自己的引擎的原因。假设您回头看过时的设备,那么这既不是好事也不是坏事。也就是说,您希望您的游戏在特定范围的设备上运行,而这些设备不再受到商业引擎的支持。同时,您要看起来很现代。如何实现呢?自己写。

您想拥有一个平台吗?您是否有一个特定项目完全不需要使用通用解决方案?或者相反,您是否有一个非常庞大且复杂的项目并带有特定图片?同样,在这些情况下,您可以考虑一下您的引擎。同时,为了制造自己的引擎,您需要资源。资源是程序员。

因此,如果您有理由编写自己的引擎,并且您有足够的资源,那么请接受并编写。

问与答

问题


如果以金钱和劳动力来评估引擎,引擎的价值是多少?

→回答


, , , . , . , , . , , Lua, , JavaScript , . , , , , , — . . — 3D, , . , , «» 8 , , , .

问题


?

答案


, . . , . , Lua, , , , Qt — .

问题


, Lua, -, , ?

答案


是的,是的。 实际上,我们正在努力将其引入开源,编写文档,汇编系统和示例。

问题


我们公司与您的观点非常相似,并且我们也遇到有趣的问题。 我想知道-您在游戏,引擎,工具上的人工成本比率是多少? 也就是说,例如,有多少人在使用引擎,在一个游戏上工作,多少游戏在使用一个引擎?

答案


现在,我们有两个引擎,旧版本和新版本。 也就是说,这不是重构。 这是一个全新的引擎。 如果说人工成本,可以说我们的公司很大,它有大约500名员工,程序员大约250名,设有5个办公室。 项目团队正在开发游戏。 项目是一种游戏,许多人都参与其中。 引擎开发团队是一个独立的团队。 这就是我所说的开菲尔(Kefir),精英部队,团队建设的资金和方法略有不同。 现在,我们在开发方面略有领先。 在新引擎上推出了两个新游戏。 这是非常痛苦的,因为游戏的开发人员并不十分自在,因为他们的工作环境确实可以从他们身上取走并爆炸。 我们有一个引擎团队-这是6个人。 产品的命令平均由四个程序员组成,它们并不重叠。

问题


引擎,您也指工具吗?

答案


是的,我们有一个单独的工具开发团队。 我们有一个非常糟糕的例子。 设计很差的GUI工具。 因为任何普通的程序员都认为这很简单。 我们试图将其外包。 因为很清楚-您提供了完整的界面,所以您拥有了所有内容,然后说:“创建一个窗口,绘制按钮-就是这样。” 但是这项尝试失败了,所以我们自己来做,与Qt一起痛苦地工作,因为对于我们来说,这必须在所有三个桌面平台上都起作用很重要。 因此,我们自己做。 我们有6个人同时做另一个人和第三个人。 但是我们仍然略微领先于产品要求。

问题


现在出售您的引擎是否现实?

答案


不行 现在您无法出售引擎。 您可以出售生态系统。 也就是说,不可能进行“给我钱,我会给您一个引擎”计划。 注意我们有多少家公司拥有自己的引擎,以及有多少家公司出售引擎。 实际上,它们都不出售引擎。 对于初学者来说,从必须将其转变为产品的角度来看,这是一个很大的麻烦。 公司内部对您有用的东西不能以任何方式出售。 您至少应编写其他人会理解的文档。 您只需要雇用一些义工队来宣扬这项业务。 尚不清楚您将从中得到什么。 如果您使用此引擎制作手机游戏,那么很有可能会成为百万富翁。 因此,为了做这些事情,一个人必须是风扇,必须确保自己在做。 我讨论了导致引擎发展的原因,这里还有另外一个原因。 假设您认为自己将使引擎比虚幻引擎更好。 如果是这样,去市场。 但是我不认为我会比虚幻世界做得更好。

问题


我了解您的新引擎是C ++和Lua?

答案


是的,C ++,Lua和更多JavaScript。

问题


为什么使用C ++? 有没有其他选择,或者您是否清楚自己会采取什么措施?

答案


看,有一个这样的mod。 您遇到的第二个人告诉您:“ Golang”,或告诉您:“ Rust”。 如果现在是这样,我基本上会思考。 但是,一年前,当您来到公司担任发动机开发流程负责人时,您需要制定一些计划,因此您必须在这些计划中包括“ Read about Go”项。 在这里,性能很重要,但是在C ++中我们已经工作了很长时间,我们知道如何使用它。

我们为什么使用Lua? 由于它是一种被低估的语言,因此非常适合嵌入。 为什么要使用JavaScript? 因为发生了。 因为除了V8和Webkit,市场上没有其他产品。 这些是类固醇。 就像我说的,我们制作了一个占用2.5兆内存的浏览器,并且有一个JavaScript引擎可以通过所有测试。 我们拥有它,这就是原因-JavaScript。 因此,例如,您可以带那些了解JS并在React上编写网站的人。

问题


告诉我,您是仅使用行为树来控制行为,还是使用它来控制游戏机制并促进游戏进度?

答案


现在,对于行为,但是我们还有一些替代机制。 比方说,Petri网仍然有一位编辑,而这里的问题有所不同,那就是Petri网很难向游戏设计师解释。 编辑器还有其他一些功能,使您可以绘制有限状态机。 而且我们正在努力从中获取一切。 现在,我需要那些编写脚本的人以这种形式编写脚本。 因此,行为树起作用了,其余的行为树尚未包括在工作流中。

问题


预测未来的技术发展有多困难? 即,预测一些陷阱等的出现有多困难?

答案


此刻,我看到一个问题。 现在,WebAssembly技术看起来很有趣。 闪光灯坏了。 自然,我们想在网络上的其他地方发布。 例如,将游戏从Unity移植到WebGL是一项无法通过单击按钮解决的任务。 也就是说,现在我们正在研究WebAssembly,尚不清楚这是否是标准,现在就开始使用它,或者等待。 在移动技术中,也没有什么特别的事情发生。 到目前为止,还没有奇异的爆炸,但是如果发生,我们将做好准备。

最后,我想说的是,采用常规的模块化设计,采用常规的设计,我真的希望它们对我们来说是正常的,当出现新技术时,您可以简单地从引擎中删除旧技术,然后将新技术放到那里,一切都会正常进行。

Source: https://habr.com/ru/post/zh-CN423175/


All Articles