Hacker News
Art of Roads in Games
道路:从贝塞尔曲线到理想城市建设 (Dào lù: Cóng Béisè Qūxiàn dào Lǐxiǎng Chéngshì Jiànshè)
这篇文章探讨了城市建设游戏中道路设计的演变,以及作者为了追求更真实的道路模拟而进行的探索。作者从童年时玩SimCity 2000的经历开始,对道路的复杂性和美感产生浓厚兴趣,并逐渐观察到现实世界中道路的精妙设计。
城市建设游戏中的道路演变 (Chéngshì Jiànshè Yóuxì Zhōng de Dàolù Yǎnbiàn)
早期游戏如SimCity 2000侧重于道路的基本功能,而后续作品不断改进道路设计,例如SimCity 4增加了地形和对角线道路,SimCity 2013引入了曲线道路,Cities: Skylines则提供了更大的自由度,允许玩家自由放置道路和构建复杂的立交桥。然而,这些游戏中的道路仍然存在不真实的问题,例如匝道的锐角或弯曲。
贝塞尔曲线的局限性 (Béisè Qūxiàn de Jūxiànxìng)
作者发现,许多游戏使用贝塞尔曲线来生成道路,这是一种优雅且强大的曲线插值方法。然而,贝塞尔曲线存在一个关键缺陷:它无法保持形状和曲率偏移。这意味着当道路弯曲时,内侧和外侧的曲线速度不同,导致几何图形扭曲或自相交。作者用一个例子说明了贝塞尔曲线在极端弯曲情况下的失败。
幼儿园数学:圆弧的优势 (Yòu'éryuán Shùxué: Yuán Hú de Yōushì)
为了解决这个问题,作者转向了更基础的几何形状——圆。圆弧具有保持平行性的特性,无论如何偏移,结果仍然是完美的平行弧线。这不仅解决了贝塞尔曲线的形状问题,还能简化道路交叉口的计算,因为圆弧之间的交点计算比贝塞尔曲线要简单得多。
过渡曲线:舒适的骑行体验 (Guòdù Qūxiàn: Shūshì de Qíxíng Tǐyàn)
尽管圆弧很棒,但它们也有缺点:它们的曲率是恒定的,这会导致车辆进入弯道时产生突发性的侧向力。为了解决这个问题,工程师们使用过渡曲线,其中最著名的是类环线 (Clothoid)。类环线逐渐增加曲率,从而提供更平稳、更舒适的行驶体验。虽然类环线在数学上更复杂,但对于城市街道上的低速行驶来说,圆弧已经足够理想。
作者的道路系统构建动机 (Zuòzhě de Dàolù Xìtǒng Gòujiàn Dòngjī)
作者构建自己的道路系统,主要出于以下两个原因:一是出于好奇心,想自己实现更真实的道路模拟;二是现有的教程和资源质量较低,作者希望提供一个更好的解决方案,供其他城市建设游戏开发者使用。作者计划在后续文章中分享具体的实现细节。
(Translation Notes: The article is heavily technical in parts, so I've tried to maintain accuracy while keeping the summary concise. Terms like "Bezier Spline" and "Clothoid" are kept in their original form as they are standard technical terms.)
|
Claude’s C Compiler vs. GCC
Claude 的 C 编译器:一个 AI 构建的编译器评测
Anthropic 最近发布了一篇博文,介绍了他们如何使用 Claude 构建了一个完整的 C 编译器,名为 CCC (Claude’s C Compiler)。他们声称 CCC 能够编译 Linux 内核,并且 100% 的代码由 Claude Opus 4.6 编写,仅由人类通过编写测试用例来引导过程。为了验证这一说法,本文对 CCC 进行了测试,并将其与业界标准 GCC 进行了基准测试。
CCC 的结构与关键特性
CCC 的源代码位于 claudes-c-compiler。它完全使用 Rust 编写,支持 x86-64、i686、AArch64 和 RISC-V 64 架构。CCC 的前端、基于 SSA 的中间表示 (IR)、优化器、代码生成器、窥探优化器、汇编器和 DWARF 调试信息生成器均从头开始实现,没有任何编译器特定的依赖项。
编译器、汇编器和链接器的作用
编译 C 程序涉及四个阶段:
- 预处理器: 处理
#include、#define 等指令,生成扩展后的源代码。
- 编译器: 将预处理后的源代码翻译成汇编语言,进行语法分析、类型检查、优化、寄存器分配等工作。
- 汇编器: 将汇编语言转换为机器代码 (目标文件),需要精确了解目标 CPU 架构的指令编码。
- 链接器: 将一个或多个目标文件组合成一个可执行文件,解决文件之间的引用、设置内存布局,生成最终二进制文件。
为什么编译器如此复杂
编写编译器是一项极其复杂的任务。它需要理解编程语言的规则,将其翻译成机器指令,优化输出以提高速度和减少大小,处理不同 CPU 架构的边缘情况,并确保代码始终正确。GCC 已经发展了近 40 年,拥有数千名贡献者,支持数十种架构,数百种优化方法和数百万种边缘情况。
CCC 能够编译代码的原因
编译器 (翻译成汇编语言) 是 AI 最易构建的部分,因为它主要涉及模式匹配和规则应用。汇编器和链接器则更具挑战性。 汇编器需要了解目标架构中每个指令的精确二进制编码。链接器需要处理重定位、符号解析、不同类型的段、位置无关代码、线程局部存储和 ELF 二进制文件的特定格式等。
SQLite 与 Linux 内核的测试选择
Linux 内核是世界上最复杂的 C 代码库之一,不适合作为新编译器的首次测试。而 SQLite 是一个独立的、标准 C 代码库,易于测试,如果编译器能够正确处理 SQLite,则可以认为它能够处理更复杂的情况。
测试设置
- 虚拟机: 两个基于 Debian 的虚拟机,运行在 Proxmox 虚拟机管理程序上,每个虚拟机拥有 6 个 vCPU、16 GB RAM 和 100 GB 磁盘 (NVMe)。
- GCC: GCC 14.2.0 (Debian 14.2.0-19)
- CCC: 从源代码构建的 Claude’s C Compiler,使用
--features gcc_m16
- 内核: Linux 6.9 (x86_64 defconfig)
- SQLite: SQLite 3.46.0 合并文件
- 监控:
/usr/bin/time -v 和自定义系统指标记录器 (CPU%,RSS 每 5s)
测试方法与公平比较原则
- 使用相同的硬件和源代码。
- 确保所有测试运行到完成。
- 为 CCC 提供必要的帮助 (例如,
gcc_m16 特征用于引导代码、封装脚本用于处理汇编文件)。
- 使用相同的基准脚本。
测试结果总结
| 指标 |
GCC |
CCC |
比例 |
| 内核构建时间 |
73.2 分钟 |
42.5 分钟 (无法完成构建二进制文件) |
– |
| 内核构建结果 |
成功 |
链接失败 |
– |
| 内核峰值 RSS |
831 MB |
1,952 MB |
2.3x |
| SQLite 编译 (-O0 vs -O0) |
64.6 秒 |
|
|
|
I put a real-time 3D shader on the Game Boy Color
Game Boy Color 实时图像渲染项目总结 (Game Boy Color Real-Time Image Rendering Project Summary)
本文介绍了作者使用 Game Boy Color (GBC) 硬件实时渲染图像的游戏项目,并详细阐述了实现过程中的技术细节。
项目概述:
该项目旨在在 GBC 上实现 3D 图形渲染,玩家控制一个轨道光线并旋转一个物体。项目代码和 ROM 可在 GitHub 上获取:https://github.com/nukep/gbshader
3D 工作流程:
- 早期 Lookdev: 作者在 Blender 中进行初步的视觉风格探索,利用“伪抖动”技术(通过在每个法线向量上添加一个小的随机向量)来尝试视觉效果。
- Blender 到法线贴图流程: 作者使用 Blender 渲染法线贴图,利用 Cryptomatte 在合成器中识别特定几何体,并输出硬编码的值。 对于旋转的 GBC 屏幕,使用 Cryptomatte 将渲染的几何体合成到最终图像中。
数学基础:
- 法线贴图: 法线贴图是项目的核心概念,本质上是一个向量场。
- Lambert 阴影计算: 使用点积计算 Lambert 阴影,公式为 v = N⋅L,其中 N 是法线向量,L 是光线向量。
- 球坐标: 为了加快 GBC 上的计算速度,作者使用球坐标代替笛卡尔坐标进行点积计算。球坐标由半径 r, 主角 θ, 和副角 φ 组成,表示为 (r, θ, φ)。
- 编码: ROM 中,Lθ 被固定为常数值,玩家控制 Lφ,从而实现轨道光线效果。 公式简化为 v = sin(Nθ)sin(Lθ)cos(Nφ - Lφ) + cos(Nθ)cos(Lθ)
- 数据编码: 每个像素被编码为 3 字节的元组 (Nφ, log(m), b)。
- 避免乘法: 由于 GBC 处理器不支持乘法运算,作者使用对数和查表法来模拟乘法运算。 利用对数性质 log(x⋅y) = log(x) + log(y) 将乘法转换为加法。
- 8 位精度: 所有标量值都限制为 8 位分数,以提高运行时性能和节省 ROM 空间。
- 自修改代码: 为了优化性能,作者使用自修改代码,通过修改指令来提高关键循环的效率。
Game Boy 实现细节:
- 法线贴图编码: ROM 中修复了 Lθ 为常数值,玩家控制 Lφ。
- 查表: 使用了预先计算好的
pow 和 cos_log 查表,以进行对数和指数运算。
- 循环性能: 核心渲染循环每帧处理 15 个瓦片,消耗了大约 89% 的 CPU 时间。
- AI 尝试: 作者尝试使用 AI 生成 Game Boy 汇编代码,但效果不佳。AI 主要用于辅助 Python 脚本编写,例如读取 OpenEXR 文件和生成简单的 Game Boy 子程序。
总结:
该项目展示了在资源受限的硬件上实现复杂 3D 图形渲染的挑战和创造性解决方案。作者通过巧妙地利用数学技巧、查表法和自修改代码,成功地在 Game Boy Color 上实现了实时图像渲染。 尽管 AI 在辅助开发中起了一定的作用,但项目的核心仍然依赖于手动编写的代码和优化。
|
Omega-3 is inversely related to risk of early-onset dementia
早期发病痴呆与Omega-3脂肪酸摄入的研究总结
背景与目的: 早期发病痴呆 (EOD,诊断年龄<65岁) 造成了巨大的社会经济负担,其患病率低于晚发性痴呆 (LOD),且研究较少。观察数据表明许多EOD病例与潜在的可改变风险因素相关,但饮食与EOD之间的关系尚未得到充分研究。Omega-3脂肪酸是预防痴呆的有希望的膳食因素;然而,现有研究主要集中在年龄>65岁的队列。本研究利用英国生物样本库 (UK Biobank) 的数据,探讨了Omega-3血液水平(客观反映膳食摄入)与新发EOD之间的关联。
方法: 研究纳入了年龄在40-64岁之间、基线时无痴呆且有血浆Omega-3水平和相关协变量的参与者。研究者对三种Omega-3暴露(总Omega-3、DHA和非DHA Omega-3)与新发EOD之间的关系进行了建模,使用了五分位数(Q)和连续线性关系。采用 Cox 比例风险模型进行调整,调整因素包括性别、基线年龄和APOE-ε4 基因座负荷,以及其他据报道与新发EOD相关的生活方式变量。研究者还评估了感兴趣的每个暴露与APOE-ε4 基因座负荷之间的交互作用。
结果: 研究纳入了217,122名参与者。平均随访时间为8.3年,确认了325例新发EOD病例。与总Omega-3处于Q1的参与者相比,处于Q4和Q5的参与者显示出EOD风险显著降低(Q4,风险比[95%置信区间] = 0.62 [0.43, 0.89];Q5,0.60 [0.42, 0.86])。总Omega-3作为连续变量也观察到显著的逆向关联。与DHA处于Q1的参与者相比,非DHA Omega-3处于Q5的参与者显示出EOD风险显著降低。非DHA Omega-3的Q3、Q4和Q5也观察到显著降低的风险。最终,研究没有发现Omega-3 × APOE-ε4 基因座负荷之间的交互作用证据。
结论: 本研究扩大了Omega-3与LOD有益关联的证据,将其延伸到EOD。这些发现表明,在人生的早期增加Omega-3脂肪酸的摄入量可能减缓EOD的发展。需要进行额外的研究来证实这些发现,尤其是在更多样化的群体中。
关键词: 阿尔茨海默病;生物标志物;认知;脂肪酸;生活方式。
利益冲突声明: 作者声明存在可能构成潜在利益冲突的个人关系和财务利益:A.S.-V. 他的机构获得了研究资金,并从加州核桃委员会(Folsom, CA, US)获得了参加专业会议的支持。W.S.H. 在OmegaQuant Analytics公司持有股份,该公司是一家为研究人员、临床医生和公众提供Omega-3测试的实验室。其他作者声明没有利益冲突。
|
Billing can be bypassed using a combo of subagents with an agent definition
Copilot 聊天中规避计费的方法总结
以下是对 Copilot 聊天中规避计费方法和相关漏洞的总结,基于提供的文档:
核心问题: Copilot 聊天存在规避付费使用高级模型(如 Opus 4.5)的方法,利用了其内部机制中的一些漏洞。
规避方法:
利用子代理和工具调用:
- 原理: 子代理和工具调用本身不会消耗计费请求。请求费用是基于初始模型计算的。Copilot 允许定义子代理并为其指定模型。
- 步骤:
- 启动新的聊天会话,选择一个免费模型(例如 GPT-5 Mini)。
- 创建一个代理,并为其指定一个高级模型(例如 Opus 4.5)。
- 将模式设置为“agent”。
- 在初始消息中,指示该代理使用
runSubagent 工具启动一个名为 [your_agents_name_here] 的子代理,并将查询(例如 "What time is it in London, UK")传递给子代理。
- 提交消息。
- 流程: 免费模型接收初始请求,不消耗费用。免费模型创建子代理,子代理具有高级模型配置,高级模型用于子代理处理,但不会消耗额外的计费请求。
循环工具调用脚本:
- 原理: 通过精心设计的提示和脚本,可以诱导模型重复调用工具,从而无限次地使用高级模型,而仅消耗初始消息的费用。
- 步骤:
- 将
chat.agent.maxRequests 设置为一个高数值。
- 将高级模型(例如 Opus 4.5)作为聊天会话的初始模型。
- 构建一个自定义脚本(未披露具体内容)。
- 通过提示,引导模型重复调用该脚本。
- 效果: 经过适当的脚本和提示设计,可以创建一个循环,使高级模型可以无限次地被调用,而费用仅限于初始消息。测试显示,单条消息可触发 3 小时以上、启动数百个子代理处理数百个文件的过程,仅消耗 3 个高级请求。
相关漏洞:
报告与状态:
- 最初向 MSRC (VULN-172488) 报告,但被认为超出了 MSRC 的范围,建议作为公开漏洞报告。
- 与问题 #252230 不同。
环境信息:
- Copilot Chat Extension Version: 0.37.2026013101
- VS Code Version: 1.109.0-insider (Universal)
- OS Version: OSX Tahoe 26.3
- 功能:代理/子代理
|
|
TSMC to make advanced AI semiconductors in Japan
Updated [11:17 [PM] [Pacific Time], May 23, 2024
台积电在日本熊本县建设最先进的芯片工厂,以满足人工智能需求
台湾芯片制造商台积电(TSMC)周四宣布,将会在日本熊本县的第二个工厂(目前正在建设中)生产世界上最先进的3纳米芯片。此举旨在满足日益增长的人工智能相关需求,并为日本的芯片制造雄心提供助力。
主要内容:
- 先进芯片生产: 台积电计划在日本熊本县生产3纳米芯片,这些芯片被广泛应用于人工智能产品、智能手机等领域。
- 战略意义: 日本首相高市早苗认为,此项目对于日本的经济安全具有重要意义,并表示将全力推动项目进展。她与台积电CEO魏哲家在东京会面时作出此番表述。
- 应用领域: 这些先进芯片将应用于人工智能、机器人和自动驾驶等日本政府确定的战略重要领域。
- 投资增加: 台积电预计今年资本支出将增加近40%,并将2026年的资本支出计划提高至520亿至560亿美元,高于去年的400亿美元。
- 日本本土芯片产业扶持: 日本政府正在通过巨额补贴来扶持本土芯片制造商Rapidus,以期在先进芯片制造领域赶超全球领先水平。
- 对人工智能市场信心: 尽管存在人工智能泡沫的担忧,台积电CEO魏哲家上月表示,客户对人工智能的需求是“真实的”。
- **全球扩张:**台积电还在美国亚利桑那州建设新的工厂,以形成芯片制造集群,以满足全球客户不断增长的需求。
台积电的此举被认为是日本首相高市早苗在即将到来的大选前的一大助力。
|
Vouch
Vouch:社区信任管理系统总结
Vouch 是一个社区信任管理系统,旨在解决开源项目面临的贡献质量问题,尤其是在 AI 工具普及后,低质量贡献者更容易混入。
核心理念:
- 信任与验证: 开源项目长期依赖信任与验证机制。Vouch 旨在通过明确的信任模型来加强这一机制。
- 显式信任: 允许经过信任的个人(如维护者)为其他用户背书(vouch),从而允许背书用户参与项目贡献。
- 抵制不良行为: 可以明确地谴责(denounce)用户,阻止其与项目互动。
主要功能:
- 信任列表: Vouch 使用一个简单的、扁平的
.td 文件来维护信任列表,易于解析和维护。
- 信任网络: 支持读取其他项目的信任列表,构建信任网络。项目之间可以共享信任决策,从而实现更广泛的信任关系。
- 灵活配置: 项目可以完全自定义背书和谴责的规则和后果。
GitHub 集成:
- GitHub Actions: 提供 GitHub Actions 用于自动化流程,例如:
check-pr: 检查拉取请求 (PR) 作者是否被背书,并可自动关闭未被背书的 PR。
manage-by-discussion: 允许通过讨论评论进行背书、谴责或解除背书。
manage-by-issue: 允许通过问题评论进行背书或谴责。
setup-vouch: 安装 Vouch CLI。
- CLI 工具: 提供 Nushell 命令行工具,用于管理信任列表:
check <username>: 检查用户状态(背书、谴责、未知)。
add <username>: 将用户添加到背书列表。
denounce <username>: 将用户添加到谴责列表。
gh-check-pr: 检查 PR 作者状态。
gh-manage-by-issue: 通过问题评论管理用户状态。
CLI 工具的用法示例:
vouch check mitchellh: 检查用户 "mitchellh" 的状态。
vouch add newuser: 将 "newuser" 添加到背书列表。
vouch denounce badactor --reason "Submitted AI slop": 将 "badactor" 添加到谴责列表,并添加原因。
文件格式:
- 信任列表存储在
.td 文件中。
- 文件格式简单,每行一个用户名,可指定平台前缀(如
github:mitchellh)。
- 使用
- 前缀表示谴责。
- 支持在用户名后添加注释。
当前状态:
Vouch 仍处于实验阶段,由 Ghostty 使用。 欢迎反馈和贡献。
|
|
Ask HN: What are you working on? (February 2026)
https://news.ycombinator.com/item?id=46937696
|
|
AI makes the easy part easier and the hard part harder
AI handles writing code but leaves the hard work: investigation, context, validation. Why vibe coding has limits and AI assistance can backfire.
|
|
Bun v1.3.9
Fixes 23 issues (addressing 13 👍). Run multiple scripts in --parallel or --sequential. bun:test mock & spyOn get Symbol.dispose support. ESM bytecode compilation. Faster Bun.markdown. Faster RegExp, String.prototype.trim, String.prototype.startsWith.
|
|
Apple XNU: Clutch Scheduler
Contribute to apple-oss-distributions/xnu development by creating an account on GitHub.
|
|
Show HN: I created a Mars colony RPG based on Kim Stanley Robinson's Mars books
https://underhillgame.com/
|
|
Let's compile Quake like it's 1997
https://fabiensanglard.net/compile_like_1997/index.html
|
|
Shifts in U.S. Social Media Use, 2020–2024: Decline, Fragmentation, Polarization (2025)
Abstract page for arXiv paper 2510.25417: Shifts in U.S. Social Media Use, 2020-2024: Decline, Fragmentation, and Enduring Polarization
|
|
A GTA modder has got the 1997 original working on modern PCs and Steam Deck
Ready2Play Complete package to play easy and without installation on modern Windows systems. Just extract to desired location and start the launcher to play, Enjoy! Features - Improved compatibility and performance - GTA + London + 1961 (Windows version) - Supports Steam version (Install detectio...
|
|
Experts Have World Models. LLMs Have Word Models
Most expert work isn’t “produce a probable artifact”; it's "choose a good move considering other agents, guessing hidden state". LLMs default to single-shot artifacts and need World Models to progress
|
|
The first sodium-ion battery EV is a winter range monster
https://insideevs.com/news/786509/catl-changan-worlds-first-sodium-ion-battery-ev/
|
|
Stop generating, start thinking
Instead of wanting to learn and improve as humans, and build better software, we’ve outsourced our mistakes to an unthinking algorithm.
|
|
Show HN: A custom font that displays Cistercian numerals using ligatures
A font that renders numbers as medieval Cistercian numerals
|
|
Every book recommended on the Odd Lots Discord
https://odd-lots-books.netlify.app/
|
|
The Little Bool of Doom (2025)
A short story about debugging and how sometimes what's true is false. Starring everyone's favourite uncle, Undefined Behaviour.
|
|
Show HN: Algorithmically Finding the Longest Line of Sight on Earth
https://alltheviews.world
|
|
Everything – Locate files and folders by name instantly
https://www.voidtools.com/
|
|
Roundcube Webmail: SVG feImage bypasses image blocking to track email opens
Roundcube's HTML sanitizer doesn't treat SVG feImage href as an image source. Attackers can bypass remote image blocking to track email opens. (CVE-2026-25916)
|
|
More Mac malware from Google search
Follow a sponsored result in Google to a page in Medium that provides a Terminal command that you will live to regret. And what is Marek's disease?
|
|
Reverse Engineering the Prom for the SGI O2
mattst88's blog - Reverse Engineering the PROM for the SGI O2
|