传说相关信息联盟的统一表示。
lol-dto的Python项目详细描述
LoL游戏DTO
传奇联盟游戏的统一数据传输对象。目前由Tolki、FatalElement和Kalturi开发。在
动机
传奇联盟的游戏信息可以有多种形式。最流行的来源是Riot的API,尤其是 MATCH-V4端点,它定义了自己的MatchDto 并将时间线与对象匹配。而其他信息来源可能遵循Riot的数据格式,要求 多个对象表示一个游戏,并且受Riot的数据格式的约束是不方便的。在
这就是为什么创造一个独特的,社区驱动的传奇联盟游戏数据的表现将有助于沟通 以及在开源项目中的团队合作。改进数据结构也将使数据更容易被新的 并将使现有库更易于维护。在
限制条件
- 在
保留Riot API中的所有信息
在 - 在
允许将外部信息(如角色)添加到对象中
在 - 在
兼容多种编程语言
在
一般哲学
- 我们试图遵守Google JSON Style Guide
- 信息尽可能接近它所指的对象
- 玩家特定信息直接位于
player
对象下 - 团队范围的信息直接位于
team
对象下
- 玩家特定信息直接位于
- 信息不重复
winner
在game
对象中只定义了一次
- 字段名是连贯的,符合现代LoL命名法
- 作为标识符的每个字段都以
id
结尾 - 像
cs
或{}这样的字段使用当前的游戏词汇表(截至2020年6月) - 从游戏开始的所有持续时间都以秒为单位
- 作为标识符的每个字段都以
null
null
值只能用于未知信息。最佳实践是不要在
使它尽可能轻的物体。在
lol_dto
此存储库以TypedDict
的形式托管python
引用实现。在
TypedDict
不强制约束,但会引发linter警告并允许ide自动完成字段名。在
另一个模块专注于将MatchDto
和MatchTimelineDto
转换为LolGame
can
be found here。它
unit tests
和JSON 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
对象的根,因为它们通过killerId
、victimId
、和{} - 我们必须依赖Riot API给出的任意
participantId
,因为:- 依赖
championId
使其与盲选不兼容 - 依赖
inGameName
对Riot API中的MatchTimeline
对象无效
- 依赖
- 我们必须依赖Riot API给出的任意
picksBans
代表全面挑选和禁止,主要用于电子竞技游戏
团队
bans
是一个简单的列表,列出了被球队禁止的冠军。在monsterKills
和{}处于 team
级别,因为它们是团队范围内的- 它们都定义了自己的
BuildingKillEvent
和{}dto,它们与Riot的API非常不同
- 它们都定义了自己的
players
只是在一个列表中,因为没有出现唯一键roles
不保证定义和唯一
玩家
id
是指Riot API的participantId
,不幸的是,它是连接不同对象的必要条件 从它身上uniqueIdentifiers
与{}相似,因为它代表了 指定数据来源 "riotLolApi": { "accountId": "3VcaXNMW8jq3adCqG0k0RPBaxoNL08NFXH_h4_2sKI_iEKw", "platformId": "KR" }
endOfGameStats
表示仅在游戏结束时可用的统计信息,包括游戏结束{} 以及 kills
,totalDamageDealtToChampions
。。。在snapshots
是关于播放器的时间戳信息的列表,大多数是给定时间戳的gold
和{} itemsEvents
是玩家的物品相关事件(购买、出售、撤销、销毁)- ^{54>玩家被摧毁了
skillsLevelUpEvents
是玩家的技能升级事件
贡献
目前需要的捐款是:
- 关于数据结构和字段名的反馈
- 用其他编程语言实现数据结构
- C函数将Riot API对象强制转换为LolGame DTO,因为多个语言可以绑定到它们
- 项目
标签: