# 素材与第三方许可 Sofa Party 自身的代码是本仓库的原创内容;界面上的字体、图标、音效和头像来自 下列来源。第三方素材使用可再分发的许可(CC0 / OFL / MIT),AI 生成插画另列如下。 所有运行时素材**已随仓库提交**,因此运行游戏不需要联外网。 ## AI 生成的大厅与游戏插画 - 工具:OpenAI GPT image(Codex 内置 imagegen);生成日期:2026-10-19。 - 提示词摘要:统一的精致 16-bit 像素插画、紫色夜景底色与暖金/粉/薄荷/蓝色点缀,左侧预留文字空间;分别描绘桌游之夜、城市棋盘、竞速按钮、空白画板、夜间街景、月夜村庄、农场小鸡、聚光灯卡牌和商队路线。要求无文字、商标、水印及游戏隐藏信息。 - 修改人:Codex;修改:以最近邻缩放至 960×540,保留硬边像素;界面运行时按主题叠加半透明底色。 - 入库:`assets/ui/lobby_banner.png`;`assets/monopoly/cover.png`、`assets/mash/cover.png`、`assets/draw_guess/cover.png`、`assets/undercover/cover.png`、`assets/werewolf/cover.png`、`assets/decision_chicken/cover.png`、`assets/truth_dare/cover.png`、`assets/riftroad_tycoon/cover.png`。 实际入库的第三方素材登记在本文件;候选来源、许可选择、获取方式和入库规范见 `docs/game-assets.md`。本文件只列已使用素材,不把候选站点当作已使用素材。 ## AI 生成的游戏美术升级(2026-10-25) - 工具及来源:OpenAI GPT image(Codex 内置 imagegen),本项目开发期生成;生成日期:2026-10-25。 - 提示词:像素生活危机敌人、背面防守者与末日敌人、农场鸡三种姿态与草堆、末日/居家防线背景、黎明农场、无文字沙发防线封面、低多边形城市/跑商棋盘封面、公开月夜村庄及空白密码终端。完整提示词与文件映射见 `docs/game-art-2026-10-25.md`。 - 修改人:Codex;修改:透明图集按单元裁切并保留 alpha,角色按最近邻缩小到 48/64/96 px;像素背景按最近邻缩小到 192×256 或 640×360;封面统一到 960×540,低多边形封面使用 Lanczos。处理脚本为 `tools/prepare_game_art.py`。 - 入库及实际用途: - `assets/sofa_defense/defender_apocalypse_v2.png`、`defender_daily_v2.png`、`enemy_zombie_v2.png`、`enemy_runner_v2.png`、`enemy_heavy_v2.png`、`enemy_boss_v2.png`:统一为清晰像素画的两位防守者与末日敌人。 - `assets/sofa_defense/enemy_sock.png`、`enemy_message.png`、`enemy_laundry.png`、`enemy_bill.png`:生活主题四类公开敌人。 - `assets/sofa_defense/battlefield_apocalypse.png`、`battlefield_daily.png`:两主题防线背景;`cover_v2.png`:大厅与准备室封面。 - `assets/decision_chicken/chicken_idle.png`、`chicken_peck.png`、`chicken_celebrate.png`、`hay_eggs.png`、`farm_backdrop.png`:农场场景、鸡的公开阶段动作和草堆。 - `assets/monopoly/cover_v2.png`、`assets/riftroad_tycoon/cover_v2.png`:与低多边形棋盘方向统一的新封面。 - `assets/werewolf/village_backdrop.png`:不含角色身份或夜间行动信息的公开背景。 - `assets/code_clash/cipher_terminal.png`:三套配色共用的空白密码终端装饰。 - 原始生成大图留在开发机的 ImageGen 输出目录,仓库只收录上述实际使用的 22 个 PNG;旧封面与旧角色贴图保留以便对照。 ## 字体 | 用途 | 文件 | 许可 | | --- | --- | --- | | 大屏全站字体(正文字重 + 假粗体) | `assets/fonts/LXGWMarkerGothic-Regular.ttf` | SIL Open Font License 1.1 | | 缺字兜底(只在霞鹜漫黑没有字形时出现) | `assets/fonts/NotoSansSC-Variable.ttf` | SIL Open Font License 1.1 | **霞鹜漫黑 LXGW Marker Gothic** — lxgw,, v1.004,许可 **SIL Open Font License 1.1**(全文 `assets/fonts/LXGWMarkerGothic-OFL.txt`, 无附加保留字体名)。单字重马克笔风格,界面上的「粗体」不是第二个文件, 而是 `FontVariation.variation_embolden`(见 `framework/ui/theme.gd`)合成的假粗, 只用在 ≥18px 的标题与按钮上,小字靠描边拉开层级。 Noto Sans SC — Google / Adobe,, 同样 OFL 1.1,在 `base_font()` 里作为 `fallbacks` 兜底,正常界面不会出现。 手机网页使用系统字体,不内嵌任何字体文件。 ## 大屏皮肤:Kenney · UI Pack - Pixel Adventure `assets/ui/`(26 个 PNG)来自 **UI Pack - Pixel Adventure**,用来给大厅、 结算、开发面板与四款游戏统一换皮(9-slice 面板 + 彩色 `modulate` 染色): ``` panel_dark panel_cream panel_light panel_alt panel_modal 面板/对话框 state_success state_info state_danger 状态胶囊 ring_white ring_grey ring_tan 头像色环 bar_track bar_fill 进度条 arrow_up arrow_down arrow_left arrow_right 滚动/方向 icon_coin icon_star 货币/星星 ``` - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal** 用法:`framework/ui/widgets/ui_kit.gd` 的 `pixel_frame()` / `pixel_button_states()` 把它们切成 `StyleBoxTexture`,所有 `UIKit.panel()` / `button()` / `label()` 调用点自动换皮;显示尺寸一律整数倍(×2/×3), 避免像素贴图被拉糊。 ## 像素街景:Kenney · RPG Urban Pack(保留素材) `assets/city/`(`tilemap_packed.png` 16×16 整表里的子集)与 街景贴图来自 **RPG Urban Pack**: ``` assets/city/ tile_road / tile_road_dash / tile_crosswalk / tile_sidewalk / tile_grass / tile_sand / tile_water / tile_water_edge / building_* / wall_* / door_* / window_* / shop_window / prop_*(树、路灯、车、长椅、邮筒、纪念碑…) ``` - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal** 用法:保留给开发工具与旧版截图/复盘使用;《欢乐地产》当前大屏棋盘已改为 `assets/monopoly3d/` 的 3D 沙盘(见下一节),不再把这张贴图铺在棋盘上。 ## 3D 角色:Kenney · Blocky Characters / Mini Characters / Cube Pets 大屏大厅、手机选角、结算页、荣誉榜、棋盘棋子与游戏 HUD 共用同一套 54 个 角色。角色索引按分组连续排列,旧存档里的 0–47 继续有效,只是外观换成新阵容: ``` av00–av17 18 个 Blocky Characters assets/characters/blocky/ av18–av29 12 个 Mini Characters assets/characters/mini/ av30–av53 24 个 Cube Pets assets/characters/pets/ ``` - 来源: - - - - 许可:**CC0 1.0 Universal**(各目录内 `LICENSE.txt`) - 运行时资源:每组的 GLB 与共享贴图(Blocky 每人一张 `texture-*.png`, Mini / Cube Pets 共用 `Textures/colormap.png`) - 唯一真源:`framework/core/avatar_catalog.gd` 头像不是另找的图片:`tools/render_avatar_portraits.gd` 用同一批 GLB, 以正交相机、三分之四视角和暖色三点补光离线渲染成 256×256 透明 PNG。 Blocky / Mini 的角色舞台高度归一为 1.8,Cube Pets 为 1.2。 ## 大厅布景:Kenney · Mini Arcade / Furniture Kit 大厅背景是一张离线烘焙的暖色家庭游戏房。运行时每位玩家使用独立 3D 格子, 不会把多个角色投影到同一场景,因此角色与名条不会互相遮挡。 ``` Mini Arcade arcade-machine / pinball / claw-machine Furniture Kit loungeSofa / tableCoffee / lampRoundFloor / pottedPlant / rugRectangle ``` - 来源: - - - 许可:**CC0 1.0 Universal**(`assets/stages/lobby/LICENSE-*.txt`) - Mini Arcade 直接使用包内 GLB;Furniture Kit 的 OBJ 由 Blender 批量转换为 GLB,只保留大厅实际使用的 5 件家具与背景烘焙脚本。 ## 欢乐地产 3D 沙盘:Kenney City / Castle / Space / Nature Kits `assets/monopoly3d/` 是《欢乐地产》四张 3D 地图的建筑、道路、地形与装饰 素材库,全部来自 Kenney 的七个 **CC0 1.0 Universal** 3D 包: | 子目录 | 素材包 | 版本/来源 | 用途 | | --- | --- | --- | --- | | `commercial/` | City Kit Commercial | 2.1 / | 城市中高层办公楼、玻璃摩天楼、遮阳棚 | | `suburban/` | City Kit Suburban | 2.0 / | 城市与动物园的低层住宅、店铺、树木 | | `roads/` | City Kit Roads | 2.2 / | 街灯、路牌、交通灯、路障 | | `castle/` | Castle Kit | 2.0 / | 糖果乐园城堡、塔楼、城墙、旗帜、税务建筑 | | `space/` | Space Kit | 2.0 / | 悬浮平台、机库、火箭、卫星、太空站设施 | | `nature/` | Nature Kit | 2.1 / | 动物园树木、围栏、桥梁、湖面装饰、岩石 | | `coaster/` | Coaster Kit | 2024 / | 城市钢轨过山车、糖果水上滑道、太空单轨、动物园木质家庭过山车,以及车站、售票亭、排队与步道 | - 作者:Kenney() - 许可:**CC0 1.0 Universal**;每个子目录保留原包 `LICENSE.txt`。 - 资源:仅入库棋盘实际使用的 GLB、Palette/Texture 与各包许可,约 13 MB; 运行时从 `res://` 读取,完全离线。 - 调色:城市/城堡包用 `colormap` 与 `variation-a..g` 色表区分建筑风格; 太空包的金属度/粗糙度在 `games/monopoly/ui/model_factory.gd` 中归一为 玩具感的柔和材质;自然包按地图调整粗糙度并复用同一套实例缓存。 - 归一化:GLB 实例按 AABB 做“底部落地、X/Z 居中、正面朝道路”处理; PackedScene、纹理和材质由 `MonopolyModelFactory` 缓存,小型装饰按镜头 LOD 隐藏,避免总览时糊成一片。 - 重放脚本: ```bash tools/fetch_assets.sh python3 tools/extract_3d_assets.py /tmp/partygo-assets/src assets --monopoly-only godot --headless --editor --path . --quit ``` `fetch_assets.sh` 会缓存七个包的压缩包;`extract_3d_assets.py` 只复制 白名单中的模型和贴图。新增模型时同步更新白名单与该文件,再重新导入。 ## 乱途大亨 3D 沙盘:Kenney · Fantasy Town Kit 2.0 `assets/riftroad3d/` 是《乱途大亨》大屏正交沙盘的功能建筑零件库,全部来自 Kenney 的 **Fantasy Town Kit 2.0**(CC0 1.0 Universal): ``` Models/banner-green banner-red cart cart-high fence fence-gate Models/fountain-center fountain-round fountain-square hedge-large-gate Models/lantern stall stall-bench stall-green stall-red Models/tree tree-high wall-arch-top-detail wall-door Models/wall-window-round watermill windmill Models/Textures/colormap.png LICENSE.txt ``` - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal**(`assets/riftroad3d/LICENSE.txt`) - 用法:只入库 22 个精选 GLB 与共享色表,`games/riftroad_tycoon/ui/model_factory.gd` 按节点功能组合成驿站、关道、码头、市集、黑市、法庭、渡口等 18 类建筑; 运行时从 `res://` 读取,完全离线。策划参考图仅用于设计,不是运行时素材。 - 重放脚本: ```bash tools/fetch_assets.sh python3 tools/extract_3d_assets.py /tmp/partygo-assets/src assets ``` ## 疯狂手指:Kenney · Pixel Vehicle Pack `assets/mash/` 里的赛车与路边道具来自 **Pixel Vehicle Pack**: `car_01`–`car_08`(每个座位固定一辆)、`prop_barrier` / `prop_light` / `prop_light_double` / `prop_sign_*` / `prop_highway`。 - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal** ## 你画我猜:Kenney · Scribble Platformer `assets/draw/` 的白描云、树、涂鸦小人(`character_round*/square*/hand*`)、 `item_pencil`、`tile_grass` / `tile_bush` 与特效贴图来自 **Scribble Platformer**,在深色底上染色后当「粉笔画」用。 - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal** ## 谁是卧底:Kenney · 1-Bit Pack `assets/undercover/tilesheet.png` 是 **1-Bit Pack** 的 `monochrome-transparent_packed.png` 整表(16×16 网格),运行时按 `(col, row)` 取格子并染色,拼出夜色街景、窗户、树、路灯与星星。 - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal** ## 图标:Kenney · Board Game Icons `assets/icons/`(21 个 PNG,取 64px 默认尺寸)全部来自 **Board Game Icons**: ``` arrow_right award campfire card_flip crown_a dice dice_1..dice_6 dollar flag_square pawn pouch pouch_add skull structure_house timer_100 token ``` - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal**() 用法:白色单色贴图,靠 `modulate` 染色;骰子面用 `dice_1..dice_6`, 地产/宝箱/税/事件/休息/起点分别用 `structure_house / pouch_add / dollar / card_flip / campfire / flag_square`(见 `framework/core/art.gd`)。 ## 荣誉榜:Kenney · Game Icons `assets/ranking/` 的五个 100×100 白色透明 PNG 来自 **Game Icons**: ``` leaderboards_complex.png 荣誉榜标题图标 trophy.png 冠军奖杯 / 空榜装饰 / 入口按钮 medal1.png 亚军奖牌 medal2.png 季军奖牌 star.png 荣誉墙星形装饰 ``` - 作者:Kenney() - 来源:(包内 `PNG/White/2x/`) - 许可:**CC0 1.0 Universal** 用法:大屏 `Art.ranking_node()` 以线性过滤绘制;手机排行榜通过 `/ranking/<文件名>` 读取同一批 PNG,并用 CSS 控制金/银/铜色底板。 ## 棋子与骰子:Kenney · Board Game Pack `assets/board/`(12 个 PNG)来自 **Board Game Pack**(2014): ``` die_white_1..6.png 骰子六面(正方形,底部信息栏滚动/落定用) card_back.png 事件牌背(棋盘中央翻牌浮层用) piece_house / piece_house_big / piece_castle 地产上的小房子 / 大房子 / 城堡 piece_flag / piece_token 起点旗子 / 通用棋子底座 ``` - 作者:Kenney() - 来源:(包内 `PNG/` 目录) - 许可:**CC0 1.0 Universal** 用法:文件名改为语义名后入库,白色贴图靠 `modulate` 上组色/玩家色 (见 `framework/core/art.gd` 的 `board_texture` / `die_texture` / `board_icon_node`)。 ## 音效:Kenney · Casino Audio / Interface Sounds / RPG Audio / Impact Sounds / Digital Audio `assets/audio/` 的语义音效按下表取自五个 CC0 包(原名 → 语义名): ``` Kenney · Casino Audio(https://kenney.nl/assets/casino-audio) card-place card-shuffle chest-open chip-buy chips-rent dice-shake dice-throw Kenney · Interface Sounds(https://kenney.nl/assets/interface-sounds) ui-confirm ui-error ui-select Kenney · RPG Audio(https://kenney.nl/assets/rpg-audio) handleCoins→coin bookFlip2→draw-page bookPlace3→draw-stamp cloth2→draw-stroke doorOpen_1→uc-door metalLatch→uc-latch bookPlace1→uc-vote bookOpen→route-open bookPlace2→route-pick handleCoins2→start-pass Kenney · Impact Sounds(https://kenney.nl/assets/impact-sounds) impactMetal_light_000→mash-crash impactBell_heavy_000→mash-finish footstep_wood_001→uc-step impactGlass_heavy_000→uc-eliminate impactBell_heavy_002→uc-reveal footstep_wood_002→piece-step impactWood_heavy_000→item-block impactWood_medium_000→build impactPlank_medium_000→house-upgrade impactGlass_heavy_001→bankrupt Kenney · Digital Audio(https://kenney.nl/assets/digital-audio) pepSound1→mash-tap pepSound4→mash-boost highUp→mash-go threeTone1→mash-count pepSound2→draw-correct lowRandom→draw-wrong twoTone1→turn-change powerUp2→card-effect lowDown→card-penalty powerUp3→item-pickup pepSound3→item-use phaserUp2→item-boost powerUp5→item-shield phaseJump3→item-swap highUp→rent-double lowThreeTone→cash-low lowRandom→turn-skip threeTone2→extra-roll ``` - 作者:Kenney() - 许可:**CC0 1.0 Universal** 用法:`framework/core/sfx.gd` 的并发音频池按语义名播放;大富翁的映射是 掷骰 `dice-shake`+`dice-throw`、棋子踏步 `piece-step`、选路 `route-open`+`route-pick`、回合切换 `turn-change`、经过起点 `start-pass`、 翻牌 `card-place`+`card-shuffle`+`card-effect`/`card-penalty`、道具 `item-pickup`/`item-use`/`item-block`/`item-boost`/`item-shield`/`item-swap`、 买地建房 `chip-buy`+`build`、升级 `house-upgrade`、租金翻倍 `rent-double`、 低现金 `cash-low`、破产 `bankrupt`(见 `games/monopoly/game.gd`);三款小游戏用 `mash-*` / `draw-*` / `uc-*` 前缀各成一套(见它们的 `game.gd`)。 ## 背景音乐:OpenGameArt 长循环 CC0 `assets/music/` 中的 11 首 BGM 里,10 首来自 OpenGameArt 上标注 CC0 的可循环 曲目;《密语特工》的 `code-clash.mp3` 是本仓库原创合成曲。 大厅固定使用 `lobby.mp3`,十款游戏各用一首独立对局曲: | 文件 | 曲目 | 作者 | 来源 | 时长 | | --- | --- | --- | --- | --- | | `lobby.mp3` | Coffee House Bump | OatCog | | 2:36 | | `monopoly.mp3` | Urban Theme | MintoDog | | 1:28 | | `mash.mp3` | Racing Game Menu | MintoDog | | 1:56 | | `draw.mp3` | Cozy Puzzle In-Game 1 | MintoDog | | 2:10 | | `undercover.mp3` | I swear I saw it - background track | yd | | 3:27 | | `decision-chicken.mp3` | Banana Track | skrjablin | | 2:04 | | `truth-dare.mp3` | Cozy Puzzle In-Game 2 | MintoDog | | 2:08 | | `riftroad.mp3` | Exploration Theme | CleytonKauffman | | 2:14 | | `werewolf.mp3` | Unsolved Investigation | isaiah658 | | 0:48 | | `sofa-defense.mp3` | Fast Fight Battle Music Looped | XCVG | | 0:24 | | `code-clash.mp3` | Code Clash Radio Room(原创合成) | Sofa Party / Codex | 本仓库 `tools/make_code_clash_music.py` | 0:57 | - 许可:以上曲目均为 **CC0 1.0 Universal**。 - 处理:两遍 `loudnorm` 归一化到 **-20 LUFS / -2 dBTP**,再编码为 **128 kbps MP3**,避免试听和对局切换时忽大忽小。 - 用法:`games/registry.gd` 每个 pack 的 `music` 字段决定进对局播哪首; 结算播 `jingle-`(缺失回退 `ending`),见 `framework/main.gd` / `framework/core/sfx.gd` 的 `play_music()` / `play_jingle()`。 - 音量:BGM 默认 50%,音效默认 80%;游戏独立主机页和 `F1` →「声音」均可分别 开关与拖动音量,设置保存在本机 `user://data/settings.json`。 - `ending.mp3` 仍来自 Juhani Junkala 的 CC0 Action Chiptunes 包,只作缺失 jingle 时的兜底。其来源为 。 ## 结算短乐:Kenney · Music Jingles `assets/music/jingle-*.mp3` 中,除 `jingle-code-clash.mp3` 外,原始素材来自 **Music Jingles**:`jingles_NES00 / NES05 / NES10 / NES15 / NES16.ogg` (96 kbps MP3 转码)。`jingle-code-clash.mp3` 是 `tools/make_code_clash_music.py` 现场合成的原创短乐,同样经过两遍 loudnorm 到 -20 LUFS / -2 dBTP。 - 作者:Kenney() - 来源: - 许可:**CC0 1.0 Universal** ## 音效:Kenney · UI Pack(Sounds) `assets/audio/`(3 个 OGG): ``` click-a switch-a tap-a ``` - 作者:Kenney() - 来源:(包内 `Sounds/` 目录,即常用的 click/switch/tap UI 音效集;同名音效也收录在 Kenney 的 UI Audio 包里) - 许可:**CC0 1.0 Universal** 用法:`framework/core/sfx.gd` 里的并发音频池,避免连点打断同一个播放器; 《疯狂手指》的连点用 0.1 秒节流 + 随机音高。 ## 密语特工:原创封面与合成音乐 - 封面:`assets/code_clash/cover.png` 由 `tools/make_code_clash_cover.py` 使用仓库内 Kenney Board Game Icons(CC0)与程序绘制的深海无线电界面生成; 无第三方游戏截图、Logo 或商标。 - 对局曲:`assets/music/code-clash.mp3`,57.6 秒原创合成循环,128 kbps MP3, 两遍 loudnorm 到 -20 LUFS / -2 dBTP。 - 结算短乐:`assets/music/jingle-code-clash.mp3`,原创合成 4.2 秒。 - 修改人:Codex;生成日期:2026-10-19。两个生成脚本均随仓库提交,可离线重放。 ## 沙发防线:Kenney Top-down Shooter / Impact Sounds `assets/sofa_defense/` 的角色与 `assets/audio/sofa-*.ogg` 来自 Kenney 的两个 CC0 包。只抽取了实际使用的文件: ``` defender_apocalypse.png Survivor 1 / survivor1_machine.png defender_daily.png Woman Green / womanGreen_machine.png enemy_zombie.png Zombie 1 / zoimbie1_stand.png enemy_runner.png Man Old / manOld_hold.png enemy_heavy.png Robot 1 / robot1_stand.png enemy_boss.png Zombie 1 / zoimbie1_machine.png sofa-shot.ogg Audio / impactSoft_medium_001.ogg sofa-hit.ogg Audio / impactPunch_medium_004.ogg sofa-burst.ogg Audio / impactMetal_heavy_001.ogg sofa-slow.ogg Audio / impactGlass_medium_002.ogg sofa-boss.ogg Audio / impactPlate_heavy_004.ogg ``` - 作者:Kenney() - 来源: - - - 许可:**CC0 1.0 Universal**(两包内 `License.txt`) - 修改:角色 PNG 只做了子集复制,运行时按战线方向旋转、按主题染色和缩放; 音效未改写。`assets/sofa_defense/cover.png` 由 `tools/make_sofa_defense_cover.py` 用上述 CC0 角色和仓库字体合成,属于本项目原创封面。 - 音乐:`sofa-defense.mp3` 为 24.8 秒循环;loudnorm 目标 -20 LUFS / -2 dBTP 上限,实测 -20.2 LUFS / -11.7 dBTP,编码 128 kbps MP3。 - 生活小危机的袜子/未读消息/家务/账单造型由 Godot `lane_view.gd` 程序绘制, 没有引用外部素材。 ## 搬不进去:原创程序美术、AI 家具与合成音乐 搬运工、平台、低梁与固定出口由 `games/cant_fit/ui/stage_view.gd` 用纯 2D 图形 程序绘制;沙发与衣柜使用以下 AI 生成图片,封面和音乐由仓库内脚本生成: - AI 家具:`assets/cant_fit/sofa.png`、`assets/cant_fit/wardrobe.png`。 工具为 OpenAI 内置 image_gen,生成日期 2026-10-26,修改人 Codex。 提示词摘要:透明背景、正面正交、橙色双人沙发/蜂蜜木色双门衣柜、深色描边、 简洁卡通明暗、无文字无商标。完整提示词见 `assets/cant_fit/GENERATION.md`。 保留生成 alpha,运行时忽略透明边距并缩放到权威物理外框;没有引用外部素材包, 不标作 CC0 或第三方授权素材;发布前需人工复核。 - 封面:`assets/cant_fit/cover.png` 由 `tools/make_cant_fit_cover.py` 用 PIL 和仓库字体 `assets/fonts/LXGWMarkerGothic-Regular.ttf`(SIL OFL 1.1)绘制, 无第三方游戏截图、Logo 或商标。 - 对局曲:`assets/music/cant-fit.mp3`,60.0 秒原创合成循环,128 kbps MP3, 两遍 loudnorm 到 -20 LUFS / -2 dBTP(实测 -20.3 LUFS)。 - 结算短乐:`assets/music/jingle-cant-fit.mp3`,原创合成 4 秒。 - 音效复用仓库已有的 Kenney CC0 音效集(`click-a`、`tap-a`、`piece-step`、 `draw-wrong`、`draw-correct`、`ui-error`、`ui-select`、`mash-count`、 `mash-finish`),没有新增下载。 - 修改人:Pi;生成日期:2026-10-26。两个生成脚本随仓库提交,可离线重放。 ## 头像 `assets/avatars/av00.png` – `av53.png`(54 张 256×256 PNG,背景透明) 由同一批 Kenney 3D 模型离线预渲染,见上文「3D 角色」。覆盖旧 48 个文件并追加 `av48`–`av53`;`/avatars/avNN.png` 路由与 WebSocket 协议版本保持不变。 ## 重新下载/重放素材 第三方原包**不入库**,仓库里只有抽取后的子集与一次性脚本: ```bash tools/fetch_assets.sh # 下载(缓存到 /tmp/partygo-assets)+ 抽取 + 转码 CACHE=/tmp/partygo-assets tools/fetch_assets.sh # 换缓存目录 tools/contact_sheet.py out.png 0 6 # 复核抽取坐标 godot --path . --script res://tools/render_avatar_portraits.gd # 重新渲染 54 张头像 godot --path . --script res://tools/render_lobby_backdrop.gd # 重新烘焙大厅背景 ``` `tools/fetch_assets.sh` 里写着每个包的精确 URL;坐标与语义命名在 `tools/extract_pixel_assets.py`(2D 贴图)、`tools/extract_3d_assets.py` (角色与街机)与 `tools/extract_pixel_audio.py`(音乐/音效)里。 Furniture Kit 的 OBJ 由 `tools/convert_obj_to_glb.py` 调 Blender 转换; 重放后会得到与仓库一致的 `assets/`。 ## QR 码:kenyoni_qr `addons/kenyoni/`(含 `qr_code/`)用于大厅二维码生成。 - 作者:Iceflower S(iceflower@gmx.de) - 来源: - 许可:**MIT**(全文见 `addons/kenyoni/LICENSE.md`) ## 引擎 Godot Engine 4.7.2 — MIT,。 导出包内含引擎运行时,其许可与版权信息为引擎分发的一部分(Godot 的 `LICENSE.txt` / 版权声明),Sofa Party 未修改引擎源码。