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

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

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

Thanks to all our interns for their hard work and excellent projects this summer!

英雄联盟

魏张

角色:软件工程师

团队: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.

Aside from that, I got to work on some new champions that will be released early next season. I worked on the tech prototype for gameplay and VFX display for one of their abilities.

Outside of tech work, I’m most impressed by Riot’s culture. Everyone here is friendly and supportive and highly passionate about the product we are making. With regular feedback and bonds we build with each other, we’re working to keep making英雄联盟比以往任何时候都好。

Alessio Symons.

角色:软件工程师

团队:Esports Digital

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

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

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

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

TFT.

Zhang.

角色:数据科学家

Team: League Data Central

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

TFT.mobile has millions of downloads and averages several hundred reviews per day. The purpose of my project was to help understand what these reviews are actually saying, helping product managers and analysts more easily digest player sentiment. There were two main components of my project:

1. Tracking fixed topics of interest.

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.-specific data and experimented with model/embedding parameters.

执行

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

Tableau仪表板的一部分

Final Thoughts

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

Kallen Tu.

角色:软件工程师

团队:TFT游戏

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

我今年夏天的主要项目正在改善战斗回复功能TFT.。Currently, the combat recap shows the player how much damage their units dealt in the most recent battle. My task was to pipe in and display new event data on damage blocked, shields, and heals. This new enhancement to combat recap would allow players to adjust their comps based on defensive and utility stats - and my changes will be live in patch 10.20.

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

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

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

我有机会与一个非常棒的团队合作,环境和文化令人难以置信的欢迎和包容性。骚乱的每个人都没有造成艰难的主题和解决出现的新问题。在看到骚乱者中,我对想要改善公司的骚乱并努力确保听到他们的声音,我一直印象深刻。我的实习TFT.team has been a great experience and I’m extremely grateful to have had the opportunity to intern at Riot this summer.

Hensen Huynh.

角色:软件工程师

团队:TFT个性化

嗨,大家好!My name is Hensen Huynh and I am starting my master’s in computer engineering at UC San Diego this year. This summer I worked as a software engineer intern on theTFT.个性化团队。个性化是化妆品和其他化妆品的其他特色背后的团队TFT.如战舰,装载量(您选择您的物品),TFT.移动商店,抽搐奖励和其他游戏外功能。

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

新项目部分

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

新项目突出显示

这里的并发症是没有良好的way for us to determine whether or not an item was new. An additional complication was that we wanted the items to remain highlighted until it was hovered over or if the specific loadout tab (i.e Little Legend) was opened and then the user logged out. To ensure we were accurately capturing log outs, I added a new endpoint that saves the last time that loadout tab is opened and items that should no longer be considered new. We then use the purchase time information and the last opened time to determine whether or not an item should be highlighted. This information is then sent along with the item data object to the frontend where it will keep track of what has been hovered over until the loadout closes. When it closes, it then sends the items that have been hovered over so the next time it won’t be considered new again.

搜索栏

这last feature that I was able to complete during my time here was the search bar feature that allows you to search through whatever loadout tab you are currently in. Initially, I implemented a really simple solution by completely repopulating the loadout everytime a search was performed. During code review, it was noted that this method is expensive and can be slow on older computers. This prompted me to reimplement it with a solution that relies on setting attributes on the individual items. While implementing this solution, I changed how the existing filter (show unowned items) worked to also use this principle. This allows us to easily create a filter system in the future by just adding it as an additional check in the method that determines whether or not an item is shown.

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

valorant.

肯塔塔特兰德拉

角色:软件工程师

团队:核心服务

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

valorant.’s backend primarily consists of microservices written in Go, each with their own important role. I spent my summer working on adding new features and fixing bugs in these microservices. Working on each of these different components gave me a better understanding of how they all work together.

实施第三方端点

While I had the opportunity to work on a handful of different features and bug fixes, what was most interesting for me was implementing one of the third party endpoints forvalorant.。骚乱提供外部开发人员访问游戏统计数据的API。我的任务之一是建立一个终点,返回所有的匹配IDvalorant.比赛在最后一小时内。凭借纯粹的匹配数在一次,这最终比预期更困难。

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

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

Our easiest solution was to cut down our response from 1 hour to 10 minutes of matches. This made things far more doable. However, this still meant the request was several megabytes and the response was still taking too long to return. To solve this, we introduced compression to the response. The response would now be returned as a gzip file instead of a raw JSON blob. To top it off, the zipped response would be cached and stored in-memory to reduce the load on our Redis database and speed up the response time. After making these changes, we ran the load test again and we managed to reduce our response time and response size significantly. Finally, adding a few more instances of the service got us to the point where we were happy with our load testing results.

虽然这个项目起初似乎简单,但优化它来实现我们的性能目标是很有趣。它告诉我,即使是最简单的功能也是在建造数十万甚至数百万名球员时可能具有挑战性的。我在骚乱的时间被Covid-19缩短,但我设法的影响以及我获得的经验远远超过我预期的。到这段时间发布了,我的第三方端点应该生活那so I hope those of you reading this will have a chance to play around with it and build something cool.


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

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

第二部分:xinyabo体育app

Posted by Wei Zhang, Felix Guo, Cliff Zhu, Alessio Symons, Reed Zhang, Kallen Tu, Hensen Huynh, Kenta Tellambura