<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>研发日志 · R&amp;D Log</title><link>https://rd163.visword.com/</link><description>研发日志 · R&amp;D Log — 小智晖的研发手记与技术分享 | 要做一个有 swag 的程序员</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>whutluohui@gmail.com (小智晖)</managingEditor><webMaster>whutluohui@gmail.com (小智晖)</webMaster><copyright>本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。</copyright><lastBuildDate>Sat, 20 Sep 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://rd163.visword.com/index.xml" rel="self" type="application/rss+xml"/><item><title>python3开发环境搭建</title><link>https://rd163.visword.com/posts/python3-development-env-setup/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python3-development-env-setup/</guid><description><![CDATA[<h2 id="版本选择" class="headerLink">
    <a href="#%e7%89%88%e6%9c%ac%e9%80%89%e6%8b%a9" class="header-mark"></a>版本选择</h2><p>建议使用 Python 3.10.x 以上版本，因为 3.8 版本已经不再支持。
例如，在 mac 安装 python3.8报错：</p>
<div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">text</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-28" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl"><span class="o">==&gt;</span> <span class="n">Fetching</span> <span class="n">downloads</span> <span class="k">for</span><span class="p">:</span> <span class="n">python</span><span class="err">@</span><span class="mf">3.8</span>
</span></span><span class="line"><span class="cl"><span class="n">Error</span><span class="p">:</span> <span class="n">python</span><span class="err">@</span><span class="mf">3.8</span> <span class="n">has</span> <span class="n">been</span> <span class="n">disabled</span> <span class="n">because</span> <span class="n">it</span> <span class="n">is</span> <span class="n">deprecated</span> <span class="n">upstream</span><span class="o">!</span> <span class="n">It</span> <span class="n">was</span> <span class="n">disabled</span> <span class="n">on</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="mf">14.</span></span></span></code></pre>
</div>
<h2 id="ubuntu-2004-上安装-python-310" class="headerLink">
    <a href="#ubuntu-2004-%e4%b8%8a%e5%ae%89%e8%a3%85-python-310" class="header-mark"></a>Ubuntu 20.04 上安装 Python 3.10</h2><p>在 Ubuntu 20.04 上安装 Python 3.10 是一个非常常见的需求，因为 20.04 自带的版本是 3.8。有几种可靠的方法，<strong>强烈推荐使用 Deadsnakes PPA</strong>，这是最官方、最便捷的方式。</p>]]></description></item><item><title>server学习路线</title><link>https://rd163.visword.com/posts/server-learning-roadmap/</link><pubDate>Sun, 14 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/server-learning-roadmap/</guid><description><![CDATA[<h2 id="良好的系统设计" class="headerLink">
    <a href="#%e8%89%af%e5%a5%bd%e7%9a%84%e7%b3%bb%e7%bb%9f%e8%ae%be%e8%ae%a1" class="header-mark"></a>良好的系统设计</h2><ul>
<li><a href="https://github.com/ruanyf/weekly/blob/master/docs/issue-362.md" target="_blank" rel="noopener noreferrer">GitHub 工程师总结什么是良好的系统设计</a></li>
</ul>
<p><strong>总结如下：</strong></p>
<p>1、</p>
<p>程序设计是组装代码，系统设计是组装服务。</p>
<p>程序设计的组件是变量、函数、类等，系统设计的组件是服务器、数据库、缓存、队列、事件总线、代理等。</p>]]></description></item><item><title>行为树算法</title><link>https://rd163.visword.com/posts/behavior-tree/</link><pubDate>Sun, 14 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/behavior-tree/</guid><description><![CDATA[<p>行为树(Behavior Tree)​​ 是一种用于描述AI行为的树状数据结构，通过节点之间的层次关系来组织复杂的行为逻辑。</p>
<h2 id="开源项目" class="headerLink">
    <a href="#%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae" class="header-mark"></a>开源项目</h2><h3 id="behaviortreecpp" class="headerLink">
    <a href="#behaviortreecpp" class="header-mark"></a>BehaviorTree.CPP</h3><ul>
<li><a href="https://github.com/BehaviorTree/BehaviorTree.CPP" target="_blank" rel="noopener noreferrer">BehaviorTree.CPP</a></li>
</ul>
<h3 id="golang" class="headerLink">
    <a href="#golang" class="header-mark"></a>Golang</h3><ul>
<li><a href="https://github.com/magicsea/behavior3go" target="_blank" rel="noopener noreferrer">behavior3go</a></li>
<li><a href="https://github.com/askft/go-behave" target="_blank" rel="noopener noreferrer">go-behave</a></li>
<li><a href="https://github.com/joeycumines/go-behaviortree" target="_blank" rel="noopener noreferrer">go-behaviortree</a> 实现了Sequence and Selector，与 PyTrees 类似</li>
</ul>
<h3 id="pytrees" class="headerLink">
    <a href="#pytrees" class="header-mark"></a>PyTrees</h3><p>PyTrees 是一个强大的 Python 行为树实现，专为机器人和其他复杂系统创建决策引擎而设计。PyTrees 提供了一个优雅的模块化框架，使复杂的决策管理变得简单。</p>]]></description></item><item><title>GOAP(Goal-Oriented Action Planning)算法</title><link>https://rd163.visword.com/posts/algorithm-goap/</link><pubDate>Sat, 13 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/algorithm-goap/</guid><description><![CDATA[<h2 id="goap-概述" class="headerLink">
    <a href="#goap-%e6%a6%82%e8%bf%b0" class="header-mark"></a>GOAP 概述</h2><p>GOAP（Goal-Oriented Action Planning，目标导向行动规划）是一种基于目标的智能决策算法，常用于游戏 AI、机器人控制等领域。</p>]]></description></item><item><title>游戏剧情交互开发工具</title><link>https://rd163.visword.com/posts/storyline-interactive-tools/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/storyline-interactive-tools/</guid><description><![CDATA[<h2 id="游戏剧情交互开发工具" class="headerLink">
    <a href="#%e6%b8%b8%e6%88%8f%e5%89%a7%e6%83%85%e4%ba%a4%e4%ba%92%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7" class="header-mark"></a>游戏剧情交互开发工具</h2><h2 id="yarn-spinner-工具" class="headerLink">
    <a href="#yarn-spinner-%e5%b7%a5%e5%85%b7" class="header-mark"></a>Yarn Spinner 工具</h2><ul>
<li><a href="https://github.com/YarnSpinnerTool/YarnSpinner" target="_blank" rel="noopener noreferrer">Yarn Spinner C#</a></li>
<li><a href="https://github.com/YarnSpinnerTool/YarnSpinner-Unity" target="_blank" rel="noopener noreferrer">Yarn Spinner for Unity</a></li>
<li><a href="https://github.com/YarnSpinnerTool/YarnSpinner-Console" target="_blank" rel="noopener noreferrer">Yarn Spinner Console</a> Console命令行</li>
<li><a href="https://github.com/YarnSpinnerTool/try.yarnspinner.dev" target="_blank" rel="noopener noreferrer">try.yarnspinner.dev</a> Web端 Playground</li>
<li><a href="https://github.com/relaypro-open/YarnRunner-Python" target="_blank" rel="noopener noreferrer">YarnRunner-Python</a> YarnRunner的 Python 实现</li>
</ul>]]></description></item><item><title>Python asyncio 的事件循环机制</title><link>https://rd163.visword.com/posts/python-asyncio-event-loop/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-asyncio-event-loop/</guid><description><![CDATA[<p>在使用 Python 的 asyncio 库实现异步编程的过程中，协程与事件循环这两个概念可以说有着千丝万缕的联系，常常是形影不离的出现，如胶似漆般的存在。</p>
<h2 id="asyncio-事件循环的理解" class="headerLink">
    <a href="#asyncio-%e4%ba%8b%e4%bb%b6%e5%be%aa%e7%8e%af%e7%9a%84%e7%90%86%e8%a7%a3" class="header-mark"></a>Asyncio 事件循环的理解</h2><ul>
<li><a href="https://fastapi.tiangolo.com/async/" target="_blank" rel="noopener noreferrer">FastAPI 文档中对 async 的介绍</a></li>
<li><a href="https://www.lipijin.com/python-asyncio-eventloop" target="_blank" rel="noopener noreferrer">以定时器为例研究一手 Python asyncio 的协程事件循环调度</a></li>
<li><a href="https://www.cnblogs.com/traditional/p/17357782.html" target="_blank" rel="noopener noreferrer">《asyncio 系列》1. 什么是 asyncio？如何基于单线程实现并发？事件循环又是怎么工作的？</a></li>
<li><a href="https://www.cnblogs.com/traditional/p/17363960.html" target="_blank" rel="noopener noreferrer">《asyncio 系列》2. 详解 asyncio 的协程、任务、future，以及事件循环 </a></li>
<li><a href="https://www.cnblogs.com/traditional/p/17364391.html" target="_blank" rel="noopener noreferrer">《asyncio 系列》3. 详解 Socket（阻塞、非阻塞），以及和 asyncio 的搭配</a></li>
</ul>
<h2 id="事件循环第三方实现" class="headerLink">
    <a href="#%e4%ba%8b%e4%bb%b6%e5%be%aa%e7%8e%af%e7%ac%ac%e4%b8%89%e6%96%b9%e5%ae%9e%e7%8e%b0" class="header-mark"></a>事件循环第三方实现</h2><p>Python 的 EventLoop 是一个抽象类，它定义了事件循环的基本方法，如创建、运行、停止、注册回调函数等等。除了Python 自带的 asyncio 库，还有其他第三方库，它们都实现了 EventLoop 的功能，如：</p>]]></description></item><item><title>虚幻引擎 UE 学习路线</title><link>https://rd163.visword.com/posts/ue-learning-roadmap/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ue-learning-roadmap/</guid><description><![CDATA[<p>虚幻引擎 UE 学习路线</p>
<h2 id="一启动项目" class="headerLink">
    <a href="#%e4%b8%80%e5%90%af%e5%8a%a8%e9%a1%b9%e7%9b%ae" class="header-mark"></a>一、启动项目</h2><h3 id="1-roguelike" class="headerLink">
    <a href="#1-roguelike" class="header-mark"></a>1. Roguelike</h3><ul>
<li><a href="https://github.com/vxiaozhi/ActionRoguelike" target="_blank" rel="noopener noreferrer">Action Roguelike C++ Unreal Engine Game</a></li>
</ul>
<p>理由：</p>
<ul>
<li>足够简单而且代码开源</li>
<li>提供 UE4.x - UE5.x 的支持。</li>
<li>有中英文教程
<ul>
<li><a href="https://www.cnblogs.com/Qiu-Bai/p/17180550.html" target="_blank" rel="noopener noreferrer">斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 </a></li>
</ul>
</li>
</ul>
<h3 id="step" class="headerLink">
    <a href="#step" class="header-mark"></a>Step</h3><div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">text</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-4" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">git clone git@github.com:vxiaozhi/ActionRoguelike.git
</span></span><span class="line"><span class="cl">cd ActionRoguelike
</span></span><span class="line"><span class="cl">git chekcout UE5.3</span></span></code></pre>
</div>
<hr>
<h3 id="2-epicsurvivalgame---epic求生游戏" class="headerLink">
    <a href="#2-epicsurvivalgame---epic%e6%b1%82%e7%94%9f%e6%b8%b8%e6%88%8f" class="header-mark"></a>2. EpicSurvivalGame - Epic求生游戏</h3><ul>
<li><a href="https://github.com/vxiaozhi/EpicSurvivalGame" target="_blank" rel="noopener noreferrer">EpicSurvivalGame</a></li>
</ul>
<h3 id="3-carla---自动驾驶模拟器" class="headerLink">
    <a href="#3-carla---%e8%87%aa%e5%8a%a8%e9%a9%be%e9%a9%b6%e6%a8%a1%e6%8b%9f%e5%99%a8" class="header-mark"></a>3. <strong>CARLA - 自动驾驶模拟器</strong></h3><ul>
<li><strong>GitHub 地址</strong>: <a href="https://github.com/carla-simulator/carla" target="_blank" rel="noopener noreferrer">https://github.com/carla-simulator/carla</a></li>
<li><strong>描述</strong>: CARLA 是一个开源的自动驾驶模拟器，基于 Unreal Engine 构建。它提供了高度可定制的城市环境、交通模拟、传感器模拟（如摄像头、激光雷达）以及用于训练和测试自动驾驶算法的 API。</li>
<li><strong>特点</strong>:
<ul>
<li>支持多种天气和光照条件。</li>
<li>提供真实的物理模拟和交通行为。</li>
<li>兼容 ROS（机器人操作系统）和 Autoware。</li>
</ul>
</li>
</ul>
<hr>
<h3 id="4-airsim---无人机与车辆模拟器" class="headerLink">
    <a href="#4-airsim---%e6%97%a0%e4%ba%ba%e6%9c%ba%e4%b8%8e%e8%bd%a6%e8%be%86%e6%a8%a1%e6%8b%9f%e5%99%a8" class="header-mark"></a>4. <strong>AirSim - 无人机与车辆模拟器</strong></h3><ul>
<li><strong>GitHub 地址</strong>: <a href="https://github.com/microsoft/AirSim" target="_blank" rel="noopener noreferrer">https://github.com/microsoft/AirSim</a></li>
<li><strong>描述</strong>: AirSim 是微软开发的开源模拟器，最初专注于无人机，后来扩展支持车辆模拟。它基于 Unreal Engine（也支持 Unity），提供高保真的物理引擎和传感器模拟，适用于自动驾驶研究和机器学习。</li>
<li><strong>特点</strong>:
<ul>
<li>支持多种车辆类型（汽车、无人机）。</li>
<li>提供逼真的环境渲染和物理模拟。</li>
<li>兼容 Python 和 C++ API，便于集成机器学习框架。</li>
</ul>
</li>
</ul>
<hr>
<h3 id="5-deepdrive---自动驾驶模拟平台" class="headerLink">
    <a href="#5-deepdrive---%e8%87%aa%e5%8a%a8%e9%a9%be%e9%a9%b6%e6%a8%a1%e6%8b%9f%e5%b9%b3%e5%8f%b0" class="header-mark"></a>5. <strong>DeepDrive - 自动驾驶模拟平台</strong></h3><ul>
<li><strong>GitHub 地址</strong>: <a href="https://github.com/deepdrive/deepdrive" target="_blank" rel="noopener noreferrer">https://github.com/deepdrive/deepdrive</a></li>
<li><strong>描述</strong>: DeepDrive 是一个基于 Unreal Engine 的自动驾驶模拟平台，专注于提供大规模数据集和训练环境。它支持端到端的深度学习模型训练，并提供丰富的传感器数据。</li>
<li><strong>特点</strong>:</li>
<li>支持多摄像头和 LiDAR 数据生成。</li>
<li>提供预构建的城市环境和交通场景。</li>
<li>易于与 TensorFlow 或 PyTorch 集成。</li>
</ul>
<hr>
<h2 id="二把项目改为unlua" class="headerLink">
    <a href="#%e4%ba%8c%e6%8a%8a%e9%a1%b9%e7%9b%ae%e6%94%b9%e4%b8%baunlua" class="header-mark"></a>二、把项目改为：UnLua</h2><h2 id="三把项目改为unlua--python" class="headerLink">
    <a href="#%e4%b8%89%e6%8a%8a%e9%a1%b9%e7%9b%ae%e6%94%b9%e4%b8%baunlua--python" class="header-mark"></a>三、把项目改为：UnLua + Python</h2>]]></description></item><item><title>斯坦福小镇 AI 解读</title><link>https://rd163.visword.com/posts/generative-agents/</link><pubDate>Wed, 27 Aug 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/generative-agents/</guid><description>&lt;p>斯坦福和谷歌的研究人员创建了一个类似于《模拟人生》的微型 RPG 虚拟世界，其中 25 个角色由 GPT 和自定义代码控制，并在arxiv上提交了论文版本，引起了对AIGC+游戏的广泛讨论；&lt;/p></description></item><item><title>实时语音转文字</title><link>https://rd163.visword.com/posts/realtime_audio_to_text/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/realtime_audio_to_text/</guid><description><![CDATA[<h1 id="开源项目" class="headerLink">
    <a href="#%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae" class="header-mark"></a>开源项目</h1><h2 id="intrascribe" class="headerLink">
    <a href="#intrascribe" class="header-mark"></a>IntraScribe</h2><ul>
<li><a href="https://github.com/weynechen/intrascribe" target="_blank" rel="noopener noreferrer">团队适用的语音转录总结工具，完整的前后端代码</a></li>
</ul>
<p>实现原理：</p>
<h3 id="rtc" class="headerLink">
    <a href="#rtc" class="header-mark"></a>rtc</h3><ul>
<li>其音频捕获框架采用 fastrtc，直接将端口mount到fastapi之上，对外公开暴露</li>
<li>鉴权：需要再不修改源码的情况下，对fastrtc的端口添加中间件进行认证保护。</li>
</ul>
<h3 id="asr" class="headerLink">
    <a href="#asr" class="header-mark"></a>asr</h3><p>语音识别采用了当前流行的开源项目 FunASR.</p>]]></description></item><item><title>kimi k2模型介绍</title><link>https://rd163.visword.com/posts/kimi_k2_model_intro/</link><pubDate>Sun, 20 Jul 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/kimi_k2_model_intro/</guid><description><![CDATA[<p>Kimi K2 是北京月之暗面科技有限公司于 2025 年 7 月 11 日推出的万亿参数 MoE（混合专家）架构大模型，包含两个主要版本：<strong>Kimi-K2-Base</strong>（基座模型）和 <strong>Kimi-K2-Instruct</strong>（指令微调模型）。以下是它们的详细介绍：</p>]]></description></item></channel></rss>