Skip to content

GaiaWorld/pi_ecosystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 

Repository files navigation

1.1. 基础库

注,遇到如下数据结构,要使用这里的库,代替 基础库

std库的? 用下面的?代替 说明
wgpu::* pi_render::rhi::* 如果有,优先用 pi_render的
(随机数库,非 std)rand::* pi_wy_rng
HashMap pi_hash::XHashMap
HashSet pi_hash::XHashSet
Heap pi_heap_ext
Deque pi_slot_deque
Send pi_share::ThreadSend
Send + Sync pi_share::ThreadSync
Rc / Arc pi_share::Share
RefCell / TrustCell pi_share::ShareCell
Rc< RefCell > / Arc < TrustCell > pi_share::ShareRefCell
rc/arc::Weak pi_share::ShareWeak
Mutex pi_share::ShareMutex
RwLock pi_share::ShareRwLock
AtomicBool / AtomicU8 / AtomicUsize / AtomicPtr pi_share::ShareBool/ShareU8/ShareUsize/SharePtr

1.1.1. 库 信息表

链接 维护者 概述 说明
pi_assets zmax 资源管理器
pi_wy_rng wzjsun(suncy) 比标准库实现更快的随机种子生成库
pi_share wzjsun(suncy) rc & arc 封装 需要统一封装场景:单线程 & 多线程
pi_hash wzjsun(suncy) Hash & 哈希表 内部实现已经封装了std的哈希表,并且内置高效的hash算法,并且做了x86和x64平台的开关
pi_ext_heap zmax 扩展堆,支持删除和修改指定位置的元素,当堆内元素移动时,会调用回调函数 如果没有 删除 和 更新操作,可以考虑用std
pi_map wzjsun(suncy) 定义了 Map的Trait,为高层数据存储定义了通用方法;并实现了VecMap,基于vec的map实现
pi_ordmap wzjsun(suncy) 一种保持顺序的map
pi_graph moyy 有向循环图的数据结构和接口
pi_async_graph moyy 基于 有向循环图 实现的 异步执行图 是 渲染图 和 ECS 调度器的基础数据结构
pi_atom wzjsun(suncy) 字符串原子 有很多相同字符串拷来拷去,比如CSS和语言关键字
pi_any wzjsun(suncy) Trait Object的向下造型 当参数是多态,但是某种场景有需要具体类型的时候
pi_null wzjsun(suncy) 定义了一个trait Null, 该trait提供is_null方法用于判空。
pi_slot_deque wzjsun(suncy) 基于 slot-map 的 双端队列
pi_cowlist wzjsun(suncy) 写时复制的链表
pi_lru wzjsun(suncy) LRU缓存算法
pi_weight wzjsun(suncy) 基于 slot-map 的 权重树 用于存储带权重值的内容
pi_util wzjsun(suncy) 实用库:放一些实用函数和结构体
pi_slot_wheel wzjsun(suncy) 基于 slot-map 的 定时轮
性能不高,有待优化 pi_static_map zmax 完美静态哈希 的 实现
仅 ECS 内部用 pi_dirty wzjsun(suncy) 可以设置脏,查询脏的容器 目前主要用于 pi_ecs

1.2. 客户端

链接 维护者 概述 说明
pi_flex_layout zmax GUI-Flex布局
pi_spatialtree zmax 空间搜索树,主要是:四叉树、八叉树 实现
pi_ecs wzjsun(suncy) 类似 Bevy 的 ECS(Entity-Component-System)库 处理客户端数据存和流程的基本框架,可以轻松写并发代码
pi_ui_render wzjsun(suncy) 浏览器 DOM + CSS 子集 的 Rust 实现,基于ECS 包括:Flex和绝对定位布局,动画,深度,效果,变换,滚动,渲染等功能
pi_svg moyy 基于 pathfinder3 的 svg 实现
pi_scene baip (正在开发)3D游戏场景渲染
pi_curves baip 曲线模块 包括:缓动曲线,Hermite曲线,贝塞尔曲线 等的计算
pi_animation baip 动画模块 包括:动画,动画组控制,动画融合 等共鞥你
pi_3d baip 3D渲染相关
pi_3d_loader baip 3D加载,比如 gltf
pi_spine_rs baip Spine的Rust渲染
pi_render_bevy moyy pi_render 的 Bevy 封装
pi_render moyy 渲染相关 rhi封装/渲染图/geometry/material/shader编译/
pi_path_finding moyy A* 寻路算法

1.3. 服务器端

链接 维护者 概述 说明
pi_sinfo wzjsun(suncy) 用于描述 struct 的 元信息 和 bon 结合使用
pi_bon wzjsun(suncy) 序列化和反序列的库 主要用途:给前后端通信用的二进制格式
pi_local_timer wzjsun(suncy) 任务轮实现的延时定时器
pi_crypto zuon 加密解密 & 数据签名 没推到 crates.io
pi_vm zuon JavaScript引擎,v8虚拟机的rust封装 没推到 crates.io
pi_store zuon 基于日志的数据存储 没推到 crates.io
pi_rt_store zhuyijiang(zhuy) 暂时没有实现
pi_db zuon 数据库 没推到 crates.io
pi_net zuon 网络 mqtt & rpc & httpc 没推到 crates.io
pi_async zuon rust异步运行时的执行库,前后端通用的 底层异步框架
pi_async_file zuon 基于异步运行时库实现的文件操作,比如:读写文件,创建文件,读写目录 等
pi_async_macro zuon 异步运行时 相关的 宏,配合 pi_async 使用
pi_lfstack zuon
pi_time luob 实用库:读取系统时间
pi_gray luob 版本灰度的简单实现
pi_guid luob 基于时间的全局唯一id,128位-16字节
pi_guid64 luob 基于时间的全局唯一id,64位-8字节
pi_compress luob 封装各种压缩库 目前只封装了:lz4
pi_file zhuyijiang(zhuy)
pi_rt_file zhuyijiang(zhuy) async file 的封装,添加了多线程竞争排序
pi_weight_task zhuyijiang(zhuy) 任务池,基于优先级的任务调度器
pi_cancel_timer wzjsun(suncy) 可取消的定时器
pi_ucd wzjsun(suncy) unicode快速查询的函数 比如可以查询某个point是不是中文
pi_rsync wzjsun(suncy) 文件rsync同步的实现 目前没用
pi_timer baip 基于wheel的定时轮 实现的 定时器 可能 不计划 维护,和 pi_local_timer 有重叠

2. 附录一:内网 GitLab 项目

不会 发布到 npm 或 crates.io

2.1. 游戏

链接 维护者 概述 说明
pi_demo limh 关于上述项目的一个简单的演示例子 js项目
pi_build yuq 项目的构建工具,包括 资源和代码的 编译,处理,合并,压缩;并构建到各个目标平台 js项目
pi_sys yuq 平台基础封装层,封装了 浏览器,小游戏,原生app,exe 等 OS和平台的差异,对外提供 统一接口 js项目
pi_utils limh js的实用数据结构和算法的封装 js项目
pi_commom limh 方便项目使用的通用业务逻辑代码封装, 比如:登录,支付等 js项目
pi_pt luob 后端项目的封装 js项目

2.2. 服务器端

链接 维护者 概述 说明
pi_js_proxy_gen zuon rust和js的自动生成代码库 之后不开源,没推到 crates.io
pi_js_proxy_gen_macro zuon rust和js的自动生成代码库 之后不开源,没推到 crates.io
pi_logger luob 基于log4rs的日志库 rust项目
pi_v8 zuon v8引擎的直接封装 rust项目
pi_serv zuon 后端平台的rust层, pi-pt对应的底层实现 rust项目
pi_serv_lib zuon rust项目
pi_serv_builtin zuon rust项目
pi_serv_ext zuon rust项目
pi_core zuon rust项目
pi_core_lib zuon rust项目
pi_core_builtin zuon rust项目

2.3. 渲染 & 游戏底层

链接 维护者 概述 说明
babylon baip 对 Babylon Fork 和 修改 js项目,包括 6边形网格 和 Unity导出插件
pi_babylon baip 基于 Babylon.js,封装给项目使用的模块 js项目
pi_babylon_demo baip pi_babylon 和 Babylon 的 Demo js项目
pi_spine baip 封装 Spine.js 给项目使用的模块 js项目

2.4. 平台:Android & iOS & Windows

链接 维护者 概述 说明
pi_packer yuq Android 和 Windows 版本的 打包工具,打出:APK 和 Exe js项目
pi_app zhuyijiang(zhuy) 客户端 基础框架的底层实现,类似于 微型版本的浏览器 rust项目
app_start zhuyijiang(zhuy) 客户端启动库,主要负责 维护启动和更新方面的逻辑,包括:apk/exe,dll/so,js快照,各游戏的依赖描述文件 rust项目
pi_android moyy apk的逻辑,提供 Android Java 底层功能 供 pi_sys 调用 Java项目
pi_ios moyy Swift项目

2.5. 修改的 第三方库

处于某些原因,需要 fork 一份 第三方库的源码 过来,自己维护

链接 维护者 概述 说明
node_images moyy pi_build 构建图片 需要 原始拷贝 添加了 CopyFromImage2 接口
rusty_v8 zhuyijiang(zhuy) v8库的rust封装 之所以自己维护,是为了构建iOS平台,以及 解决 Android 平台的构建错误
winit zhuyijiang(zhuy) 跨平台的窗口和事件提供 Android 添加虚拟键盘唤起和隐藏; exe添加自定义光标,iOS适配数据缓存,绕过某些接口必须在主线程上调用
surfman zhuyijiang(zhuy) EGL/WGL 封装
minstant zhuyijiang(zhuy) 获取时间 适配iOS无法编译问题
rodio zhuyijiang(zhuy) 音频播放库 适配 Android 播放切换问题
rust-crypto zhuyijiang(zhuy) 加密库 适配iOS无法编译链接问题
font_kit zhuyijiang(zhuy) 字体库 freetype_sys 的 canvas2d 封装
freetype_sys zhuyijiang(zhuy) C代码的Rust绑定 从官网的2.6.5升级到2.10.4 & 添加了更多的Rust接口

3. 附录二:不计划 维护

现有项目还在用,只是 不会 主动 开发新功能

链接 维护者 说明
pi_base58 wzjsun(suncy) Base58 编码解码
pi_deque wzjsun(suncy) 支持 从 中间 快速 插删 的 双端队列
pi_dyn_uint wzjsun(suncy) 定义了一个分配id的工厂
pi_enum_default_macro wzjsun(suncy) 为枚举定义了Default trait的宏
pi_hash_value wzjsun(suncy) 加密hash算法
pi_densevec wzjsun(suncy) 管理slab分配id的数据结构,当id稀疏时候使用
pi_cross_performance wzjsun(suncy)
pi_debug_info wzjsun(suncy) 取到一些调试信息
pi_heap wzjsun(suncy) 支持 删除 和 更新 的 二叉堆
pi_idtree wzjsun(suncy) id树的rust实现,提供插入删除、迭代等方法
pi_listener wzjsun(suncy)
pi_res wzjsun(suncy)
pi_res_mgr wzjsun(suncy) 同类型数据管理
pi_slab wzjsun(suncy) 基于数组的类似hashmap的快速查找容器
pi_pointer wzjsun(suncy) 指针类型,类似Arc、Rc、但会将同类对象分配在一个连续的空间
pi_wheel wzjsun(suncy) 全部采用常量泛型的多层定时轮
pi_wtree wzjsun(suncy) 权重树 用于存储带权重值的内容
pi_math wzjsun(suncy) 旧 数学库,逐渐 放弃 维护
pi_show wzjsun(suncy) 旧 GUI,逐渐 放弃 维护
pi_apm zuon 没人使用,没推到 crates.io
pi_future zuon 没人使用,没推到 crates.io
pi_handler zuon 没人使用,没推到 crates.io
pi_worker zuon 没人使用,没推到 crates.io
pi_ecs_derive_old wzjsun(suncy) 暂时维护,pi_show还在使用
pi_ecs_old wzjsun(suncy) 暂时维护,pi_show还在使用
pi_flex_layout_old wzjsun(suncy) 暂时维护,pi_show 还在使用
pi_data_view wzjsun(suncy) 暂时维护,pi_show 还在使用
pi_adler32 不维护
pi_bincode 不维护
pi_hashmap 不维护 没推到 crates.io
pi_idtree_old 不维护 没推到 crates.io
pi_map_old 不维护 没推到 crates.io
pi_slab_old 不维护 没推到 crates.io
pi_fx_hashmap 不维护 没推到 crates.io
pi_wy_hash 不维护 没推到 crates.io
pi_task_pool 不维护 没推到 crates.io
pi_lib 废弃 js项目
pi_sys 废弃 js项目
pi_p2p 废弃 rust项目
pi_base 废弃 js项目
pi_front 废弃 js项目
pi_tools 废弃 js项目
pi_serv 废弃 rust项目,迁移回 内网 Gitlab
pi_msdf_tool 废弃 js项目
pi_ai 废弃 rust项目,以废弃,改为 pi_path_finding

4. 附录三:层次 概述

4.1. 客户端

4.1.1. 引擎:GUI & 3D

4.1.2. 平台底层:APK & Exe

4.1.3. 平台封装 & 项目工具

4.2. 服务器

  • JS:pi_pt
  • Rust:pi_serv
    • 支撑库:pi_async, pi_db, pi_net, pi_store, pi_v8/pi_vm

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published