欢迎访问循迹研究室,这是一个专注于游戏开发的技术站点。我在Github上的开源项目:github.com/hxhb项目介绍
博客内的文章,有C++系列,UnrealEngine热更新插件工具开发、资源管理系列,以及循迹研究系列等。
在工作之余研究和开发的技术方案与成果预览:展示柜,如果您对其中某些项目感兴趣可以发邮件到imzlp@foxmail.com

除本站外,我还创建了一个由社区驱动的虚幻引擎中文知识库站点https://ue5wiki.com/,托管在Github Pages上。欢迎投稿技术内容,为建设虚幻中文技术社区添砖加瓦!投稿规则请看:Wiki内容编写格式与规则

Macau Travel Guide

今年春节在深圳过年,计划大湾区旅行的下一站为澳门。而且从深圳去澳门也算比较方便,于是规划成行。做了一些攻略和行程安排,可以作为首次去澳门旅游的参考。

阅读全文 »

Use reflection to create properties cache for assets in UE

在前一篇文章UE中资源自修正的设计与实现方案中,我介绍了利用ResScannerUE的资产检查进行过滤,然后自动化处理的实现方案。

在通常情况下,如果想要检查资源内的某个属性,就需要把资产加载进来,获取对象:

但是,如果想要批量地检查资源的属性,用这种形式挨个加载资源的耗时很久,尤其是在没有DDC的情况下,加载资源就会触发DDC缓存的构建,这部分耗时很久,对于机器性能占比也较高。

而且随着资产规模的扩大,如果想要完整扫描一遍工程里的所有资源,耗时就会异常夸张。所以,我设想能否实现一种无需加载资源,但能够获取资源内属性的方法。

经过研究发现,通过一种取巧的方法做到这一点,利用了反射、资产序列化、以及AssetRegistry的特性组合起来。并且是非侵入式的,无需修改任何现有资源类型的代码。

本篇文章会介绍其实现原理,以及对引擎中相关逻辑的分析,并介绍该机制在工程中的实际应用。

阅读全文 »

Implementation scheme of resource self-correction in UE

在先前的文章中,我曾介绍了在UE中利用ResScannerUE进行资源的多阶段自动化检查的实现和执行效率优化。

已经能够实现非常灵活地配置资源检查和及时提醒,具有非常强大的规则表达能力。但它们还都仅限于发现问题予以提醒的阶段,虽然有强制约束不能提交,但仍需人工地去处理。尤其是具有大量存量资源的情况下,手动处理的人力耗时非常大。

基于这种情况下,我设计了一种自动化修正资源的机制,能够在规范制定之后自动修复资源,确保被扫描出来资源的都被设置为正确的状态。

补齐了我这套资源检查方案中的最后一块拼图,并且可以应用在各个阶段的扫描过程,按需执行。本篇文章会介绍它的设计思路与实现机制,以及一些在项目中实际的应用场景。

阅读全文 »

UE plug-in and tool development:j2 design ideas and implementation

如果让我挑一个近期在工作当中使用UE感觉最无意义和折磨的事情,那一定是根据一大串字符串路径,在ContentBrowser里找到它。

由于无法快速地直接跳转到目录和资源,每次逐级点开一个深层目录都给我带来一种浪费人生的感觉。

基于这种痛点,我写了一个小工具,可以极大地缓解这种手动焦虑。我把它命名为j2(jump to),是一个极简的ContentBrowser跳转工具,开源在github上:hxhb/JumpTo

本片文章会介绍该项目的用法,以及构想解决方法的思考过程和逐步的代码实现。虽然功能本身是一个极简的插件,但对于实际痛点的发现、分析和解决过程值得记录。

阅读全文 »

Build a knowledge management system based on Obsidian

在2020年,我曾写过一篇文章如何构建自己的知识体系?,其中主要是对于日常技术积累的思考,偏向于方法论。

本篇文章会从工具和实际使用的角度出发,基于Obsidian探索个人知识管理的可能性,并尝试将其与Hexo博客结合起来。当然,这种工具偏好和实践具有强主观性,本文完全从我个人的实践和经历出发,没有最好的工具,只有最适合自己的。

阅读全文 »

Hong Kong Travel Guide

深圳与香港仅一江之隔,虽早有打算去香港玩一圈,但因为前两三年因为疫情的原因迟迟未能成行。今年疫情放开之后,香港和内地之间通关也变得比较方便了,所以把去香港提上了日程。

周末和老婆一起去香港玩了一趟,去之前做了一些攻略和行程安排,可以作为首次去香港旅游的参考。

阅读全文 »

UE build improvement: optimize the implementation of remote build IOS

远程构建是UE中非常方便好用的一种打包IOS方式,能够只在Mac上编译代码,不COOK资源,能够极大地降低对于Mac硬件的需求。

而且,Mac的售价颇高,传统模式下,如果需要部署多个独立的IOS包构建流程,通常就需要采购多台独立的Mac机器分别部署,硬件成本较高。

况且,IOS的开发环境往往需要随着IOS系统迭代进行更新。每年WWDC发布新版本IOS,就会需要新版本的XCode支持,新版本XCode又依赖新版本的MacOS,套娃式的链式依赖。如果Mac的构建环境增多,那么更新这些机器的构建环境也会变为一个繁琐的重复任务。

远程构建IOS也能够比较好的解决这个问题,一台独立的Mac,可以同时给多个IOS构建流程提供支持,如果需要更新环境也只需要处理一台即可。而且编译代码的耗时相对固定,且能够进行增量编译,理论上来说只要不是所有的机器同时执行全量编译,那么对于Mac的性能压力就没有那么大。

博客中也有开启远程构建IOS的文章:UE 开发笔记:Mac/iOS 篇,可以参考基础配置启用。

但UE默认实现的IOS远程构建在实际使用中也存在不少的问题,无法实现从部署到构建全自动化流程,本篇文章会针对远程构建在实际的工程应用中痛点进行优化。

阅读全文 »

Using AI to help with daily life and development exploration

工欲善其事,必先利其器!以ChatGPT和Stable Diffusion为代表的AIGC工具横空出世,AI浪潮席卷了各行各业。作为开发者,如何利用AI的能力,提升做事情的效率,是个值得研究的问题。

现阶段需要注意的是,GPT回复的内容非完全准确,存在胡诌的可能。但它的潜力在于有望实现了一种通用型的AI助手。没有人能在所有领域都具备专家级别的知识,在不熟悉的领域,充分利用GPT能够显著降低上手成本。

本篇文章我会介绍,利用GPT助力工作、生活和学习的一些案例,以及使用GPT API进行二次开发应用场景的探索。文后会分享一些我在使用的Prompts,并推荐一些我觉得不错的GPT工具,以及对Azure OpenAI服务使用Cloudflare Worker封装的方案。

阅读全文 »

DevOps: CI/CD Practices for Unreal Engine

DevOps是一种思想,以自动化进行持续集成(CI)和持续部署(CD)为基础,优化开发、测试、运维等所有环节。强调软件开发测试运维的一体化,减少各个部门或流程之间的沟通成本从而实现快速高质量的发布和迭代。

虽然在游戏领域的开发情况和传统互联网有很大区别,但借用DevOps的概念把项目中所有的生产环节最大限度地接入自动化,能够大幅提升效率。

本篇文章会介绍,UE实现自动化的基础概念,及我在虚幻引擎自动化构建方面的一些尝试和实际的工程实践。

阅读全文 »