跳到正文
GameFromScratch · 游戏开发技术· 来源· Mike·· 3 小时前AI 评分35

Brutal C# 游戏开发框架发布大量示例代码

Brutal Gets A Bit Less Brutal

正文 · AI 翻译

GameFromScratch.com

本月早些时候,残酷的 C# 游戏开发框架 发布 为免费开源。Brutal 的核心原则之一是其不易使用。事实上,这正是其名称的来源:

该名称是一种警告。

BRUTAL 旨在供希望自行做出架构决策并准备构建和维护其游戏所需系统的经验丰富的程序员使用。其范围经过刻意聚焦。团队优先考虑面向高要求游戏的底层功能,所有贡献均根据这一目的进行评估。

然而,在发布时情况确实如此:Brutal 发布时没有任何文档和示例。什么都没有。要了解任何内容,你基本上必须深入代码并自行摸索。如今嘛……仍然没有文档,但现在有了示例……事实上有很多示例。

示例它展示了什么
HelloCore.cs平台检测、ByteSize/ElementCount 算术运算以及 Ptr<T>
HelloMemory.cs使用Mem分配和释放非托管内存,并使用PtrOwner<T>拥有指针
HelloCollections.csNativeList<T>,一种由非托管内存支持的动态列表
HelloStrings.cs使用String8和StringBuilder<byte>处理UTF-8文本,它们旨在避免内存分配
HelloNumerics.cs使用 float3 和 float4x4 进行向量和矩阵基础操作
HelloMaths.csRandom 扩展:范围、形状内的点和随机方向
HelloConcurrency.cs使用 JobScheduler 在工作线程上运行作业
HelloLogging.cs使用默认和命名类别记录到控制台
HelloLocalization.cs带有命名变量的本地化字符串,以及替换翻译内容

窗口化和用户界面

示例它展示了什么
HelloGlfw.cs一个空的 GLFW 窗口
HelloSdl.cs一个带有渲染器的 SDL 窗口,用于绘制填充矩形
HelloSdlImage.cs使用 Sdl.Image 将生成的图像保存为 PNG 并重新加载
HelloSdlTtf.cs使用 Sdl.Ttf 将文本渲染到表面,如果不传入字体则使用系统字体
HelloImGui.csDear ImGui 在 GLFW 和 OpenGL 后端上显示一些文本、按钮和滑块
HelloImGuiFreeType.cs使用 FreeType 构建 ImGui 字体图集,无需窗口
HelloImPlot.cs使用 ImPlot 在一个无头帧中绘制正弦波
HelloImGuiAbstractions.cs游戏内控制台:注册 [TerminalAction] 命令并运行命令行
HelloImGuiExtensions.csImGuiEx 控件直接绑定到 C# 枚举
HelloNativeFileDialog.cs操作系统的原生文件选择器
HelloNotCurses.cs使用 notcurses 在终端中显示彩色文本(请在真实终端中运行)

图形

示例它展示了什么
HelloOpenGl.cs使用 OpenGL 的彩色三角形
HelloVulkan.cs创建 Vulkan 实例、列出 GPU 及其队列族,并创建设备
HelloVulkanAbstractions.csVulkan.Abstractions 设置辅助函数,以及由 C# 结构体构建的顶点输入布局
HelloVulkanVma.cs创建 VMA 分配器和映射缓冲区,向其写入数据并读回
HelloShaderC.cs使用 shaderc 将 GLSL 编译为 SPIR-V
HelloSlang.cs编译 Slang 到 SPIR-V
HelloRenderMesh.cs生成程序化球体网格

纹理与资源

示例它展示了什么
HelloStb.cs使用 stb_image 编写和读取 PNG
HelloTexture.cs纹理格式描述符,填充 GenericTexture,并使用 TextureWriter 和 TextureLoader 将其保存和加载为 PNG 和 KTX2
HelloKtx.cs创建、写入和加载 KTX2 纹理
HelloGli.cs具有完整mip链的纹理,以DDS格式保存和加载(使用GLI)
HelloGltf.cs解析一个微小的内联glTF,读取其顶点数据并将其重新保存输出
HelloMeshOptimizer.cs使用meshoptimizer对三角形进行重排序以优化顶点缓存

音频

示例它展示了什么
HelloOpenAl.cs使用 OpenAL 播放生成的音调
HelloSdlMixer.cs使用 Sdl.Mixer 播放生成的音调
HelloFmod.cs使用 FMOD 播放音调。FMOD 的原生库未打包,因此你需要拥有自己的授权副本

物理引擎

示例它展示了什么
HelloBox2D.cs使用 Box2D 将盒子掉落至地面并打印其落点位置
HelloJolt.cs使用 Jolt Physics 将盒子掉落至地面并打印其落点位置

网络通信

示例它展示了什么
HelloRakNet.cs一个 RakNet 服务器和客户端通过本地主机连接并发送消息

诊断信息

示例它展示了什么
HelloMonitorHost.cs启动 Monitor 看门狗并将日志写入文件
HelloRenderDoc.cs检查 RenderDoc 的内置 API 是否已加载(Windows 和 Linux)
HelloRenderDocImGui.cs使用 Dear ImGui 绘制 RenderDoc 控制面板,无头模式

演示

示例展示内容
DemoVulkan.cs使用 Vulkan、Vulkan.Abstractions 辅助类、由 VMA 分配的顶点缓冲区以及通过 ShaderC 编译的着色器绘制的彩色三角形
DemoGltfViewer.cs加载带有节点变换的 glTF 场景,使用 meshoptimizer 进行优化,并通过 OpenGL 绘制光照效果。传入你自己的 .gltf 或 .glb,否则将构建一个环面结。
DemoTexturedQuad.cs将多级渐远纹理写入 KTX2 格式,重新加载后通过 OpenGL 在地板上绘制,每个 mip 级别带有不同的色调。
DemoImGui.csDear ImGui 结合 FreeType 字体和 ImPlot 图表,运行于 GLFW 和 OpenGL 之上。
DemoSdl.cs使用 Sdl.Image(PNG 保存和加载)、Sdl.Mixer(空格键时发出哔声)和 Sdl.Ttf(文本,如果你传入字体)的 SDL 窗口
DemoRenderDoc.cs按下 F12 时使用 RenderDoc 捕获帧的 OpenGL 三角形(Windows 和 Linux)
DemoBox2D.cs使用 Box2D 让箱子掉落到地面,并用 OpenGL 绘制
DemoJolt.cs使用 Jolt Physics 让箱子落到地面上,并用 OpenGL 进行 3D 绘制

更棒的是,还有一个由社区创建的示例可用,它展示了一个完整的 Vulkan 渲染器实现,用于创建 3D 模型加载器。

关键链接

Brutal Framework 主页

Brutal Samples

社区示例 – Hello Brutal

在下面的视频中,我们将深入体验新的样本,并确定 Brutal 框架的使用究竟有多残酷!

来源:GameFromScratch · 游戏开发技术 · gamefromscratch.com