暗黑战神项目总结

参考暗黑战神项目siki学院的课程,做的一个项目,自己加了一些优化。目前战斗没做完,做完后可能再发(水)一篇。siki牛逼!!!我要给siki打call!!!

课程地址http://www.sikiedu.com/my/course/330

简介

本项目是一个MMORPG,是网络游戏,主要玩法是类似暗黑破坏神,就是是刷副本PVE刷材料养成。网络都是业务层逻辑,没有帧同步。玩家可以通过摇杆移动,然后攻击和释放技能击杀怪物。实现了登录注册,强化系统,自动任务引导,世界聊天,副本业务等系统。完整的客户端,服务器,数据库三层结构。除了美术资源外,都是本人实现的,花了四个月时间。在客户端实现了资源动态加载,并设置缓存层。UI采用MVC,降低愈合,并用事件回调解决数据同步问题。项目采用数据驱动方式,所有数据采用XML配置表实现,用XML配合C#自动序列化大大减少工作量。在服务器中,使用C#序列化数据,使用socket传递数据,使用多线程处理网络IO,使用多线程实现计时回调,设置缓存层减少数据库查询。

框架

启动逻辑:只有一个启动脚本有Start入口,它会依次调用其他实现有序初始化。

Loading界面:通用,异步加载方式,用一个委托实现加载完成后的动作。

数据分三层:数据库一层,服务器缓存一层,客户端显示一层,数据同步是主要修改服务器缓存,再向数据库和客户端发送更新。

启动进入一个根场景,它有一个不会被销毁的对象,所有系统都挂在上面,此外还有UI根路径。

一般的业务流程:用户点击按钮触发按钮事件,窗口把需要的数据收集起来,然后进行验证,完成后交给网络模块发送。网络模块只发送必须的数据。服务器收到后,再次验证,然后进行对应业务处理。处理完成结果写入cache,cache把数据写入数据库。服务器网络模块向客户端发送改变后的数据。客户端收到后更新数据,并通知各个模块刷新,然后给出一条提示显示结果。

业务中的异常:收到回复前,客户端禁止其他操作,如果超过一段时间没有收到回复认为网络异常,请求失败。

数据驱动:主要数据都在配置表里,解析成XML,需要时再通过XML序列化加载。可以不用在代码中配置数据。

框架的分层:服务层,提供通用功能。有网络服务,音效服务,计时服务,资源加载服务。

业务层,实现各个业务处理。例如登录注册模块,任务引导模块,装备强化模块等。

UI层,每个界面一个UI脚本。每个界面被一个业务系统管理,不能直接访问。

服务器采用多线程+socket实现,每个连接一个线程,但是所有数据都传回主线程,防止冲突。用死循环+sleep防止服务器结束。

日志实现较简单。为了调试方便,把数据明文打到日志里,可能造成安全问题。

UI

UI逻辑框架。每个界面一个U脚本。

MVC,UI只负责数据显示,绑定按钮事件等。用一个action通知UI刷新。

UI自适应:(横屏游戏)根据上下高度缩放,设置锚点等。

UI优化:关闭不用的raycast,并且写了个脚本批量关闭。UI都在根物体上,根据需要动态加载所需的UI。

滑动列表:根据配置数据动态创建条目。

战斗模块

摇杆控制。自己实现。

动画。状态机过度,使用动画混合树平滑,还可以使用IK进行交互动画制作,特殊需求用dotween或者自己写tween动画。此外可以使用物理动画或者直接脚本控制位置。

寻路。使用navmesh。用于任务自动引导。

主城渲染优化。把环境灯光设为静态,离线渲染为光照贴图,运行就不需要计算环境灯光。可以把draw call从1000降低到100.运行后动态合批再降到16.

定时。两种方式,帧检查实现,每帧检查是否到达时间。

多线程实现,使用C#Timer,要把回调传回主线程执行防止冲突。

业务

登录:服务器启动时加载所有用户名和密码,缓存只存已经登录的用户账户信息。发送时进行验证,为空等不发。保存上次成功登录的用户名密码,下次使用这个默认的直接登录。

角色展示:使用一个摄像机拍主角,结果做成rendertexture,UI上作为图片显示它。

自动任务:数据库维护一个自动任务ID保存当前任务,客户端加载配置知道导航到谁,然后用navmesh寻路。接近到一定距离认为引导完成。

强化升级系统:根据当前点击的部位,取得对应数据,并进行显示。点升级就发送消息。

聊天系统:收到一个聊天请求就群发给登录的所有人。群发之前完成解析等重复操作,减少压力。

体力:对已登录用户,每5分钟发送一次数据通知体力增长。

对离线用户,记录最后下线时间,在上线时计算增长的体力。

任务检测:在其他系统中有Action回调,把任务检测注册到这些回调中。注意在任务完成后删除回调。

siki暗黑战神项目总结,框架和主要的优化点相关推荐

  1. Kratos战神微服务框架(一)

    目录 Kratos战神微服务框架 简介 目标 原则 特性 架构 CLI工具 安装 创建项目 项目结构 代码生成与运行 生成 运行 测试接口 Kratos战神微服务框架 简介 Kratos 一套轻量级 ...

  2. Kratos战神微服务框架(二)

    Kratos战神微服务框架(二) 目录 Kratos战神微服务框架(二) 项目结构 api编写 protobuf编写 使用makefile service层接口实现 biz层 data层 config ...

  3. python ui框架_PyQt5GUI项目程序框架

    本次介绍PyQt5 GUI应用程序框架组成,以dialogApp项目文件组成为例,其他类似. 主要做两件事情:1.窗体UI设计,主要在Qt Designer内完成:2.对应窗体业务逻辑类功能实现,在m ...

  4. PowerDesigner(二)-项目和框架矩阵

    项目和框架矩阵 项目是PowerDesigner 15的新概念,通过项目系统分析/设计人员可以对模型以及各类文档进行分组.项目也可以包含框架矩阵,以表格的形式体现各个模型之间的关系. 项目和框架矩阵解 ...

  5. 客快物流大数据项目学习框架

    文章目录 客快物流大数据项目学习框架 前言 一.项目简介 二.功能介绍 三.项目背景 四.服务器资源规划 五.技术亮点及价值 六.智慧物流大数据平台 客快物流大数据项目学习框架 前言 利用框架的力量, ...

  6. ssm毕设项目基于框架的众筹管理系统f5244(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目基于框架的众筹管理系统f5244(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  7. 原生微信小程序项目基础框架搭建

    原生微信小程序项目基础框架搭建 文件目录结构 1. 环境变量(开发环境, 线上环境,测试环境)便于在不同环境的切换 接口的url webview的前缀url 埋点相关的环境参数 本地存储的环境变量配置 ...

  8. 【收藏】Android开源项目和 框架

    Android四款系统架构工具      http://dev.yesky.com/281/35399281.shtml AOSP   http://source.android.com/index. ...

  9. 龙芯2K1000实战开发-项目整体框架介绍

    目录 概要 整体架构 技术名词解释 1.DDR3: 2.NAND_FLASH: 3.FPGA: 4.MSATA: 5.VPX: 6.PCie: 7.ETH: 技术细节 小结 概要 本项目主要以龙芯2k ...

  10. vue移动端项目基础框架搭建

    本文章,主要提供vue移动端项目基础框架搭建思路,每个独立的模块网上有很多相关的文档. 移动端vue项目基础框架搭建,主要包括6个步骤 项目使用的脚手架vue-cli搭建模板,2.使用淘宝lib-fl ...

最新文章

  1. helloworld设置成开机自启动的服务
  2. 微信环境中如何实现下载apk文件的下载
  3. VTK:绘制封顶球CappedSphere用法实战
  4. mysql 导出数据字典_操作MySQL?这个库比pymysql香一百倍
  5. 飞鸽传书创造出自己的一片天吧
  6. 大数据心得体会_20年备受关注的6款数据工具!谁最好用?毫无争议的答案来了...
  7. “页面制作人员”?“页面工程师”?“页面架构师”?滚一边去!
  8. 安全维护上最不应该犯的十个基本错误
  9. linux系统移植和根文件系统制作
  10. 李明洋十讲学会ADS教学课程笔记
  11. ISO8601时间格式转换为Date
  12. 浏览器打不开网页 服务器停止响应怎么办,浏览器打不开未响应怎么办
  13. ##gif录制软件——初识GifCam##
  14. AUTOSAR MCAL CAN Driver 接口函数
  15. Python基于php+MySQL的英语四六级在线报名平台
  16. 大数据开发工程师要求高么?有前景么
  17. 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
  18. 个人APP盈利之道:内容为王 学会适当放弃
  19. 误删文件或者文件丢失怎么样来应对
  20. 数据结构课程设计:中国计算机设计大赛赛事统计

热门文章

  1. R语言制作长三角城市群空间权重矩阵及作图显示
  2. Oracle 学习资料
  3. c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
  4. 从苏宁电器到卡巴斯基第03篇:我的本科时光(下)
  5. 私塾 java_JAVA私塾
  6. Citrix XenApp工作原理
  7. 安卓端gis_微图手机版下载-微图(GIS软件工具)下载v2.1.7安卓版-西西软件下载
  8. 北京飞马贸易借沟通CTBS实现总部与分公司同步做帐
  9. 计算机上机操作表格试题,全国计算机等级考试四Excel电子表格操作试题.doc
  10. 最新前端四天精通node.js视频教程