此次项目实训不完全按照项目计划书进行,因为游戏范围太广,可能随时调整游戏风格/玩法/类型。本篇同步更新。
项目名称
《基于Unity的2D多人乱斗闯关游戏设计与开发》
游戏类型:2D/3D多人乱斗闯关。不同小游戏轮换,玩家之间进行比拼。
网络要求:联网(游客/账号)/单机。游戏大厅功能。
项目背景
网络化的游戏能很大程度上提高趣味性。
电脑操控比手机端操控更方便。
“糖豆人”的爆火与热度的急速下降,充分反映出其优缺点。
此项目在分析“糖豆人”、多人综艺类型游戏的基础上,综合游戏优点,尽量修改不足点以提高游戏的可重复游玩性。
项目简介
项目架构
游戏主流CS架构,客户端由Unity引擎开发,服务端由C#开发。
因为Photon框架的特性,额外扩展为多服务端架构,其中部分服务器使用的是Photon官方提供的游戏服务器等。
Windows客户端。
[Tips]玩家游玩时有三条选择:
1. 只与PUN服务器连接,不保留战绩,昵称随时更改。(联网游客模式,无需账号密码)
2. 与自制服务端通信,保留游戏战绩记录参与后续排名统计。(联网排位模式,需要账号密码)
3. 与任何服务端无联系。(单机)
项目特色
项目具备联网,聊天交流特性。同时支持单机游玩。
除了保障游戏性,能大幅度增加社交性,可以与好友一起体验,更好地提高游戏趣味性。
充分发挥联网特性:可以创建房间,在大厅浏览房间选择加入。并且能满足每个人对于难度的需求,游戏可以设置为简单、普通、或困难模式。可以由房主自主选择,其他玩家按需选择游戏房间。
保障游戏趣味性的同时也要解决联网所带来的动画不同步等问题。
大致功能需求
人机交互方式选择键鼠操控,GUI。
游戏动画,多端位置、动画同步。
数据库存储玩家账号、战绩信息、资产。
聊天室,实时聊天。
游戏模式/内容
开发一款2D/3D的游戏。
通过研究“糖豆人”游戏火爆的本质,此项目将会开发一款玩法为多种小游戏轮换的多人对战模式。通过游戏轮换在较短时间内给玩家保持新颖奇特的游戏体验。
同时“糖豆人”游戏很快便失去了热度。引以为戒,所以在玩法上还将会有所不同,对于有些小游戏,结合“吃鸡”游戏特性,将会注重随机性以及更强的目标性,每一场游戏都能给玩家带来不同体验。
初步计划将包括如下几个小游戏:
- 技巧比拼2D
- 竞速(以收集元素为主要任务)3D
- pve3D
- pvp3D
项目技术选型
技术要点
Unity、素材建模、(帧)动画、网络Socket、数据库MySQL、Photon多人游戏开发框架。
在项目初期筛选了许多多人游戏框架:
UNET、Mirror、PUN2(Photon)、纯Socket…
UNET是Unity官方的一个多人游戏开发框架,支持局域网。
但是由于目前IPv4的形势,nat网络地址转换有一定难度,无法实现个人客户端自动转换并且与服务端实现通信。在实现任意网络节点之间的连接难度很大,并且性能不是很高。
Mirror同样是局域网框架。
Photon框架是一个企业与UNET合作的多人游戏框架,其业务广泛,支持全球联机。实际的CS架构,性能好。Photon官方服务器可以自动平衡并发问题。适合商用。不过免费服务器最大同时支持20CCU(最大20人同时在线)。以一款独立开发游戏来说,初期是足够的。
最终综合考虑下选择PUN2框架。因此项目架构实际上是多个服务端的CS架构。
自主开发的服务端提供账号存储、战绩存储/查询、资源商店等功能。
PUN官方服务端提供游戏动画同步、大厅房间等问题。(仍需学习pun框架API并进行编码)
项目分工
因涉及到个人隐私,仅做大致说明:小组成员共5人。
初步分工如下:
通信开发(前后端):2人。
Unity端开发:3人。
由于Unity游戏需要各种建模/动画素材的制作与代码编写工作,很显然占据了此项目的大部分工作。
所以在两人完成通信开发后会一起加入到游戏/GUI的制作当中。
[成员CSDN博客地址]
Eight_J
wk
Fancy145
zcx
zxy
项目具体计划
前期
需求分析,设计,开发,完成各阶段文档。
学习Unity并制作客户端。完成初期用户界面,后续迭代逐步完善。
学习socket接口,实现游戏中聊天对话功能,以及游戏信息传输同步。
学习对应MySQL接口,初步开发服务端实现账号信息记录。
中期
全面开发客户端及服务端,实现系统的整体功能,同时从各个小方面入手,保证系统画面美观,游戏人物活动流畅。开发更多游戏关卡,在满足用户需求的同时,提高整体游戏体验。
对游戏进行pun化(Photon插件多人化)。
后期
最终测试项目、修改bug。完成测试文档。