Skip to content
 
 

Repository files navigation

SmithyLegend

二创游戏 铁匠铺传奇 - 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)后能精准识别所需材料(不再瞎补)

Lep2 关卡

  • 第二关进阶场景 · 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_listemerald_countdaygame_timebgm/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

Autoload 单例

名称 作用
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 统一调度

即将更新

  • 附魔功能 · 顾客会要求提供附魔物品
  • 更多顾客 · 不同的顾客会有不同的偏好
  • 自动装填 · 铁匠会帮你填充好你所需的一切原材料
  • 下界更新 · 全新的地图,为猪灵锻造工具

运行项目

  1. 使用 Godot 4.7(或更高)打开 project.godot
  2. 主场景为 res://Scenes/StartMenus/start_menu_2.tscn
  3. F5 运行;首次运行会自动初始化存档至 user://save.json

About

二创游戏 铁匠铺传奇 - Godot项目源代码

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages