开发电竞竞猜产品如设计赔率模块?
本文由火星电竞产品顾问Alan原创
电竞!棋牌行业后的下一个大风口?
自从官方明令禁止德州扑克、腾讯等公司全面下架彩票玩法后,棋牌游戏也批不下来新的游戏版号,大量的棋牌行业企业面临转型。而同时在竞技领域 英雄联盟全球总决赛的观看人数超过了NBA总决赛的观看人数。在这背后是由于社会的转型和发展,导致年轻群体热衷与电子游戏,王者荣耀在活跃人数已经在上亿级别,大量的年轻群体只接触电竞,接触体育较少,电竞背后的巨大流量和潜力也开始被资本关注。
可能由于这个原因 大量棋牌行业从业者 开始入局电竞,但是呢基本上所有人都不懂电竞怎么做,包含那些元素,层级关系是怎么样的,怎么设计数据结构和数据库表
本文我们主要是来将一下 电竞产品的核心数据模块怎么设计
一、数据结构
赛事(Series)
意甲代表联赛事件的发生。 欧盟LCS联赛每年有两个赛事:2017年春季,2017年夏季,2016年春季,2016年夏季等。
比赛(match)
两个战队对战构成一场比赛,一场比赛又分为好几局,如bo5的意思为5局3胜 在2017年夏季举行的欧洲LCS中,A组的比赛是:G2 vs FNC,MSF vs NIP等。
小局(game)
一场比赛bo5分为5个小局,第一局,第二局等等
1.3.1 基础数据的数据结构
基础数据有游戏、赛事、比赛、战队、玩法等5项数据
基础数据定义一些固定的数据,比如比赛 RNG vs EDG 中含有战队RNG,战队RNG的ID是永远不会变的
比赛 RNG vs EDG 下的全场胜负玩法中含有基础玩法全称胜负,基础玩法全称胜负的ID是永远不会变的
1.3.2 胜率数据的数据结构
胜率数据在具体某一场比赛下,即比赛详情接口,比赛详情下就是这场比赛的玩法数据
玩法所属的基础玩法有个层级字段对应玩法属于那个层级的 全场/第1局/第n局
基础玩法放到具体某一场比赛下就可以组成一个玩法,玩法ID,基都是不同的,础玩法的ID是不变的
二、核心数据框架
2.1 数据概述
整个电竞竞猜 由基础数据和实时胜率数据组成
基础数据:游戏、赛事、战队、基础玩法、比赛
实时胜率数据:实时的玩法数据和选项胜率数据
2.2 数据获取方式
自己去写爬虫,或者直接接第三方写好的数据(例如https://www.marzsport.cn/)
通过接websock接收第三方数据和定时请求的方式去获取数据。
举例:胜率实时推送
{"channel":"odds", //数据类型(odds胜率)
"data":{"event":"update", //事件(数据更新)"data":[{"id":15178, //选项ID"match_id":202, //比赛ID"odds":"2.27", //实时胜率"last_update":"1607882993", //最近更新时间"status":1 //选项状态(1开、2锁、4封、5结算、99取消)}]
}
}
三、数据字段设计
3.1 游戏数据
游戏接口设计{"id": 1, //游戏ID"name_cn": "DOTA2", //游戏中文名"name_en": "DOTA2", //游戏英文名"tag": "DOTA2", //简称"logo": "XXXXXX" //游戏logo}
3.2 赛事数据
赛事数据设计
{"id": 22, //赛事ID"game_id": 6, //所属游戏ID"name_cn": "ESEA MDL北美 - 保级赛", //赛事中文名"name_en": "ESEA MDL North America Relegation", //赛事英文名"logo": "XXXXXXXXX" //赛事logo
}
3.3 战队数据
战队接口设计
{"id": 8, //战队ID
"game_id": 1, //所属游戏ID
"name_cn": "VG", //战队中文名
"name_en": "Vici Gaming", //战队英文名
"logo": "XXXXXXXXXXXXXXX" //战队logo
}
3.4 基础玩法数据
基础玩法数据设计
{"id": 3, //游戏ID"name_cn": "英雄联盟", //游戏中文名"name_en": "LOL", //游戏英文名"tag": "LOL", //游戏简称"logo": "xxxxxxx", //游戏logo"group_count": 132, //基础玩法数量"groups": [{"id": 133, //基础玩法ID"game_id": 3, //所属游戏ID"name_cn": "获胜者", //玩法中文名"name_en": "Winner" //玩法英文名"match_stage": "final", //玩法层级(全场final、第x局mapx或者rx,篮球:q1第1节,1st上半场)"sort_index": 380000, //玩法排序(数字大在前)"tag": "win" //玩法类别(胜负类win、)"value": "" //玩法value值(只有dhp和ou类型的玩法 有值其他为空) }]
}
3.5 比赛数据
比赛模块接口示例:
{"id": 107, //比萨赛ID"bo": 3, //bo"status": 2, //比赛赛状态"start_time": "2020-12-10 17:23:00", //开始时间"end_time": "2020-12-10 21:08:00", //结束时间"start_time_stamp": 1607592180, //开始时间"end_time_stamp": 1607605680, //结束时间"win_team": 277, //获胜队伍ID"odds_type": 55, //玩法类型(赛中玩法中、会开赛中玩法、赛前)"name_en": "PSG.LGD - VS - Elephant", //系列赛名称英文"name_cn": "PSG.LGD - VS - Elephant", //系列赛名称中文"game_id": 1, //游戏ID"live_url": "xxxxxx.m3u8", //直播流地址"series": { "id": 4, //赛事ID"name_en": "OGA Dota PIT China", //赛事英文名 "name_cn": "OGA Dota PIT - 中国", //赛事中文名"logo": "xxxxxxxxx" //赛事logo},"teams": [{"team_id": 275, //战队ID"score": 0, //大比分"index": 2, //左右边(1左边、2右边)"team": {"id": 275, //战队ID"name_cn": "Elephant", //战队中文名"name_en": "Elephant", //战队英文名"logo": "XXXXXXXXXXXX" //战队logo}},{"team_id": 277,"score": 1,"index": 1,"team": {"id": 277,"name_cn": "PSG.LGD","name_en": "PSG.LGD","logo": "XXXXXXXXxx"}}]
}
3.6 盘口胜率数据
{"id": 23, //比赛ID"bo": 3, //bo数据"status": 3, //比赛状态(1未开始、2进行中、3已结束、-1隐藏状态、99取消)(状态为隐藏的比赛无可下盘,建议前端隐藏)"start_time": "2020-12-09 18:00:00", //开始时间"end_time": "2020-12-10 00:00:00", //结束时间"start_time_stamp": 1607508000, //开始时间"end_time_stamp": 1607529600, //结束时间"win_team": 45, //获胜队伍ID"odds_type": 55, //比赛玩法状态(54赛前、55、赛中玩法中、56会开赛中玩法)(赛中玩法中:比赛正在开赛中玩法,会开赛中玩法:比赛会开赛中玩法,赛前:比赛不开赛中玩法)"name_en": "Colorful - VS - Fortitude", //比赛英文名"name_cn": "Colorful - VS - Fortitude", //比赛中文名"game_id": 21, //游戏ID"live_url": "XXXXXXm3u8", //直播流地址"series": { "id": 15, //赛事ID"name_en": "DreamHack Open Asia", //赛事英文名"name_cn": "DreamHack公开赛 - 亚洲", //赛事中文名"logo": "xxxxxxx.png" //赛事logo},"teams": [{"team_id": 44, //队伍ID"score": 0, //队伍比分"index": 2, //左右队(1左队,2右队)"team": {"id": 44, //队伍ID"name_cn": "Fortitude", //队伍中文名"name_en": "Fortitude", //英文名"logo": "xxxxx" //队伍logo}},{"team_id": 45,"score": 2,"index": 1,"team": {"id": 45,"name_cn": "Colorful","name_en": "Colorful","logo": "xxxxxs"}}],"handicap": [{"id": 393, //玩法ID"match_id": 480, //所属比赛ID"group_id": 480, //基础玩法ID"name_cn": "获胜者", //玩法中文名"name_en": "Winner", //玩法英文名"match_stage": "map1", //玩法层级"sort_index": "280000", //玩法排序"tag": "win", //玩法类型"value": "", //玩法value值"status": "5", //玩法状态"odds":[{"id": 39566, //选项ID"game_id": 1, //游戏ID"match_id": 480, //所属比赛ID"status": 5, //选项状态(1开、2锁、4封、5结算、99取消)"name_en": "Team Rockets", //选项英文"name_cn": "Team Rockets", //选项中文"team_id": 539, //相关队伍ID"odds": "1.33", //实时胜率"enable_parlay": 1, "limit": [10, 5000] //最小、最大限制0: 101: 5000"win": 1 //选项是否为答案(1是、0不是、-1待定)},{"id": 39567,"game_id": 1,"match_id": 480,"status": 5,"name_en": "Hot Pot Brother","name_cn": "Hot Pot Brother","team_id": 540,"odds": "3.14",0,"enable_parlay": 0,"limit": [10, 5000] //最小、最大限制0: 101: 5000"win": 0}]}]
}
四、玩法相关常
- 为什么会有名称相同的玩法?
玩法归属与游戏下,不同游戏玩法不同
玩法归属在玩法层级下,不同层级玩法都不同,例如全场胜负、第一局胜负和第2局胜负是不同玩法
让分类玩法名称都是让分,但value不同意义不同,是不同的玩法
2. 部分玩法中的$T2是什么意思?
T1指对阵左队team1,T1指对阵左队team1 ,T1指对阵左队team1,T2指team2,玩法是基础数据,T1和T1和T1和T2应用到具体某一场比赛中取具体名称,例如玩法第二局$T2击杀数,应用到比赛SKT vs EDG 时,玩法名称就为第二局EDG击杀数
3.关于value详细解释
只有hdp和ou类别的玩法value字段有值,其他都是空
hdp:让分类别,value2.5有+2.5和-2.5两种,
让分玩法value: “+2.5”(value: "+2.5,代表选项1:T1+2.5,选项2:T1 +2.5,选项2:T1+2.5,选项2:T12-2.5)
让分玩法value: “-2.5”(value: "-2.5,代表选项1:T1−2.5,选项2:T1 -2.5,选项2:T1−2.5,选项2:T12+2.5)
ou:大小类别
大小玩法value: “2.5”(value: "2.5,代表选项1:大于>2.5,选项2:$T12+2.5))
开发电竞竞猜产品如设计赔率模块?相关推荐
- 暴惠款疾风电竞屏144Hz以及240Hz刷新率的显示器是什么感受
自进入六月以来,大家就不约而同地开启了618"买买买"模式,只要功课做得好,好物四舍五入就等于不要钱!由于今年全民宅家线上消费,促使了这次618在规模上要比往年更大一些,优惠因此也 ...
- 竞彩足球混合过关赔率API调用示例代码
<?php // +---------------------------------------------------------------------- // | 竞彩足球混合过关赔率A ...
- 竞彩足球混合过关赔率API调用示例代码2020版
$user = 'smmz'; $secret = '2e54c7eae2c5a6c01'; //竞彩足球混合过关数据 // +------------------------------------ ...
- python爬虫之使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率
目录 前言 分析思路 数据储存 代码 结果展示 结语 前言 竞彩足球是目前比较受欢迎的一种体彩彩种,玩法较为灵活多样,赔率可观,今天就来记录一下如何抓取竞彩足球的开奖信息和赔率. 分析思路 我使用的网 ...
- 电商网站产品数据库设计
2.平常设计的话都会把产品的属性放到产品表,比如颜色.规格.尺码等.不过我把属性单独拿出两张表,一张表存属性名,一张表存属性值. 3.本来考虑要品牌表的,但是后来想想品牌可以放到属性表里,把产品当成一 ...
- Web前端期末大作业--响应式电竞博客网页设计(HTML+CSS+JavaScript)实现
- RNGUZI疑是玩电竞竞猜的APPO(∩_∩)O哈哈~APP?QQ是什么让他输?qun是放水吗?还是身体不适91435456?
LOL是一款全民游戏,已经蔓延到全球了,对于越来越火热的游戏,就有越来越多的人出来钻漏子了,其中最为可怕的就是UZI失冠,很多都觉得打假赛,也有人说是去买RNG输 ,然后自己捞一笔,这些都是不可否定的 ...
- 电商产品设计实战(二):电商整体产品架构
http://www.aoyii.com/ecm-pd-02.html 电商产品架构是整个电商数字系统的基本框架,它代表了这个虚拟数字世界的游戏规则,也反映出了电商企业的商业核心战略,一个好的电商产品 ...
- 开发类似比心的电竞社交类约玩陪玩app,前景如何
曾经,学校门口流动摊位上的海报,个个都是知名明星的脸,现在,游戏人物从中占有一席之地,不仅仅是海报,尺子.笔袋.书签甚至橡皮包装上都印有游戏人物的图案,坐公交时,也常有大叔抱着手机打个不停,中国电竞市 ...
最新文章
- java dexclassloader_DexClassLoader加载apk
- 在ubuntu14.04中安装搜狗输入法
- Net任意String格式转换为DateTime类型
- Apocalypse Someday(POJ-3208)
- PyTorch入门-词向量
- 【Elasticsearch】es 7 Failed to parse value [analyzed] as only [true] or [false] are allowed
- Arcgis Javascript那些事儿(七)--AMD详解
- dirent.h和dirent.c下载
- matlab 添加文本框textbox
- 树莓派Python读取DHT11温湿度数据
- KVM#TyporaKVM虚拟机笔记
- 腾讯校招都会问些什么?| 五面腾讯(Java岗)经历分享
- Hive实现获取指定月的第一天和最后一天
- 在线 Python运行工具
- 外星人电脑装linux双系统,在外星人电脑上安装windows10和ubuntu16.04双系统小记
- java实时获取窗口大小_把游戏窗口的大小改变为640 X 480?
- 0202插入删除-算法第四版红黑树-红黑树-数据结构和算法(Java)
- RGCF:Learning to Denoise Unreliable Interactions forGraph Collaborative Filtering论文解读
- 计算机快捷键任务管理器,任务管理器快捷键,教您win10怎么打开任务管理器
- 线性方程组的直接法——约当消去法