传说相关信息联盟的统一表示。

lol-dto的Python项目详细描述


Code style: black

LoL游戏DTO

传奇联盟游戏的统一数据传输对象。目前由Tolki、FatalElement和Kalturi开发。在

动机

传奇联盟的游戏信息可以有多种形式。最流行的来源是Riot的API,尤其是 MATCH-V4端点,它定义了自己的MatchDto 并将时间线与对象匹配。而其他信息来源可能遵循Riot的数据格式,要求 多个对象表示一个游戏,并且受Riot的数据格式的约束是不方便的。在

这就是为什么创造一个独特的,社区驱动的传奇联盟游戏数据的表现将有助于沟通 以及在开源项目中的团队合作。改进数据结构也将使数据更容易被新的 并将使现有库更易于维护。在

限制条件

  • 保留Riot API中的所有信息

  • 允许将外部信息(如角色)添加到对象中

  • 兼容多种编程语言

一般哲学

  • 我们试图遵守Google JSON Style Guide
  • 信息尽可能接近它所指的对象
    • 玩家特定信息直接位于player对象下
    • 团队范围的信息直接位于team对象下
  • 信息不重复
    • winnergame对象中只定义了一次
  • 字段名是连贯的,符合现代LoL命名法
    • 作为标识符的每个字段都以id结尾
    • cs或{}这样的字段使用当前的游戏词汇表(截至2020年6月)
    • 从游戏开始的所有持续时间都以秒为单位

null

null值只能用于未知信息。最佳实践是不要在 使它尽可能轻的物体。在

lol_dto

此存储库以TypedDict的形式托管python引用实现。在

TypedDict不强制约束,但会引发linter警告并允许ide自动完成字段名。在

另一个模块专注于将MatchDtoMatchTimelineDto转换为LolGamecan be found here。它 unit testsJSON examples 有助于更好地理解数据结构。在

棒棒糖DTO概述

game: dict
├── sources: dict
├── teams: dict
|   ├── uniqueIdentifiers: dict
│   ├── bans: list
│   ├── monstersKills: list
│   ├── buildingsKills: list
│   └── players: list
│       ├── uniqueIdentifiers: dict
│       ├── endOfGameStats: dict
│       │   └── items: list
│       ├── summonersSpells: list
│       ├── runes: list
│       ├── snapshots: list
│       ├── itemsEvents: list
│       ├── wardsEvents: list
│       └── skillsLevelUpEvents: list
├── kills: list
└── picksBans: list

游戏

  • sources表示给定数据源的此游戏的唯一标识符
    • "riotLolApi": { "gameId": 4409190456, "platformId": "KR" }
  • teams是一个键等于'BLUE'或{}的字典
  • kills直接出现在game对象的根,因为它们通过 killerIdvictimId、和{}
    • 我们必须依赖Riot API给出的任意participantId,因为:
      • 依赖championId使其与盲选不兼容
      • 依赖inGameName对Riot API中的MatchTimeline对象无效
  • picksBans代表全面挑选和禁止,主要用于电子竞技游戏

团队

  • bans是一个简单的列表,列出了被球队禁止的冠军。在
  • monsterKills和{}处于team级别,因为它们是团队范围内的
    • 它们都定义了自己的BuildingKillEvent和{}dto,它们与Riot的API非常不同
  • players只是在一个列表中,因为没有出现唯一键
    • roles不保证定义和唯一

玩家

  • id是指Riot API的participantId,不幸的是,它是连接不同对象的必要条件 从它身上
  • uniqueIdentifiers与{}相似,因为它代表了 指定数据来源
    • "riotLolApi": { "accountId": "3VcaXNMW8jq3adCqG0k0RPBaxoNL08NFXH_h4_2sKI_iEKw", "platformId": "KR" }
  • endOfGameStats表示仅在游戏结束时可用的统计信息,包括游戏结束{} 以及killstotalDamageDealtToChampions。。。在
  • snapshots是关于播放器的时间戳信息的列表,大多数是给定时间戳的gold和{}
  • itemsEvents是玩家的物品相关事件(购买、出售、撤销、销毁)
  • ^{54>玩家被摧毁了
  • skillsLevelUpEvents是玩家的技能升级事件

贡献

目前需要的捐款是:

  • 关于数据结构和字段名的反馈
  • 用其他编程语言实现数据结构
  • C函数将Riot API对象强制转换为LolGame DTO,因为多个语言可以绑定到它们

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库