返回首页
最新
经过多年在“你好,世界”阶段后放弃Rust,我终于决定做一些实质性的事情。起初是简单的线条渲染,但随着进展,我发现我可以制作一个相对完整的PSX风格渲染器,并用它开发一款游戏。
我的唯一依赖是SDL2;我把它当作我的“平台”,负责窗口管理、输入和音频。这意味着我的Cargo.toml文件非常简单:
```toml
[dependencies.sdl2]
version = "0.35"
default-features = false
features = ["mixer"]
```
这会拉取大约6到7个其他依赖项。
我正在进行真正的真彩色3D渲染(带有Z缓冲、变换、光照和光栅化每个三角形等,没有特殊技术或光线投射),帧缓冲区为320x180(宽屏为320x240)。SDL处理硬件加速的最终缩放到显示分辨率(如果可用,例如在虚拟机中,有时不可用,因此是纯软件实现)。我自己处理物理、四元数/矩阵/向量数学、TGA和OBJ加载。
性能方面:我并没有花太多时间在这上面,但我对此感到满意:在2011年的i5 Thinkpad上,FPS范围为[200-500],在2005年的Pentium笔记本上为[70-80](这台笔记本几乎无法运行rustc……我不得不费一些周折才能在32位Linux上使其工作),在Raspberry Pi 3B+上为[40-50]。我没有更现代的硬件来进行测试。
所有这些都是单线程的,没有SIMD,没有内联汇编。此外,实现交错渲染提供了超过50%的性能提升(以及一个不错的效果)。
那台Pentium笔记本配备了一个ATI(没错)芯片,SDL对其支持得非常好,这也许并不令人惊讶。
关于Rust:我几乎没有深入接触这门语言。我更多地将其视为“带有vec!、借用检查器、模式匹配、错误传播和特征的C”。我喜欢我使用的子集的语法;它清晰明了、可读性强、符合人体工程学。像匹配/条件语句返回值这样的特性对简洁和高效的代码非常有用。然而,我看到的专业/惯用代码对我来说看起来很难读。我是从零开始按照自己的方式编写所有代码,所以这并不是问题,但仍然……无论如何,生态系统和工具都非常出色。总的来说,这是一次惊人的开发体验。我有点害怕在下一个项目中切换回C++。
此外,rustup/cargo让创建一个自动化整个过程的部署脚本变得轻而易举:在提交后,它扫描源文件中使用的资源并仅打包这些资源,复制依赖项(Windows的DLL),根据目标设置构建依赖项,构建所有三个目标(Win10_64、Linux32、Linux64),将所有内容打包成单独的zip文件并上传到我的本地服务器。我是在一个64位的Lubuntu 18.04虚拟机上进行的。
你可以在链接的itch.io页面上尝试这款游戏并阅读所有相关信息:
[https://totenarctanz.itch.io/a-scavenging-trip](https://totenarctanz.itch.io/a-scavenging-trip)
所有资产(音频/图像/字体)也是我为这个项目制作的(你可以从低质量中猜到)。
开发工具:Geany(在Linux上)、Notepad++(在Windows上),都是原版没有插件,Blender,Gimp,REAPER。
Users Loop帮助SaaS团队与客户沟通,收集反馈,并提供世界级的支持,同时用一个经济实惠的平台替代多个昂贵的工具。
我刚刚在 Excel 中看到了一个(确实比较低调的)OneDrive Mobile 广告。<p>在功能区下方,通常会出现一些小通知条,显示有用的信息,比如文件是只读的,或者文件需要签出才能编辑,这时出现了一个灰色的通知条,弹出了一个信息图标(蓝色圆圈中有一个“i”),并显示以下文本:<p>随身携带您的文件 无论您身在何处,都可以通过 OneDrive 移动应用查看、分享和编辑文件。<p>接着是一个标有“下载 OneDrive”的按钮。<p>这是在我的工作笔记本电脑上,已经安装并运行了 OneDrive。<p>我对此并不喜欢。也许我有些敏感,因为我也不喜欢 OneDrive,也不喜欢广告。这是新的吗?滑坡论并不是一个有效的论点,但这又是朝着那个滑坡迈出的又一步。