Honor of Kings 数 据 分 析
1.项目背景
《王者荣耀》作为腾讯公司的重要产品之一,是一款5V5团队公平竞技手游,已成为国际范围内最受欢迎的MOBA手游之一。自从它在移动设备上推出以来,便吸引了数以百万计的玩家,构建了一个庞大的社交和竞技游戏生态系统。
截止目前,游戏已经拥有超过106个英雄角色,这些英雄涵盖了不同的职业定位,如坦克、战士、刺客、法师、射手和辅助。每个英雄都拥有独特的技能和特点,这使得游戏变得多样化和复杂。《王者荣耀》的玩家社群不断壮大,其中既包括了新手玩家,也包括了专业电竞选手。
随着游戏的不断发展,玩家对于英雄数据的需求也逐渐增加。他们希望能够更深入地了解每个英雄的性能、胜率、地区差异和战斗表现。这种深入了解不仅有助于提升玩家的游戏技能,还可以为游戏开发者提供有价值的数据,以进行游戏平衡调整和改进。
这个项目的目标是为《王者荣耀》玩家和开发者提供一个全面的英雄数据平台,使他们能够更轻松地获取、分析和应用英雄相关的信息。通过系统的数据分析和可视化功能,玩家可以优化他们的游戏策略,提高竞技水平,而游戏开发者可以依靠这些数据做出更明智的决策,以持续改进游戏的质量和平衡性。这个项目的意义不仅体现在提升游戏体验上,还有助于推动《王者荣耀》作为一款竞技电竞游戏的发展和壮大。
2. 系统开发意义
数据分析与处理在《王者荣耀》这款备受欢迎的MOBA手游中具有重要意义。本系统的开发不仅对于玩家个人而言有着深远的意义,也对整个游戏生态系统和游戏开发者有着重要的影响。:本系统的数据分析和处理主要围绕王者荣耀游戏中的英雄数据展开,包括但不限于英雄热度、胜率、bp率等。
2.1 个人层面的意义:
(1)提高游戏表现:通过本系统提供的英雄数据分析,玩家可以更全面地了解每位英雄的强弱和适用场景。这将使他们能够做出更明智的英雄选择,制定更有效的战略,从而提高在游戏中的表现。
(2)加强竞技体验:本系统的数据分析功能有助于提高玩家的竞技水平,帮助他们更好地理解英雄的胜率趋势和战术变化。这不仅会增加游戏的趣味性,还可以促进更有竞技精神的游戏社区的形成。
2.2 整个游戏生态系统的意义:
(1)促进游戏平衡:通过收集和分析大量的英雄数据,本系统可以为游戏开发者提供宝贵的信息,有助于他们更好地进行英雄平衡调整。这将有助于确保游戏中的英雄都有机会被玩家使用,减少不平衡和不公平的情况。
(2)提高玩家参与度:有了本系统,玩家可以更深入地了解游戏中的英雄,这可能会引发更多的探索欲望,增加游戏的长期参与度。这对于游戏的长期健康和生存至关重要。
(3)数据驱动游戏开发:本系统收集的数据不仅可以用于英雄平衡,还可以为游戏开发者提供关于玩家行为和偏好的见解。这有助于更精确地制定游戏更新和改进策略,以满足玩家的需求。
总之,本系统的开发不仅对于玩家在游戏中获得更好体验有着直接影响,还在更大范围内促进了《王者荣耀》作为一款竞技游戏的长期成功和发展。它为玩家提供了强大的工具来提高他们的游戏技能,同时也为游戏开发者提供了宝贵的反馈和改进机会。
3. 系统功能需求
3.1系统主要功能
(1)查看英雄数据: 系统将提供一个易于访问的英雄数据库,允许用户检索各个英雄的详细信息。这些信息包括但不限于热度、胜率、bp率、战力、技能效果、皮肤和背景故事等方面的数据。用户可以根据不同的标准(如版本、地区、英雄类型等)来进行搜索和过滤,以获取最相关的信息。
(2)数据分析与可视化: 系统将提供强大的数据分析工具,用户可以使用这些工具深入挖掘英雄数据。用户可以生成图表、统计数据和趋势分析,以更好地理解英雄的性能和演化。可视化功能将包括直方图、折线图、雷达图等,以便用户可以以直观的方式比较不同英雄之间的数据。
(3)英雄推荐: 系统将基于数据分析结果提供个性化的英雄推荐。用户可以输入他们的游戏偏好和风格,系统将根据这些信息推荐最适合的英雄。推荐将考虑用户的技能水平、游戏版本、队伍构成等因素,以确保英雄的选择最符合用户的需求。
(4)地区和版本比较: 用户将能够轻松比较不同地区和游戏版本中英雄的性能。系统将提供地区和版本选择功能,允许用户查看不同地区或版本中英雄数据的变化。这将有助于玩家更好地适应不同的游戏环境和战术要求。
(5)数据导出和分享: 系统将支持用户将数据导出为可分享的格式,如PDF或CSV。这样,用户可以保存自己感兴趣的数据、与其他玩家分享分析结果,或将数据用于其他目的,如社交媒体分享或战术讨论。
(6)用户反馈和报告: 用户将能够提供反馈和举报不准确或有问题的数据。系统将提供一个用户反馈渠道,以确保数据的准确性和完整性,并及时修复任何错误。
3.2系统用例分析
3.2.1系统用例图
3.2.2关键用例的详细描述
| 用例名称 | 进入王者荣耀推荐网页 |
|---|---|
| 参与者 | 用户 |
| 描述 | 用户通过浏览器进入系统,查看英雄的相应信息,例如,高胜率英雄推荐、英雄ban位饼状图、英雄热度柱状图等内容。 |
| 用例名称 | 进入王者荣耀推荐网页 |
|---|---|
| 参与者 | 用户 |
| 描述 | 用户通过浏览器进入系统,查看英雄的相应信息,例如,高胜率英雄推荐、英雄ban位饼状图、英雄热度柱状图等内容。 |
| 主干过程 | 1.0 查看高胜率英雄推荐 1.系统显示当前高胜率英雄,并由高至低排序 2.0查看英雄ban位饼状图 1.系统显示当前英雄ban位饼状图,并由高至低排序 3.0查看英雄热度柱状图 1.系统显示当前英雄热度柱状图,并由高至低排序 |
| 用例名称 | 查询英雄战力 |
|---|---|
| 参与者 | 用户 |
| 描述 | 用户进入王者荣耀推荐网页,单击王者荣耀英雄战力查询按钮,查看英雄战力的相应信息,例如,省级上榜最低战力、市级上榜最低战力、区级上榜最低战力等内容。 |
| 主干过程 | 1.0查询英雄战力 系统被查询英雄的相关战力 1.1 查看省级上榜最低战力 1.系统显示省级上榜最低战力 1.2查看市级上榜最低战力 1.系统显示市级上榜最低战力 1.3查看区级上榜最低战力 1.系统显示区级上榜最低战力 |
3.3数据字典
3.3.1 E-R图
3.3.2数据实体定义
| heroscore | |||
|---|---|---|---|
| 字段名 | 类型 | 描述 | 备注 |
| Id | Int | 编号 | 主键,自增长 |
| Name | Varchar(32) | 名称 | 非空 |
| Area | Varchar(32) | 地区 | |
| Score | Int | 分数 |
| herosscore | |||
|---|---|---|---|
| 字段名 | 类型 | 描述 | 备注 |
| Id | Int | 编号 | 主键,自增长 |
| Name | Varchar(32) | 名称 | 非空 |
| Area | Varchar(32) | 地区 | |
| areapower | Int | 区级上榜最低战力 | |
| City | Varchar(32) | 城市 | |
| Citypower | Int | 市级上榜最低战力 | |
| Province | Varchar(32) | 省市 | |
| ProvincePower | Int | 省级上榜最低战力 |
| heroinfos | |||
|---|---|---|---|
| 字段名 | 类型 | 描述 | 备注 |
| id | Int | 编号 | 主键,自增长 |
| heroId | Int | 英雄编号 | |
| heroName | Varchar(32) | 英雄名称 | 非空 |
| banRate | float | 禁止率 | |
| ShowRate | float | 出场率 | |
| winRate | float | 胜率 | |
| HeroCare | Varchar(32) | 位置 | |
| tRank | char | 热度 |
4. 系统非功能性需求
4.1性能需求
网络平台要求:
(1)多用户系统
在王者荣耀战力系统中,网络平台要求支持多用户访问。尽管玩家没有权限录入、修改或删除数据,但他们可以在各自的客户端上进行数据查询操作。这要求系统具备多用户支持,确保各用户的操作不会相互干扰,同时允许信息共享。信息主要存储在服务器端的数据库中,由各使用者在规定的权限下在各自的客户端上录入,修改,删除相关的内容,进行各自的相关操作,不可跨权限进行操作。各用户还可进行查询,调用,达到信息共享。
(2)数据的完整性,准确性
数据的完整性和准确性是关键要求。尽管玩家只能进行查询操作,但系统需要确保查询结果反映了最新的、准确的战力数据。录入数据时,系统应对数据进行验证和限制,以防止不合法的数据进入数据库,限制录入数据类型及取值范围以保证数据的完整性及准确性。
(3)数据安全性
系统应确保只有经过身份验证的用户才能进行查询操作,以保护战力数据的隐私和安全性。密码控制功能和访问权限规定是实现数据安全性的关键措施。本系统采用二级安全保障:第一级:依赖于网络本身对用户使用权限的规定。不同的使用者具有不同的使用权限。第二级:在程序模块中通过使用密码控制功能对用户使用权限加以限制。以保证系统的正常使用。
4.2软件开发运行环境需求
1.开发环境:IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
2.运行环境:IDEA,浏览器。在部署和运行阶段,王者荣耀战力系统的服务器端需要配置适当的硬件和操作系统环境,以支持高并发的数据查询请求。用户的客户端需要支持现代浏览器,以便访问系统的前端界面。
4.3其他需求
4.3.1安全性需求
虽然玩家只能查看数据,但仍然需要确保数据的保密性和完整性。系统应采取措施,如对账号密码进行加密,以防止未经授权的访问和信息泄露。
4.3.2 服务需求
为了确保系统易于维护,提供简单的安装和维护流程是必要的。管理员需要能够轻松地配置和管理系统,监控系统状态,并执行备份和恢复操作。系统应提供用户友好的查询界面,以方便玩家查看战力数据。
5. 系统具体实现设计
5.1系统原型设计
5.2 数据库设计
当设计系统数据库时,有两个关键方面需要考虑:首先是将英雄数据存储在本地MySQL数据库,因为这些数据相对不大且相对稳定。其次,英雄战力数据在不同地区(IOS Q区、IOS 微信区、安卓 Q区、安卓 微信区)实时变化,因此需要使用大数据平台,将这些数据导入Hadoop的Hive数据库,并定期更新。最后,通过TOMCAT服务器将数据以JSON格式传输给前端。
5.2.1 数据存储与更新流程
具体数据库内容在3.3已述,以下为数据库实现原有及数据传输方式说明:
1)存储英雄数据到本地MySQL数据库
英雄数据,如英雄的基本信息、技能描述和皮肤数量等,是相对静态的信息,因此适合存储在本地MySQL数据库中。这些数据的存储流程如下:
数据采集: 从游戏官方源或数据供应商获取英雄数据,包括英雄ID、名称、职业、技能描述等信息。
数据预处理: 在数据导入之前,进行数据清洗和格式化。这可能包括去除重复项、解析数据以适应数据库结构等。
数据存储: 使用数据库连接工具,将数据插入到本地MySQL数据库的英雄信息表(heroes)中。每个英雄的数据都与其唯一的英雄ID相关联。
2)存储英雄战力数据到Hadoop的Hive数据库
英雄战力数据是实时变化的,且跨多个地区,因此适合存储在Hadoop的Hive数据库中。这些数据的存储流程如下:
数据采集: 设计一个数据采集程序,定期(例如每隔12小时)从游戏服务器获取英雄在各个地区(如IOS Q区、IOS 微信区、安卓 Q区、安卓 微信区)的战力数据。这个程序会主动与游戏服务器通信,获取最新的数据。
数据分区: 获取的数据将被按地区和时间戳信息分区,以便更高效地查询和分析数据。每个分区将包含特定地区和时间段内的英雄战力数据。
数据存储: 将数据存储在Hive数据库的英雄战力数据表中。每次采集都会创建新的分区,确保历史数据得以保留。
5.2.2 数据传输至前端通过TOMCAT服务器
为了使前端应用能够获得最新的英雄和英雄战力数据,我们需要一个中介,即TOMCAT服务器,用于处理数据请求和响应。以下是数据传输至前端的流程:
前端请求: 前端应用通过HTTP请求向TOMCAT服务器发出请求,指定所需的数据类型和操作(例如获取英雄信息或战力数据)。
TOMCAT服务器处理: TOMCAT服务器接收到请求后,会根据请求的类型,查询相应的数据库。对于英雄信息,服务器将查询本地MySQL数据库的英雄信息表。对于英雄战力数据,服务器将查询Hive数据库的英雄战力数据表。
数据编码为JSON: 从数据库检索到的数据将被编码为JSON格式,以便于在前端应用中解析和显示。
HTTP响应,Ajax请求: TOMCAT服务器通过HTTP响应将JSON数据传递给前端应用,这将包含英雄信息或英雄战力数据,根据前端请求的内容而定。
前端解析与展示: 前端应用接收到JSON响应后,解析数据并将其呈现给用户。这可以是英雄列表、图表或其他可视化元素,根据前端应用的需求而定。
5.2.3 核心代码
6. 系统测试
6.1测试用例
HiveTest.java
Local_WebTest.java
MySQLTest
yumin_WebTest
6.2 测试结果
测试用例皆成功通过:
7. 实训心得
7.1设计体会
用户友好性至关重要: 王者荣耀战力系统应该始终以用户为中心。在界面设计方面,我们应该追求简单、直观的用户界面,以确保玩家能够轻松地查看战力数据。同时,为了提供更好的用户体验,系统应该提供数据可视化功能,例如图表和图形,以帮助玩家更清晰地理解数据。
数据安全和隐私保护是首要任务: 尽管玩家只能查看数据,但系统必须严格遵守数据隐私和安全性的最佳实践。确保数据的保密性和完整性对于用户信任和系统声誉至关重要。因此,必须采用强大的身份验证、访问控制和数据加密措施。
灵活性和扩展性: 我们应该设计系统以支持未来的扩展和功能增加。游戏环境和需求可能会不断变化,因此系统的架构应该能够容纳新的数据源和功能,而不需要进行大规模的修改。
7.2程序创新
智能数据分析: 除了提供基本的数据查询功能,系统可以采用机器学习和数据挖掘技术,以识别潜在的游戏趋势和玩家建议。这种智能分析可以帮助游戏开发者更好地了解游戏平衡问题,并采取相应的措施进行优化。
自动化数据同步: 为了确保战力数据的实时性,可以实现自动化数据同步机制,以定期从游戏服务器获取最新的数据。这种自动化流程可以减轻管理员的工作负担,同时确保数据的及时性。
用户反馈集成: 创新的想法可以包括用户反馈集成,允许玩家提供反馈和建议。这些反馈可以用于改进系统,使其更符合玩家的期望和需求。
数据可视化: 使用创新的数据可视化技术,例如交互式图表和热力图,可以帮助玩家更好地理解战力数据。这种可视化可以让玩家更容易发现趋势和模式。
7.3 收获总结及不足之处
在这次的项目中,我主要负责后端开发的工作,项目的目标是构建一个基于大数据平台的数据存储和分析系统。具体来说,我的工作职责包括了选择和配置技术栈,管理数据存储,解决CORS跨域问题,进行后端测试,并确保数据以JSON格式传输到前端。工作职责在项目中,我广泛使用了以下技术和工具:技术栈选择和架构设计: 我负责选择和配置了Spring框架,采用了分层架构的思想,将项目划分为Dao层、Service层、Web层和实体类部分,以提高代码的可维护性和可扩展性。数据管理: 项目要求将数据分为本地MySQL和Hive两部分进行管理,我成功地实现了这一任务,确保数据的高效管理和存储。
CORS问题解决: 为了解决前后端之间的CORS跨域问题,我深入研究了该问题,并使用Spring Boot的注解来配置CORS策略,确保前端能够安全地访问后端数据。后端测试: 我使用Postman进行后端测试,以验证代码的正确性,并确保数据以JSON格式传输给前端。
这个项目为我提供了深入了解大数据平台和Hive的机会。之前,只是通过课堂的演示来学习这些技术,而在项目中,我能够亲自实践和应用它们,这对我的技能水平提升非常有帮助。此外,通过处理前后端数据传输,我也获得了更多的实操经验,提高了技能水平。