Hey,大家好!我是 Bill “LtRandolph” Clark,一名英雄联盟的游戏工程师。许多 Rioter 工程师关注大量的内容需要直接发送给玩家问题——这是两个我最近最喜欢的例子之一,包括最新的冠军Jhin及项目重构的支持。而我的团队使得这个过程变得又快有简单。

我们有一个简单的目标:即允许参加游戏试玩项目的暴民,能够创建两倍于任何给定的LoL(英雄联盟)补丁的内容。这说起来容易,但是执行起来却是一个充满挑战的任务。

今天,我们讨论实现这一目标我们所铺设的基础:Riot 游戏数据服务器(GDS)。虽然这是一篇技术文章,但是我会站在一个较高的层次来解释这个问题。如果你是一个在做多系统间传送数据工作的工程师,我希望这能让你特别感兴趣。

游戏数据:
首先,我们了解一些背景。在LoL的工作中,存在两种类型的游戏数据:一种是 key-value 对,被称为属性数据(如 Black Cleaver HP 奖金是300),另一种是不透明的二进制数据(如,大文本、动画和视频)。在这篇文章中,我们只讨论属性数据,二进制数据处理是未来潜在的一篇博文。

在LoL的所有历史中,属性数据由一堆松散、混乱的文件组成,这些文件存储在一个大的名为 DATA 的文件夹中。

早期,我们将数据存储在.ini的文件中(对,就是 Windows 下 .ini的文件格式)。类似如下所示:


没有漂亮的界面

当然,我创建这个例子是为了强调一些我们在编辑.ini文件时遇到的一些共同的问题。这离用户友的界面相差甚远。编辑原始文本时非常容易混乱——缺乏重要的内容,而其他字段又重复。设计者们每天不得不处理这种混乱,这里总共有 977 种法术,这些功能(当然忽略)位于“MissileEffect=AnnieBasicAttack_mis.troy”行中,在很早的LoL开发中,每个冠军涉及一个令人愉快的场景:“Death=Cardmaster_Death.wav。”

下面是当前数据系统面临的一些关键问题:

1、使用 Notepad++ 来编辑属性数据
2、对已存在的字段没有清晰的定义
3、缺乏类型安全
4、多人同时编辑同一个文件时会有合并冲突问题

………………………………

请查看全文>>


看了又看:

小偷被抓叫嚣:我不偷警察没饭吃

什么样的电脑配置比较适合开发?效率更高

李开复:我在硅谷看到的最前沿科技趋势

程序员如何在北京买套房,十大赚钱技巧


雄联盟工程师独家分享:如何使开发更有效率相关推荐

  1. 万万没想到 I 这 7 件超酷的事情,让开发更有效率

    为什么80%的码农都做不了架构师?>>>    码云作为国内顶尖的代码托管与协作开发平台,已经得到很多大公司和项目的青睐,比如 JFinal.SequoiaDB(巨杉数据库).Sha ...

  2. 独家 | 使EfficientNet更有效率的三种方法(附链接)

    作者:Dominic Masters翻译:王可汗校对:欧阳锦本文约3300字,建议阅读5分钟本文为大家介绍了提升EffcientNet效率和性能的三个策略. 在实践中有更好性能的EfficientNe ...

  3. ios之Xcode 快捷键大全/使开发更高效

    其实就是设置里面的快捷键变成了文字版,刚开始用Xcode是不是发现以前熟悉的开发环境的快捷键都不能用了?怎么快捷运行,停止,编辑等等.都不一样了.快速的掌握这些快捷键,能提供开发的效率. 其实快捷键在 ...

  4. 如何使keystone更有效率

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面-- 最近在测试OpenStack Havana RDO版本的时候,发现过一段时间后,整个平台会变动的越来越慢.刚刚开 ...

  5. python-使用字典使Fibonacci更有效率

    原代码: def fib(n): if n == 1: return 1 elif n == 2: return 2 else: return fib(n-1)+fib(n-2) 改进后: def f ...

  6. 分享]基于Web开发资料专集

    分享]基于Web开发资料专集 [这个贴子最后由huili46在 2006/02/17 04:17pm 第 4 次编辑] 本专集包含的内容如下: [color=#008B8B] 网页设计制作标准规范 [ ...

  7. 从业十余年的阿里工程师告诉你,敏捷开发的核心是什么?

    [数据猿导读] 工程师如何在控制性和创造性中找到平衡点?生产的严谨和创造的不严谨性怎么解决?来自阿里IoT事业部,具有超过10年无线通信行业从事技术研发工作的陶震,为您解答 作者 | 陶震 官网 | ...

  8. web前端技术分享:前端开发与后端开发的区别是什么?

    相信很多人在技术岗都听到过前端和后端这两个职位,但是大部分人对前端开发与后端开发的区别是什么?并不是很清楚,下面小千就为大家详细的介绍一下两者的区别之处. web前端分享:前端开发与后端开发的区别是什 ...

  9. 【华为云技术分享】AI 开发路漫漫,什么才是真正的极客精神?

    摘要:AI开发看上去很美,实践起来却不是一件容易的事.一个聪明的开发者知道借助工具提升开发效率,一个智能的平台则会站在开发者的立场,为用户提供贴心服务. "理想很丰满,现实很骨感." ...

最新文章

  1. 传统存储方式_分布式存储 vs 传统SAN、NAS 的优缺点分析
  2. 【转】C# DataTable使用方法详解
  3. 在没有数据集的情况下使用数据表
  4. Spring之AOP实现
  5. 理解 C++ 的 Memory Order 以及 atomic 与并发程序的关系
  6. params参数的调用
  7. mysql的时间在cmd的输入格式_获取“System.FormatException:输入字符串的格式不正确。”在日期时间对象插入到MySql数据库...
  8. cmd 命令 之 dir 之 强化使用
  9. java 利用Future异步获取多线程任务结果
  10. 博客开通,以后大家多来玩啊!
  11. 经典排序算法(二十)--Strand Sort
  12. 达内java1707第一阶段_达内Java就业班学习路线图(附视频教程)
  13. 佳能mp288清零软件,非常好用@
  14. 谷歌浏览器安装JSON格式化插件
  15. DEV中右键菜单如何只在非空单元格上显示?
  16. 使用PHP编写的基于MySQL博客模板-可直接使用
  17. DM642的PCI驱动编程笔记:缺页中断问题阐述以及与改变中断级相关的内核函数
  18. 重装win10遇到的坑
  19. CTSC1999补丁VS错误题解
  20. 斗地主(按照顺序给玩家发牌)

热门文章

  1. 最好的笔记本散热器:袋装牛奶
  2. 猿如意|IntelliJ IDEA Ultimate
  3. 电商创业项目:如何打造一个成功的电商平台
  4. Tomcat部署多个war包
  5. linux系统的启动过程 5个步骤,第5章 Linux系统启动过程.ppt
  6. PostgreSQL 数据库备份与恢复介绍
  7. 关注流动儿童心理健康,这场亲子营游学活动很“有爱”
  8. 逆矩阵(inverse matrix)的概念及其意义
  9. 中国电信收购联通C网预案准备已经就位
  10. [设计点评]湖南卫视国际频道的优酷视频空间