- 博客(214)
- 资源 (139)
- 收藏
- 关注
原创 unity3d游戏优化笔记
性能评测技术维度:客户端性能:1.内存消耗2.帧率3.cpu占用4.流量消耗5.apk大小弱网状况:1.弱网导致数据不对2.无法正常游戏3.损害玩家利益4.合理的重连机制设备兼容:1.Top100机器适配2.crash率 用户crash率(<=3%),次数crash率(<=5%)服务器性能:1.容灾处理,过载保护,防雪崩机制,响应时间,稳定性安全防护:1.代码混淆,加壳保护2.log输出清除敏感信息3.修改协议,验证数据,防作弊机制4.第三方组件
2021-10-26 11:27:39
2055
转载 内存管理篇 (一):Go语言之逃逸
本篇做为Go语言内存管理的第一篇文章,会从下面几个方向来讲述逃逸:1.什么是逃逸?2.为什么需要逃逸?3.逃逸是怎么实现的?一、什么是逃逸在开始讲逃逸之前,我们先看一下,下面的两个例子。例子1:stack.go的fun()返回的就是一个int变量。例子2:mem.go的fun()返回的是*int变量,同时里面的返回值是&i。源代码如下所示:$ go tool compile -S stack.go //生成汇编语句汇编结果分析:通过汇编可以看出来,在mem.go
2021-06-07 11:04:52
489
原创 pimpl 惯用法
现在这里有一个名为 CSocketClient 的网络通信类,定义如下:/**网络通信的基础类, SocketClient.hzhangyl 2017.07.11*/class CSocketClient{public:CSocketClient();~CSocketClient();public:void SetProxyWnd(HWND hProxyWnd);bool Init(CNetProxy* pNetProxy);bool Uninit();int
2020-12-19 16:41:00
800
1
转载 Node.js 事件循环,定时器和 process.nextTick()
Node.js 事件循环,定时器和 process.nextTick()什么是事件循环事件循环是 Node.js 处理非阻塞 I/O 操作的机制——尽管 JavaScript 是单线程处理的——当有可能的时候,它们会把操作转移到系统内核中去。既然目前大多数内核都是多线程的,它们可在后台处理多种操作。当其中的一个操作完成的时候,内核通知 Node.js 将适合的回调函数添加到 轮询 队列中等待时机执行。我们在本文后面会进行详细介绍。事件循环机制解析当 Node.js 启动后,它会初始化事件
2020-12-11 10:05:49
279
转载 Adreno GPU Profiler工具使用总结
介绍Adreno Profiler 是高通公司开发的一款针对运行在高通骁龙处理器上用于图形和GPGPU技术应用的性能分析和帧调试工具。支持OpenGL ES、 OPenCL、和DirextX的分析和调试。 安装系统需求Adreno 是基于Windows开发的一款应用,虽然目前可以支持在Ubuntu12.04+ ,但是在安装了momo 后,仍然还会存在不少的问题,因此建议在使用Windows 7 或者Windows 8 , 本人在Windows8测试使用时候,会遇到缺少"msvcp110...
2020-11-13 10:11:26
1109
1
转载 OpenGL学习脚印:深度测试(depth testing)
写在前面上一节我们使用AssImp加载了3d模型,效果已经令人激动了。但是绘制效率和场景真实感还存在不足,接下来我们还是要保持耐心,继续学习一些高级主题,等学完后面的高级主题,我们再次来改进我们加载模型的过程。本节将会学习深度测试,文中示例程序源代码均可以在我的github下载。本节内容整理自1.www.learnopengl.com Depth testing2.depth buffer faq3.Z buffer 和 W buffer 簡介通过本节可以了解到为什么需要深度缓冲区?
2020-10-22 09:39:28
776
转载 OpenGL Projection Matrix
←BackRelated Topics: OpenGL Transformation, OpenGL MatrixOverview Perspective Projection Orthographic ProjectionUpdates: The MathML version is available here.OverviewA computer monitor is a 2D surface. A 3D scene rendered by OpenGL must be pr.
2020-10-22 09:05:38
250
转载 从0开始的OpenGL学习(三十五)-延迟着色
标签:延迟着色延迟着色的效果前向着色和延迟着色在开始本章的新内容前,我们先来回忆一下之前的渲染流程是什么:在渲染一个物体前,我们需要把shader准备好。由于需要在片元着色器中进行光照计算,我们需要把场景中所有的光源信息都传递到shader中保存,这样在渲染物体的时候,就可以计算出这个物体在光照下的显示效果。如果场景中有多个物体(事实上场景中只有一个物体的情况非常少),那么我们就必须对每一个物体都走一遍上述的流程,直到所有物体都渲染完成为止。上面的流程有没有问题?没有。这个流程非常容易理
2020-10-21 09:09:17
361
转载 团队仅3人 | 原生 3D 超休闲游戏《弹无虚发》是如何炼成的?
Cocos Creator 3D v1.0.3 已于1月20日正式发布,新增原生平台支持。正式版本的发布离不开社区开发者的意见和反馈,此前v1.0.3 在社区开启公测,仅仅不到两周时间就有一位开发者就在 Cocos 中文社区中发布了一款采用 Cocos Creator 3D 制作的原生超休闲游戏《弹无虚发》,并已成功上线 iOS App Store,如此高的效率,引擎组都惊掉了下巴。一、游戏介绍《弹无虚发》是由游统科技开发的一款竖版休闲益智射击游戏,没有繁琐的游戏系统和...
2020-09-30 11:38:38
506
转载 Cocos Creator 3D 案例《弹弹乐》技术实现分享
《弹弹乐》是一款简单的休闲物理弹跳类 3D 小游戏,用手指轻轻划动屏幕来控制小球运动方向,跳中板心或是板边可获得不同分数,此外,留心获取游戏场景中设置的钻石,可以为玩家增加更多分数。Cocos 引擎开发工程师放空将分享这款3D 小游戏最基础的完整开发流程,各位开发者可以在阅读学习本篇教程后,继续发挥创造力,将这款简单的 3D 小游戏进行拓展开发,变成一款更有趣的、可对外发布的小游戏。游戏源码https://github.com/cocos-creator/...
2020-09-30 11:11:07
1665
转载 Cocos技术派 |《野蛮人大作战》H5项目从开发到上线
Cocos 公众号近半年来邀请了多位优秀的开发者进行案例分享,比如梦加《足球弹弹乐》、华夏乐游《欢乐枪战》、腾讯《乱斗之星》等,受到很多读者的喜爱。基于此,我们决定开设这个「技术派」专栏,今后将不定期邀请知名的游戏制作者,带来他们实战项目的开发技术和制作经验。来自杭州电魂网络的主程蓝图,接受了 Cocos 的邀请,将在「技术派」专栏第一期,为大家带来《野蛮人大作战 H5》项目从开发到上线的经验分享。《野蛮人大作战》是由电魂旗下 BBQ 工作室自主研发的像素风 io 英雄对战手游,一...
2020-09-30 10:58:44
818
转载 实时对战网络游戏--基于帧同步的最佳实践
网络游戏概述网络游戏的发展始于90年代。历经超过20年的发展,游戏结构和内容发生了天翻地覆的变化。自2005年以后,网络游戏的结构逐渐趋于稳定。网络游戏从联网特性上,可以大致分为弱联网和强联网两大类。弱联网,如大部分的页游,部分的手游。除此之外的网络游戏,如MMORPG,FPS/TPS,RTS等,都属于强联网。弱联网游戏,结构相对简单,已经有大量前人的文章进行了分析,这里就不再赘述。本文将对强联网游戏进行分析,并针对其中的帧同步方式,进行深入解说。强联网游戏,游戏种类比较典型的有MMORPG,FPS/T
2020-09-30 10:26:11
961
转载 Cocos 技术派第4期 | 实时竞技小游戏技术实现分享
游戏特点:萌宠射击,实时竞技四人乱斗,双人组队多个英雄,身怀绝技本文主要从三个方面来进行分享,分别是:ECS 架构 网络同步机制 技术难点及解决方案一、ECS架构1、ECS 架构目的:降低不断增长的代码库的复杂度。2、游戏原型需求:子弹:移动、碰撞英雄:移动、碰撞、发射子弹炮台:发射子弹3、传统架构的弊端要实现游戏原型,按照我们之前的做法,是用一个类来实现一种游戏实体的所有功能,这个类既有状态,又有行为。代码复用使用继承来解决。如果用这种做法,那么类
2020-09-29 20:10:32
1110
转载 alpha-beta剪枝搜索
•一种基于剪枝( α-βcut-off)的深度优先搜索(depth-first search)。•将走棋方定为MAX方,因为它选择着法时总是对其子节点的评估值取极大值,即选择对自己最为有利的着法;•将应对方定为MIN方,因为它走棋时需要对其子节点的评估值取极小值,即选择对走棋方最为不利的、最有钳制作用的着法。•在对博弈树采取深度优先的搜索策略时,从左路分枝的叶节点倒推得到某一层MAX节点的值,可表示到此为止得以“落实”的着法最佳值,记为α。•显然此值可作为MAX方着法指标的下界。•.
2020-09-24 20:26:29
813
原创 反编译apk流程
反编译apk流程1.使用dex2jar将dex文件转换为jar文件d2j-dex2jar.bat classes.dex2.使用jd-gui.exe查看jar文件3.使用apktool反编译apk为smali文件,打包反编译的apk反编译命令: apktool d demo.apk -o demo重新编译生成apk: apktool b demo -o demo_unsigned.apk对demo_unsigned.apk签名: jarsigner -verbose -keys..
2020-09-18 16:03:13
362
转载 Android反编译工具
Apktoolhttps://github.com/iBotPeaches/Apktool可以反编译apk,也可以重新打包apk下载地址:https://github.com/iBotPeaches/Apktool/releasesbrew安装:brew install apktool文档:https://ibotpeaches.github.io/Apktool/documentationapktool d test.apkdex2jarhttps://github.com/pxb
2020-09-18 14:25:06
261
转载 cocos creator动画编辑器编辑地图路径
思路1、利用动画编辑器,设置一个路径,多个路径就编辑多个动画2、用特定的代码对动画进行处理,获取到路径坐标,大佬已经写好代码, 不用自己重复造轮子了(微元法求曲线长度) 获得动画路径的贝塞尔曲线方程 求得每一段贝塞尔曲线的长度 每隔一小段打一个点 最终生成一个路径3、编写寻路脚本,挂载到物体上,让沿着路径移动动画编辑脚本挂载// gen_map_path.js 动画路径转换坐标的代码 已经升级到2.xcc.Class({ ...
2020-09-12 10:55:30
1320
1
原创 GO语言中结构体嵌套
go语言中没有继承的概念,但是可以使用结构体嵌套来模拟继承关系1.匿名结构体type TestStructBase struct { testInt int}func (t *TestStructBase) getIntegerValue() int { return t.testInt}type TestStructParent struct { testInt2 int TestStructBase}func main() { testS...
2020-09-10 12:03:24
578
转载 行为树的基本概念及进阶
前言开发游戏AI的目标之一就是要找到一个简单,可扩展的编辑逻辑的方案,从而加速游戏开发的迭代速度。在“行为系统图”中,行为系统(Behavior System)响应游戏中的各种信息,进行决策以挑选接下来将要执行的行动并且监控该行动的执行。知识模型(Knowledge Model)是对游戏世界中各种信息的抽象。在行为系统中,有限状态机(FSM,Finite State Machine)最为经典,FSM模型的优势之一是简单。但是FSMs需要用转换(Transition)连接状态(State),因此,
2020-09-04 11:43:35
1962
转载 BSP技术详解1
翻译自一篇老外的文章<Binary Space Partioning Trees and PolygonRemoval in Real Time 3D Rendering>,最后一点没有翻译完,呵呵,不太好意思!!!!!BSP技术作为室内引擎渲染的主流技术虽然已经存在多年,但是生命力仍然非常顽强,最新的DOOM3,HL2仍然将它作为渲染的主流技术,但是在网上对它介绍文章虽然多却非常浅显,大多是使用Q3的BSP文件进行渲染,而BSP文件如何产生则介绍非常少,盖因为这一部分是场景编辑器的工作,而
2020-09-01 19:20:22
779
转载 松散八叉树
1八叉树简述 1.1定义 1.2数据 1.3树的建立 1.3.1计算包围体的大小与中心点 1.3.2判断物体所属的包围盒 2松散八叉树 2.1松散八叉树的建立 八叉树简述定义八叉树是一种对三维世界进行场景管理的理想的空间数据结构。八叉树中根节点包含一个立方体包围盒。每个非叶子节点都拥有八个子节点,它们将双亲节点细分为八分体。也就是说而且每个子节点表示一个立方体的体积元素,而且所有子节点的体积加起来是父节点的体积。当满足用户所定义的标准被满足时,停止细分。常见的
2020-09-01 19:17:52
1402
转载 JPS/JPS+ 寻路算法
目录概念 强迫邻居(Forced Neighbour) 跳点(Jump Point) JPS 寻路算法(Jump Point Search) 实现原理 示例过程 JPS+(Jump Point Search Plus) 预处理 示例过程 总结 参考概念JPS(jump point search)算法实际上是对A* 寻路算法的一个改进,因此在阅读本文之前需要先了解A*算法。A* 算法在扩展节点时会把节点所有邻居都考虑进去,这样openlist中点的..
2020-09-01 16:38:05
3793
2
转载 Jenkins+Gradle实现android开发持续集成、打包
Jenkins简介Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins 的前身是Hudson是一个可扩展的持续集成引擎。Jenkins安装与配置下载地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.wa...
2020-08-31 15:32:37
303
转载 Js逆向分析
目录一、总结 一句话总结: 1、js逆向分析一般过程? 2、Js逆向分析 确定网站的登录接口? 3、Js逆向分析 确定JS的位置? 4、Js逆向分析 观察js的执行过程? 5、Js逆向分析 执行js:观察代码中都需要那些参数? 6、Js逆向分析 的具体实现思路? 二、Js逆向分析回到顶部>一、总结(点击显示或隐藏总结内容)一句话总结:1、知道如何寻找登录接口2、知道如何确定Js的位置3、知道如何观察js的执行过程4、知...
2020-08-20 20:31:12
1762
转载 js逆向解密之网络爬虫
1 引言数月前写过某网站(请原谅我的掩耳盗铃)的爬虫,这两天需要重新采集一次,用的是scrapy-redis框架,本以为二次爬取可以轻松完成的,可没想到爬虫启动没几秒,出现了大堆的重试提示,心里顿时就咯噔一下,悠闲时光估计要结束了。仔细分析后,发现是获取店铺列表的请求出现问题,通过浏览器抓包,发现请求头参数中相比之前多了一个X-Shard和x-uab参数,如下图所示:X-Shard倒是没什么问题,一看就是兴趣点的经纬度,但x-uab看过之后就让人心里苦了,js加密啊,只能去逆向解密了。2
2020-08-20 20:30:21
805
转载 io类游戏快速开发 3 状态同步
大家久等,本期日志将选择使用状态同步的方式制作io类游戏。依旧是客户端CocosCreator(以下简称ccc)引擎+服务器端Colyseus。状态同步需要将游戏逻辑再服务器编写,客户端只做展示部分。因此需要大量的服务器端的开发,这里用到的是基于Nodejs的Colyseus,编程语言是TypeScript。先上截图github:服务器端:https://github.com/cyclegtx/colyseus-iog-state-sync客户端:https://github.com
2020-08-19 15:35:36
351
转载 io类游戏快速开发 1
今天起开个新坑,准备维护一个开源项目,用来做为模板快速开发io类游戏。一直很喜欢io类游戏,经常在国外的聚合网站上尝试种类繁多的io游戏。苦于没有专用的加速器,大部分的游戏是没法顺畅游玩的。而国内的io游戏又十分稀少,而且大多都是商业发行的游戏,相较于网页免费版的io游戏,不管是数量还是创意上都相去甚远。io游戏是种对抗性强,又十分容易失去新鲜感的游戏,所以我认为网页版的io游戏以丰富的数量和创意真正的体现出了io游戏的内涵。我打算维护一个开源项目,用于快速的开发网页io类型游戏,尽量用最简单的方法
2020-08-19 15:30:04
660
转载 io类游戏快速开发 3 状态同步
大家久等,本期日志将选择使用状态同步的方式制作io类游戏。依旧是客户端CocosCreator(以下简称ccc)引擎+服务器端Colyseus。状态同步需要将游戏逻辑再服务器编写,客户端只做展示部分。因此需要大量的服务器端的开发,这里用到的是基于Nodejs的Colyseus,编程语言是TypeScript。先上截图github:服务器端:https://github.com/cyclegtx/colyseus-iog-state-sync客户端:https://github.com
2020-08-19 15:25:25
591
转载 Unity Shader学习笔记(23)运动模糊
运动模糊是真实世界中摄像机的一种效果,如果摄像机曝光时,拍摄场景发生了变化,就会产生模糊的画面。下面就给大家介绍下运动模糊效果。运动模糊两种常见方法:- 积累缓存(accumulation buffer),混合连续多张图像。即需要同一帧里渲染多次场景,性能消耗较大。- 速度缓存(velocity buffer),存储各个像素当前移动速度,利用该值判断模糊方向和大小,但曲线运动较大时会出现错误。积累缓存保持之前渲染结果不断叠加混合,模拟出运动轨迹(幻影)的视觉效果。即不用一帧里多...
2020-08-17 12:07:28
604
转载 Wwise音频解决方案概述
Wwise编辑器音频设计师在Wwise编辑器(具体使用请参考:Wwise Help)中完成声音的集成和设置,并通过UE4和unity的Wwise插件,将制作好地资源导入到游戏编辑器中Wwise编辑器是一款插件式架构的工具,其功能由众多插件提供,开发者可编写自己的插件来扩展其功能其功能变更可在官网上通过最新版本的Release note及以前版本的Release note获取①Master-Mixer Hierarchy(主混音器层级结构)Actor-Mixer Hierarchy中.
2020-08-14 16:34:01
6730
3
转载 Unity全面的面试题(包含答案)
无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家。点这里可以跳转到教程!这个是我刚刚整理出的Unity面试题,为了帮助大家面试,同时帮助大家更好地复习Unity知识点,如果大家发现有什么错误,(包括错别字和知识点),或者发现哪里描述的不清晰,请在下面留言,我会重新更新,希望大家共同来帮助开发者更多精品文章http://dingxiaowei.cn
2020-08-14 16:25:01
1332
转载 【Unity技巧】Unity中的优化技术
http://blog.csdn.net/candycat1992/article/details/42127811写在前面这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得的~Digital Tutors是一个非常棒的教程网站,包含了多媒体领域很多方面的资料,非常酷!除此之外,还参考了Unity Cookie中的一个教程。还有很多其他参考在下面的链接中。这篇文章旨在简要地说明一下常见的各种优化策略。不过对每个基础有非常深入地讲解,需要的童鞋可以自行去相关...
2020-08-11 18:26:32
376
转载 Unity3D占用内存太大的解决方法
原文链接:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大.这里写下关于Unity3D对于内存的管理与优化.Unity3D里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件...
2020-08-11 18:14:31
1073
转载 记一次基于Unity的Profiler性能分析
A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 C. Physics.Simulate: 当前帧物理模拟的CPU占用时间。 D. Camera.Render: 相机渲染准备工作的CPU占用量 E. RenderT...
2020-08-11 18:13:35
248
转载 Shader 能量法球特效
RoadLun原创,转载请声明 ~~~~~~~~~~~~······ ~~~~~多图预警~~~~~~~~~~~~~~~~~~~~~~~~~·效果:Gif不清楚,先看一张静态图噪波律动法球:流动法球:旋转法球:实现: 1.上诉所有效果均为在片段函数/着色函数中改变UV的映射方式实现,首先需要新建一个球体,接下来的效果...
2020-08-05 15:33:24
679
转载 Unity Shader着色器优化
转载自:http://forum.china.unity3d.com/thread-32340-1-1.html对游戏开发者而言,着色器长久以来就是游戏开发中的重要部分,在Unity中编写并实现着色器的过程直观且高效,优秀的着色器还可以创造非常精美的游戏画面,同时保证极高的性能。今天将由Unity的技术工程师张陈渊来分享如何对Unity Shader着色器进行优化。我们在Unity中创建Shader着色器的时候,会有四个选项:Unlit Shader(无光照着色器):它是最基本的Vertex.
2020-08-05 15:22:14
685
转载 程序员必备的 vim 命令
Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。这里收录了130+程序员必备的 vim 命令,帮助你提高开发效率。基本命令:e filename Openfilenamefor edition :w Save file :q Exit Vim :q! Quit without saving :x Write file (..
2020-08-03 16:28:53
445
转载 unity 旋转欧拉角 万向锁 解释
万向锁 一直困惑我很久。。。。原因出在这里,我以为欧拉角旋转是以模型坐标(齐次坐标系)为旋转轴。问题就来了,无论旋转那个轴,其它两个轴也会相应的变化,下面看图:根据上面的说明两个旋转面(圆圈)怎么会共面,让我迷糊。假设共面,那这两个旋转面的法线应该是旋转轴,要想两个面共面,那旋转轴肯定平行的。但问题是以模型坐标(齐次坐标系)为旋转轴,无论旋转那个轴,其它两个轴也会相应的变化,而且相互垂直。就不会发生共面,不会出现万象锁???网上说欧拉角坐标轴旋转是按顺序旋转的,即父子关系,如下图还.
2020-08-03 13:02:24
464
转载 对C#热更新方案ILRuntime的探究
转载请标明出处:http://www.cnblogs.com/zblade/对于游戏中的热更,目前主流的解决方案,分为Lua(ulua/slua/xlua/tolua)系和ILRuntime代表的c#系。今天就来探究一下ILRuntime是如何实现热更的流程的,新手入门,个中有错误理解,欢迎指正。ILRuntime的原理首先说一下lua的热更新基本过程,unity提供了AssetBundle的资源打包方式,这样可以通过资源的对比来更新最新的资源。而lua文件不需要编译,可以被打包进游戏的资源中,
2020-05-28 14:37:21
728
原创 unity3d中对模型进行动态切割方案
1.使用插件Shatter Toolkit2.使用开源库https://github.com/DavidArayan/ezy-slice
2020-05-28 14:18:24
2367
PyQt4-4.11.4-cp27win32
2017-10-25
cocos2dx Texturepacker打包的大图
2017-10-24
Unity3D人工智能编程精粹
2017-10-20
mangos源码(游戏服务器端程序框架)
2017-10-12
JAVA反编译和逆向工程技术
2017-10-12
cocos creator shader
2018-07-17
Game AI Pro 2 Collected Wisdom of Game AI Professionals.pdf
2018-02-02
我所理解的Cocos2d-x
2017-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人