Skip to content

项目结构

本文说明 Galgo 仓库结构,以及新功能应该放在哪里。

根目录

text
galgo/
  go.mod
  exports.go
  internal/galgo/
  config/
  style/
  i18n/
  effect/
  example/
  assets/
  docs/
  saves/

exports.go 是根包公开入口。核心实现移动到 internal/galgo 后,根包用类型别名和函数转发保持外部导入路径稳定。

internal/galgo

这里是引擎核心实现。主要文件职责:

  • engine.goConfigEngine、主循环、绘制流程、状态恢复、窗口设置。
  • script.goScriptNodeStep 和所有内置脚本步骤。
  • ui.go:默认对话框、菜单、画廊、点击处理等 UI 绘制。
  • custom_ui.go:模块化标题页和设置页渲染/点击处理。
  • screen.goScreenActionScreenValue、标题页/设置页配置类型、屏幕覆盖注册。
  • resource.go:图片、字体、音频资源查找和缓存。
  • audio.go:BGM、SE、Voice 播放和音量。
  • save.go:存档结构、读写和 slot 检查。
  • variables.go:变量插值和类型读取辅助。
  • input.go:文本输入框。
  • dragdrop.go:拖放交互。
  • gallery.go:CG、BGM、成就解锁状态。
  • startup.go:启动页和加载页。
  • steam.gosteam_disabled.gosteam_steamworks.go:Steamworks 抽象和平台实现。

公开辅助包

config 包提供偏好设置和存档配置。style 包提供 UI 样式结构。i18n 包提供简单翻译器。effect 包提供文本描边、阴影、发光和渐变绘制辅助。

example

example/main.go 是功能展示项目。它尽量覆盖自定义样式、i18n、启动页、标题页模块、设置页组件、输入框、变量插值、背景、立绘、镜头、拖放、选择分支、成就和画廊。

改动引擎功能时,应尽量把 example 更新成可见示例,而不是只写 API。

文档目录

新增文档建议按主题放入:

  • 入门:docs/getting-started/
  • 剧情脚本:docs/scripting/
  • 资源和音频:docs/resources/
  • UI:docs/ui/
  • 系统功能:docs/systems/
  • 平台集成:docs/integrations/
  • API 速查:docs/reference/

增加新功能时的放置建议

新增脚本步骤时,通常修改 internal/galgo/script.go,并在 exports.go 中导出构造函数和类型。

新增默认 UI 行为时,优先考虑 custom_ui.goui.go。如果是可复用的 UI 交互能力,应尽量抽成 ScreenActionScreenValue

新增配置字段时,修改 Config,并补文档和 example。配置字段默认值应在 NewEngine 或对应的 config helper 中处理。

Released under the project license.