人工智能科学计算高性能计算物理引擎图形学【免费下载链接】alienALIEN is a CUDA-powered artificial life simulation program.项目地址https://gitcode.com/gh_mirrors/al/alien点击查看免费下载本文是 ALIENCUDA 加速的人工生命模拟器内置文档查看器的格式编写指南。ALIEN 在 GUI 中内置了一个基于 Markdown 的文档窗口按 F1 开关用于呈现游戏自带的用户手册本文完整讲解该查看器支持的 Markdown 元素——从章节组织、文本样式、列表、表格、图片、笔记、代码块到链接与锚点规则并深入源码解析其解析与渲染实现帮助你为resources/docs编写、维护符合规范的技术文档。一、文档系统总览章节与目录机制1.1 文档存放位置ALIEN 的文档存放在resources/docs目录每章是一个独立的.md文件。程序通过Const::DocsPath定位该目录其定义为ResourcePath / docs即resources/docs见 source/Base/Resources.cpp。resources/docs目录当前包含以下章节文件分类章节文件Start heregetting-started.md、user-interface.md、ai-agents.mdExploresandbox.md、how-life-works.md、first-creature.md、evolution.md、generative-art.mdReferencecell-types.md、genomes.md、neural-networks.md、energy.md、simulation-parameters.md、files.md、keyboard-and-mouse.md、troubleshooting.md、glossary.md其他format-reference.md本文所述格式规范、contents.md目录文件此外还有一个images/子目录存放章节引用的图片素材。1.2 目录文件 contents.md文档窗口的目录Table of Contents由 resources/docs/contents.md 定义其解析规则为文件中的每个标题Heading开启一个 part部分例如# Start here、# Explore、# Reference标题下每个带链接的列表项list item成为一个章节chapter章节标题取链接的显示文本章节的排列顺序即列表项在contents.md中的出现顺序。对应的加载逻辑在 DocumentationWindow.cpp 的loadChapters()中实现先解析contents.md遇到标题记录为当前 part遇到带链接的列表项则记录{filename, title, part}随后读取该文件名对应的章节文件并解析为MarkdownDocument。1.3 构建时资源复制为了让运行程序能找到resources/docs顶层 CMakeLists.txt 在alien目标构建完成后通过copy_directory将整个resources目录复制到构建输出目录及可执行文件所在目录旁。因此文档必须在运行目录的resources文件夹下才能被加载——若文档缺失请参考 troubleshooting.md 中的文档缺失一节从程序自身所在文件夹启动确保能找到resources文件夹。1.4 解析器与渲染器分层文档查看器采用解析 渲染两层架构解析层MarkdownParser.cpp 基于md4c库source/Base/CMakeLists.txt 链接md4c::md4c将 Markdown 文本解析为 MarkdownDocument.h 中定义的结构化文档模型MarkdownSpan、MarkdownHeading、MarkdownParagraph、MarkdownListItem、MarkdownImage、MarkdownCodeBlock、MarkdownNote、MarkdownTable、MarkdownRule渲染层MarkdownRenderer.cpp 将上述模型逐个渲染为 ImGui 界面元素并负责图片加载、链接点击、锚点滚动等交互行为。解析器以 GitHub 方言MD_DIALECT_GITHUB解析并设置了MD_FLAG_NOHTML标志即文档中的 HTML 标签会被忽略行内的amp;、lt;、gt;、quot;、apos;、nbsp;等实体则会被解码为对应字符见 MarkdownParser.cpp。二、文本元素段落、行内样式与强制换行2.1 段落与自动换行段落文本在渲染时自动换行。渲染器 renderTextFlow 按词以空白切分的TextPiece逐个测量宽度并折行跨 span 的无空白片段会被视为同一单词保证行内样式切换不会破坏单词完整性。2.2 行内样式支持的三种行内样式粗体**bold**解析后对应MarkdownSpan.bold true斜体*italic*解析后对应italic true由于 ALIEN 没有加载斜体字体斜体文本以更明亮的颜色显示来与正文区分行内代码code解析后对应code true渲染时使用等宽字体并绘制圆角背景色块。这三种样式可以嵌套使用例如**bold**、*italic*、code以及**加粗的 *斜体* 与行内代码**。2.3 强制换行以反斜杠结尾的行会强制产生一个换行以反斜杠结尾的行\ 强制换行。解析器对MD_TEXT_SOFTBR软换行普通换行符替换为空格对MD_TEXT_BR反斜杠强制换行保留为\n实现段落内强制换行效果见 MarkdownParser.cpp。上述行为均有测试用例佐证参见 MarkdownParserTests.cppparse_inlineStyles、parse_lineBreaks、parse_entities等测试验证了行内样式解析、换行处理与实体解码结果。三、列表有序、无序、嵌套与多段结构3.1 无序与有序列表- Bullet item - Another bullet item - Nested item - Another nested item - Back on the first level1. First step 2. Second step 3. Third step无序列表项在渲染时以圆点标记有序列表项以数字加句号标记1.、2.……。解析器会记录列表的start值即使编号从 3 开始3. Third也会从 3 连续编号测试parse_lists验证了这一点见 MarkdownParserTests.cpp。3.2 嵌套与缩进嵌套列表通过缩进表达层级解析结果中的MarkdownListItem.depth表示嵌套深度渲染时每一层缩进ListIndent22 px。3.3 列表项内包含段落与代码块一个列表项可以包含进一步展开的段落和代码块它们以列表项文本同样的缩进呈现1. First step 段落内容与列表项文本同缩进。Code inside a list item2. Second step解析器使用listIndentLevel记录这类列表项附属块的缩进层级见 MarkdownParser.cpp渲染时按该层级整体缩进。测试parse_listItemWithCodeBlockAndParagraph验证了列表项内段落与代码块的解析结果见 MarkdownParserTests.cpp。此外嵌套子列表之后还能继续回到父列表项的段落parse_listItemContinuedAfterNestedList。四、表格对齐方式与数值列4.1 语法与对齐表格列默认左对齐右对齐列写为---:专用于纯数字列。原文档给出的示例SettingUnitValueTime step size1.0Radiuspx64Energy1,500解析器读取每列的MD_ALIGN并对齐类型Left/Center/Right存入MarkdownTable.alignments渲染时右对齐列会把单元格内容推到列宽右端见 MarkdownRenderer.cpp。测试parse_table同时验证了左、右、居中三种对齐的解析见 MarkdownParserTests.cpp。4.2 渲染样式表格使用带外边框与内部竖线的风格隔行背景色RowBg表头行有独立底色Const::TableHeaderColor列宽按内容自适应拉伸SizingStretchProp表头单元格文本同时作为列标题显示见 MarkdownRenderer.cpp。五、图片尺寸约定、alt 文本与懒加载5.1 引用方式与尺寸约定图片必须是PNG 或 JPEG 文件引用路径相对于resources/docs目录渲染时以_basePath / image.source解析见 MarkdownRenderer.cpp。推荐做法是图片按 2 倍显示尺寸准备即超采样查看器按像素尺寸的 1/2 绘制再乘以 UI 缩放系数ImageOversampling 2.0f见 MarkdownRenderer.cpp若图片超过可用宽度会自动收缩到可用宽度并保持宽高比居中显示见 MarkdownRenderer.cpp。5.2 alt 文本作为标题图片的 alt 文本会被渲染为居中显示的图片标题caption[](https://link.gitcode.com/i/f7f054c08bc3648537ca0b675ac6ee78)上面的示例展示图片的source记录为../images/logo.png相对resources/docs即仓库根目录下的resources/images/logo.pngcaption记录为 The ALIEN logo。5.3 位置限制必须独占一个段落图片必须独立成段。在列表、表格和笔记Note内部图片元素不被渲染只显示其 alt 文本。解析器在MD_SPAN_IMG回调中仅在段落叶子且不在任何容器内时才接受图片块见 MarkdownParser.cpp。测试parse_image与parse_imageInListItem验证了这一规则见 MarkdownParserTests.cpp。5.4 懒加载与缓存图片延迟到即将可见时才解码且每帧最多解码一张切换到其他章节时会释放纹理缓存以回收显存见 MarkdownRenderer.cpp 与releaseTextures()。文件缺失时会在原位置以警告色显示 Image not found: 源路径。六、笔记Notes块引用渲染为高亮提示以开头的块引用被渲染为高亮的笔记框Note。笔记内可以包含行内样式粗体、斜体、行内代码与链接多个段落列表。例如 A block quote is rendered as a highlighted note. It can contain **inline styles** and [links](#links). A note can also contain several paragraphs and lists: - First point - Second point渲染时笔记框带有圆角底色背景左侧有一条强调色竖条NoteBarWidth 3.0f见 MarkdownRenderer.cpp与正文形成视觉区隔。笔记内部支持的元素类型包括段落、列表项与代码块MarkdownNoteBlock变体并在渲染时自动增加右侧内边距避免文字贴边。解析层面块引用内的内容被收集进MarkdownNote.blocks若一个块引用被其他块如标题打断则被打断的部分会开启一个新的笔记测试parse_noteInterruptedByHeading验证见 MarkdownParserTests.cpp。七、代码块等宽字体与背景面板三个反引号包裹的代码块以等宽字体渲染并带有圆角背景面板EngineTests.exe --gtest_filterSuite.Test渲染实现代码文本以等宽中号字体绘制在Const::InputColor圆角背景上四周留有内边距BoxPadding超出可用宽度时被裁剪见 MarkdownRenderer.cpp。代码块末尾的尾随换行会在解析阶段被移除见 MarkdownParser.cpp。上述示例命令EngineTests.exe --gtest_filterSuite.Test正是运行引擎测试套件中某个指定测试用例的方式。八、链接章节跳转、锚点跳转与外部链接8.1 四类链接文档支持以下四种链接形式链接到另一个章节[How life works](https://link.gitcode.com/i/aeaac281f8d668227efb75c7dfb98223)链接到其他章节的某个小节[Sensor](https://link.gitcode.com/i/60fbcc0ba4141a264e442fc62bb31cf1)链接到本章节的小节[Tables](#tables)外部链接以http://或https://开头的链接8.2 链接的打开逻辑点击链接后DocumentationWindow.cpp 的openLink()按以下规则处理以http://或https://开头 →在系统默认浏览器中打开通过WebLinkHelper::openInBrowser链接中含#→ 拆分为文件名与锚点文件名为空表示本页内滚动到该锚点文件名为章节文件时跳转到对应章节并滚动到锚点纯文件名 → 切换到对应章节。因此文档内部链接应直接写章节文件名如how-life-works.md无需写完整路径渲染器会把文件名匹配到已加载的章节列表_chapters。8.3 链接的交互反馈渲染时链接文字以强调色显示并带下划线鼠标悬停时颜色加深并变为手型光标点击后触发跳转对http链接还会显示完整 URL 的悬浮提示见 MarkdownRenderer.cpp。另外解析器会把裸 URL 自动识别为链接测试parse_bareUrl见 MarkdownParserTests.cpp。九、锚点规则GitHub 风格与重复标题编号9.1 锚点生成规则标题的锚点anchor按GitHub 风格从标题文本派生全部转为小写空格转为连字符-标点符号被去掉保留字母、数字、-、_以及非 ASCII 字符如中文、德文变音符号。例如Cell functions→cell-functions。该规则实现在MarkdownParser::toAnchor()见 MarkdownParser.cpp并有专门测试覆盖各种边界情况toAnchor测试Whats new in 5.0?→whats-new-in-50、Größe Zahl→größe-zahl等见 MarkdownParserTests.cpp。9.2 重复标题的编号重复出现的标题会自动追加数字编号第二次出现的同名标题得到-1第三次得到-2依此类推。例如第二个名为 Signals 的标题其锚点为#signals-1见 MarkdownParser.cpp 的createUniqueAnchor()。这一行为与 GitHub 一致并由测试parse_repeatedHeadings验证见 MarkdownParserTests.cpp。9.3 在文档中使用锚点跳转本章节小节[Tables](#tables)跳转其他章节小节[Sensor](https://link.gitcode.com/i/60fbcc0ba4141a264e442fc62bb31cf1)其中sensor为## Sensor标题派生出的锚点。十、文档查看器的交互设计补充文档窗口DocumentationWindow除了渲染正文外还提供以下与格式配套的交互能力F1 快捷键主菜单中 Documentation 菜单项绑定ImGuiKey_F1见 MainLoopController.cpp按 F1 即可开关文档窗口可拖动的导航栏左侧导航区宽度可通过分隔条拖动宽度值持久化到设置项windows.documentation.navigation width上次打开的章节记录在windows.documentation.chapter下次启动自动恢复见 DocumentationWindow.cpp全文搜索导航栏顶部有搜索框按空格分词后匹配所有章节的小节标题与正文标题全命中的结果排在前面并生成包含关键词上下文的摘要片段SnippetLeadLength 30、SnippetLength 100见 DocumentationWindow.cpp章节导航按钮正文底部提供上一章 / 下一章按钮带 Font Awesome 箭头图标便于顺序阅读见 DocumentationWindow.cppShow after startup 开关窗口底部可切换启动时是否自动显示文档。十一、编写 ALIEN 文档的实用建议综合本文所讲的格式规则为resources/docs编写新章节时建议遵循组织方式在 contents.md 相应 part 下新增一个带链接的列表项链接指向新章节文件名章节文件本身放在resources/docs下章节结构章节内使用##级标题划分小节锚点由标题自动派生注意避免与同章其他小节标题完全重名否则锚点会带-1后缀跨章链接直接写目标章节文件名加锚点如[Sensor](https://link.gitcode.com/i/60fbcc0ba4141a264e442fc62bb31cf1)无需带resources/docs/前缀图片规范PNG/JPEG按 2 倍显示尺寸准备路径相对resources/docs必须独立成段alt 文本即图片标题数值表格数值列使用---:右对齐与列名语义一致重要提示用块引用渲染为高亮笔记便于读者快速定位关键信息运行环境确保程序在包含resources文件夹的目录下运行构建产物已由 CMake 自动复制资源文档缺失时按 troubleshooting.md 排查。遵循以上约定编写的内容将在 ALIEN 内置文档查看器中获得与官方手册一致的排版、导航、搜索与链接体验。赞分享人工智能科学计算高性能计算物理引擎图形学【免费下载链接】alienALIEN is a CUDA-powered artificial life simulation program.项目地址https://gitcode.com/gh_mirrors/al/alien点击查看免费下载相关推荐qwerty-learner 免费打字练习完整本地安装指南背单词的同时练出英语肌肉记忆qwerty learner 免费打字练习完整本地安装指南背单词的同时练出英语肌肉记忆 你有没有过这种时刻看单词能读出来可手一放到键盘上就卡壳明明很熟的前端教育markdown-it 文档级后处理用 core 规则插件实现 Section 分节渲染markdown it 文档级后处理用 core 规则插件实现 Section 分节渲染 导读 本文围绕 markdown it 的 core 规则core开发工具CLIMarkwon Visitor 深入解析Markwon 3.0 可配置 Markdown 节点访问与渲染机制Markwon Visitor 深入解析Markwon 3.0 可配置 Markdown 节点访问与渲染机制 导读 Markwon 是 Android 平台UI组件移动开发上一篇js-cookie的生产环境部署最佳实践下一篇突破性能瓶颈Emscripten与Web Workers共享内存实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考