MENU

程序

Unreal Iris Replication 性能初测

前言

众所周知,Epic 在 Unreal Engine 5.1 版本开始以实验特性发布了名为 Iris 的全新复制(Replication)系统。Iris 可以说是对传统复制系统(下称“Legacy”)的全面重做,官方表示这提高了性能、伸缩性、可维护性等。代码量在60,000行左右。可贵的是新的系统保持了对之前各类 game framework 概念的兼容。

目前在互联网上,无论是哪种语言编写的 Iris 相关内容都比较少。(这也是 UE 的特点,有了源码还要什么资料?)但本文不打算对 Iris 的概念和实现等进行阐述,仅对项目集成和性能测试等展开。使用源码来自官方 GitHub: EpicGames/UnrealEngine,版本 5.3.2(注意该版已与部分基于 5.1 的文章描述有出入,迭代较快,细节请自行确认)。

Read More

Replication Graph 从入门到入土

前言

Replication Graph 作为官方插件在 UE 4.21 版本发布。在学习使用过程中,也尝试上网查找过许多相关资料,没有发现特别详细的介绍。其实对于 Unreal 开发来说,很多事情的确不需要人家专门来长篇大论给一篇文章看——毕竟代码都给你了,有什么问题自己看看不就得了么?所以,上网找不到资料,只能说是吃了知识的亏,不够熟悉或者看不懂代码,那确实是自己的问题。

本文尝试简单介绍 UE 的 Actor 复制相关的内容,结合一些实际使用上的问题,希望能对完全没接触过的读者提供一些小帮助。笔者目前接触 Unreal 还只有三四个月时间,了解不多,才疏学浅,若是有谬误之处还请包涵与指正。

Read More

C语言项目不规范函数声明的隐患及其检测

一个线上问题

一服务进行现网版本发布。服务更新后,收到 core dump 告警。查看 core file,从函数调用栈帧、地址、行号等信息来看,已经有部分内存遭到污染。栈帧出现了重复,gdb 显示的行号也显然不可能发生问题。好在通过 core file 函数名进行代码分析后,比较及时地找到了问题原因。

Read More

再造企业微信机器人

Prelude

为什么叫“再造”呢?有再造,那么就一定有第一个:GitHub: Bokjan/DiaoBot

DiaoBot是主体完工于2019年9月的企业微信机器人框架,完整地实现了当时企业微信机器人所有能力的封装。但其存在一些不论是当时还是现在都会令人感觉比较奇怪的一些缺陷:

  • 回调server基于mongoose的HTTP能力,整合较奇怪且其基于select()的复用,性能低(?真的需要性能吗)
  • 固定工作线程数,但工作线程中的封装IO操作却是同步阻塞的
  • 所有定时任务均新开处理线程,且定时任务分派线程原理粗暴(每一分钟唤醒,遍历所有注册项并启动对应项)
  • 基于信号的优雅退出过程慢(定时任务线程睡眠中,须唤醒才会退出)
  • 有着一个比较奇怪的二进制模型:主可执行程序(diaobotd)、公用SDK动态链接库(libdiaobot.so)以及不定数量的用户业务逻辑动态链接库(由diaobotd读取配置文件动态挂载)
  • 回调处理的抽象设计做得不太好
  • ……

我现在惊讶地发现有一个问题其实是有解的:你可以找到一台既能够接收内网回调、又能够请求公网API的机器。如果说当你想干点什么的时候,却发现这个必要的工具其实不好用,是不是就会想去先把工具改造一下了?所以,到了差不多两年之后的今天,GitHub: Bokjan/wcbot横空出世。

Read More

Leap Motion 的一个简单应用

新年好

大家好。己亥年到了,这意味着什么呢?这意味着我又拖更几个月了。

年前,数字媒体处理技术这门课作为最后出分的科目,有点惊到我。我都不知道为什么要给我rank 1。所以今天就接着写这门课的内容吧。

做了啥

要求

第四次实验围绕体感交互展开。发到大家手里的设备有Kinect(或Xtion)和Leap Motion两种,具体做什么自己来决定。Kinect就是XBOX上的那玩意儿大家都知道;Leap Motion是在比较近的距离做手势识别的。按道理来说,一个小组做什么东西还是要brainstorm一下搞个技术选型,但是我们没有。只因组长太优秀,在大家还在 () 习软件工程四大金刚的时候,东西都做完了。

制品

Demo
这个东西的功能就是给小人画衣服(大雾),我们组长老早就做好了的,应该说基本只差接入Leap Motion的控制就完工了。虽然这个东西感觉好像没有什么用的样子(小声),但是作为这次大作业还是可以的。之后不知道怎么回事搞Leap Motion的活就到了我身上。我们做的东西too simple,本来有点不好意思写来着演示视频请看文末。

Read More