3D坦克大战计划书

35%===--------

目标

开发一款多人联机的坦克世界大战游戏

参考

3D坦克 (3dtank.com)

计划

🚧局域网联机模式

  1. 计划对UnityNetWork进行包装,

基于UnityNetWork实现局域网联机

  1. 一号计划废弃,重新计划为:
    1. 服务器使用UDP广播,客户端接收UDP后选择与其建立连接
    2. 服务器关于数据库部分在局域网中不需要,可以根据是否是局域网联机而选择忽视这一部分

😱目前困境: 不会使用UDP广播,具体是指不会UDP接收广播,没有找到相关资料

🏆登录注册

  1. 🔗简单的在Mysql中建立用户表

操傻逼Navcat过期了,图片稍后补上

建立 账户表 玩家表

  • 账户表仅仅记录玩家账号和密码
  • 玩家表记录玩家账号和游戏内的信息
  1. 🔗简单的登录注册

使用SQL语句添加账户数据

此处简单的防止SQL注入,使用敏感字符剔除的方式,对用户输入的字符中检测SQL命令,有SQL命令判断为敏感字符需要重写输入

  1. 🔗异地登录踢出到登录界面

🏆游戏大厅与游戏房间

游戏大厅里可以有很多房间

注意:客户端不包含任何逻辑!!

客户端仅仅获取服务器的信息进行显示

  1. 🔗计划展示拥有的坦克在此页面

用户可以拖动该视图对坦克进行观看

🏆基本游戏逻辑

游戏以击败所有敌方单位为目标,通过攻击方式摧毁地方单位,获得本局比赛胜利

游戏所有运算均在服务端进行,比如炮弹命中后扣血

🏆物理

  1. 🔗😱 Unity的物理交互有点傻逼,通过挤压碰撞体可以使得物体弹飞

方案:

  • 将墙壁摩擦设置为0
  • 不使用Unity的物理引擎
    • 使用速度驱动+物理检测
    • 斜坡检测
    • 模拟重力+抛物线模型
  1. 🔗😱 坦克之间的碰撞同样如此

🏆移动逻辑

在当前的的移动逻辑中 前 后 坦克可以产生位移

左右均为旋转坦克,但是炮台也随坦克

😱此操作太傻逼,不符合传统坦克移动违和感太强,计划左右旋转炮台不产生位移

方案:

  • 炮台正面位置为摄相机正方向
  • 旋转坦克身时,炮台自动复位

🏆视角

目前视角注视坦克,相机只注视坦克前方

😱计划修改为视角随鼠标移动,相机注视屏幕中心

  • 视角可变


  • 光标位置非常奇怪
    • 不是固定在屏幕中心
    • 大概是在坦克炮台的正前方

🏆攻击方式

攻击详细方案见 4-物理检测 | AncientElement (gitee.io)

目前只有火炮攻击,通过火炮对敌方造成伤害

  1. 🔗😱攻击按键变化为鼠标左键

🏆特效

  1. 🔗爆炸效果
  2. 🔗燃烧效果

😱游戏内UI

  1. 🔗用户单位信息
  2. 🔗用户单位游戏内信息
  3. 🔗敌我对抗信息
  4. 🔗小地图信息
  5. 🔗交战信息
  6. 🔗资源道具信息
  7. 🔗游戏系统帧率、延迟信息

UI优化

😱目前UI皆为白板,非常难看

说实话不想拼面板,没有好看的UI,拼UI是最低端最傻逼的事情

尝试使用雷火UX简化流程

目前进度

登录注册模块

使用MySql数据库,服务器使用C#语言编写

游戏大厅

游戏中


BUG

😱登录挤出别人后房间列表出现异常

😱较高网络同步次数下炮弹拖尾出现异常

😱Physical因为直接的Transform位移造成的奇怪物理效果