二创游戏 铁匠铺传奇 - Godot 项目源代码
版本 : 1.2.0 引擎 : Godot 4.7(gl_compatibility 渲染器,支持 Mobile 平台)
一款 Minecraft 风格的铁匠铺经营游戏。在村庄里为顾客锻造、熔炼、砍木,赚取绿宝石,升级你的工具与设备,迎接更复杂的需求。
更新日志见 CHANGELOG.md。
你扮演一名村庄铁匠,接待来往的顾客(村民/掠夺者),按照他们的需求交付工具或装备来赚取绿宝石。利用合成台合成、熔炉烧炼、砍木块获取原材料,并通过商店购买升级扩展能力。
- 普通(normal) · 标准时长,结算绿宝石与天数
- 休闲(casual) · 节奏减半,收入不计入存档
- 无尽(endless) · 无计时器限制,顾客持续到来,挑战接待上限
- 定时召唤顾客进入 3 个槽位,按
max_value=10限值从global_list中随机选取需求 - 不耐烦进度条;部分满足有 40% 概率降低心情
- 提供完毕播放村民同意音、怒走播放拒绝音
- 持有
carry_emeralds_count,按物品value合计并乘以value_multiplier结算绿宝石
- 普通村民(character.gd)· 顾客基类,包含走入/走出抛物线动画
- 懵逼村民(character_nitwit.tscn)· 付款后需玩家点击它才会触发摇头动画离场
- 掠夺者(character_pillager.gd)· Lep2 关卡中的顾客;普通关卡中玩家进度 ≥10 天时有 1/12 概率出现
- 9 格有序/无序配方匹配,目标成品显示
- 按 E 键或点击按钮开关合成台画布
- 知识之书升级后配方菜单展示,可一键自动合成
- 见 game.tscn 内嵌 CraftingTableCanvasLayer
- 3D 多熔炉(最多 4 个,按
furnace_append升级) - 单熔炉容量 2 → 4 → 8(按
furnace_capacity升级) - 高炉升级(
furnace_upgrade)后烧制时间减半 - 自动熔炼升级(
auto_smelt)后矿石自动送入空闲熔炉 - 见 furnace_single.tscn
- mine.tscn · 8 槽位矿床,3D 倾斜旋转展示
- 普通关卡提供 raw_copper / raw_iron,升级后追加 raw_gold / diamond
- Lep2 关卡追加 netherite_scrap
- 玩家可拖拽矿石到桌面或熔炉
- chopping_block.tscn · 3D 像素销毁 10 阶段
- Level 0 · 玩家点击逐阶段砍,需等待
log_filling_time自动重填 - Level 1 · 锯木机升级(
slashers_upgrade)后自动连击 + 自动重填
- 新功能 · DragManager.sort_desktop()
- 把桌面上散落的物品按 6 类分堆补间动画:合成物 / 原矿 / 烧过的矿 / 木头 / 木板 / 木棍
- 购买 桌面分类升级后,右上角出现箱子图标,点击即触发分类
- 可赠送物品(
can_gifted=true)拖入顾客头上的礼物框触发 VillagerHappy 动画 - 见 check_box.gd
- 铁匠会从背包把材料动画投入到矿槽
- 铁匠培训升级(
ironworker_upgrade)后能精准识别所需材料(不再瞎补)
- 第二关进阶场景 · game_lep2.tscn
- 仅使用掠夺者作为顾客,提供 netherite_scrap 原材料
- 独立脚本 game_lep_2.gd 与 game_lep2_characters.gd
- start_menu_2.tscn · MV 风格开场,带门拖拽进度
- LyricLoader.gd · 解析
[mm:ss.xxx]歌词LRC 时间戳 - 歌词与 BGM 同步浮动放大动画
- theatre_raid.tscn · 剧情"突袭"场景
- TextTyper 富文本打字机组件,支持
{wait}{speed}{scale}{color}{call}等命令
user://save.json保存upgrade_list、emerald_count、day、game_time、bgm/sound_volume- 启动时载入并通过
set_upgrade应用升级效果;reset_game()清空存档
见 shop_menu.tscn,共三页分页:
| 升级 | L1 价格 | L2 价格 | 解锁内容 |
|---|---|---|---|
| 铜艺入门 / 高阶铜艺 | 20 | 60 | 铜制工具 / 铜制装备 |
| 铁匠进阶 / 高阶铁匠技术 | 50 | 150 | 铁制工具 / 铁制装备 |
| 黄金工艺 / 璀璨黄金工法 | 250 | 600 | 黄金与黄金工具 / 黄金装备 |
| 钻石矿工 / 珠宝匠人 | 800 | 1200 | 钻石采掘 / 钻石装备 |
| 升级 | 价格 | 作用 |
|---|---|---|
| 熔炉 x2 / x3 / x4 | 50 / 500 / 800 | 熔炉数量 1→4 |
| 容量升级 I / II | 250 / 450 | 单熔炉容量 2→4→8 |
| 高炉 | 1500 | 烧制时间减半 |
| 锯木机 | 400 | 砍木块升级为自动锯木 |
| 知识之书 | 600 | 记录本局合成配方 + 一键自动合成 |
| 自动熔炼 | 800 | 矿石自动送入空闲熔炉 |
| 铁匠培训 | 1500 | 铁匠精准识别需求材料 |
| 桌面分类 | 300 | 桌面物品按类分堆 |
| 升级 | 价格 | 作用 |
|---|---|---|
| 市场升值 / 品质提升 / 稀有化 / 终极奉献 | 100 / 800 / 1500 / 2500 | 售价倍率 125% / 150% / 200% / 350% |
| 快速装填 / 急速装填 | 75 / 200 | 木材装填时间 ×0.5(可叠加) |
| 升级 | 价格 | 作用 |
|---|---|---|
| 村庄英雄 | 8000 | 进度 ≥99% 解锁,购买后播放特殊动画 |
物品字段(GameInitializer.gd):
{ texture, can_gifted, can_smelt, smelt_products, smelt_time, value }
原材料 · raw_copper / raw_iron / raw_gold / diamond / netherite_scrap 基础 · log / plank / stick / chest / boat / chest_boat 铜/铁/金/钻石系列 · 每系含 block + sword/pickaxe/axe/hoe/shovel(工具)+ helmet/chestplate/leggings/boots(装备)
配方分有序(精确位置)与无序(任意位置)。升级后通过 set_update_effect 注入对应配方的解锁。
SmithyLegend2/
├── Audio/ # BGM 与音效
│ ├── Sound/ # 含 Pillager/、Villiger/ 子目录
│ └── VilligerSound/
├── Fonts/ # MinecraftAECN.ttf
├── Graphics/ # BlockTexture / Characters / Item / UI ...
├── Scenes/
│ ├── AudioManager/ # 音频管理
│ ├── DragManager/ # 拖拽系统
│ ├── Game/ # 游戏主场景与子模块
│ │ ├── Characters/ # 顾客与角色
│ │ ├── Effect/ # 绿宝石/物品特效
│ │ ├── EndMenu/ # 结算 UI
│ │ ├── ItemBar/ # 物品栏
│ │ └── Lep2/ # 第二关
│ ├── Global/ # Global / GameInitializer / LyricLoader / MeshMaker
│ ├── SceneManager/ # 场景切换与过场
│ ├── StartMenus/ # 开始菜单 / 商店 / 模式选择 / 仓库
│ ├── TextTyper/ # 打字机组件
│ └── Theatre/ # 剧情过场
├── Shaders/
├── project.godot
├── LICENSE
└── README.md
| 名称 | 作用 |
|---|---|
| SceneManager | 场景切换 + in_shot/out_shot 过场动画 |
| DragManager | 全局拖拽系统(注册对象、拖拽预览、放下判定、sort_desktop) |
| Global | 全局状态 / 存档 / 升级效果应用 / item_dict / recipe_dict |
| AudioManager | 池化 AudioTask + play_global_audio 混合播放 |
- 2D + 3D 混合渲染 · 操作界面是 2D(DropItem 为 CharacterBody2D),3D 设备(熔炉/矿石/砍木块)嵌在 SubViewport 中
- MeshMaker · 把 Image 逐像素转 ArrayMesh 立方体(Voxel 风格),用于 3D 矿石、熔炉、砍木块的体素化外观
- 打字机命令 · TextTyper 支持
instant/wait/speed/scale/space/color/outline_*/shadow_*/font/font_size/call(反射调 target_object 方法) - DropItem 拖拽 · 两套同名实现:Node2D 版(用 group 标识)与 CharacterBody2D 版(用
class_name DropItem),均由 DragManager 统一调度
- 附魔功能 · 顾客会要求提供附魔物品
- 更多顾客 · 不同的顾客会有不同的偏好
- 自动装填 · 铁匠会帮你填充好你所需的一切原材料
- 下界更新 · 全新的地图,为猪灵锻造工具
- 使用 Godot 4.7(或更高)打开
project.godot - 主场景为
res://Scenes/StartMenus/start_menu_2.tscn - F5 运行;首次运行会自动初始化存档至
user://save.json