工作笔记
文章平均质量分 80
魂玉天成
从事游戏行业十几年,自己都不记得做了多少款、多少种类型游戏了,拯救过多少产品,使用过引擎:cocos、unity、虚幻4,前后端顶层架构实现,常用编程语言C++、java、C#等,对图形有深刻理解。建CSDN博客的目的是发现自己最近记忆力差了许多,以便作为记录。并帮助那些在开发路上迷茫和需要帮助的人,也欢迎技术爱好者共同探讨。
展开
-
理解游戏服务器架构-逻辑底层架构
如果说部署架构犹如建房之中的工程设计图纸,那么逻辑底层架构就是地基和框架结构、承重墙设置。功能图纸的好坏决定了这个工程的模样和基本面貌以及这个功能的体量,逻辑底层架构就是决定着这房子能够抗震多少级,而业务架构那就是我们的装饰到底是怎么样的。逻辑底层架构是在根据逻辑业务场景为而实现的代码技术建设。逻辑底层为具体功能提供服务,它是业务的基础建设,是一个服务者,而不是具体逻辑的实施者。原创 2024-03-30 22:46:24 · 1610 阅读 · 0 评论 -
理解游戏服务器架构-部署架构
对方一直打他们的login服务器和网关,登录和网关它们没有做负载均衡,这种情况只能先上高防,后期把负载均衡加上,出现类似的情况,将新玩家导入到新的服务器,让ddos攻击有高防的机器,这样影响就小了很多。负载均衡是决定了游戏稳定和承载上线的总要环节,作为服务器后台开发,那一定要知道我们的瓶颈在哪里,要知道单个进程的承载和单个服的承载,要对服务器前期要有个预设值,通过这个这个预设值来进行总体的实际。在部署架构阶段,我们考虑的是我们架构设计的愿景,或者说是我们向往架构的设计的蓝图。需要保存数据的数据库服等。原创 2024-03-30 21:23:14 · 1282 阅读 · 0 评论 -
unity小程序websocket:nginx配置https (wss)转http (ws)及其他问题解决
为了服务器网络的通用性,我们在实现移动端的游戏转微信小程序使用websocket。对于微信小程序官方给出的技术标准是必须使用https+域名的访问方式(使用websocket也必须是wss即:支持https的websocket),但是https的key稀缺性和我们的服务器是分布式部署的,不可能在每一个于客户端链接服务器都配置key,所以服务器仅支持http的websocket即ws基于此,我们需要通过nginx代理来处理转发的问题。这样https的证书只需要在nginx中配置,同时在nginx中配置wss。原创 2024-01-09 17:49:56 · 2393 阅读 · 0 评论 -
unity:玩家从SDK注册到登陆就流失百分10几的思考
游戏最近在小范围买量测试,测试的平台某快某手平台,发现玩家在从SDK注册就到登录就流失百分10几,当我们通过打点数据发现这情况的时候,对于问题的分析百思不得其解,由于先前游戏已经在其他平台测试过,玩家从SDK注册到登陆只会流逝百分之0.5左右,百分之10几的流失让我们很是心痛,因为这一步玩家的流失,代表这游戏推广买量的成本的增加和留成的减少。本人是技术,首先找的问题是技术问题,发现部分问题的端倪。原创 2024-01-09 00:45:45 · 1090 阅读 · 0 评论 -
解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题
通过日志我们发现,在unityActivity一启动的时候,我们就启动下载更新文件(也就是在awake函数中调用UnityWebRequest函数将StreamingAssets的初始包的assetbundle拷贝到可写的沙盒目录下),小概率爆出如上问题。最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多,bugly有时候并不能捕捉到这种情况,我们各种怀疑和查找,最终发现问题的根源。从头再来,最终我们在官网发现。原创 2024-01-08 21:37:03 · 1726 阅读 · 0 评论 -
以unity技术开发视角对android权限的讲解
在unity开发过程中,接SDK的时候有一个问题是绕不开,那就是合规问题,早期的时候对于权限设置和获取并没有那么多限制,或者说规范吧。现如今随着合规越来越严格,对于unity游戏开发人员对于android的权限有一些大致了解还是有其必要性,尤其是需要接SDK的小朋友而言,更是如此。这里就简约讲解下android有哪些权限分类,同时如何在运行时申请权限。由于android开发并不是我的主要技术防线,所以这里只做一个简单的知识普及而已。Android权限分类普通权限(安装时权限危险权限(运行时权限特殊权限。原创 2024-01-08 20:44:07 · 1583 阅读 · 0 评论 -
解决IDEA警告:The file size exceeds configured limit (2.56MB). Code insight features are not available
最近在接第三方的SDK,idea编译的时候无法编译通过,提示如下:单个文件大小超出了默认的设定值(2.56M),所以代码的检测和提示功能不可用。但是我们真正Build的时候确实能编译通过的不影响运行。其实:idea 这么做得目的是,避免单个文件过大以便造成它的代码提示信息过慢,提醒程序员尽量不要文件过大看到爆红,作为有强迫症的我们怎么能忍 既然是idea的设置,那么我们需要修改单个文件的设置大小。原创 2024-01-04 17:34:01 · 6917 阅读 · 0 评论 -
python 在window对exe、注册表、bat、系统服务操作等实例讲解
接着要讲的python包含如下内容:调用exe运行程序、调用mis安装文件、和批处理文件,创建、开启、关闭window服务、设置系统变量等。该函数功能是:判断zookeeper服务是否存在,如果存在,关闭并删除,并启动bat文件注册zookeeper服务,并启动zookeeper服务。调用mis文件与调用exe文件他们同样需要使用subprocess库,但是有些许的不同,主要表现在。对于window服务,同样我们需要用到subprocess库,以我自己注册zookeeper服务为例。原创 2023-10-10 18:27:25 · 435 阅读 · 0 评论 -
解决idea爆问题: The file size exceeds configured limit . Code insight features are not available.
在使用idea 进行Java开发的时候,爆出了The file size(2.59MB) exceeds configured limit(2.56MB) . Code insight features are not available。这是idea告诉我们,我们idea编译的Java单个文件代码,超过了我们默认限定的长度(2.56M),在这里需要将我们编译代码文件的限定长度进行修改。原创 2023-10-10 16:58:20 · 3204 阅读 · 0 评论 -
unity中如何查看网络是否可用状态
总之,获取 iPhone 设备的网络信号强度需要在 Objective-C(或 Swift)中编写相关代码,并与 Unity iOS 项目集成。通过使用 Core Telephony 框架提供的功能,您可以以编程方式获取到 iPhone 设备的网络信号强度,并将其在 Unity 中使用。在 Unity 中,获取 iPhone 设备的网络信号强度可以通过使用 iOS 的原生功能来实现,而不是完全依赖 Unity 引擎。通过这种方式,您可以在 Unity 中检查当前设备的网络连接状态,并根据需要执行相关操作。原创 2023-06-28 15:21:42 · 2371 阅读 · 0 评论 -
unity 开发中10个小知识(三)
build-in项目时相机的渲染顺序是通过摄像机的depth深度来相机的渲染顺序的,但是在urp项目中却不是,而是通过camera stack来管理在Unity中,使用URP (Universal Render Pipeline)时,相机属性的设置都是通过相机栈(camera stack)来管理的。将一个相机放入另一个相机的相机栈中,需要在Inspector窗口中对相机属性进行配置。具体步骤如下:拖拽需要放入相机栈中的相机至想加入的相机的“Additional Camera”属性中。原创 2023-06-25 18:12:14 · 990 阅读 · 0 评论 -
unity 开发中10个小知识(二)
脚本执行序列指的是所有的 MonoBehaviour 对象实例的执行顺序,在 Unity 中,MonoBehaviour 对象的执行顺序对于处理和调整游戏对象及其组件之间的依赖关系非常重要。注销创建的对象是一种有效的方式,可以使用此功能来记录创建的新对象,并使Unity撤销和重做操作结果符合预期。在 Unity 编辑器中,MonoBehaviour 对象的执行顺序通常由所属 GameObject 中组件的执行顺序控制,或者通过脚本的“Execution Order”(脚本的执行顺序)属性控制。原创 2023-06-13 15:18:41 · 2001 阅读 · 0 评论 -
unity 开发中10个小知识(一)
现在记忆力越来越差,写过很多遍的内容,都有可能需要慢慢才能想起来,这里就记录下在unity开发过程中一些小的知识点。约束为T必须继承BaseComponent,并且带默认构造函数。如果a为空返回空,否则返回a.name。当a不为空时返回a,否则返回b。原创 2023-06-06 20:36:46 · 572 阅读 · 0 评论 -
C# list的sort排序
有时需要对List列表中内容进行排序,List 的Sort方法排序有三种结果 1,0,-1分别表示大于,等于,小于。List的sort的方法如何使用,如何实现降序和升序return 1;return 0;return -1;输出结果:为 10,12,14,原创 2023-06-06 16:01:14 · 8501 阅读 · 0 评论 -
C#实现可以遍历时删除的字典dictionary
在开发过程中我们会遇到,使用字典dictionary时,可以在遍历(for或者foreach)时想删除的某一个符合条件的节点,普通的dictionary的无法能够提供支持。一般情况下,我们往往需要定义一个字典dictionary 和一个List,来配合使用,比如:假定我一个玩家管理器需要管理很多玩家,在玩家的管理器的每帧调用的函数中需要遍历所有玩家,发现标记的IsDestroy的就删除该玩家。原创 2023-05-27 17:37:27 · 2011 阅读 · 0 评论 -
unity 序列化那些事,支持Dictionary序列化
unity中的inspector面板支持list,但是有时候我们需要Dictionary,尤其是我们需要通过asset资源与ScriptableObject脚本一起实现序列化时更是需要如此。如:技能需要通过id来确定访问单个技能数据,那必须满足key和Value的数据结构。由于unity并不是原生的支持对字典的序列化,这件简述了unity关于序列化与及自定义类的序列化的方法,同时实现在inspector面板中字典序列化问题,以及asset资产中实现序列化 Dictionary的方法原创 2023-04-16 13:28:42 · 5486 阅读 · 0 评论 -
“未为 Visual Studio Tools for Unity 生成此 Unity 项目”问题的解决
今日打开unity,运行脚本时,vs2019提示“未为 Visual Studio Tools for Unity 生成此 Unity 项目”。项目昨天还时好好的,隔一夜竟然出现这问题,发现昨天关机的时候,应该是直接关机,并没有先关闭unity进程和VS引起的。这里需要重新生成unity 脚本工程即可这里就记录下问题的解决办法,以便后出现问题的时候好查阅。原创 2023-04-12 11:36:33 · 2502 阅读 · 1 评论 -
unity中获得inspector面板rotation的值
在unity编辑器有时候要根据inpsector的值来做设定,比如限定摄像机的的旋转角度,设置rotation.x在一定的范围内。但是实际情况中inpsector的面板值是经过转换的值,需要通过eulerAngle欧拉值计算才能获得。原创 2023-04-11 18:26:19 · 1658 阅读 · 2 评论 -
保姆式教学-实现天空盒旋转
在一个小Unity项目中,需要将天空盒旋转,以便云朵能够简单移动效果,项目是URP项目,现做下记录,unity 编辑器是2020.1.0f1版本。早期的版本天空盒可以通过Camera.main的对象获得。现在URP项目统一使用RenderSettings 设置直接获得。原创 2023-04-06 16:48:13 · 1563 阅读 · 0 评论