你一身傲骨怎能输
大家好,我是傲骨,一名热爱游戏开发的程序员,主要是游戏客户端研发方向。
我拥有计算机科学和应用数学学士学位,并在游戏行业工作了超过10年,专注于使用Unity和C#进行游戏开发。我参与过多个独立游戏项目,从概念设计到发布,积累了丰富的实践经验。
我会定期分享相关技术经验供大家学习和参考,已有的博客文章也会随着时间而逐渐更新与优化,我会尽量将每一篇文章写写满干货,让大家能阅读后有所收获,鉴于本人还在公司工作暂时不开启交流群,后期会逐渐开启交流群并且研发一些作品展示实战效果。对于一些购买我的技术专栏的表示感谢,感谢您的支持,一些专栏的文章会跟进公司项目实战经验不断的优化和更新,同时会替换掉烂文。
展开
-
软件设计四步曲:原则、架构、方法与模式
本文通过比喻和案例,系统阐述了软件设计中的四大核心要素:设计原则、架构设计、设计方法和设计模式。设计原则是系统的灵魂,确保代码的易维护性和扩展性;架构设计定下系统的大局,决定整体结构和未来发展方向;设计方法规范开发流程,确保团队协作高效有序;设计模式则解决具体问题,提升代码的灵活性和可维护性。通过在线点餐系统和企业级电商平台的案例,展示了这些要素在实际项目中的应用,强调了它们在构建高质量、可扩展软件系统中的重要性。最终,文章总结指出,四者环环相扣,共同为开发出安全、高效、灵活的软件系统提供了坚实基础。原创 2025-03-03 23:56:49 · 97 阅读 · 0 评论 -
揭秘Unity帧率统计:主循环与计时器的完美协作
本文详细介绍了Unity中主循环和计时器的概念及其在帧率统计中的应用。主循环是游戏每一帧执行的核心流程,包括处理输入、更新逻辑、物理模拟和渲染画面等步骤。计时器则用于记录时间流逝,帮助统计帧率。通过计数器和计时器的协作,可以实时计算并显示游戏的帧率(FPS),从而帮助开发者优化性能、提升玩家体验。文章还探讨了不同帧率统计方式的优缺点,并提供了代码示例,展示了如何在屏幕上实时显示FPS。最后,总结了主循环和计时器在游戏开发中的重要性,强调了它们对游戏流畅度的关键作用。原创 2024-12-18 23:53:29 · 117 阅读 · 0 评论 -
CPU分支预测:老司机的智能导航术
分支预测是CPU优化性能的关键技术,通过提前猜测程序中的分支路径(如if/else、循环等),避免因等待条件判断而导致的性能损失。CPU通过静态预测(基于简单规则)和动态预测(基于历史记录)来猜测分支方向,并利用分支目标缓冲区(BTB)记录目标地址。如果预测正确,CPU可以无缝执行指令;如果预测错误,则需回滚流水线,导致性能损失。为优化分支预测,开发者应尽量使分支规律化,减少难以预测的分支,并采用无分支代码(如条件赋值、位运算)替代复杂分支。不同CPU架构的分支预测能力各异,现代CPU通常具备更复杂的预测机原创 2025-05-14 00:46:00 · 13 阅读 · 0 评论 -
舞台剧揭秘:状态同步与输入同步的游戏之道
慢节奏,广播状态,大家慢慢跟上;快节奏,同步指令,动作分秒不差。一句话总结:慢节奏游戏像温情剧,大家只需定期对齐状态,体验不会受影响;快节奏游戏像动作剧,必须同步每个动作指令,才能保证公平和流畅!我们继续用“舞台剧”比喻,把状态同步和输入同步的适用场景讲得更生动、更具体!状态同步就像导演定时拍一张全家福,大家慢慢摆好姿势,拍出来的照片都差不多。输入同步就像大家一起跳团体操,导演每一拍都发口令,动作必须分毫不差。原创 2025-05-05 20:42:38 · 635 阅读 · 0 评论 -
Unity资源Cook:大厨烹饪游戏大餐的底层奥秘
Cook,在Unity里通常指的是“资源烹饪”——把你在编辑器里用的各种原材料(图片、模型、音频、脚本等),加工成适合目标平台(比如Android、iOS、PC)运行的“熟食”,并打包进最终的安装包里。Unity资源Cook,像大厨做大餐。原料先预处理,菜单定好菜。依赖全梳理,平台定锅灶。打包装盒子,外卖送玩家!我们继续用“餐厅大厨”的比喻,把Unity资源Cook的更底层细节优化技巧常见误区和实战建议讲得更透彻。原创 2025-05-07 01:15:44 · 34 阅读 · 0 评论 -
UE Android APK包体优化:精打细算的搬家达人指南
UE的包体优化就像精打细算的搬家,只有把每一步都做到位,才能让你的“搬家车”又小又轻,既省钱又高效,轻松上架各大平台!我们继续用生动形象的方式,深入讲讲UE Android APK极致瘦身的进阶技巧常见误区团队协作建议,并给出实际操作流程和工具推荐,让你在项目中能真正落地。包体优化不是一蹴而就,而是每个细节的积累。就像极致搬家达人,只有把每一件物品都精挑细选、合理打包、分批搬运,才能让你的“搬家车”又小又轻,轻松上路,畅通无阻!原创 2025-05-07 01:08:17 · 37 阅读 · 0 评论 -
生动形象的解释下Unity游戏包量优化策略
比喻包体就像你出门旅行时的行李箱。行李箱越大,带的东西越多,但搬起来越费劲,过安检也慢。游戏包体越大,下载慢、安装慢,审核也容易被卡。目标让你的“行李箱”又小又精,带的都是必需品,轻松过关!Unity包体优化,就像极限收纳大师打包行李:只带必需品,能压就压,能合就合,随用随取,自动称重,团队协作,让你的游戏包体又小又精,用户体验飞快,平台审核无忧!原创 2025-05-06 02:10:52 · 26 阅读 · 0 评论 -
生动形象的解释下Unity资源管理——“道具仓库的高效调度员”
Unity资源管理=道具仓库的高效调度员他让每一件道具都能在对的时间、对的场合、以最省力的方式出现在舞台上,保证演出精彩,后台井然有序,资源不浪费,观众(玩家)体验流畅!我们继续用“道具仓库的高效调度员”这个比喻,把Unity资源管理的实际操作、常见问题、优化技巧和团队协作讲得更细致、更生动。Unity资源管理=道具仓库的高效调度员他让每一件道具都能在对的时间、对的场合、以最省力的方式出现在舞台上,保证演出精彩,后台井然有序,资源不浪费,观众体验流畅。原创 2024-12-21 23:53:48 · 120 阅读 · 0 评论 -
生动形象的解释下网络同步中的插值、预测与回滚
插值:像动画师补帧,让画面顺滑。预测:像演员即兴发挥,先演再说。回滚:像导演喊“NG”,倒带重拍。原创 2024-12-21 23:55:57 · 117 阅读 · 0 评论 -
Unity网络同步——“多地同时上演的舞台剧”
多地同演,导演总控;状态输入,事件分工;压缩带宽,插值平滑;安全校验,公平同步。Unity网络同步就像“多地同时上演的舞台剧”,通过总导演(服务器)统一调度,保证每个剧场(客户端)演员、道具、剧情都能同步演绎,带给全球观众一致的精彩体验!我们继续用“多地同时上演的舞台剧”这个比喻,更深入讲解Unity网络同步的进阶内容网络同步的底层机制与同步策略对比帧同步与状态同步的详细区别网络同步中的插值、预测与回滚网络安全与防作弊工程实践中的常见问题与解决方案具体技术选型建议。原创 2024-11-30 23:54:10 · 377 阅读 · 0 评论 -
C#转汇编再转Lua为何不可行?
C#转Lua就像“中文诗歌翻译成英文诗歌”,有些词没法直译,只能意译或省略。C#转汇编再转Lua,就像“中文诗歌→摩斯密码→英文诗歌”,中间环节反而让信息丢失得更彻底,最后根本拼不回原来的意思。原创 2025-01-02 23:53:14 · 110 阅读 · 0 评论 -
跨DS无感迁移:大世界游戏无缝体验核心技术
跨DS无感迁移是大世界射击游戏实现大地图无缝玩法的核心技术。分区+状态同步+无感切换+全局调度。状态同步、边界处理、全局通信、容灾机制。接下来我会进一步细化“跨DS无感迁移”在射击大世界游戏中的技术实现细节常见难点优化方向,并给出一些架构设计建议和业界案例参考,帮助你更好地理解和落地。跨DS无感迁移是大世界射击游戏实现大地图无缝体验的核心技术。分区设计、状态同步、网络切换、对象迁移、全局调度、负载均衡、异常容灾等环节。建议结合自身业务场景,参考业界成熟方案,逐步演进和优化。原创 2025-05-01 04:05:46 · 31 阅读 · 0 评论 -
Android 音频 Crash偶现疑难问题定位分析
Crash位置:系统层方法。触发场景:游戏运行中,来电话,挂断后触发静音。Crash原因AudioTrace对象析构时,跨进程调用仍访问该对象,导致访问已析构或状态不一致。遇到的Crash是典型的跨进程调用与对象生命周期管理冲突问题,核心是AudioTrace对象析构时仍被跨进程调用访问。明确AudioTrace对象的生命周期边界。确保析构时无后续调用。加强跨进程调用的同步和状态管理。如果能控制系统层代码,建议从引用计数和加锁入手;如果只能从应用层规避,则尽量避免电话状态变化时音频操作。原创 2025-03-01 19:26:10 · 118 阅读 · 0 评论 -
三角形顶点顺序:决定渲染与光照的关键
三角形顶点顺序A→B→C指的是在定义三角形时,顶点被依次连接以形成三角形的顺序。这个顺序决定了三角形的绕行方向(顺时针或逆时针),进而影响法线方向和三角形的正面/背面。在实际应用中,顶点顺序通常体现在三角形索引数组中,而非顶点数组的存储顺序。顶点顺序对渲染、光照和背面剔除等有重要影响。例如,在Unity中,顶点顺序决定了三角形的法线方向,进而影响光照效果和渲染结果。因此,确保正确的顶点顺序对于3D图形的正确显示和处理至关重要。原创 2025-04-29 03:08:50 · 26 阅读 · 0 评论 -
分层信息与导航网格生成全解析
分层信息和导航网格的数据量,和地图大小、精度有关,但通过分区、压缩、流式加载等手段,完全可以控制在合理范围内。现代大型游戏、仿真系统、机器人导航都在用这套方案,内存消耗是可控的,不会“爆炸”。只要合理设计,不会成为性能瓶颈。“分层信息像拼图边框,数据很小;导航网格像地砖拼图,数据中等,但可以分区、压缩、按需加载;局部A*只在小块地砖上走,内存几乎可以忽略。我们继续深入,详细讲讲分层信息和导航网格数据的生成流程、数据结构示例、内存占用估算。原创 2025-04-28 02:19:03 · 29 阅读 · 0 评论 -
0解析开销二进制JSON格式的思路
你可以仿照FlatBuffers思路,设计自己的二进制JSON格式:对象头部:字段数、字段表(字段名哈希/索引、类型、偏移)数据区:实际的字符串、嵌套对象、数组等支持直接指针访问和偏移跳转0解析开销的二进制JSON格式,本质是用结构化的二进制布局+字段表+类型标记+偏移量,来实现高效的随机访问和零拷贝。FlatBuffers、Cap’n Proto等都是成熟的参考实现。你可以根据自己的需求,设计类似的头部和数据区布局,做到无需递归解析、直接指针访问。下面我将。原创 2025-04-28 00:25:01 · 25 阅读 · 0 评论 -
Unity手游资源管理:大包与小包方案深度对比
下面将在Unity手游资源管理中的细节做更详细的对比和说明,涵盖它们的结构、优缺点、适用场景、技术实现、常见问题等。原创 2024-09-30 01:18:19 · 141 阅读 · 0 评论 -
海外计费中的Midas支付流程
下面为你详细梳理,分为和,并结合各个角色(game Client、game Server、midas sdk、midas server、steam sdk、steam server、midas user account)进行说明。原创 2024-12-23 23:35:46 · 111 阅读 · 0 评论 -
Midas整体接入流程说明
的实操细节,尤其是开发和测试过程中常见的实际问题、优化建议,以及上线后持续运营的要点。下面继续为你详细补充。原创 2024-12-23 23:37:40 · 134 阅读 · 0 评论 -
揭秘App包名与Bundle ID的生成与SDK关键作用
包名(Android)/Bundle ID(iOS)是App的唯一身份标识,由开发者在项目创建或配置时指定。在SDK接入中,它们用于鉴权、初始化、数据统计、回调等多个关键环节,必须与SDK后台配置保持一致,否则会导致SDK功能异常。下面继续补充更深入的内容,包括包名/Bundle ID的生成细节、在多渠道/多环境下的管理方法、与SDK参数的对应关系、常见问题及排查方法,并给出一些实际开发建议。包名/Bundle ID是App和SDK后台的唯一桥梁,决定了SDK能否正常服务。原创 2025-04-27 02:39:03 · 55 阅读 · 0 评论 -
GC与异步加载并发导致崩溃的深度解析
根因:GC与异步加载并发,资源状态被误判,导致致命崩溃。核心措施:合理配置GC参数,完善同步机制,增加异常保护,强化监控与报警。长期建议:关注引擎版本修复,持续优化资源生命周期管理。原创 2025-04-26 02:43:55 · 28 阅读 · 0 评论 -
软件行业中的“中台“的故事
中台”是中国软件行业在互联网大规模创新和复杂业务协同下的产物。它的故事,是一部关于技术、组织、业务协同进化的现代企业管理史。未来,随着云原生、AI等新技术的发展,“中台”还会不断演化,成为企业数字化转型的重要基石。下面我将继续用故事和案例的方式,深入讲讲“中台”在软件行业中的典型实践、技术架构、组织变革、失败教训,以及它在AI和云原生时代的新趋势。“中台”不是一成不变的技术方案,而是企业在数字化转型、业务创新、组织协同中的一种能力沉淀和复用机制。原创 2025-04-26 02:33:59 · 38 阅读 · 0 评论 -
符号表的重要性
符号表是编译器的核心数据结构,承载着程序中所有符号的详细信息。它不仅支持编译过程中的语义分析和代码生成,还为调试和优化提供基础。理解符号表的结构和管理机制,有助于深入掌握编译原理和调试技术。原创 2024-11-05 23:52:37 · 145 阅读 · 0 评论 -
MMORPG移动同步:技术原理与优化策略
问题现象解决方法橡皮筋角色被拉回优化预测、平滑校正瞬移/抖动角色跳跃、卡顿插值窗口加大、丢包容错幽灵/消失看不到/残影AOI事件可靠传输、定期全量校验穿墙/加速作弊服务器权威、合法性校验。原创 2024-11-11 23:38:52 · 110 阅读 · 0 评论 -
从零打造3A游戏:全流程深度解析
技术难度极高:如大世界无缝流式、实时光影、复杂AI、多人同步等。内容量巨大:3A游戏需要海量高质量内容,生产压力极大。团队管理复杂:大团队跨部门协作,沟通和管理难度高。资金压力大:开发周期长、投入高,回报周期长,风险大。质量要求极高:画面、玩法、叙事、音频、性能、兼容性等都要顶级。市场竞争激烈:3A市场被国际大厂垄断,新团队面临极大挑战。从零开始做3A游戏,是一场“技术+内容+管理+资金+市场”的超级马拉松。每一个环节都可能决定成败。先做小型Demo验证核心玩法和技术可行性;原创 2024-11-11 23:42:07 · 105 阅读 · 0 评论 -
关于游戏开发管线的设计与优化
游戏开发管线(Game Development Pipeline)指的是从资源制作、集成、测试到发布的全流程自动化与标准化体系。它涵盖了美术、程序、策划、音频等多工种协作的所有环节,目标是让内容高效、可控、可追溯地流转到最终产品。高效的游戏开发管线=自动化+标准化+可追溯+高协作。管线不是一蹴而就的,需要持续优化和团队共建。只要坚持自动化、规范化、可视化,团队效率和产品质量都会大幅提升。当然可以!游戏开发管线(Pipeline)的设计与优化是提升团队效率、产品质量和项目可控性的核心。下面我将从。原创 2024-11-11 23:43:34 · 127 阅读 · 0 评论 -
为什么sharedassets会很大?
sharedassets大,根本原因是“被多个场景共同引用的资源过多或过大”。解决办法是合理分组、单独打包公共资源、定期清理冗余、优化资源依赖。下面继续深入讲解sharedassets文件过大的进一步原因分析、定位方法和实战优化建议。原创 2024-11-11 23:44:51 · 113 阅读 · 0 评论 -
Unity包体优化全攻略:提升性能与效率
代码层面删除未用脚本、插件。禁用未用的Unity模块(Player Settings > Configuration > Scripting Backend/Managed Stripping Level)。避免使用大体积的系统库(如System.Xml)。资源层面清理未用图片、音频、字体、文档。UI资源按需加载,合并图集,减少冗余。音频、字体统一格式,精简内容。资源打包方式。原创 2024-11-12 23:39:40 · 118 阅读 · 0 评论 -
Android视频播放:存储权限与分区存储全解析
播放本地外部存储的视频需申请存储权限,是因为 Android 系统出于安全和隐私保护,限制了对外部存储的访问。没有权限,Unity 无法读取和播放这些文件。下面详细补充Android存储权限的申请流程、适配新版本(Android 10/11/12+)的注意事项、Unity中常用的权限申请代码示例,以及如何在不申请权限的情况下访问媒体文件等实用内容。:访问外部存储需动态申请权限。:分区存储限制,推荐用 SAF 或 MediaStore 访问媒体文件。原创 2024-11-12 23:40:44 · 117 阅读 · 0 评论 -
OBB与差量更新:轻量级资源优化方案
是 Android 提供的一种扩展资源包机制,常用于大型游戏、应用的资源分包。OBB 文件通常存放在目录下。OBB 文件本质上是一个二进制大文件,内容和格式由开发者自定义,Android 系统只负责下载和挂载。差量更新(增量更新)指的是只下载和更新与旧版本不同的部分,而不是整体替换。常见做法:生成“差分包”(patch),客户端用旧包+差分包合成新包。资源分块管理将 OBB 内部资源(如图片、音频、脚本等)按文件或分块管理,记录每个资源的版本号或 hash。生成差分包。原创 2024-11-12 23:43:05 · 121 阅读 · 0 评论 -
揭秘targetSdkVersion:Android开发的核心秘籍
决定了你的App在不同Android系统上的“兼容模式”或“新特性模式”。值越高,系统对你的App要求越严格,你需要适配更多新行为。值太低,虽然兼容性好,但无法上架Google Play,也会错过新特性和安全保护。targetSdkVersion 决定了你的App在新系统上是“被兼容”还是“被严格要求”,它是Android兼容性和新特性适配的核心参数。下面继续深入讲解的相关内容,包括它的工作原理、实际开发中的注意事项、常见误区,以及如何安全地提升 targetSdkVersion。原创 2024-11-12 23:44:08 · 153 阅读 · 0 评论 -
Unity3D资源导入崩溃:原因与解决方案全解析
AssetPostprocessor、OnPreprocessXXX等脚本异常。插件(如美术工具链、热更框架)在导入时抛出未捕获异常。临时禁用所有Editor/Editor Default Resources/Editor下的脚本和插件,排除脚本干扰。检查是否有自定义AssetPostprocessor、OnPreprocessTexture等脚本。OnPreprocessTexture脚本未做异常处理,遇到特殊图片时抛出异常,导致Unity崩溃。原创 2024-11-12 23:47:08 · 172 阅读 · 0 评论 -
Protobuf-net:反射与Emit的序列化奥秘
protobuf-net 默认通过反射或动态代码生成(Emit)来实现序列化和反序列化。下面详细解释一下这句话的含义和背后的原理:4. 反射与Emit的优缺点4.1 反射的优缺点优点:灵活:可以动态处理任意类型,无需提前生成代码。易用:开发时无需额外操作,直接标记特性即可。缺点:性能较低:每次序列化/反序列化都要查找字段、属性,频繁装箱拆箱,GC压力大。在AOT环境(如Unity iOS)部分反射API受限,可能直接报错。4.2 Emit的优缺点优点:性能高:只在原创 2024-11-13 23:51:43 · 77 阅读 · 0 评论 -
Unity项目为何必须使用Protobuf-net Precompile?
“protobuf-net的Unity项目都会使用Precompile来对PB对象做预处理的原因?”下面是详细解答:兼容iOS AOT环境提升性能避免运行时异常可控性和可维护性下面继续详细补充:定义proto协议生成C#类Precompile处理Unity项目引用7. Precompile的优势7.1 兼容性彻底规避iOS AOT下Emit/反射的限制。适配Unity所有主流平台(iOS、Android、PC等)。7.2 性能静态代码,序列化/反序列化速度快,GC压力小。适合移动端对性原创 2024-11-13 23:52:13 · 125 阅读 · 0 评论 -
优化Protobuf-net Precompile,精简iOS包体
用你修改过的Precompile工具,输入所有PB类只生成需要的Write/Read方法输出精简版CSProtoSerializer.dll。原创 2024-11-13 23:52:54 · 116 阅读 · 0 评论 -
Unity渲染状态重置:谁在掌控全局?
Unity渲染管线中的渲染状态重置,主要由Unity引擎在渲染流程的关键节点(如DrawCall、Camera切换、渲染目标切换)自动完成。Unity通过状态缓存和对比机制,确保只在必要时才切换或重置状态,从而提升渲染效率。底层图形API不会主动重置状态,只被动执行命令。开发者在使用低级渲染接口时需自行管理状态,避免状态污染。原创 2024-11-13 23:55:30 · 244 阅读 · 0 评论 -
一套可落地的资源扫描与优化建议方案
本方案无需开发者配合,完全基于APK包内资源自动化分析,能有效发现不合理资源并给出具体优化建议,帮助开发者精准定位和优化问题资源。下面继续详细展开,补充具体实现细节、自动化流程、常见问题与应对、以及优化建议的落地方式,让方案更具可操作性。原创 2024-11-14 23:01:14 · 100 阅读 · 0 评论 -
三大摄像头数据回传方式性能大比拼
只用于小数据、事件通知。JNI直接回调:适合中等数据量、对实时性有一定要求的场景。:唯一适合高分辨率、高帧率、低延迟场景(如AR/VR、AI推理等)。实际开发中,推荐优先考虑Native Plugin方式,尤其是摄像头数据流大、对性能有要求时。下面继续详细分析三种摄像头数据回传方式的性能细节、实现要点、典型代码片段,并给出实际开发中的优化建议。:简单但低效,适合小数据。JNI直接回调:适合中等数据量,注意JNI拷贝和线程同步。:高性能首选,适合高分辨率高帧率场景,实现复杂度最高。原创 2025-01-17 23:18:08 · 113 阅读 · 0 评论 -
Unity与Android摄像头交互全解析
如果 Unity 自带的Java/Kotlin 编写摄像头操作代码(如用 Camera2 API,支持更高帧率、分辨率、手动对焦等)。Unity 通过 JNI 调用插件方法,获取摄像头数据。数据回传:可以通过 JNI 回调、UnitySendMessage、或者 Native Plugin(C++)等方式,把数据传回 Unity。Unity 调用 Android 摄像头的底层原理。原创 2025-01-17 23:18:39 · 143 阅读 · 0 评论 -
Unity手游Android端高效提效方案全解析
解包-替换-重签名是Unity手游Android端高效验证平台/引擎/C#层改动的常用手段。C#程序集可直接替换(mono模式),jar/dex需转dex合并,直接替换。推荐自动化脚本和热更框架进一步提升效率。注意兼容性和签名一致性,避免因替换导致运行时崩溃。下面我将继续深入,补充更多实用细节、自动化建议、常见问题排查,以及针对Unity手游Android端“解包-替换-重签名”提效方案的进阶实践和注意事项。解包-替换-重签名是Unity手游Android端高效验证平台/引擎/C#层改动的利器。原创 2025-01-23 21:26:37 · 165 阅读 · 0 评论