亚搏网站技术实习生2020年:传说,TFT和Valorant联盟

骚乱实习计划通过将它们嵌入技术团队并使他们促进令人兴奋的技术项目,帮助技术参与者推动他们的专业增长。亚搏网站去年我们发表了我们的一些实习生的一篇文章,让读者一瞥项目技术实习生开始工作。我们今年正在进行随访,但有更多的部分来反映我们的新游戏。亚博论坛

有很多实习生兴奋地为这篇文章做出了贡献,即今年我们将在做一个2部分系列。实习书故事分类为类别 - 第一篇文章(这一个)包括所有模糊联盟,传说,TFT,&valorant.xinyabo体育app 专注于一般游戏技术和工具/基础设施

感谢今年夏天为他们的辛勤工作和优秀的项目提供所有实习生!

英雄联盟

魏张

角色:软件工程师

团队:LOL竞争力

嗨,大家好!我的名字是魏张。我在南加州大学学亚博论坛习游戏和计算机科学,追求硕士学位。今年夏天,我作为LOL竞争团队的软件工程师实习生。我的团队专注于提供高质量的竞争体验大声笑玩家。

我的这个实习的主要项目正在实施一个用户界面,提供有关排名游戏模式的介绍性信息,并列出每个层的赛季奖励结束。该设计由排名的高级文本摘要组成,描述了层/分部系统的可视图像,最后一款播放器可以导航以查看不同奖励的牌旋转卡。它还表示玩家的当前排名进展,并警告球员如果他们还在临时比赛。目标是通过使用此界面,玩家可以对当前排名的季节具有持久的参考。

联盟客户端UI在Ember.js的框架内运行,客户端前端包括表示不同功能/隔间的许多应用程序。应用程序分为“组件”,其包括与其特定应用相关的较小功能。我工作的排名参考模态是配置文件应用程序的一部分联盟客户端,提供播放器级别/层信息的概述。模态的实现利用了前端UI套件,这是由前端工程师开发的促进工具包程序,它提供了帮助函数和有用的模板来满足基本的UI需求。利用UI套件还可以确保模态的美学符合客户环境。

对我最有趣的部分是对细节的关注,并了解客户端如何与服务管道的其他部分通信。例如,Tier卡旋转木马需要一个玩家的排名和奖励信息,该信息由程序解释并动态加载到层卡UI上。

在努力工作联盟客户对我来说是一个令人迷人和开放的经验。在这个实习开始之前,我没有拥有大量的前端/网络客户开发经验,我也没有与Ember.js合作。在没有我的导师,我的团队和我的同龄人的帮助下,对这个新的技术堆栈和升高我的知识无法发生。公司文化蓬勃发展,可以在编码审查,日间互动和致力于建立良好可靠的产品/体验方面轻松感受到良好的态度。尽管2020年提出的各种困难,但这是一个真正的惊人和令人难忘的旅程,我将永远感激它。

Felix Guo.

角色:软件工程师

团队:冠军工程

大家好!我是菲利克斯“Arasseo”郭,我是滑铁卢大学的学生。今年夏天,我作为冠军工程团队的软件工程师实习生联盟。冠军工程团队负责制定制定冠军乐趣和令人兴奋所需的潜在技术,并从建立能够使任何冠军(塞纳)的系统有所不同实现不同的尺寸(Mordekaiser)。这涉及与各种底层系统进行交互联盟游戏引擎,帮助设计人员编写更高级别的脚本来管理每个冠军的法术和能力的交互。

今年夏天,我修复了与各种各样的冠军相关的错误,作为我们团队的错误修复项目的一部分。其中一些错误包括:调整奖金健康缩放以正常工作,适当地应用于Elise,正确地显示脉冲火灾和披萨交付Sivir等特殊皮肤的观众模式中的VFX。我还有机会为内部脚本工具构建一个颜色选择器对话框,以使设计人员更轻松地原型。

在工具工作之外,我有机会通过做一些脚本和剧本优化的一些新的上升冠军,这是超级令人兴奋的!在2020年的剩余时间和2021年开始,时间线上有一些非常有趣和有趣的冠军,我真的很高兴能够玩。

最后,我对煤矿建设时代进行了深刻的调查,并在内部网络包登记系统的重构中工作,更有效,更容易遵循,以及在陆小龙产卵时间中获得性能。随着年龄古老的说法,一切都被编码为一员。

悬崖朱

角色:软件工程师

团队:冠军工程

你好!Carnegie Mellon University的计算机科学学生,我是悬崖“Ig Baolan1”朱。今年夏天,我作为冠军工程团队的软件工程师实习生,拥有Felix。随着菲利克斯提到的,冠军工程团队写了代码,使冠军能够施放他们的能力。我们与设计师,艺术家和质量分析师合作开展新冠军发展周期。

在我实习的过程中,我修复了一堆是影响的游戏影响甚至正在影响的错误。For example, I made sure Rek'Sai empowered auto-attacks don't fizzle immediately after her ultimate cast, Lilia can E-flash, Lilia’s ultimate VFX doesn’t get hidden by large champion health bars, Darius empowered attacks deal the correct amount of damage to spell shields, and more. I also built tools to remove experience and manipulate levels on champions in internal testing builds to slow down playtests if needed.

除此之外,我必须在下赛季早期发布的一些新冠军。我曾在他们的能力之一上致力于游戏玩法和VFX显示的技术原型。

在技​​术工作之外,我对骚乱文化印象最深刻的印象。这里的每个人都是我们正在制作的产品的友好和支持性和极热情。我们互相建立的定期反馈和债券,我们正在努力继续制作英雄联盟比以往任何时候都好。

Alessio Symons.

角色:软件工程师

团队:Esports Digital

嘿,我是alessio“ysymons”的symons,我正在读书大学的学校在我学习计算机科学的地方。今年夏天,我作为Esports数字团队的软件工程师实习生。我的主要焦点正在研究与滴的功能,一个系统可以向所有观众向所有观众发出奖励的系统,观看lolesports.com上的流。

对于Drops,我致力于启用赞助商,可选择在某些位置的下降时显示他们的徽标。一些赞助商不希望他们的徽标叠加在艺术上。这导致我们目前正在运行的略有问题,因为我们将在Drop页面的多个区域中重用赞助商图像。为了解决这个问题,我们选择基于图像的位置上传要允许上传图像,而不是具有一般小/大图像。

这似乎是一个简单的“添加列并通过它”数据库更改。遗憾的是,由于已经启动了掉落,我们需要以没有打破当前丢弃的方式迁移从旧列的更改进入新列。因此,随着一些试验和错误,SQL和正在部署的许多服务,我们都能够将一些旧列重命名并将数据从旧列复制到新列以适应赞助商要求的新列。我们有一个名为Liquibase的工具,它允许我们顺序地将迁移应用于我们的数据库以获取一致性,并且迁移按顺序应用迁移。

总的来说,我觉得实习变得非常棒,我设法促成了esports数字团队拥有的一堆事情。我觉得在这个实习中向我提供的机会非常令人惊讶,在技术上挑战足够的挑战,即我能够看到自己在几个月的几个月内成长。

TFT.

Zhang.

角色:数据科学家

团队:联盟数据中心

嗨!我是芦苇,一个关于联盟数据中央(LDC)团队的数据科学实习生。我们处理与数据相关的项目英雄联盟Teamfight战术TFT.),和狂欢。LDC的工作包括直接影响播放器体验的系统,如匹配算法和你的商店。我的项目涉及做自然语言处理(NLP)TFT.移动应用程序评论。

TFT.手机有数百万下载,平均每天数百条点评。我的项目的目的是帮助了解这些评论的实际说明,帮助产品经理和分析师更容易消化球员情绪。我的项目有两个主要组成部分:

1.跟踪感兴趣的固定主题。

2.动态测试评论是否与任何新的人类生成的主题类似。

接近

我们使用的文字中的含义来自变压器的双向编码器表示(BERT),一个在大型文本语料库中预培训的NLP模型(主要是维基百科)。几乎所有BERT模型都被培训为文本分类器,但我们可以使用隐藏的图层作为嵌入向量(希望)代表文本所说的意义。这类似于Word2VEC,AutoEncoders以及用于学习嵌入的其他深度学习方法。通过良好的嵌入式模型,我们可以判断审查是否抱怨滞后,连接,游戏余额,或者通过比较其嵌入式可能感兴趣。

计算审查主题相似性

作为概念证明,我们有一个培训的BERT模型,以将文本分类为几个常见类别中的一个。使用关键字的存在标记这些类别,而该模型仅受到一般调查数据的培训联盟玩家。This got us part of the way there, but cosine similarity on the model’s embeddings was really imprecise for about half of the fixed topics we were interested in. We got noticeably better results after making a few key adjustments, like training the model using masked language modelling (which can be done unsupervised, unlike topic classification). We also includedTFT.- 特定的数据并尝试模型/嵌入参数。

实施

我们使用了伯特的Tensorflow实现抱怨。调整最终BERT模型在单个GPU Databricks集群上花了大约四个小时。我们设置了一个Tableau Dashboard,用于跟踪跨区域,时间和其他变量的固定主题的相似性。为了动态测试新主题,我们在DatabRick上写了一个脚本,读取Google纸张的输入并通过电子邮件发送结果。(最好在Web应用程序中服务模型,但我们在这里达到一些时间限制。)

Tableau仪表板的一部分

最后的想法

对我来说,实习的最酷部分是使用相当前沿的NLP方法,伯特,以制作有望帮助骚乱的东西满足需求TFT.玩家。我必须做一些很多研究来了解变形金刚和伯特背后的方法,但它感到有助于学习新的东西,然后在项目中使用它。我特别欣赏了学习和骚乱新事物的文化。例如,我的导师对让我尝试我认为看起来很有希望的东西,即使我们不确定他们是否努力。

Kallen Tu.

角色:软件工程师

团队:TFT游戏

嘿,我的名字是Kallen,今年夏天我是一名软件工程师TFT.游戏团队。我的团队通常在套装,特征和UI改进上工作。

我今年夏天的主要项目正在改善战斗回复功能TFT.。目前,战斗RECAP显示了球员在最近的战斗中损坏了他们的单位损坏。我的任务是在管道上,并在堵塞,盾牌和愈合造成损坏的情况下显示新的事件数据。这一新的抗击RECAP的增强将允许玩家根据防御和实用程序统计调整他们的Comps - 我的更改将居住在补丁10.20中。

在新的战斗回顾中,玩家将能够根据他们想要看到的统计数据来切换不同的模式。在攻击模式下,他们将能够看到损坏(物理,魔法,真实)。在防御模式下,他们可以看到损坏被阻止(物理,魔法,真实)和实用模式,他们会看到盾牌的数量,并治愈他们的单位授予。

此功能从事件系统侦听器中需要事件数据管道,这意味着当任何单位投射愈合或受到损坏时,将会将事件数据发送到战斗回复。数据被复制并传送到客户端,然后通过一个排序来确定它们将在屏幕上显示的顺序。在UI方面,还需要对新模式进行一些调整,例如新的工具提示字符串和栏颜色。还有一些生活质量变化,例如滚动或按钮转换,以便添加波兰语。

除了战斗回顾改进之外,我还能够做一些设计师工作,其中包括创建一个单位和即将到来的集合的几个特征。这项工作与典型工程相当不同,因为它也包括一定量的脚本。我非常兴奋,看看玩家的想法是什么!

我有机会与一个非常棒的团队合作,环境和文化令人难以置信的欢迎和包容性。骚乱的每个人都没有造成艰难的主题和解决出现的新问题。在看到骚乱者中,我对想要改善公司的骚乱并努力确保听到他们的声音,我一直印象深刻。我的实习TFT.团队一直是一个伟大的经历,我非常感谢今年夏天有机会在骚乱中实习。

Hensen Huynh.

角色:软件工程师

团队:TFT个性化

嗨,大家好!我的名字是Hensen Huynh,我今年在UC San Diego开始掌握计算机工程。今年夏天,我担任软件工程师实习生TFT.个性化团队。个性化是化妆品和其他化妆品的其他特色背后的团队TFT.如战舰,装载量(您选择您的物品),TFT.移动商店,抽搐奖励和其他游戏外功能。

我的项目专注于工作联盟客户端,我为Loadout添加了新功能和改进TFT.。我获得了各种不同的功能,我可以实施,不得不决定我想要解决它们的顺序。我在一些功能上工作,例如新的项目部分,最近获得的物品的发光,以及搜索栏。

新项目部分

这涉及我进入化妆品插件,该插件充当了Loadout的端点,并改变它,以便在检索信息时将购买日期保存到库存插件,然后在请求信息时将其发送到前端。一旦我在前端提供了这个信息,我就可以使用它来生成一个新的项目部分,其中最近获取的项目。

新项目突出显示

这里的并发症是我们无法确定项目是否是新的。额外的并发症是,我们希望这些物品保持突出显示,直到悬停在徘徊或关闭特定的装载标签(即小图例),然后用户注销。为确保我们准确捕获原木,我添加了一个新的端点,保存了上次打开了Loadout选项卡,并且不再被视为新的项目。然后,我们使用购买时间信息和最后一个打开的时间来确定是否应该突出显示项目。然后将该信息与项目数据对象一起发送到前端,其中它将跟踪在Loadut关闭之前追踪已悬停的内容。它关闭时,它会发送已在下次悬停的项目下次播放,因此它不会再次被认为是新的。

搜索栏

我在我的时间内完成的最后一个功能是搜索栏功能,允许您通过当前所在的无论如何搜索。最初,我通过每次执行搜索时完全重新填充Loadout来实现一个非常简单的解决方案。在代码审查期间,有人指出,这种方法昂贵,旧计算机上可以慢慢。这会提示我以依赖于各个项目的设置属性的解决方案重新实现它。在实现此解决方案的同时,我改变了现有过滤器(显示未显示的物品)的工作方式也使用此原则。这允许我们在将来轻松创建过滤系统,只需将其添加为额外的方法,该方法在确定是否显示项目的方法中。

我真的很喜欢在骚乱游戏中的时间,无法想象更好的远程实习体验。亚搏网页登录亚博论坛我的团队中的每个人都非常好,友好,让我觉得在小组的短时间内很欢迎。我真的很享受强调人们的重点。很惊讶地听到在不同学科中这么多人的故事。这让我非常感谢我周围每个人的多样化经历。

valorant.

肯塔塔特兰德拉

角色:软件工程师

团队:核心服务

你好!我的名字是Kenta“Kenbobernator”Tellambura,我是在艾伯塔大学学习的计算机工程学生。今年夏天,我从加拿大Edmonton的远程工作,作为核心服务团队的软件工程师实习生valorant.。核心服务团队为后端服务和游戏服务器的支持和构建功能工作valorant.奔跑。作为实习生,我才能先见证游戏的在线方面有多少,我有机会与一些让游戏进行的微服务合作。

valorant.后卫主要由单独的微服务组成,每个人都有自己的重要作用。我夏天在这些微型信息中添加了新功能和修复错误。致力于这些不同的组件中的每一个让我更好地了解他们如何共同努力。

实施第三方端点

虽然我有机会在少数不同的特征和错误修复上工作,但对我来说最有趣的是实施第三方终点之一valorant.。骚乱提供外部开发人员访问游戏统计数据的API。我的任务之一是建立一个终点,返回所有的匹配IDvalorant.比赛在最后一小时内。凭借纯粹的匹配数在一次,这最终比预期更困难。

在我们第一次迭代此功能中,我们旨在返回最后一小时的比赛。该计划是将第三方端点添加到我们的匹配详情服务,存储和处理已完成匹配的各种细节的服务。在匹配末尾的事件中,我们的微服务将存储Redis中的匹配ID,将匹配结束时间作为分数配对。背景循环将连续清除已过期的匹配ID。当查询访问最后一小时的匹配项时,我们只需从Redis获取匹配ID。任何第三方请求都必须通过第三方团队的服务进行路由,因此我们不必担心任何限速或认证问题。

我们的第一次迭代似乎在我们的开发环境中正常工作。结果快速返回,我们的服务并没有遇到任何性能问题或错误。但是,当我们使用带有负载测试的服务器时,在我们的预测速度模拟匹配结束事件的负载测试时,问题开始突然出现。在峰值上,返回的匹配ID列表最终为20到30兆字节!JSON响应将送到客户需要几秒钟,这不是我们可以使用的东西。这些缓慢的响应时间可以减缓整个服务,最终影响真正的球员!

我们最简单的解决方案是将我们的回复减少到10分钟的比赛。这让事情变得更加多。然而,这仍然是指请求是几兆的几兆,回应仍然花了太长的才能回归。为了解决这个问题,我们引入了对响应的压缩。现在,响应将作为Gzip文件而不是原始JSON BLOB返回。要将其关闭,压缩响应将被缓存并存储在内存中以减少我们的Redis数据库上的负载并加快响应时间。在进行这些变化后,我们再次运行负载测试,我们设法显着降低了响应时间和响应尺寸。最后,增加了更多的服务实例让我们到我们对负载测试结果感到满意的地步。

虽然这个项目起初似乎简单,但优化它来实现我们的性能目标是很有趣。它告诉我,即使是最简单的功能也是在建造数十万甚至数百万名球员时可能具有挑战性的。我在骚乱的时间被Covid-19缩短,但我设法的影响以及我获得的经验远远超过我预期的。到这段时间发布了,我的第三方端点应该生活,所以我希望你读的那些读这将有机会与它一起玩,并建立酷炫的东西。


查看我们的其他2020个实习生系列:

第I部分:联盟,TFT和Valorant(本文)

第二部分:xinyabo体育app

发表于魏章,菲利克斯郭,悬崖朱,奥塞奥·桑蒙,芦苇张,Kallen Tu,Hensen Huynh,Ken​​ta Tellambura