导语
该框架设计图不代表最终实施结果,仅展示构思过程。
UnrealEngineOBSClient
UnrealEngineOBSClient
This plugin provides a convenient way to access object storage services that comply with the Amazon S3 protocol.
Features
Support Path and Virtual Hosted requests style.
Blueprintnode based.
With multilingual debug UMG.
Encapsulated and easier-to-use file download and upload nodes.
Fully use UE’s C++ API, theoretically supporting multiple platforms.
Android NDK入门避坑指南
导语
最近在尝试开发一体机VR(Android系统),但是苦于第三方库插件一直无法打包成功,因此开始学习之路。
本文收藏自 Android NDK入门避坑指南
前言
本文基于自己所学到的NDk的知识和一些在网上查到的资料
因为学习NDK的时间不是很长,学到的内容难免有所错漏,希望有问题的可以明确的指出来,我会积极采纳
本文会竭尽可能的将我现在所学到的关于NDK的知识清晰的表达出来,本文主要以NDK的基本概念,NDK的组成部分,NDK的注意事项三个部分组成
实践部分因为本篇文章已经6000多字了,为了不让文章过长,将会在后面的博客中
一. NDK的基本概念
在学习NDK之前,我首先得知道什么是NDK,NDK可以干些什么,使用NDK的好处有哪些,知道了这些,我们才可以更好的学习NDK
1. 什么是NDK
NDK即Native Development Kit
,是Android中的一个开发工具包,为我们提供native开发的环境
NDK是我们实现Java与Native进行交互的一个手段
如何用tauri + vue 搭建一个windows应用
导语
本次实验,使用 tauri 作为桌面框架,使用 Rust 语言作为后端,使用 axum 作为后端框架,使用 vue3 + element-plus 作为前端UI,使用 cargo + npm 作为包管理器,使用 vite 作为前端打包工具, 使用 TS 作为前端开发语言
使用 websocket 作为通信协议
npm 官网
https://www.npmjs.com/package/npm
https://docs.npmjs.com/
1.用vite创建一个vue项目
vite 官网
https://vitejs.cn/
1 | npm create vite@latest |
cd vite-project
npm install
npm run dev
VS Code 安装的插件
JavaScript and TypeScript Nightly
Tauri
rust-analyzer
Vue Language Features (Volar)
CodeLLDB
es6-string-html
在 Docker 中运行 PostgreSQL
导语
我们在这里要做的是下载PostgreSQL镜像,检查镜像是否准备好,使用特定参数运行镜像,最后连接到正在运行的PostgreSQL实例。
1.拉取一个 PostgreSQL 服务器 Docker 镜像
首先,我们需要从Docker Hub获取现有的 PostgreSQL 官方镜像。如果您需要特定版本,latest 请将标签更改 为所需版本。
现在让我们拉取镜像:1
sudo docker pull postgres:latest
使用上述命令将从 Docker Hub 存储库中提取最新可用版本的 PostgreSQL。
2. 从 PostgreSQL 服务器 Docker 镜像运行容器
在部署之前,您需要设置一个 Docker 卷或绑定安装来持久化您的数据库。否则,当容器重新启动时,您的数据将丢失。安装应该 /var/lib/postgresql/data 在容器内的目录中。
出于本指南的目的,我们将创建一个 docker 卷并将其附加到您的 PostgreSQL 容器。
以下命令将在您的本地计算机中创建卷,您可以稍后与 PostgreSQL 容器连接:
1 | sudo docker volume create postgres-volume |
现在你的机器上有 PostgreSQL 镜像和一个用于保存数据的卷,你可以部署一个容器:
1 | sudo docker run -d --name=postgres14 -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=your_password postgres |
默认用户名是 postgres
UE4-performance
性能分析
帧率打印
在UE编辑器运行或打包为Development版本的打包文件运行时,可用 “~” 键(键盘数字1键左边的按键)呼出Runtime Command,并执行 stat fps,即可打印帧率和延迟进行实时监测。
GPU Visualizer
在编辑器运行状态下可以使用快捷键“Ctrl+Shift+逗号”呼出GPU Visualizer,截取当前帧的渲染消耗细分列表,对帮助分析性能消耗占比帮助很大。
如下图:因为输出了5个窗口,每个窗口对应了一个Scene,点开可以看到每个画面具体的消耗所占用的毫秒数,右侧Duration可以点击进行升降序排列,分析占用毫秒数最多的条目。
优化建议
FString和各种数据格式间转换
一、UE4 Source Header References
1 | CString.h |
CString.h可以查到更多,如1
2atoi64 (string to int64)
Atod (string to double precision float)
二、日志打印
1.输出字符串到output log中
1.1 最普通的三种
1 | FString filePath |
Linux 系统目录结构
树状目录结构:
UE4PythonHelper
UE4PythonHelper
This plugin is only used in editor mode!!!
Features
- This plug-in provides an “unreallib.py” module, which contains a complete UnrealEngine Python API. When you use it in text editors such as VS Code, you will get intelligent code prompt, function parameter prompt, return value type inference, comments, etc. you can also jump to the function in the module to view the detailed function definition. It’s better than automatically generated unreal.py file, smaller and compact, and supports the Type Hint syntax of python3.
哈夫曼编码在 UE4 中的实现
导语
在UE4 中实现哈夫曼编码的本意是在网络数据传输的时候,进行数据包一定程度的数据压缩。但是实现完之后发现并无用武之地,一个是因为压缩的数据中还必须要包含编码表,对于高频、小数据包反而会增加数据的大小和增加编码解码的计算消耗。二是因为好多要传输的数据本身就是已经编码压缩过了,再次编码压缩已经没有效果了(比如UE4 的 RenderTarget 图像数据 和 VoiceData)。所以权当是一次代码练习吧。
关于哈夫曼编码
Huffman于1952年提出一种编码方法,该方法完全依据出现概率来构造异字头的平均长度最短的码字 。简单来说就是用最少的bit来表示出现频率最高的字符,生成一张编码对照表,解码的时候根据对照表依次还原就行。
比如 “aabccade”,其中总共有a、b、c、d、e 五个字符,a出现3次,c出现2次,b、d、e出现1次,
那么可以用0表示a,用1表示c,用10表示b,用11表示d,用100表示e。所以原字符就可以用1
0-0-10-1-1-0-11-100
来表示了。当然具体实现细节要更复杂一点,涉及到二叉树,前缀码等。
好了,话不多说,上代码!