While True的创建者:学习()游戏开发,VR问题和机器学习模拟中的编程



几年前,我感到Oleg Chumakov(当时在Nival游戏工作室工作)是游戏开发行业中最著名的程序员。 他发表演讲,主持Gamesjams并经常出现在播客中如何制作游戏

当VR进入市场时,Oleg被选中领导公司的新部门-NivalVR。 但是,您可能知道,VR并未像人们期望的那样起飞。

我有点转移到生活中的其他事物上,并停止了一段时间的游戏开发工作,但是再次接触游戏开发后,我注意到事情正在寻找Oleg的团队。 现在它被称为Luden.io,以及他们的机器学习专家模拟器,而True:learn()在其公认的小众市场中大受欢迎。 游戏和团队周围发生了许多很酷的故事。

我们决定接受Oleg的采访,但我不能只谈一个话题-到目前为止,他的生活一直是因为缺少一个更好的词“有趣”。 他已经看完了。 并且,为了确保程序员可以谈论编程而又不必担心看起来太“书呆”,采访是由我的朋友,同事和自己的fillpackart的资深开发人员进行的。


奥列格·楚马科夫本人

我在True时已签出:learn()。 顺便说一句,出色的游戏我无法停止。

你走了多远?

一点也不远。 我从晚上开始玩,立即陷入了附带任务。 在我解决之前无法入睡。 顺便说一句,游戏中的情况如何?

很好 我们甚至无法想象它会变得如此之大。 我们只计划了一个小项目。 这样看待:吸引所有玩家,然后选择仅玩益智游戏而没有其他玩法的玩家。 然后从那里准备好涉足编程的人员。 然后从这些人中,专门带去学习机器学习的人。 那是我们的目标受众。 但是,当然,事实并非如此。

仅在第一个晚上,我们就吸引了更多的玩家,而不是我们希望在半年内吸引的玩家。 因此,接下来的几周显然很有趣。 我们尝试增加对不同语言的支持,并且通常在使Discord上与数千人同时交谈的同时保持游戏的畅通。


我觉得您的Discord聊天非常有趣,因为其中的每个人都非常喜欢机器学习。 您是否有关于玩家的精彩故事?

我们有一个叫Floppy先生的球员(不知道他的名字在现实生活中是什么)。 当我们向有限数量的人分发游戏以收集反馈时,他在封闭Alpha期间加入了该项目。
在游戏中,您(程序员)有一只猫,它坐在监视器上并一直鸣叫。 但是起初,它应该是让您分心的过程。 这将是一个非常不合时宜的时刻,要求您和他一起玩,坐在显示器前,玩这种东西。 这是Floppy先生的主意:当他玩耍时,他的实际猫总是在分散他的注意力,于是他拍了张照片,将其张贴在Discord上,每个人都立即知道我们要添加的下一个功能。

他真的参与了社区。 他开始用不同的衣服3D打印这些游戏中的猫,并将它们发送给最佳玩家。 本质上,他免费处理我们的商品。 他只是从中踢出来。 这是关于我们社区本质上如何独立发展的非常热烈的回忆-到目前为止,我们还没有在我们的项目中做到这一点。 我们有角色扮演,粉丝艺术的人,但是从游戏中3D打印物体到彼此的礼物-这是第一次。

有些玩家希望深入学习机器学习,而游戏为他们消除了臭名昭著的高准入门槛。 玩完游戏后,他们去了Coursera,搜寻各种级别的比赛...而且我们一直密切关注着他们,押注谁将是第一个真正在机器学习领域找到真正工作的人。 那天到来的时候,我们可能会庆祝。

那么,这意味着还没有人做到吗?

他们目前正在课程学习中途。 游戏于三月发行,还没有足够的时间。 但是通常来说,游戏中发生了很多很酷的事情。 例如,YouTube员工使用它来教授机器学习。 现在,该游戏已在俄罗斯,英国,美国,澳大利亚等各地的学校实际使用。 因此,我无法确切地说出发生在我们身上的最酷的故事-我们每周都有几个竞争者。


斯坦尼斯拉夫·塞梅诺夫(Stanislav Semenov)-数据科学家,也是Kaggle的顶级用户之一-扮演WTL

好的,我们稍后再返回机器学习。 告诉我您在项目中到底做了什么,描述您平时的工作日。

我现在的职责是与核心团队讨论,谈论他们的计划(接下来的2-3个月将要做什么),并为与我们一起工作的每个人牢记该计划。 将游戏整合到各种活动中,帮助将其出售给该学校或该学校。 简而言之,是开发人员与外界之间的桥梁。

有时,我会出于自己的浓厚兴趣做出一些贡献-客户开发。 例如,在将游戏集成到学校课程中时,我们遇到了一个问题:孩子们去编程课程,然后回家,父母问他们“您在这些课程中做了什么”,而他们回答“什么都没有,真的”。 父母想知道-他们只是不想告诉他们还是他们真的不做任何事情。 因此,我们将进度报告自动化了:例如,父母可以收到消息“您的孩子今天学会了感知器”或“您的孩子编程了rnn”等等。 这些功能的出现归功于游戏与世界之间的互动-主要是通过我。

此外,作为首席执行官,我的工作是激发所有人一个共同的,包罗万象的目标,使每个人的工作舒适,消除任何麻烦,使每个人都能工作而不必担心基本需求。

好吧 所以您现在不编程吗?

我愿意,但只是偶尔。 我目前致力于重新制作游戏内的初创公司。 我已经有很长一段时间的想法了,尽管对于我们的下一个致力于互联网营销的项目来说,只是没有时间。 我曾经在一个星期内做这些事情,现在我花了一个月,但还没有完成。

关于游戏开发中的编程


让我们回想过去的美好时光。 您能告诉我您作为程序员的生活吗?

好吧,我参与的最大项目,即塑造我未来职业生涯的一个项目,是游戏Prime World。 在Nival,这是一个具有社交元素的MOBA(我相信是Castle),这是一个巨大的项目。 我当时在城堡团队中工作,它有20多人-比赛的一小部分! 而且,它具有这个世界上存在的同步多人游戏的所有问题。

您何时加入该项目的,那时的情况如何?

当我加入时,“城堡”几乎不存在。

但是,为了告知没有玩过游戏的读者,游戏分为两个部分:一个是进行真正的MOBA风格的战斗,另一个是城堡,玩家在其中进行等级提升,雇用英雄,发展他们,然后选择英雄并参加战斗。 战斗部分在那时几乎是功能完整的,而社交部分则处于发展的早期。

以及Nival雇用您什么?

我是一名普通程序员。 我记得创建了一个全新的Unity项目-我们从头开始,必须创建Castle并将其与战斗部分集成,然后进行积极开发。

好,那就是Unity。 那是什么编程语言呢? C ++,C#?

会话部分使用C ++,我们部分使用Unity,主要逻辑使用C#。 但是,由于这是一个复杂的项目,具有许多技术相交的地方,因此我们也将整个内容通过Thrift转换为Python,因为这就是服务器编写的内容。

哇,说说C#开发的开销。

这就是温和的说法。 但是我们仍然找到了一种优雅的方法。 我们的老同事都是非常有经验的人,因此我们专门为这些翻译定制了代码,而且非常漂亮-几乎不需要人工归档。

我相信那是在Thrift,Protobuf等技术刚刚起步的时代。 我们认为这是一个技术奇迹-他们只是用多种语言获取了您的代码,并解决了将所有内容组合在一起的问题。

我只能想象。 当您加入该项目时,您是否已经大致了解C#和.NET的世界?

是的,我很熟悉。 我也知道Unity 2.6(如果我没记错的话),但这本身就是一个奇怪的产品。 我可以在.NET上编写,但在早期阶段可以在Mono上编写。 那时Xamarin尚未开发。

我记得Mono是一种鲜为人知的野生动物,人们很少见过,但是它是内置于Unity中的,这是包含Mono的最大项目。 因此,VM的每个小问题都存在。 所有平台上的大量内存泄漏极高,在最平凡的事情上与.NET有着不可预测的差异,到处都是不必要的分配...

因此,在此之前,您使用普通的.NET,并在那里得到了一个不同的(当时文献不多的)运行库。

我以前曾在Unity上工作过,但是由于缺少一个更好的术语,所以这个“过渡期”(当您在Unity上工作而现在必须在Mono中工作)非常艰难。 我不能说我是一个特别有经验的.NET开发人员。 我对它甚至几个完成的项目都有一个大概的了解,但是我根本不关心性能,因此我可能在项目中犯了很多优化错误。 所有性能要求较高的部分均使用C ++ ,. NET与它们无关。

告诉我你工作的第一周。 您通过了面试,获得了聘用并获得了成功-您是一名开发人员。 接下来是什么?

好吧,值得一提的是,我们不是从Prime World开始的。 在那之前还有另一个项目,但是没有发布,有一天我们被转到了Prime World,在Castle上工作。 事情发生得如此之快-我们的设计师对他们想要的东西概述了一个非常粗糙的想法:“应该有各种各样的城堡,里面有一个玩家,他可以建造它,然后将其升级等。”

我记得,在第一周,我们用一些基本块构建了城堡的基本轮廓,只是向设计师展示了它的形状。 然后,在基本交互完成之后,我们必须弄清楚它在服务器端应该如何工作-如何访问朋友的城堡以进行验证,如何激励玩家过渡到战斗。 因此,玩家雇用了英雄,对其进行了升级,购买了合适的才能,以及与该英雄战斗的方式。 但是要战斗,我们需要将他从城堡区转移到战斗区。 零件基于不同的语言和技术-搭建起来并不容易。 但这是很久以前的事了。

Luden.io开发时间表


  • 2014年,Nival组成了一个独立的团队,致力于教育性VR游戏-NivalVR。
  • 2015年1月,他们的第一个项目发布了:InMind-一个关于在微观水平上进入人的大脑以发现引起心理问题的神经元的游戏。


  • 同年,InCell发布了。 它扩展了相同的想法,但听起来像是聊天机器人发疯了-具有赛车和策略元素以及程序生成的教育游戏,适用于VR设备。 游戏是关于进入人的细胞世界的。
  • 在Epic Games MegaJam 2016上,Luden.io制作了VRobot-“一款无用但有趣的游戏”,在其中您用巨型机器人粉碎了一座城市。 它于2017年在SteamVR上发布,并于2018年在Playstation VR上发布。


  • 2016年,NivalVR从公司分离出来,并更名为Luden.io。
  • 2017年,ARrived发布-基于多种技术的增强现实神模拟器:谷歌ARCore,苹果ARkit和CoreML。


  • 在2018年3月,True:learn()是一种机器学习期望模拟器,但没有VR和AR-进入了早期访问。

关于领导一家科技公司


所以,现在您是Luden.io的负责人。 更困难的是:纯粹地编码或完成所有这些管理工作,成为世界与开发人员之间的桥梁?

我相信这取决于您与什么样的人一起工作。 我很幸运能得到我所干的人,我对管理和编码感到非常兴奋。

但是,如果我们从理论上比较程序员和CEO的工作,那么编程工作就慢得多。 您想出一个主意,您计划好它,然后去做。 外部干扰很少而且很小。 本质上,在编码中,您始终有一个“正确”的决定和严格的,可量化的成功指标:正确的决定意味着您可以在2毫秒内执行该功能并并行化为N个线程。 您知道自己的球门柱,如果碰到它们-一切都很好。

首席执行官没有类似之处。 在这个世界上,即使您不断为自己的业务设定成功的标准,也没有正式的成功指标。 您应该始终考虑可以做得更好或与众不同的方法。 也没有规则。 但是它当然有其魅力。



您认为您作为开发人员的经验有助于您履行CEO职责吗?

我相信是的。 我认为,将来不会有很多高科技公司没有领导者对开发例程有清晰的了解。 我几乎无法想象这将如何工作。 但是我敢肯定,领导者至少应具有STEM学位,以使公司像火车一样飞奔前进-这是科技公司生存下来的最低可接受速度。 我不能说这是唯一的方法,但我认为这是最正确的进化方式。

您是否对自己进行代码审查?

不完全是 当我们在Prime World上工作时,我做了一个很大的项目,但是那时的流程却截然不同。 在那里,我们检查了整个代码库,使其遵循通用标准。 Prime World是如此之大,我们简直忘记了代码库的一部分正在游戏的另一部分中使用。 我们甚至努力地在本地测试如此庞大的项目。 因此我们有非常严格的代码审查标准。

但是在那里,即使程序员彼此借用代码,但是当我们将所有功能收集到一个分支中时,它主要是为了集成。 我还没有看到小型游戏开发工作室,您最多只能有5-6个程序员,它们会进行庞大的代码审查过程。 通常不需要它-该产品是第一位的,我们不打算在未来几十年内支持它。

是否有统一的发展方法? 您是否强迫所有人?

有一个标准的代码样式,以及一些有关将什么与哪些内容结合在一起的基本准则,以及一些体系结构规则。 我们有一个项目框架。 它已经过尝试和测试,所以我们知道它不允许我们用脚射击(至少不是用a弹枪射击)。 在多个项目中使用了一组基本模块。 其中有些是几年前写的,有些只是最近写的。 那就是-重用体系结构,坚持一种代码样式-不允许我们一路滑入深渊。

您是否亲自参与招聘过程?
当然可以
都是吗
所有的。

您的公司一定不能很大,是吗?

好吧,不是成千上万的人,所以我有机会与每个受访者交谈至少10分钟-只是要了解他在游戏行业中看到的东西,以及他个人玩什么游戏。

但是您不像开发人员那样采访开发人员吗?

你知道,我有点幸运。 我认为,从事银行软件业务的人没有我们那么容易。 我们的俄语行业很小,当您在该国工作几年时,就会结识很多人。 基本上,每个候选人(如果不是刚从大学毕业的学生)都会得到某人的推荐,并对他的工作有一个大概的了解。
但是,如果我一周必须雇用100名员工,那么我显然无法参与其中。 但是我不需要那么快就雇用,而且在大多数情况下,如果我雇用人员,我已经对他们有些熟悉了。

游戏开发与业务开发




您有其他行业的人来吗?

有一些,但并不常见。 人们进入游戏开发的原因很简单-他们喜欢在小时候就做游戏,并且继续这样做。

我们对银行业人士进行了几次里程碑式采访。 我们进行了一次很好的面试,口头同意了某件事,他们似乎很喜欢,他们说:“我在银行工作,获得很多薪水,但我真的不喜欢。 我想追求自己的激情,那就是游戏”。

你们彼此喜欢,提出要约,然后……那个人消失了。 有时你问他为什么,他走了:“我来提出辞职信,老板问我在哪里,我回答了,他主动提出要保留我的薪水。” 人们通常会加薪并留在自己的行业中。
但是也有其他情况。 许多非常有能力的人来自其他行业,包括银行。

是的,我记得在播客中听到过这个故事-一位银行程序员说“我想创造一些东西”,然后他收到一张纸,上面有一个数字,他留下了。 您的生活中有这些纸吗?

像每个人一样,我有来自各地的工作机会。 老实说,我什至不去研究它们。 我很需要我,但我想献身于这家公司。

人们说银行业务代码比游戏代码好得多。

我想和从事银行和游戏开发工作的人坐下来。 但从理论上讲,在游戏开发中,很多情况下该项目意外启动。

例如,有一家公司,开菲尔(Kefir),有一个项目,《地球上的最后一天》。 这可能做得很好。 它立即起飞,获得了前所未有的知名度。 我认为在这种情况下,您最后想到的就是代码质量。

保持代码库整洁的过程主要取决于开发人员的意识。 尤其是习惯于编写操作精良的代码并使所有内容处于控制之下的高级开发人员。 因为“让我们先解决然后再遍历代码”阶段不会发生。 曾经

我本人也涉足业务发展-我们公司对质量代码很崇拜。 我们并没有真正解决任务,而是编写了出色的代码-这就是我们的全部任务。 作为开发部门,我们无法对产品的工作原理或产品是否存在提出任何意见。 我看到您有完全相反的方法:您的工作是完成任务。

显然,我们将产品及其成功放在首位。 有时会想到一些与您描述的情况类似的情况。 假设我们正在基于现有的著名IP生产产品,并且知道其未来将是什么样。 说,我们知道它将得到15年的支持。 显然,确保每年的支持费用不会增加有商业价值。 但是很少有可以支持15年的游戏项目-这就是整个行业的运作方式。 魔兽世界几岁了? 大约15岁,所以暴雪可能对此有疑问。 但是我相信,即使在15年前,暴雪也希望完成该项目并在此过程中偷偷摸摸。

它看起来更像是游戏项目,与业务项目不同,您无法预测它会持续多久。

毫无疑问。

在业务中,人们习惯于创建持续15年的代码库,但是您不这样做,对吗?

程序员通常不会专注于创建易于支持15年的代码。 但是我看过一些非常干净的项目,显然很多时间都花在了代码质量上,人们非常负责,他们喜欢它。

如果每个人都喜欢保持物品清洁,那就意味着可以轻松维护产品,但是我们的业务并不总是需要这样做-我们专注于使产品正常工作。

虽然我很难想象当我们制作银行软件时的情况,并且不知道它是否会起飞。 这些行业差异太大,无法比较。

如何为自己和人民制作游戏




我看了Luden.io的游戏,觉得它们是由开发人员为自己以及为观众创建的。 不考虑任何商业惯例,也没有针对特定受众定位任何目标。

一如既往,这是一个双重问题。 假设您制作的软件可以为用户解决特定问题。 我们去找用户,问“你怎么了?”。 我们深入他的行业,掌握数字-用户是否准备为解决此问题付费。 然后,我们创建解决该问题的产品。

游戏也可以视为解决游戏者问题的软件。 他想娱乐自己-就我们而言,学习一些东西。 但这不像“我的背痛,我吃了药,现在不再了”。 玩家想玩一些漂亮的东西,带着灵魂。 我们需要开发用户与游戏之间的化学反应。 他想与游戏“交朋友”。 如果有一种万无一失的方法来开发这种化学反应,就像解决商业问题一样,那么也许为自己创造游戏并不是那么重要。

如果我们说无法对此问题进行详细研究,那么找出游戏是否与玩家建立起融洽关系的唯一方法就是该玩家。 如果我们喜欢这款游戏,如果发现它漂亮,有趣,那么我们可以推断出我们中可能有不止一个人,还有其他喜欢这款游戏的人也存在。

但是那里有一个非常好的优势。 我们需要像我们自己为自己一样看产品,但是有点像是第三者。 一个已经五年没有玩游戏的人会如何看待游戏? 一个只扮演命运的人怎么样? 还是在Dota工作一千小时的人? 因此,我们需要从不同的角度来看待它,而且还需要增加玩耍乐趣的商业动机。

心理动机很简单-游戏很难制作,而且需要很长时间,因此最终您将不可避免地开发出类似于仇恨的东西。 您已经看过很多次了,对它厌倦了。 但是,如果其中您根本不喜欢游戏,那么不可避免地会在开发结束时懈怠。 除了自己开发游戏外,没有其他方法可以开发游戏,否则您将根本无法发布游戏。

但是,与此同时,您是否同意自己的游戏是利基市场?

当然可以! 那是我们所做的主要好处。 我们想成为小众。 我们并不是要娱乐所有20至40岁的男性-全世界已经做到了。

我们希望游戏能够告诉人们一些有用的东西,成为玩家生活中的伴侣。 当然,它并没有像体育模拟器这样的小众市场,在这里体育运动的观众众多且五花八门,但我们甚至不假装试图吸引这么多人。

遵循这些原则工作是否有利可图?

我认为它可以带来利润(嗯,我们设法做到),但是由于缺乏更好的说法,您需要首先“准备”市场。 我们已经工作了4年,我们发现应该从事哪些类型和格式的工作以赚钱。 我们可以做到,但是没有人说我们的标志是您可以从该行业中赚到的最大钱。

直到现在,我们才对如何运作该市场,如何建立该市场有了了解。 它不是很发达。 未来10到15年将花费在使这个市场更受欢迎,迎合我们共同目标的第三方开发人员的需要-游戏必须有用。

我们的目标是确保20年后游戏将帮助人们学习和做自己想做的事情。 在未来的世界中,也需要一些最有效的方法。 那时,大学和学校将仅出于研究目的而存在。

总体而言,我看到了您的兴趣爱好之间的共同主题-游戏,Gamesjam,讲座,我相信您甚至还会教...

很少。 一年最多10个学时。

对教育的兴趣是何时产生的?

帮助年轻的专家变得比我们更好更幸福是一件很美的事情。 经验可以帮助您。 但是,也没有那么“远见”的动机。 你最喜欢什么游戏? 让我们通过玩游戏来确定自己是谁。

最喜欢所有人吗?
所有的。 任何体裁。 只是第一件事。
假设质量效应。
好的,那是一个不错的选择,我也喜欢。 还有第二个?
哥特式,大概。
地狱,哥特式也很棒。 我想知道我们的兴趣是否一致。 我也都喜欢这两者,但是我非常喜欢模拟器和大亨。 以Mini Metro为例,我认为现代游戏设计是一项巧妙的成就。 你玩过吗?


当然可以,我知道。

如果我们将艺术与艺术相提并论,那么它就是Malevich所想象的相同的“零形式”-隐藏在深层系统中的一些巨大材料以最小的努力呈现出来。

大亨和模拟器是设计的那种游戏,因此我们做一些事情并立即看到后果。 如果我们更深入地研究游戏,它是一种无风险的获取经验的方式,这意味着游戏是最纯粹的教育形式。 我们的公司名为Luden.io。 如果我们看一下,“ Ludus”从拉丁语翻译有两种方式:游戏和学校。 罗马体育馆附近还有一个名叫Ludus Magnus的地方。 这是角斗士们在舞台上玩耍并为战斗做准备的地方。

因此,模拟器是大亨,旨在为玩家提供在自然条件下很难获得的体验-太昂贵了,或者在地球范围内根本不可能做到。 他们为人们为将来可能发生的情况做准备,并允许他们“排练”它。

我们现在以及20-30年前一直在进行的教育已经变得非常无效。 孩子们拥有电话,他们可以使用YouTube和Twitch-所有这些都比读书本身有趣得多,甚至写得不好的书更有趣。 如果我们结合教育和游戏这两种形式,那么每个人都会赢。

VR发生了什么




这些想法是导致您的公司专注于VR的推动力吗?

VR是一个有趣的话题。 当我们与Nival分离时,VR才刚刚启动。 VR当然可以扩展游戏中最强大的部分-无风险体验,因为它增加了非常强的沉浸效果。 大脑更容易相信它是真实发生的,尽管这只是另一种视觉上的错觉。 但是目前市场正在苦苦挣扎。 没有人能完全想到每个人都想在家中使用的VR应用程序。

因此我们决定朝着我们的最终目标前进,但是VR ...我们在所有平台上都有项目。 除此之外,我们还有一些VR项目正在开发中,打算整合到学校中。 如果一个平台真正“占领”市场并成为扩大其规模的VR平台,我们显然会继续在那儿发展,但目前我们拥有大量快乐的VR播放器,而True:learn()是传统的,非VR游戏。

在E3之后,互联网上流传着图形,甚至在一年前,新闻界对VR的提及就更少了。

不幸的是,这是事实。

您认为发生了什么事?

您个人是否想购买VR头盔?

不行

好吧,这就是您的答案。 人们不想要那样。 一旦您-是的,您-醒来并决定要使用VR头盔,然后事情就朝着正确的方向转移了。

人们为什么不想要它? 当它第一次问世时,人们欣喜若狂,他们说在5到10年后,VR将无处不在,即Ready Player One风格。

第一件事:不听业务评估,仅听消费者报告。 与商人不同,客户可以简单,简洁地回答您的问题。 因此,伙计们,如果您不想要VR头盔,那么您的动机将比我的商业想法更好地描述情况。
总是这样-当游戏销售不佳时,只需转到Gamestop并询问没有购买它的人。 他会比所有推销员的总和更好地解释它。

我认为这是鸡与蛋问题的延伸。 您当然可以购买VR头盔,但是接下来有一个如何使用它的问题。 但是创建VR内容的人会问自己:为什么很少有人拥有这种硬件,我才开发游戏? 我不会把钱还给我! 而且,这种恶性循环尚未在VR市场中打破。

但是已经出现了一些细分市场,并将继续改善。 从较小的壁ni开始,然后变得越来越大。 就像80年代和90年代游戏机的出现一样,VR的最佳时机也需要一些时间。 当然不会在三年内出现。

因此,您相信VR会在不久之后起飞吗?

取决于格式。 它将是通用的VR-AR设备还是单独的产品很难预测。 我的观点是,像今天的平板电脑一样,VR将占据庞大而专业的市场。 很多人在家中拥有它们,但很少有人购买新的,但仍然可以解决明确的问题。 我相信VR会以同样的方式结束。 它有一个细分市场,问题是-有多大。

但是,它还有另一个用途。 我的一个朋友告诉我,他有4个孩子,因此买了VR头盔看电影。 我认为用例非常清楚。

使用VR在技术上难吗?

VR存在巨大的性能问题,并且需要很多支持它的平台。 我们的其中一款老游戏-VRobot-刚刚在Playstation VR上发布。 它要求稳定的60 FPS性能。 Oculus Rift(包括移动版本)需要75 FPS。 即使在特定场景中掉落​​20-30 FPS,这也是无法接受的,但您仍需要更好地优化游戏。

但是我们有一个非常强大的底层图形优化团队。 例如,尼基塔(Nikita)专长于此。

所以你有一个专门的优化专家?

他不仅在这样做,而且是他的主要技能。 他与Dima协同工作,后者可以为任何性能要求构建任何3D场景。 所以我们就此开始了。

关于游戏开发中的机器学习


对于喜欢游戏开发和机器学习的人们,Oleg展示了Demis Hassabis的照片作为灵感。 象棋神童,神经生物学家和DeepMind的创始人,他还开始了游戏开发事业。

他为Peter Moulineux的游戏Black&White编写了自己的AI,然后,作为他自己的公司Elixir Studios的负责人,他发布了Bond超级反派模拟器Evil Genius。
直到那时,他才成为世界上最著名的AI研究人员之一。

虽然是True:根据您自己的经验来学习()?

是的,游戏主要基于此。 游戏行业的运作方式是,如果您开始做某事,则需要参考一下。 我们正在做一个模拟-有很多细节需要注意,为此,我们需要一个参考点,只是为了避免完全脱离创意。

在while True:learn()中,我们将自己的现实作为参考点。 如果您做某事而又不知道该怎么办,请看一下实际情况。 游戏经济正在租用服务器场。 如果您尝试解决处理大量数据的任务,则需要租用一些计算能力,运行数字,提交任务并停止租用。

我们想展示自1950年代以来机器学习如何发展,从第一个感知器到驾驶推车,胶囊网络等。

Vanya特别保留了一个包含所有参考点的Google电子表格-机器学习的主要里程碑,行业随着时间的变化以及正在开发的新技术。 这就是通过任务呈现给用户的方式。

有些游戏版本甚至提到了一年。 出于多种原因,我们将其删除了,也许将来我们会再使用它。 但是玩家沿着相同的路径旅行-用感知器完成了几个任务,并赚了一些钱。

每年,发生了一件有趣的事情,这些事情被未来的发展所证实或斥责。



您可以单击任意一个块,以了解它在游戏中和现实中的工作方式。其中有两个链接:一个是YouTube视频的简洁介绍,另一个是针对那些想要真正融入其中。

团队之前曾从事过机器学习吗?

当然可以 True:learn()是沿着VRobot制作的,因此VR团队专注于将游戏移植到Playstation,而新的较小团队则由机器学习专家组成。

告诉我有关他们的信息:团队是什么样的,他们之前从事过什么工作?

没什么特别的。 当初想到创建ML仿真器的想法时,我从朋友的建议和学生中选出了一个团队。

特别是ML专家?

是的,但是他们都还很年轻,没有人拥有20年的机器学习经验。 每个人至少玩过两次Kaggle,解决了一些任务。 他们中的大多数人都在大学学习过。

他们创造了一个游戏。 但是再说一遍:游戏开发不是真正的机器学习,对吗? 意味着它们是完整的堆栈-数据科学家和游戏开发者合而为一吗?

这些人首先了解机器学习,他们知道机器学习的原理。 然后他们在Unity中开发游戏,编写代码,设计界面等。 只是,要开发任务并按时间轴放下任务,您需要首先了解上下文。 显然,他们并没有为每个任务创建一个ipython笔记本。

我们有一个运行卷积网络的特定库,而Sharp中有一些基本的东西可以在Unity中工作。 它也被用来创建AIDraw-一个绘图游戏:玩家绘制一些东西,然后AI必须猜测正在绘制什么。 这个库完成了大部分工作,并且整个游戏都围绕它构建。

机器学习和游戏开发开始融合不久。 假设我有一个利用机器学习的游戏。 我需要哪种堆栈?

严格来讲,我还没有看到很多将游戏开发和机器学习相结合的项目-在客户端可以看到ML工作。 Unity拥有自己的“强化学习”系统,该系统不一定要做很多事情,但是它内置于Unity中,因此进入的门槛非常低。

就像其他领域一样,有很多库可供使用:C ++框架,神经网络...
移动设备通常使用Apple的CoreML,它可以直接在设备的图形芯片上运行其计算。 我们采用一个模型,在TensorFlow或Yandex的CatBoost中“教它”,将其打包到一个特殊的档案中,然后我们就可以开始运行了-它可以直接在智能手机的GPU上运行,并向我们返回预测结果。 作为示例,我们在增强现实游戏ARrived中使用了它,它需要从相机拍摄图像并弄清楚它是什么。

但是,如果我们谈论后端使用,那么它们都是非常经典和直接的。 服务器运行在所有机器学习中使用的非常简单的技术上,但是在那里用于分析或个性化-例如广告定位。 一个相当著名的案例是预测《战车世界》玩家何时与服务器断开连接以及如何处理服务器。 或预测何时向玩家提供报价-两匹马以一匹的价格-当他最有可能购买并对此感到高兴时。 这些是服务器应用程序,堆栈大小并不是真正的问题。

但是,建立数据集是否可以成为游戏设计的核心?

听起来像是西方世界的概念。 它可能有其用途,但我看不出玩家行为的数据集如何对我们有利。

例如,我们制作了一个关于在城市环境中驾驶的游戏。 我们制作了逼真的莫斯科道路模型。 我们可以看到很多玩家在该位置崩溃,或者超过了此限制的速度限制。 使用这样的数据集,我们可以找出问题出在哪里。

但是,如果只是游戏而不是模拟器? 也许数据集可以解决公司的问题,而不是解决参与者的问题。 如果公司生产类似类型的游戏,那么玩家行为的数据集可能对他们有用,但是我还没有看到专门为此目的而构建的项目。

那不是AIDraw的目的吗?

规模很重要。 如果我们的玩家数量增加300,000倍,那么可能会产生一些影响。 如果Google制作了该游戏,那么他们可以收集有价值的数据并对其进行处理,以用于研究目的。 但是不适合我们。

假设您想出了一款使用ML进行某些游戏的游戏,并且在开发过程中您意识到自己无法完全按照自己的想象来创建游戏,而是创建了与众不同的游戏。 那曾经发生在你身上吗?

例如,我们知道我们想要发布对True的重大更新:了解()有关自动驾驶汽车的信息。 玩家将教一辆汽车驾驶,超越其他汽车,切换车道,加速和制动。



通常,游戏设计师会编写一个设计文档,然后根据该文档创建内容(就像在其他行业中一样)。 但是对于汽车,我们从一开始就不会那样理解。 我们有多个阶段,每个阶段都有自己的技术。 玩家将学习遗传学; 然后明白这对他的目的不是很好。 然后将以多种形式进行加固。 玩家会明白,特定的执行方法对于他的任务是最有效的。

这不是可以控制的经验。 知道可能会出问题之后,我们首先编写了一个技术演示-我们想要创建的体验的原始技术版本。 然后,我们将其交给游戏设计师,然后由他们进行游戏,编写设计文档,并根据该作品完善并完成游戏。

不仅游戏设计师也是如此-我们在Discord上拥有一个由最亲密的朋友组成的社区,我们可以为他们提供功能演示,并可以给我们反馈。 目前,他们已经进行了两周的自动驾驶汽车演示,他们一直在告诉我们他们的经历。

最后,我们最终得到了什么? 首先,我们说明了应该使用哪种数据输入来教汽车驾驶,我们可以更改哪些参数(阈值,损失;遗传学,世代大小,突变)。 结果是互动性不强。 播放器登录,设置一些参数,然后在汽车自驾时凝视屏幕。 对于了解这一概念的开发人员而言,这很酷,但对于不了解这一概念的玩家而言,这很酷。

玩家感觉不到自己的贡献吗?

确实,没有任何反馈。 因此,我们对设计进行了一些更改。 玩家将自己驾驶汽车,并教它。 然后,根据您的训练方式,它会重复出现。
如果玩家只切换到右车道,那么汽车将不知道如何左转,因为您还没有教过如何。 它变得互动了。 因此,也许毕竟我们离最终产品不远。

从本质上讲,我们了解到机器学习会出错。 在设计阶段几乎不可能考虑所有内容。

因此,您计划制作原型,然后从头开始重新制作一些东西吗?

本质上是。

但这不是游戏开发人员做事的方式。 这是机器学习专有的东西,对吗?

您可以这样说,是的。 在其他游戏和行业中,我们可以预测事物。 我们不是新手,因此我们可以了解玩家会做些什么,他会遇到什么情感。 多年来我们建立的“预测数据库”可以处理这一问题。 机器学习吗? 每种约定都无法实现。

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


All Articles