2019-05-17 20:03:44 huihut 阅读数 942
  • 热更新框架设计之客户端热更框架(下部)视频课程

    热更新框架设计系列课程总体介绍:        本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计之游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,在领悟热更精髓的基础之上,通过高端架构设计,**完成设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。 《热更新框架设计之客户端热更框架》课程介绍:        本作是热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。       为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:       上部:              UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:             “热更新UI框架”与热更流程技术重构整合。               纯Lua框架设计理念与实现。        下部:               复合型热更框架设计与实现。               框架产品加入HotFix功能模块,且功能演示与测试完善。 《热更新框架设计之客户端热更框架(下部)》课程介绍:          热更客户端下部,分为四部分进行讲解:          第一部分: lua框架的进一步整合。           热更新综合框架对“纯lua”框架的进一步整合。本部分从效率上考虑,分为资源的后台加载与前台UI与模型的展现功能。前者采用C#脚本,通过调用AB框架与UI框架实现资源的解析与加载任务。 后者采用“纯lua”框架的显示层控制脚本实现UI与模型的展现逻辑控制。之前开发的“纯lua框架”被客户端框架进一步整合为完整的有机整体。为更好运作,具体lua框架划分为“核心通用层”与具体“项目业务层”脚本。前者主要为固定不变或者少量变化的功能逻辑,后者负责具体项目的显示逻辑控制。         第二部分: 热更新案例示例开发。         采用以上框架具体完成诸如“公告栏”、“任务栏”等强热更新需求的业务逻辑实现。本模块录播视频则具体讲解了“公告栏”热更新的开发全过程与热更新全流程演示。         第三部分: 热补丁(HotFix)功能的整合与示例项目演示。        客户端框架增加热补丁业务逻辑模块。本模块承担项目中所有C#脚本在上线发布之后,可能出现的Bug修复功能。本录播授课以ARPG中常出现的战斗业务逻辑为例,讲解HotFix的具体bug修复功能实现。         第四部分: 热更新进度UI界面。         以上功能调试验证成功后,**添加“热更新进度UI界面”。 本模块为热更新框架的**一个功能实现。 具体负责客户端与服务器通信下载过程中,给玩家(客户)以动态界面提示,让玩家耐心等待热更新(包含热补丁)的完成,以及项目的正式开始。 温馨提示:        1: 本套课程需要具备一定的框架理解与驾驭能力,为了更好的理解本作,强烈推荐广大学员首先学完必要的前导课程:“UI客户端框架设计”、“AssetBundle 框架设计”、“lua基础与中级篇”、以及本课程热更新框架的前两部(Xlua基础、热更流程与热补丁)。        2: 本课程使用Unity2017版本讲解,但是本课程主要讲解开发思想与具体实现技术,所以对Unity版本不敏感。 学员使用后续的Unity2018/19/2020..... 等版本基本没有影响。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    88 人正在学习 去看看 刘国柱

问题描述

使用 VS 在 Unity 编辑器中调试代码,点击 VS 的 附加到 Unity,Unity 编辑器按下 Play 之后,就会一直等待并且无其他响应,只能结束 Unity 进程。
任务管理器中Unity无响应

原因分析

经过分析与测试,发现去掉代码中一个单例类的析构方法中的断点即可调试了,具体原因未知。

再测试了一下,在那个单例类的构造、析构方法中分别打断点,如下表:

测试 构造 析构 结果
1 可调试
2 * 可调试
3 * 无响应
4 * * 无响应

表中 * 代表打断点

可发现只要在那个单例类的析构中打断点就会造成 Unity 无响应。

解决办法

删除析构方法中的断点,或者所有断点,再调试。

2015-02-28 13:44:40 hasion 阅读数 5115
  • 热更新框架设计之客户端热更框架(下部)视频课程

    热更新框架设计系列课程总体介绍:        本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计之游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,在领悟热更精髓的基础之上,通过高端架构设计,**完成设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。 《热更新框架设计之客户端热更框架》课程介绍:        本作是热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。       为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:       上部:              UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:             “热更新UI框架”与热更流程技术重构整合。               纯Lua框架设计理念与实现。        下部:               复合型热更框架设计与实现。               框架产品加入HotFix功能模块,且功能演示与测试完善。 《热更新框架设计之客户端热更框架(下部)》课程介绍:          热更客户端下部,分为四部分进行讲解:          第一部分: lua框架的进一步整合。           热更新综合框架对“纯lua”框架的进一步整合。本部分从效率上考虑,分为资源的后台加载与前台UI与模型的展现功能。前者采用C#脚本,通过调用AB框架与UI框架实现资源的解析与加载任务。 后者采用“纯lua”框架的显示层控制脚本实现UI与模型的展现逻辑控制。之前开发的“纯lua框架”被客户端框架进一步整合为完整的有机整体。为更好运作,具体lua框架划分为“核心通用层”与具体“项目业务层”脚本。前者主要为固定不变或者少量变化的功能逻辑,后者负责具体项目的显示逻辑控制。         第二部分: 热更新案例示例开发。         采用以上框架具体完成诸如“公告栏”、“任务栏”等强热更新需求的业务逻辑实现。本模块录播视频则具体讲解了“公告栏”热更新的开发全过程与热更新全流程演示。         第三部分: 热补丁(HotFix)功能的整合与示例项目演示。        客户端框架增加热补丁业务逻辑模块。本模块承担项目中所有C#脚本在上线发布之后,可能出现的Bug修复功能。本录播授课以ARPG中常出现的战斗业务逻辑为例,讲解HotFix的具体bug修复功能实现。         第四部分: 热更新进度UI界面。         以上功能调试验证成功后,**添加“热更新进度UI界面”。 本模块为热更新框架的**一个功能实现。 具体负责客户端与服务器通信下载过程中,给玩家(客户)以动态界面提示,让玩家耐心等待热更新(包含热补丁)的完成,以及项目的正式开始。 温馨提示:        1: 本套课程需要具备一定的框架理解与驾驭能力,为了更好的理解本作,强烈推荐广大学员首先学完必要的前导课程:“UI客户端框架设计”、“AssetBundle 框架设计”、“lua基础与中级篇”、以及本课程热更新框架的前两部(Xlua基础、热更流程与热补丁)。        2: 本课程使用Unity2017版本讲解,但是本课程主要讲解开发思想与具体实现技术,所以对Unity版本不敏感。 学员使用后续的Unity2018/19/2020..... 等版本基本没有影响。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    88 人正在学习 去看看 刘国柱

项目制作过程中,我们可能要用到断点调试来检测程序运行过程中的实时数据,从而检测出程序出错的位置。具体步骤如下:

1、Mono必须是Unity安装时自带的编辑器,然后设置一下Unity的默认脚本编辑器为Mono,在Edit/Preferences中设置。



2、设置完之后,在Unity的Project窗口右击选择Sync MonoDevelop Project,会自动打开以mono的形式打开项目,然后设置Mono与Unity的连接,具体操作是:




连接成功之后就会出现下面的界面,这里可以实现单步运行和跳过。




3、以下面的脚本为例:(在13行出打一个断点)



运行Unity,点击A按钮时,则会出现下面的界面:



然后点击上面的单步运行按钮,就可以使得程序一步一步进行了,每执行一步就暂停一次。

运行过程中,Unity处于暂停状态,无法编辑,等到程序运行结束,或者停止程序运行,Unity则会恢复正常。

2017-05-14 16:26:20 avi9111 阅读数 978
  • 热更新框架设计之客户端热更框架(下部)视频课程

    热更新框架设计系列课程总体介绍:        本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计之游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,在领悟热更精髓的基础之上,通过高端架构设计,**完成设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。 《热更新框架设计之客户端热更框架》课程介绍:        本作是热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。       为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:       上部:              UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:             “热更新UI框架”与热更流程技术重构整合。               纯Lua框架设计理念与实现。        下部:               复合型热更框架设计与实现。               框架产品加入HotFix功能模块,且功能演示与测试完善。 《热更新框架设计之客户端热更框架(下部)》课程介绍:          热更客户端下部,分为四部分进行讲解:          第一部分: lua框架的进一步整合。           热更新综合框架对“纯lua”框架的进一步整合。本部分从效率上考虑,分为资源的后台加载与前台UI与模型的展现功能。前者采用C#脚本,通过调用AB框架与UI框架实现资源的解析与加载任务。 后者采用“纯lua”框架的显示层控制脚本实现UI与模型的展现逻辑控制。之前开发的“纯lua框架”被客户端框架进一步整合为完整的有机整体。为更好运作,具体lua框架划分为“核心通用层”与具体“项目业务层”脚本。前者主要为固定不变或者少量变化的功能逻辑,后者负责具体项目的显示逻辑控制。         第二部分: 热更新案例示例开发。         采用以上框架具体完成诸如“公告栏”、“任务栏”等强热更新需求的业务逻辑实现。本模块录播视频则具体讲解了“公告栏”热更新的开发全过程与热更新全流程演示。         第三部分: 热补丁(HotFix)功能的整合与示例项目演示。        客户端框架增加热补丁业务逻辑模块。本模块承担项目中所有C#脚本在上线发布之后,可能出现的Bug修复功能。本录播授课以ARPG中常出现的战斗业务逻辑为例,讲解HotFix的具体bug修复功能实现。         第四部分: 热更新进度UI界面。         以上功能调试验证成功后,**添加“热更新进度UI界面”。 本模块为热更新框架的**一个功能实现。 具体负责客户端与服务器通信下载过程中,给玩家(客户)以动态界面提示,让玩家耐心等待热更新(包含热补丁)的完成,以及项目的正式开始。 温馨提示:        1: 本套课程需要具备一定的框架理解与驾驭能力,为了更好的理解本作,强烈推荐广大学员首先学完必要的前导课程:“UI客户端框架设计”、“AssetBundle 框架设计”、“lua基础与中级篇”、以及本课程热更新框架的前两部(Xlua基础、热更流程与热补丁)。        2: 本课程使用Unity2017版本讲解,但是本课程主要讲解开发思想与具体实现技术,所以对Unity版本不敏感。 学员使用后续的Unity2018/19/2020..... 等版本基本没有影响。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    88 人正在学习 去看看 刘国柱

==================================================================

希望记录下一些真正工作上碰到的案例,而不仅仅只是书本上的知识和教学视频里的内容

==================================================================

多的不说了,后面才补(待补全)

还记得想当年用SQL 2000的Profiler,当时博主比较年轻,一个月的时间,每天10个小时的工作就只是开Profiler调试,有时候一天也只不能确定一个效能问题,一个月过去了,结果也只是初步确定问题(当时肯定不止我一个人在干这事),不得不说那是一个持续改进的过程,后面可能还需要3~6个月才可以得到些微改善(而实际上,后面根本就没有后面)

当时团队有60个程序员,3大模块

策划(测试)60个左右,

项目做了5年多,一直加功能模块,

*如果你稍微做过一下”FPS调试“,”重构“,”压力测试“等工作,前提是你在一个大牛指导下工作,你应该能感觉到,所有这些工作都有一个前提的,就是范围要定好,现在你知道测试文档的开头写上硬件CPU,内存,等的作用了吧(那本经典的“重构”的书,书名就好像霸气的就叫做《重构》,其实第一章,第一句,就是说重构前你得先有单元测试框架,其实意思就是有一个复杂的软件环境,Helloworld真不需要怎么调试)

*还有就是如果你团队只有5个人,基本上是不需要怎么做压力测试的,有内存泄露等问题,你们自己几个人开箱啤酒自我检讨一番就行了(最后是各种环境,代码量比较大)

*博主在用Profiler的时候,也是有一些配套工具,例如Analyze等,甚至是第三方的工具或者自己团队内部的工具,唯有加以利用各种工具,才能事半功倍


说多了,再说回现在的 Unity3d游戏调试,优化

下图figure-1 是一个MMOA游戏的战斗场景

一个不错的项目,估计3~5个客户端程序员

(只有5个人的项目也做压力测试?3~5个客户端,外+3~5个服务器+5个策划+背后7~8个美工做图+音效外包,而且这几个人是每天14个小时,工作6天的,所以代码量够,而且工作时间长,效率低,会有各种凌乱代码,这种项目适合做压力测试)

特效很多,服务器很稳定,单战场,服务器开几天也不会崩,框架也很好,分层明确

服务器通讯代码对效能影响占比少,当然不排除,服务器一直传消息,战场动态新增GameObject造成fps低下

游戏完成度很高,曾经在XX GC大会演示

但是战场很卡,特效什么的,FPS只有30左右,很多待优化

(我认为比较好的做法是,框架,模块分明,每个星期有研讨会,做好API,常用的模块抽象出来,方便测试,也可以不断迭代,得知哪些代码需要被”重点照顾“,可以考虑做单元测试,C#可以写断言等)

而实际上,如此完成度高项目,几乎没有测试代码,也没看出来项目跟进文档有这样的打算,明显的就是打算GC大会之后,花个1个月左右的时间,无论客户端,服务器,所有程序员一起来“调优”这个代码,能调多少是多少,调不了,项目也是硬上,大不了拉倒,反正程序员不是玩家

实际上,根本没有迭代一说,反正做多少是多少(很多游戏项目都有很好的SVN,只能说明团队里某些人有强迫症而已,SVN规范良好的项目并不能说明什么)

我之前做过一个项目如此,这份代码看起来也如此,曾经一个小弟面试我,是他面试我,而不是我面试他,从他口中得知他在上一个公司“中手游”,会调试帧率等,所以推断出他的项目也是如此,也是曾经和另外一个项目的主程谈,也基本上肯定他们团队就他一个会干事的,所以另一个团队的项目也是如此,就是从来没有能够实现所谓的,教科书上的,比较好的做法

(插个话,我在说说现阶段的我,在结合理想的做法和实际项目,

其实一般服务器会比客户端稳定,也不完完全是程序员个体的原因

主要是服务器框架设计阶段和定义做的工作比较多,这确实对代码稳定和健壮性有帮助,而且如果水平不够的人写服务器,多几个连接的服务器就挂了,

一般不用通讯框架的服务器程序员,项目没2个月就挂了,沉淀下来的都是经得起的考验服务器代码,而且确实很多第三方中间件吧,例如Redis,

相反的,客户端不用框架的项目可以几年正常运行, hello world 程序更是一大堆, 牺牲性能,甚至实现功能有偏差,但是保证快速接触用户,在客户端是可取的

客户端程序工作更多的需要和策划沟通,不断调整,最好是不用思考,成品是需要被客户接受的

--所以衍生了,需求分析,功能测试,产品验收等工作

而服务器工作更多需要脚本,稳定性,有更多的时间思考代码质量,成品是不需要被客户(客户端)接受的

--也就有了,协议规范,压力测试,,运营维护等工作

理想状态也应该是这样的,可是社会的骨感又一次体现出来了

例如《唯品会》等牛B APP,用了超越本身价值的资源投入,用的服务器的做法去做客户端,也是有的,所以也并不是说客户端怎么怎么做就没有服务器稳定

唯品会做的是最顶级的消费,所以用最顶级的原料(最贵的人工)

又例如,马云说的外行人管内行人

有或者,我东哥说的,不管模式轻还是重,反正我有6W个送快递的,还会更多

韩信用兵,多多益善,这3种成功的做法让博主眼界打开,

博主也见过不少硬安框架的客户端,其实没有《唯品会》之流的超资源投入,根本后续都没有发展的,自嗨,摆烂的客户端程序员(架构师)很多

但的确是,传统上,服务器程序员写的代码会比客户端程序员写的代码质量会高一些(并不是说服务器程序员比客户端程序员优秀,质量高只是说代码重用率,迭代率高)

随着JAVA的发展和Android,.Ios的发展,服务器开发也有一大波程序员成长起来了(2000~2010),服务器质量高的比例反而减少了

这是因为移动互联网,现在很多服务器程序员会用几个框架就以为自己是架构师了,然而他们”甚至都不怎么会写程序“,对“软件开发过程”知之甚少,虽然博主没有什么现成数据支持这种说法,但这确实是一个很反智的一个现象

插的这些话,只是博主现阶段的个人看法,对于软件行业趋势的判断,其实国家GDP的高低真的和我们老板姓没什么关系,还是继续说Unity3d Profiler调试吧


figure-1



figure-2

在figure-1可以明显看出5个峰值,其中1个问题是由于figure-2的erro log造成的,其他问题其实都类似,profiler确实不错,能总结问题,发现问题,已经很够用了,(关于Profiler的原理就不在这里叙述了,因为我自己也暂时不能很完整的表述出来),暂时发现是GameObject(包含一些Effect)的初始化问题,有些用了NGUI对象(血条等)


figure-3


在figure-3,显示了error log解决后的截图,效能已经有20%提升,虽然或者android不会输出console, 就不会有这个问题,那ios呢?其实谁知道捏,所以统一用LogManager代替Debug.Log是一个很好的模式,可以统一控制console log

在论坛里,看到很多朋友说“我把所有Debug.Log都替代了,不会有Log”

这个逻辑其实很有问题:

1.如果某一天你需要呢?

2.文章开头说了,实际上,大部分的项目都是在一个月时间内调优,能调多少是多少,这一个月时间就不要再浪费时间在返工上面了,是真正做点“优化“工作的时候了

3.你怎么保证刚来的新人,不在你不注意的时候,多写了一行代码Debug.Log ,这个问题和怎么保证中国足球队进世界杯一样,完全无法保证,

4.还是文章开头说的,起码得有些研讨会,即使只是跑钻引玉也好,其实腾讯,YY等分技术,管理2个员工发展路线还是对的



解决了峰值问题后,其实还有很多值得优化的地方,但保持FPS60+,其实已经很够了,一般很少人能优化到极致,

是不是说在做深化测试,写测试代码,单元测试,就能优化到极致呢?暂时也只是调FPS, 其他硬件,电池等效能也没在调优,我前面也说过了,理想上是可以1.2.3.4.这样的一个完善的,持续改善的团队,但是实际上并不是,特别是国内所谓的游戏公司,不要问我为什么知道的

而Profiler这个组件也足够支撑低峰值60~90+段的代码调优了,确实不错的工具(原理,会在之后的博文更新)

(你看到的所谓技术文章,丢一堆Profiler的名词解释,你觉得写这种技术文章的人花了几天在调试?告诉你,基本上就是看看官网例子就po文了,有多少人能坚持一个月以上,起码博主现在是做不到了)



ps.

1.龙之谷 手游优化经验分享http://www.gameres.com/750842.html

2016-12-05 16:17:04 swj524152416 阅读数 12199
  • 热更新框架设计之客户端热更框架(下部)视频课程

    热更新框架设计系列课程总体介绍:        本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计之游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,在领悟热更精髓的基础之上,通过高端架构设计,**完成设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。 《热更新框架设计之客户端热更框架》课程介绍:        本作是热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。       为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:       上部:              UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:             “热更新UI框架”与热更流程技术重构整合。               纯Lua框架设计理念与实现。        下部:               复合型热更框架设计与实现。               框架产品加入HotFix功能模块,且功能演示与测试完善。 《热更新框架设计之客户端热更框架(下部)》课程介绍:          热更客户端下部,分为四部分进行讲解:          第一部分: lua框架的进一步整合。           热更新综合框架对“纯lua”框架的进一步整合。本部分从效率上考虑,分为资源的后台加载与前台UI与模型的展现功能。前者采用C#脚本,通过调用AB框架与UI框架实现资源的解析与加载任务。 后者采用“纯lua”框架的显示层控制脚本实现UI与模型的展现逻辑控制。之前开发的“纯lua框架”被客户端框架进一步整合为完整的有机整体。为更好运作,具体lua框架划分为“核心通用层”与具体“项目业务层”脚本。前者主要为固定不变或者少量变化的功能逻辑,后者负责具体项目的显示逻辑控制。         第二部分: 热更新案例示例开发。         采用以上框架具体完成诸如“公告栏”、“任务栏”等强热更新需求的业务逻辑实现。本模块录播视频则具体讲解了“公告栏”热更新的开发全过程与热更新全流程演示。         第三部分: 热补丁(HotFix)功能的整合与示例项目演示。        客户端框架增加热补丁业务逻辑模块。本模块承担项目中所有C#脚本在上线发布之后,可能出现的Bug修复功能。本录播授课以ARPG中常出现的战斗业务逻辑为例,讲解HotFix的具体bug修复功能实现。         第四部分: 热更新进度UI界面。         以上功能调试验证成功后,**添加“热更新进度UI界面”。 本模块为热更新框架的**一个功能实现。 具体负责客户端与服务器通信下载过程中,给玩家(客户)以动态界面提示,让玩家耐心等待热更新(包含热补丁)的完成,以及项目的正式开始。 温馨提示:        1: 本套课程需要具备一定的框架理解与驾驭能力,为了更好的理解本作,强烈推荐广大学员首先学完必要的前导课程:“UI客户端框架设计”、“AssetBundle 框架设计”、“lua基础与中级篇”、以及本课程热更新框架的前两部(Xlua基础、热更流程与热补丁)。        2: 本课程使用Unity2017版本讲解,但是本课程主要讲解开发思想与具体实现技术,所以对Unity版本不敏感。 学员使用后续的Unity2018/19/2020..... 等版本基本没有影响。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    88 人正在学习 去看看 刘国柱
U3D中的Profile也是可以直接在链接安卓设备运行游戏下查看的,导出真机链接U3D的Profile看数据,这样能更好的测试具体原因。
大概看了下官方的做法,看了几张帖子顺带把做法记录下来。
参考:http://docs.unity3d.com/Documentation/Manual/Profiler.html
用安卓真机调测Profile的数据,其实就两种方法,WIFI和ADB的方式。其实一般用的都是ADB方式,因为很少情况是你的电脑与手机是在同一子网WIFI下的。除非是你个人的网络。
备注:
如果你需要导出的游戏在非导出的机子上PROFILE的话,最好在导出的机子随便先导个带PROFILE的空项目。这样才能很容易链接上,不然是很麻烦的事情。
1.以WIFI的方式。
这个方法需要电脑所在的网络和手机所在的网络在同一子网下才能进行。
(1)导出U3D项目的时候勾选Profile,安装游戏到手机。
(2)打开游戏的时候,同时打开window->profiler,然后选择选择输入IP,连上即可。

X

2.以ADB的方式。
注意防火墙是否屏蔽掉了54998~55511端口,若屏蔽就打开。
(1)导出U3D项目的时候勾选Profile,安装游戏到手机。
(2)打开CMD命令行,cd到adb根目录,然后输入以下命令。将下面'这里加你的包名'改为你游戏打包出来的名,即Bundle Identifier。例如:com.Company.aaa。
adb forward tcp:54999 localabstract:Unity-这里加你的包名
(3)打开游戏的时候,同时打开window->profiler,然后选择选择AndroidProfiler(ADB@127.0.0.1:54999),连上即可。

 





Android

1  使用unityRemote调试(这种没用,只是在手机看到画面而已)

手机安装unityRemote并运行,unity中设置【edit】→【Perferences】,在External Tools中,设置Android SDK Location,连接usb后直接运行unity在手机上就能看到结果。

这种方法问题是使用这个unityRemote运行的结果和打包出来的apk运行结果未必一致,

不清楚使用profiler查看的是否是真机的参数

但是可以使用代码输出调试

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. if (Input.GetKeyUp(KeyCode.Escape))   
  2. {      
  3.        Debug.Log("Return Button");            
  4. }  

2 unity打包android apk

下载android sdk(unity版本和Android SDK Tools有一定对应关系,本文使用的是unity4.3.4  Android SDK Tools版本是22.0.1)

Edit->Perferences中设置android sdk位置


File->Build Settings,

然后在Inspector面板配置,首先更改下

再修改,最后可以新建个Keystore


然后可以点击build进行打包,打包时报错经常是因为unity版本和Android SDK Tools版本对不上,比如提示缺少zipalign.exe,aapt.exe等

解决方法是直接从\android-sdk-windows\build-tools\19.1.0\中把zipalign.exe,aapt.exe复制到android-sdk-windows\tools\中

其中zipalign.exe这个文件只有build-tools 19.1.0以上的版本中才有

aapt.exe这个基本大多数版本的build-tools 都有


3 使用profiler查看真机运行参数

 关闭手机数据(2g网)

 打开wifi(手机和unity所在pc在同一子网)

 首先使用unity打包apk,打包时需要勾选

 然后build and run,运行成功手机直接显示游戏画面,profiler自动弹出并显示手机运行apk的真实参数

 如果 Unity 编辑器 (Editor) 自动连接设备失败,从分析器窗口 (Profiler Window) 的活动分析器 (Active Profiler) 下拉菜单中选择正确的设备

 

android设备通过usb连接(正确安装驱动后)profiler中会多出两个选项

官网原文  http://uec.Unity3D.com/learning/document?file=/Manual/Profiler.html



IOS

使用profiler查看包参数的方法与android基本一直,但需要使用mac上的unity进行调试


2017-07-13 08:38:59 wolf96 阅读数 3397
  • 热更新框架设计之客户端热更框架(下部)视频课程

    热更新框架设计系列课程总体介绍:        本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计之游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,在领悟热更精髓的基础之上,通过高端架构设计,**完成设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。 《热更新框架设计之客户端热更框架》课程介绍:        本作是热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。       为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:       上部:              UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:             “热更新UI框架”与热更流程技术重构整合。               纯Lua框架设计理念与实现。        下部:               复合型热更框架设计与实现。               框架产品加入HotFix功能模块,且功能演示与测试完善。 《热更新框架设计之客户端热更框架(下部)》课程介绍:          热更客户端下部,分为四部分进行讲解:          第一部分: lua框架的进一步整合。           热更新综合框架对“纯lua”框架的进一步整合。本部分从效率上考虑,分为资源的后台加载与前台UI与模型的展现功能。前者采用C#脚本,通过调用AB框架与UI框架实现资源的解析与加载任务。 后者采用“纯lua”框架的显示层控制脚本实现UI与模型的展现逻辑控制。之前开发的“纯lua框架”被客户端框架进一步整合为完整的有机整体。为更好运作,具体lua框架划分为“核心通用层”与具体“项目业务层”脚本。前者主要为固定不变或者少量变化的功能逻辑,后者负责具体项目的显示逻辑控制。         第二部分: 热更新案例示例开发。         采用以上框架具体完成诸如“公告栏”、“任务栏”等强热更新需求的业务逻辑实现。本模块录播视频则具体讲解了“公告栏”热更新的开发全过程与热更新全流程演示。         第三部分: 热补丁(HotFix)功能的整合与示例项目演示。        客户端框架增加热补丁业务逻辑模块。本模块承担项目中所有C#脚本在上线发布之后,可能出现的Bug修复功能。本录播授课以ARPG中常出现的战斗业务逻辑为例,讲解HotFix的具体bug修复功能实现。         第四部分: 热更新进度UI界面。         以上功能调试验证成功后,**添加“热更新进度UI界面”。 本模块为热更新框架的**一个功能实现。 具体负责客户端与服务器通信下载过程中,给玩家(客户)以动态界面提示,让玩家耐心等待热更新(包含热补丁)的完成,以及项目的正式开始。 温馨提示:        1: 本套课程需要具备一定的框架理解与驾驭能力,为了更好的理解本作,强烈推荐广大学员首先学完必要的前导课程:“UI客户端框架设计”、“AssetBundle 框架设计”、“lua基础与中级篇”、以及本课程热更新框架的前两部(Xlua基础、热更流程与热补丁)。        2: 本课程使用Unity2017版本讲解,但是本课程主要讲解开发思想与具体实现技术,所以对Unity版本不敏感。 学员使用后续的Unity2018/19/2020..... 等版本基本没有影响。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    88 人正在学习 去看看 刘国柱

发布安卓包之后再次测试发生什么问题很难知道怎么了,比如说出现闪退等情况,可以用Logcat检测到,logcat是Android中一个命令行工具,可以用于得到程序的log信息,可以用 logcat 命令来查看系统日志缓冲区的内容.

用模拟器运行安卓程序或者真机也可以进行测试

它的位置在SDK/platform-tools中。

指令格式

  [adb] logcat [<option>] ... [<filter-spec>] ...

option部分

V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)

 

Option Description
-b<buffer> 加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.
-c 清楚屏幕上的日志.
-d 输出日志到屏幕上.
-f<filename> 指定输出日志信息的<filename> , 默认是stdout .
-g 输出指定的日志缓冲区,输出后退出.
-n <count> 设置日志的最大数目<count> ., 默认值是4,需要和 -r 选 项一起使用。
-r <kbytes> 每<kbytes> 时 输出日志,默认值为16,需要和-f 选 项一起使用.
-s 设置默认的过滤级别为silent.
-v <format> 设置日志输入格式,默认的是brief 格 式,
要知道更多的支持的格式,参看Controlling Log Output Format.

 

我们可以用CMD cd到这个文件夹中,在输入命令adb logcat来在cmd中实时看log信息

 

adb logcat -s Unity只查看unity的信息

adb logcat -d > xxx.txt 将之前log信息输出到txt中

同理adb logcat -s Unity -d > xxx.txt将之前Unity的log信息输出到txt中

成功找到了问题所在

 

更详细的相关内容可以参考:http://www.miui.com/article-272-1.html

小米真机抓log方法:http://www.miui.com/thread-397214-1-1.html

 

by wolf96 2017/7/13

2019/1/30更新

adb devices可以显示可用ip,,没网状态下可用

 

 

 

没有更多推荐了,返回首页