## 任天堂Switch变身网络交换机:一个成功案例
2019年12月,作者开始了一个将任天堂Switch(代号NX)改造为功能性网络交换机的项目。最初的想法是利用NX的USB端口进行连接,但需要软件实现。回忆起Switchroot项目——为NX提供Android和Linux——提供了一个解决方案。
在SD卡上安装Switchroot Ubuntu并通过hecate启动后,USB以太网适配器最初未被识别。故障排除涉及内核重新编译,最终应用了Switchroot下载文件夹中的更新。该更新成功启用了USB网络接口。
适配器识别后,作者使用`brctl`和`ip`命令配置了一个桥接接口,将一个适配器连接到局域网,另一个连接到测试计算机。该设置被证明是成功的,实现了至少90Mbps的速度。该项目展示了任天堂Switch令人惊讶的多功能性,并在作者的Twitter账户@bitcynth上有更详细的记录。
## 介绍 mine:一个用于 Coalton & Common Lisp 的新 IDE
mine 是一款新发布的独立 IDE,旨在简化和普及 Coalton 和 Common Lisp 编程。它从头开始构建,旨在消除传统上开始使用这些语言所需的复杂设置——绕过对 ASDF、Quicklisp、SLIME 和 Emacs 等工具的熟悉。
该 IDE 提供了一个完整的、单次下载体验,具有专业环境所期望的功能:内联诊断、调试器、跳转到定义、自动完成、语法高亮和本机代码编译器。重要的是,mine 优先考虑*可发现性*和直接的工作流程,甚至包括有关 Lisp 独特的结构化编辑的集成课程。
与 Emacs 等可扩展编辑器不同,mine 经过有意设计,重点明确且不可定制,提供一致的体验。它专为初学者和经验丰富的 Lisp 程序员设计,提供了一个易于访问的入口点或一个专门的开发环境。虽然承认现有的 Lisp IDE,但 mine 的独特之处在于它完全专注于 Coalton 和 Common Lisp,旨在实现像 QBASIC 这样的经典 IDE 的简单性。目前处于 alpha 阶段,它正在积极寻求反馈,以便朝着稳定的 1.0 版本前进。
本文探讨了一种在俄罗斯方块游戏中获胜的 surprising 策略。 尽管看似无穷无尽,任何俄罗斯方块游戏*最终*都会结束。 关键在于利用某些方块组合的局限性。
作者提出了一种即使面对最优秀的玩家也能获胜的策略:持续交替使用 S 和 Z 方块。 虽然单个 S 或 Z 方块可以无限期地放置,但交替使用它们会在游戏区域中产生不可避免的“空洞”。 Heidi Burgiel 的研究中的详细计算表明,在 69,600 个交替方块内,游戏结束是必然的——远早于 100,000 个方块的目标。
这与仅使用 I、J、L 或 O 方块形成对比,理论上这些方块可以无限期地消除方块。 文章还涉及了由于 S/Z 失败序列出现的统计概率,在真正无限的游戏中注定会失败,这类似于无限猴子定理。 在标准、速度加快的俄罗斯方块游戏中,人为错误很可能在达到这个理论极限*之前*导致失败。
## 将高斯飞溅变为现实:PlayCanvas 演示
高斯飞溅技术能够提供照片级的真实环境,但缺乏碰撞和导航等游戏必备元素。本项目演示了如何在浏览器中使用 PlayCanvas 克服这些限制。
核心在于获取 SuperSplat 的可下载飞溅体(一组定向斑点),并对其进行增强。关键步骤包括:将飞溅体转换为流式格式以提高性能,使用 `splat-transform` 生成碰撞网格,以及烘焙亮度网格以真实地照亮动态物体。
进一步的添加包括 Recast 导航网格用于 NPC 寻路,以及八个独特的 NPC,由行为树和不同的个性驱动。所有代码都是开源的,并且可以在公共 PlayCanvas 项目中访问,利用 PlayCanvas VS Code 扩展和 GitHub 等工具来实现高效的开发和版本控制。
最终的演示——可在浏览器中游玩——展示了一个完全交互的环境,具有物理效果、光照、人工智能和经典的 FPS 循环,所有这些都运行在从 CDN 提供服务的静态文件上。该项目证明了令人惊叹的、照片级的环境可以使用现成的开源工具使其可玩。