[{"content":"更新记录 2026-08-05：开始跟练 Metroid 2026-08-06：实现如下功能 角色水平移动 加入跳跃和重力 添加可调节的跳跃力度和重力 添加射击以及冷却功能 实现固定方向射击 实现发射方向跟随鼠标移动变化，标准化向量 实现子弹生成 设置子弹初始位置 实现子弹移动 资源管理 文件名和节点的命名\n通常建议：\n文件名：lower_snake_case 节点名：PascalCase 脚本变量：snake_case 类名：PascalCase .tscn和实例化 把 player.tscn 实例化到关卡后，关卡里保存的是对玩家场景的引用。把脚本挂在 player.tscn的根节点 Player 上，那么这个场景实例化出来的所有玩家，默认都会运行同一个脚本。\n但是，每个实例的运行状态是独立的。虽然它们共用同一份脚本代码，但不是共用同一个对象。\n一般会把“所有玩家都应该具备的功能”写进 player.tscn 的脚本，把“这个玩家单独的参数”在关卡实例上调整。\nVector2 二维数据内置类型。\n表示速度时。\nvelocity = Vector2(100, 0) 表示每秒向右移动一定距离。\n更常见的写法是：\nvelocity = direction * speed 例如：\nvar direction = Vector2.RIGHT var speed = 200.0 velocity = direction * speed 结果就是：\nvelocity = Vector2(200, 0) 也就是向右移动，速度为 200。\n为什么由 Level 创建子弹 玩家按下射击键后，子弹需要被添加到游戏场景中。\n如果把子弹添加为 Player 的子节点：\nLevel └── Player └── Bullet 子弹仍然属于 Player，可能受到玩家移动、旋转或删除的影响。\n更合理的结构是：\nLevel ├── Player └── Bullet 子弹和玩家都属于 Level。这样子弹射出后可以在关卡中独立移动，不会继续跟随玩家。\n各节点的职责 Player：检测玩家是否按下射击键。 Level：接收射击请求，并把子弹添加到关卡中。 Bullet：负责自己的移动、碰撞和销毁。 射击流程 玩家按下射击键 ↓ Player 发出射击请求 ↓ Level 收到请求 ↓ Level 创建 Bullet ↓ Bullet 在关卡中独立移动 为什么要在 Level 上挂脚本 因为 Level 是 Player 和 Bullet 的共同父节点，它适合负责创建和管理关卡中的物体。\n可以简单理解为：\nPlayer 负责扣动扳机，Level 负责容纳射出去的子弹。\n这不是唯一的实现方法，但可以避免子弹成为 Player 的子节点，也方便以后统一管理玩家子弹、敌人子弹和其他关卡物体。\n信号 Godot 的“信号”可以理解为一种节点之间发送通知的机制。\n某个节点发生了一件事，它不直接命令其他节点做什么，而是发出一个信号。对这个信号感兴趣的节点，通过“连接”接收通知并执行对应函数。\n一个完整的信号过程包括：\n声明信号 → 连接信号 → 发出信号 → 接收并处理 signal = 定义一个通知 emit = 发出通知 connect = 指定谁接收通知 回调函数 = 收到通知后执行的代码\n在射击功能中，只需要这样理解：\nPlayer 按下射击键 → 发出 shoot 信号 → Level 收到信号 → Level 创建子弹 信号可以连接多个接收者 一个信号不只能连接一个函数。\n例如 Player 射击时：\nPlayer.shoot ├── Level 创建子弹 ├── AudioManager 播放声音 ├── Camera 产生震动 └── UI 减少弹药数量 Player 只需要发出一次：\nshoot.emit(pos, dir) 多个接收者都可以收到通知。\n这也是信号的重要作用：发送者不需要知道有多少接收者。\n子弹位置和鼠标方向的传递路径 1. Player 定义射击信号 signal shoot(pos: Vector2, dir: Vector2) shoot 信号携带两个数据：\npos：子弹的生成位置 dir：子弹的飞行方向 2. Player 获取鼠标方向并发出信号 if Input.is_action_just_pressed(\u0026#34;shoot\u0026#34;) and $ReloadTimer.time_left == 0: # 获取并标准化鼠标方向，保证子弹速度固定 shoot.emit(position, get_local_mouse_position().normalized()) $ReloadTimer.start() Player 发出的两个值是：\nposition → Player 当前的位置 get_local_mouse_position().normalized() → Player 指向鼠标的方向 get_local_mouse_position() 获取鼠标相对于 Player 的位置向量。\nnormalized() 将向量长度变成 1，只保留方向，避免鼠标距离影响子弹速度。\n例如：\n鼠标在右边 → 方向接近 (1, 0) 鼠标在左边 → 方向接近 (-1, 0) 鼠标在右上 → 方向接近 (0.7, -0.7) ReloadTimer 用于控制射击间隔，冷却没有结束时不能再次射击。\n3. Level 接收信号 func _on_player_shoot(pos: Vector2, dir: Vector2) -\u0026gt; void: var bullet = bullet_scene.instantiate() as Area2D $Bullets.add_child(bullet) bullet.setup(pos, dir) 数据按照参数顺序传递：\nPlayer.position → Level.pos Player 获取到的鼠标方向 → Level.dir Level 根据 bullet.tscn 创建一颗子弹，然后把位置和方向继续传给 Bullet。\n4. Bullet 接收位置和方向 var direction: Vector2 func setup(pos: Vector2, dir: Vector2): position = pos + dir * 16 direction = dir 这里：\nposition = pos + dir * 16：让子弹在玩家前方 16 像素处生成。 direction = dir：保存鼠标方向，供移动代码使用。 5. Bullet 按照方向移动 func _physics_process(delta: float) -\u0026gt; void: position += direction * 30 * delta 子弹每个物理帧都会沿着 direction 移动。\n因为方向已经使用了 normalized()，所以鼠标离玩家的距离不会改变子弹速度。\n完整传递路径 Player 获取自己的位置 ↓ Player 获取并标准化鼠标方向 ↓ shoot.emit(position, mouse_direction) ↓ Level._on_player_shoot(pos, dir) ↓ Level 创建 Bullet ↓ bullet.setup(pos, dir) ↓ Bullet 设置初始位置并保存方向 ↓ Bullet 每帧沿鼠标方向移动 虽然 Player、Level 和 Bullet 中都出现了 pos 和 dir，但它们是不同函数中的局部参数。\n它们通过参数顺序传递同一组数据：\nPlayer 的第一个参数 → Level 的第一个参数 → Bullet 的第一个参数 Player 的第二个参数 → Level 的第二个参数 → Bullet 的第二个参数 ","permalink":"https://bearisle.org/notes/2026-08-05-metroid-practice/","summary":"\u003ch2 id=\"更新记录\"\u003e更新记录\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e2026-08-05：开始跟练 Metroid\u003c/li\u003e\n\u003cli\u003e2026-08-06：实现如下功能\n\u003col\u003e\n\u003cli\u003e角色水平移动\u003c/li\u003e\n\u003cli\u003e加入跳跃和重力\u003c/li\u003e\n\u003cli\u003e添加可调节的跳跃力度和重力\u003c/li\u003e\n\u003cli\u003e添加射击以及冷却功能\u003c/li\u003e\n\u003cli\u003e实现固定方向射击\u003c/li\u003e\n\u003cli\u003e实现发射方向跟随鼠标移动变化，标准化向量\u003c/li\u003e\n\u003cli\u003e实现子弹生成\u003c/li\u003e\n\u003cli\u003e设置子弹初始位置\u003c/li\u003e\n\u003cli\u003e实现子弹移动\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"资源管理\"\u003e资源管理\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e文件名和节点的命名\u003c/p\u003e\n\u003cp\u003e通常建议：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e文件名：\u003ccode\u003elower_snake_case\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e节点名：\u003ccode\u003ePascalCase\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e脚本变量：\u003ccode\u003esnake_case\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e类名：\u003ccode\u003ePascalCase\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"tscn和实例化\"\u003e.tscn和实例化\u003c/h3\u003e\n\u003cp\u003e把 \u003ccode\u003eplayer.tscn\u003c/code\u003e 实例化到关卡后，关卡里保存的是对玩家场景的引用。把脚本挂在 \u003ccode\u003eplayer.tscn\u003c/code\u003e的根节点 \u003ccode\u003ePlayer\u003c/code\u003e 上，那么这个场景实例化出来的所有玩家，默认都会运行同一个脚本。\u003c/p\u003e\n\u003cp\u003e但是，每个实例的运行状态是独立的。虽然它们共用同一份脚本代码，但不是共用同一个对象。\u003c/p\u003e\n\u003cp\u003e一般会把“所有玩家都应该具备的功能”写进 \u003ccode\u003eplayer.tscn\u003c/code\u003e 的脚本，把“这个玩家单独的参数”在关卡实例上调整。\u003c/p\u003e\n\u003ch2 id=\"vector2\"\u003eVector2\u003c/h2\u003e\n\u003cp\u003e二维数据内置类型。\u003c/p\u003e\n\u003cp\u003e表示速度时。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-gdscript\" data-lang=\"gdscript\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003evelocity \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#a6e22e\"\u003eVector2\u003c/span\u003e(\u003cspan style=\"color:#ae81ff\"\u003e100\u003c/span\u003e, \u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e表示每秒向右移动一定距离。\u003c/p\u003e\n\u003cp\u003e更常见的写法是：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-gdscript\" data-lang=\"gdscript\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003evelocity \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e direction \u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003e speed\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e例如：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-gdscript\" data-lang=\"gdscript\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003evar\u003c/span\u003e direction \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#a6e22e\"\u003eVector2\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eRIGHT\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003evar\u003c/span\u003e speed \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e200.0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003evelocity \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e direction \u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003e speed\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e结果就是：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-gdscript\" data-lang=\"gdscript\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003evelocity \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#a6e22e\"\u003eVector2\u003c/span\u003e(\u003cspan style=\"color:#ae81ff\"\u003e200\u003c/span\u003e, \u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e也就是向右移动，速度为 200。\u003c/p\u003e\n\u003ch2 id=\"为什么由-level-创建子弹\"\u003e为什么由 Level 创建子弹\u003c/h2\u003e\n\u003cp\u003e玩家按下射击键后，子弹需要被添加到游戏场景中。\u003c/p\u003e\n\u003cp\u003e如果把子弹添加为 Player 的子节点：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eLevel\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e└── Player\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    └── Bullet\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e子弹仍然属于 Player，可能受到玩家移动、旋转或删除的影响。\u003c/p\u003e\n\u003cp\u003e更合理的结构是：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eLevel\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e├── Player\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e└── Bullet\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e子弹和玩家都属于 Level。这样子弹射出后可以在关卡中独立移动，不会继续跟随玩家。\u003c/p\u003e","title":"Metroid游戏跟练"},{"content":"基本信息 游戏名：《九日 Nine Sols》 开发商：赤烛游戏 类型：类银河恶魔城 平台：Steam 游玩时间：75h 成就：29/35 个人评分：8.7/10 坦白讲，最初关注《九日》时只是想找一部《空洞骑士》的代餐。当得知它出自赤烛时，我还挺意外的。这家工作室凭借《返校》和《还愿》两款恐怖游戏起家，但《九日》作为横版动作游戏，与他们以往的风格大相径庭。正是因为前作足够优秀，才让我更想看看走出舒适区的赤烛，这次能做出什么样的游戏。\n战斗系统 “羿”的猫猫人造型配上可爱的手绘画风，在视觉上十分讨巧，很容易让人误以为这是一部轻松温和的作品，这种第一印象与游戏硬核的战斗系统形成了鲜明反差。 抽根烟休息一下\n制作组对战斗系统的重视，从主选单的难度设计便可看出。在一般玩家的预期里，默认的“一般模式”应该适合大多数玩家，“剧情模式”则相当于简单模式，用于流畅体验剧情。然而，九日的“一般模式”敌人血量高，羿的平A伤害极低，战斗中几乎没有容错空间。玩家不仅需要熟练掌握弹反机制，且需要地图有相当的熟练度。由于早就听闻《九日》难度高，我对默认模式没有丝毫怀疑，花了几个小时跌跌撞撞打到英招，又花了几个小时反复挑战英招，失败后险些退游。直到查了攻略才意识到，新手应该用剧情模式，切换后才得到了较为顺畅的游戏体验。\n《九日》虽然在地图探索和氛围营造上借鉴了《空洞骑士》，却有意在战斗设计上与之区别开，参考《只狼》的玩法，围绕弹反构建战斗体系。作为一名洞批，我刚开始探索时下意识沿用了《空洞骑士》的战斗思路，试图依靠平A输出，以闪避躲避攻击，可谓吃尽苦头。然而《九日》真正鼓励的是正面接住敌人的攻势，找准时机弹反，不仅能够化解攻击，还能攒气后通过符咒将防守转化为高额伤害。精准弹反后清脆的音效同样在鼓励玩家接下敌人的攻击，配合快节奏的战斗节奏与高燃的BGM，在听觉上制造出强烈的正反馈。技能树同样以弹反为中心，符咒“行云流水”虽然攻击较低，但在快节奏的boss战中提供了容错空间。若不习惯使用太极踢，也可以选择机制类似《空洞骑士》下劈的“踢颅击”作为替代。 技能树\n适应了这套打法之后，boss战便如同与敌人共舞。最出彩的蚨蝶一战，在剧情、美术、机制、演出上都无可挑剔。这一段剧情化用庄周梦蝶典故，正式进入boss战前的跑图则充分发挥了赤烛制作恐怖游戏的经验，依靠玄蝶在美好梦境和残酷现实之间切换，逐渐揭示出骇人真相。此处更是全游戏唯一一处发挥了玄蝶独特作用，并参与了关卡表达的地方。boss战难度层层递进，背景画面如同万花筒般不断折叠、拼贴，呈现强烈的梦核质感。玩家还需要在快节奏战斗中识别出蚨蝶分身，并将其击破。相信所有通关《九日》的玩家都会对这一段战斗印象深刻。此外，作为主人公面对的第一个boss，英招的动作招式大开大合，攻击前摇留给玩家充分反应时间。即使在前面和小怪战斗时仍不适应弹反机制，和英招的战斗会让人有豁然开朗之感。 弹反军训区\n可载入类银游戏史册的boss设计\n然而《九日》的战斗设计水准并不一致。风氏兄妹的人设和剧情足够亮眼，但战斗内容缺乏机制和招式变化，战斗体验乏善可陈；姬从初见时便保持着神秘感，战斗机制颇具新意，但过慢的攻击节奏使其缺乏作为后期boss的压迫感。小怪则几乎毫无设计可言，无论是外形还是攻击方式都是换皮，和不同区域的生态没有丝毫融合。 真·骨科来了\n美人，但不经打\n世界观与剧情 《九日》的世界观设定相当扎实。在赤烛的采访中，他们明确表示《九日》将是一款深深植根于中国文化的游戏。科技感和古老神话的交织，贯穿于整个游戏剧情、人物与场景设定，视觉元素中的细节也增强了沉浸感。我相当喜欢《九日》中高科技和冷兵器的结合：羿以李耳教授的道家技法，迎战充满机械质感的重型兵器。 九 日\n为了防止剧透，不对剧情展开深入介绍，但除了独特的战斗，《九日》讲述的故事也值得玩家用心体验，主人公羿并非传统意义上的英雄主人公，性格和心路历程都和其他游戏的主角拉开差距，他和妹妹恒之间微妙的兄妹（骨科）情也值得品味。 妹妹你好美丽啊TvT\n稍显遗憾的地图设计 或许是制作组太迫切地想把故事完整地讲给玩家，《九日》在流程设计上并未留下太多自由探索的空间。游戏基本沿着线性路径推进，每逢主线节点便会强制插入剧情，也因此少了几分误打误撞闯入陌生区域的惊喜。尽能力锁本是类银河战士恶魔城游戏的常见设计，但《九日》的探索过程更像是拿到一把钥匙就立刻打开指定的门，功能过于明确单一。新能力往往只用于打开眼前的主线路径，很少促使玩家带着新的移动方式重新探索旧区域。相比之下，《空洞骑士》和《丝之歌》会随着剧情推进与移动能力的解锁，不断开放区域之间的路径和捷径，使原本彼此分隔的地图逐渐联结成一个完整的世界。玩家带着新能力回到旧区域时，往往能够发现此前无法抵达的空间。\n另一个削弱探索欲的问题，是区域之间未能实现无缝衔接。玩家每次进入新区域都要经历加载，进入新区域后松开并重新按下方向键才能继续前进。虽然只是一个很小的操作，但明显打断了跑图节奏，也让整个世界更像由若干独立场景拼接而成，而非彼此贯通的完整空间。此外，角色移动时滞重的手感也影响了跑图体验，感谢《九日》只做了通天塔一小段跳跳乐，否则不知道跑图会有多折磨人。在玩过《Celeste》和《Mio》这类移动手感丝滑得无与伦比的游戏后，《九日》的跑图对我几乎称得上折磨。\n此前提到，蚨蝶前的跑图是玄蝶唯一真正发挥作用的地方。这个道具在剧情中是兄妹的情感纽带，但在游玩过程中，它大部分时间只是打开特定机关的钥匙，每个需要利用玄蝶的机关都像是为了给它刷存在感，提醒玩家“还有这个道具”。我到结尾都在期待玄蝶能有更亮眼的表现，但玄蝶的叙事地位和实际作用却出现了明显落差。 玄蝶\n总结 作为类银游戏爱好者和《空洞骑士》玩家，我对《九日》的评价可能稍显严苛。但《九日》仍是我最近体验过的游戏中，极少数能让我进入心流状态的优秀作品，真结局也让我难得大哭了一场。它绝对不是《空洞骑士》的代餐，或者说，从来没有哪一款游戏能成为另一款游戏的代餐。以漫画分镜实现过场的创意极佳，砍头、残肢、跳吓、酷刑等令人不安的gore元素也深得我心。抛开曾经政治上的争议，赤烛工作室制作游戏时的展现的诚意和进取心都让人惊叹。 不自由，毋宁死\n相比《返校》和《还愿》，《九日》让赤烛在玩法层面跨上了一个新台阶，但在文本深度上有所退让，放弃了对现实社会和具体历史事件的深刻剖析，而是转向了更具普遍意义的主题，这或许是他们为了触及更广泛玩家群体而作出的选择。\n","permalink":"https://bearisle.org/games/2026-07-28-nine-sols-review/","summary":"道教赛博朋克代表作《只猫：空洞道士》\n莽夫流最严厉的老师","title":"九日 Nine Sols"},{"content":"在Codex的帮助下开始搭建我的个人网站了，用来记录游戏开发进度和游戏笔记。\n今天做了什么 选择 Hugo 作为建站工具 安装并配置了 PaperMod 主题 规划了开发记录、游戏心得、游戏笔记和项目页面 为什么要做这个网站 把做游戏时遇到的问题、想法和阶段性成果记录下来。\n长期来看，这个网站会变成一个自己的游戏开发档案。\n下一步 写第一篇游戏测评 整理玩过的游戏心得 调整网站视觉风格 ","permalink":"https://bearisle.org/devlog/2026-07-24-start-site/","summary":"\u003cp\u003e在Codex的帮助下开始搭建我的个人网站了，用来记录游戏开发进度和游戏笔记。\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"熊熊\" loading=\"lazy\" src=\"/images/icebear.png#center\"\u003e\u003c/p\u003e\n\u003ch2 id=\"今天做了什么\"\u003e今天做了什么\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e选择 Hugo 作为建站工具\u003c/li\u003e\n\u003cli\u003e安装并配置了 PaperMod 主题\u003c/li\u003e\n\u003cli\u003e规划了开发记录、游戏心得、游戏笔记和项目页面\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"为什么要做这个网站\"\u003e为什么要做这个网站\u003c/h2\u003e\n\u003cp\u003e把做游戏时遇到的问题、想法和阶段性成果记录下来。\u003c/p\u003e\n\u003cp\u003e长期来看，这个网站会变成一个自己的游戏开发档案。\u003c/p\u003e\n\u003ch2 id=\"下一步\"\u003e下一步\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e写第一篇游戏测评\u003c/li\u003e\n\u003cli\u003e整理玩过的游戏心得\u003c/li\u003e\n\u003cli\u003e调整网站视觉风格\u003c/li\u003e\n\u003c/ul\u003e","title":"开始搭建个人游戏日志网站了！"},{"content":"这是一篇测评模板。以后玩到有启发的游戏，都可以按这个结构记录。\n基本信息 游戏名： 类型： 平台： 游玩时间： 最吸引我的地方 让人印象最深刻的体验。\n设计观察 这个游戏在玩法、关卡、节奏、叙事、美术或声音上，有什么值得学习的地方？\n可以借鉴的点 这些观察能不能启发我自己的游戏？\n不喜欢或困惑的地方 哪些体验让我觉得卡住、重复、无聊或不清楚？\n","permalink":"https://bearisle.org/games/2026-07-24-sample-game-note/","summary":"\u003cp\u003e这是一篇测评模板。以后玩到有启发的游戏，都可以按这个结构记录。\u003c/p\u003e\n\u003ch2 id=\"基本信息\"\u003e基本信息\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e游戏名：\u003c/li\u003e\n\u003cli\u003e类型：\u003c/li\u003e\n\u003cli\u003e平台：\u003c/li\u003e\n\u003cli\u003e游玩时间：\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"最吸引我的地方\"\u003e最吸引我的地方\u003c/h2\u003e\n\u003cp\u003e让人印象最深刻的体验。\u003c/p\u003e\n\u003ch2 id=\"设计观察\"\u003e设计观察\u003c/h2\u003e\n\u003cp\u003e这个游戏在玩法、关卡、节奏、叙事、美术或声音上，有什么值得学习的地方？\u003c/p\u003e\n\u003ch2 id=\"可以借鉴的点\"\u003e可以借鉴的点\u003c/h2\u003e\n\u003cp\u003e这些观察能不能启发我自己的游戏？\u003c/p\u003e\n\u003ch2 id=\"不喜欢或困惑的地方\"\u003e不喜欢或困惑的地方\u003c/h2\u003e\n\u003cp\u003e哪些体验让我觉得卡住、重复、无聊或不清楚？\u003c/p\u003e","title":"测评模板"},{"content":"这是一篇游戏设计笔记模板。\n问题 我现在想研究或解决什么问题？\n观察 我从游戏、文章、视频或自己的实验里观察到了什么？\n想法 这些观察能转化成什么设计想法？\n可以尝试的小实验 下一次做原型时，可以验证什么？\n","permalink":"https://bearisle.org/notes/2026-07-24-game-design-note/","summary":"\u003cp\u003e这是一篇游戏设计笔记模板。\u003c/p\u003e\n\u003ch2 id=\"问题\"\u003e问题\u003c/h2\u003e\n\u003cp\u003e我现在想研究或解决什么问题？\u003c/p\u003e\n\u003ch2 id=\"观察\"\u003e观察\u003c/h2\u003e\n\u003cp\u003e我从游戏、文章、视频或自己的实验里观察到了什么？\u003c/p\u003e\n\u003ch2 id=\"想法\"\u003e想法\u003c/h2\u003e\n\u003cp\u003e这些观察能转化成什么设计想法？\u003c/p\u003e\n\u003ch2 id=\"可以尝试的小实验\"\u003e可以尝试的小实验\u003c/h2\u003e\n\u003cp\u003e下一次做原型时，可以验证什么？\u003c/p\u003e","title":"游戏设计笔记模板"},{"content":"你好，这里是BearIsle熊岛游戏，欢迎光临！\n这个网站会慢慢积累：\n游戏开发日志 游戏设计笔记 玩其他游戏时的心得 自己项目的整理 ","permalink":"https://bearisle.org/about/","summary":"\u003cp\u003e你好，这里是BearIsle熊岛游戏，欢迎光临！\u003c/p\u003e\n\u003cp\u003e这个网站会慢慢积累：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e游戏开发日志\u003c/li\u003e\n\u003cli\u003e游戏设计笔记\u003c/li\u003e\n\u003cli\u003e玩其他游戏时的心得\u003c/li\u003e\n\u003cli\u003e自己项目的整理\u003c/li\u003e\n\u003c/ul\u003e","title":"关于我"}]