Files
game/动态素材规则.md
T
李鹏宇 106d49f6de feat(game): 游戏前后端整合与素材预置备份
后端(Odoo addons):
- game_base: 迁入 关于 功能(game.page/game.page.item/yusen.asset 模型、page_views/asset_views、6条权限、menu_website_about 左侧应用入口),新增 chat 模块(AI世界聊天: chat.py/chat_api.py/chat_data.xml/chat_views.xml)
- yt_world: 合并 game_ai_npc(npc 模型/数据/controller),修复菜单 NotNullViolation
- yusen_website: 移除已迁出的 page/asset,背景菜单改挂 game_base.action_game_page
- 新增 game_asset_backup 纯数据模块: 备份前端素材到 addons(game_assets/),预置 图鉴(game.codex.entry)9条(过场CG/动物) + 素材管理(yusen.asset)120条(地形/建筑/瓦片/幻灯片/背景/路/UI),按类分 tags

前端(assets + HTML):
- 新增 chat.js / game-api.js、chat.html / buildings_default_demo.html
- 清理旧 slides/website 冗余文件,更新 GENERATION_RULES.md 与动物九宫格素材
2026-08-11 10:02:19 +08:00

3.7 KiB
Raw Blame History

宇森 人族动态素材规则(稳定批量输出)

可编辑规范:新增/调整动作、角色、风格时,照此规则批量生成即可。

1. 输出格式

  • 1×N 横条(一张图内多帧横向排列),按动作组合各一张文件,不切单张。
  • 6 帧/条(验证比 9 帧/条稳:9 帧会角色比例漂移、缺帧)。18 帧 = walk 1×6 + idle_attack 1×6 + work_comm 1×6。
  • 分组按动作体型相近:idle+attack(站立/小幅上身)、work+communicate(手持/手势)。
  • 渲染:Canvas drawImage(sheet, frame*FW, 0, FW, FH, …) 按帧偏移取,FW = sheet.width/6;朝向靠运行时水平翻转(左右不各生成一条)。

2. 素材位置

  • 生成原图(白底):human/raw/human_<group>_1x6.png
  • 最终透明图(用户 PS 去白后):human/human_<group>_1x6.png
  • 风格锚参考图:human/references/ref_human_walk.png
  • <group> 取值:walk / idle_attack / work_comm,新动作类推(如 cast、harvest…)。
  • 目录约定:human/ 根只放最终透明成品(给 demo 引用);human/raw/ 放生成原图/源图;human/references/ 放风格锚参考图。
  • 现有 walk 历史命名 human_walk_downleft_6f_trans.png 可后续统一重命名为 human_walk_1x6.png(需同步改 demo 引用)。

3. demo 位置

  • E:/project/yuthon/game/buildings_default_demo.html:素材已 base64 内嵌,file:// 直接打开即可,不依赖本地服务器(沙箱 localhost 不暴露到真机)。
  • 三张表 walk / idleAtk / workCom 按 STATES 切换;idle/walk 循环,attack/work/communicate 单次播完回 idle;指令接口 window.triggerAction('attack'|'work'|'communicate'|'idle'),键盘 A/W/C/I。
  • 每个 state 有独立 dur(每帧秒数),可单独调某个动作速度,不影响其它。

4. 生成素材的条件

  • 触发:需要新动作/新角色且对应条不存在,或现有条被判定质量不合格时,才生成。
  • 一次生成一张 1×6 横条(不拆多张、不一次出多张)。
  • prompt 必须写明 exactly 6 frames, no missing/merged frames, evenly spaced,避免缺帧/合并。
  • 背景用纯白 #FFFFFF(用户自己用 PS 去白),我这边不再做透明键。

5. 风格

  • 2.5D 左下对角线视角、小头(约 1/7 身)、深色描边、可见方块像素、无抗锯齿;明亮卡通调色板。
  • 锁风格靠参考图(见下),prompt 复用同一套风格描述,保持跨条一致。

6. 大小

  • 生成尺寸:1536×512(6 帧横排)。
  • 最终游戏帧:96×96/帧,整条 576×96。生成后整体缩到 576×96(保持横条,不切单帧),白底交付用户 PS。

7. 参考图(风格锚)

  • 风格锚:human/references/ref_human_walk.png(从用户认可的「还可以」walk 透明版拷贝,统一收在 references/)。
  • human/ 根仅放最终透明成品给 demo 引用;生成原图(白底)放 human/raw/;风格锚参考图放 human/references/。
  • ImageGen image-to-image + input_fidelity: high 锁角色;每次生成都带 ref_human_walk.png 这张参考,保证新动作同一个人。

8. 用户后处理约定

  • 我交付白底 1×6 横条 → 用户 PS 魔棒去白 → 导出透明 1×6 横条到 human/ 最终目录 → demo 引用最终透明图。
  • 去白时整条处理(保留横条结构),不要切单帧。

备注

  • 当前可用最终素材(已透明):human_walk_downleft_6f_trans.png、human_idle_attack_1x6.png、human_work_comm_1x6.png(白边已用 flood-fill 连通抠图修掉)。
  • 效率取舍:我负责「生成白底横条 + 缩到 96 帧 + 写 demo 引用」;精细/去白交给用户 PS。