配置档案 · 2026-11-02
爱音塔-设计配置-v0.1
历史配置,非现行运行值。可阅读与下载;伙伴、浮鼓或候选数值按当时版本保留。
{
"product": {
"schema_version": "0.1",
"status": "P3_candidate_not_approved",
"title": "爱音塔",
"relationship": "麦洛谛的独立玩法版本,不替换原版",
"view": "2.5D斜侧固定镜头,沿预制路线持续向上",
"primary_proof": "一首完整曲子的可玩第一层",
"platform": "PC制作验证优先;手机横屏输入同步设计;商业首发待确认",
"level_count_vision": 101,
"release_level_count": null,
"music_track": null,
"music_rights": "pending",
"numeric_values": "以下数值均为试调起点,非已测结论"
},
"music_clock": {
"status": "candidate",
"source": "audio_playback",
"display_seconds": "max(previous, playback_position + time_since_last_mix - output_latency)",
"units": {
"time": "seconds",
"tempo": "beats_per_minute",
"beat": "quarter_note"
},
"tempo_map_example_only": [
{
"start_beat": 0,
"bpm": 120,
"meter": [
4,
4
]
}
],
"track_offset_seconds": 0,
"calibration": {
"audio_ms": 0,
"visual_ms": 0,
"input_ms": 0,
"sample_count": 20,
"estimate": "median_valid_taps; report spread; user may adjust"
},
"discontinuities": [
"pause",
"resume",
"seek",
"device_change"
],
"on_discontinuity": "new_epoch; clear_pending_events; count_in_before_resume",
"hitstop": "presentation_only_audio_and_judgement_continue"
},
"judgement": {
"status": "candidate_requires_playtest",
"input_anchor": "cue_beat",
"delta_ms": "1000 * (audio_clock_at_input_seconds - cue_audio_seconds) - input_calibration_ms",
"calibration_sign": "positive_input_calibration_means_device_or_player_taps_late; subtract_once; audio_output_latency_already_in_clock",
"offbeat_combat": "free action may deal 0.4x damage on real collision; does not consume cue or add combo",
"result_single_source": "judgement_result_id",
"windows_ms": {
"perfect": 40,
"good": 85,
"accepted": 130
},
"priority": [
"match_action",
"closest_unconsumed_cue",
"timing_grade"
],
"one_input_consumes_max_cues": 1,
"one_cue_consumes_max_inputs": 1,
"wrong_action": "record_wrong_without_consuming_expected_cue; debounce_same_button_80ms; no_free_score",
"miss_after_ms": 130,
"required_cue_min_gap_beats": 1,
"non_scoring_moves": "movement allowed; no combo, no scored instrument stem",
"score_weights": {
"perfect": 1,
"good": 0.7,
"accepted": 0.3,
"miss": 0
},
"max_score": 1000000,
"score_normalization": "sum(grade_weight * cue_weight) / sum(all_required_cue_weights) * max_score",
"rank_groups": [
"standard_unassisted",
"assisted",
"practice"
],
"route_score_budget": "equal_per_phrase_for_ranked_routes",
"sync_percent": "perfect_or_good_count / required_cue_count"
},
"actions": {
"light": {
"input": "J / south_face / touch_light",
"cue_to_contact_beats": 0.5,
"body": "撑脚稳住→髋肩带臂→腕部击鼓→反弹收势",
"strike_segment_ms": 90,
"pre_contact": "variable_preparation_or_hold; never stretch the 90ms strike segment",
"hit": "drum_contact emits wave; target collision causes HP loss",
"music": "selected short percussion event",
"movement": "保持路线推进"
},
"heavy": {
"input": "K / east_face / touch_heavy",
"cue_to_contact_beats": 1,
"body": "沉髋蓄势→转腰带肩→短槌重落→全身回弹",
"strike_segment_ms": 120,
"pre_contact": "authored preparation and variable hold",
"hit": "larger impulse and break threshold; not giant weapon",
"music": "low drum accent",
"movement": "预定重击平台,避免同时精确跳跃"
},
"jump": {
"input": "W_or_Space / north_face / touch_jump",
"cue_to_contact_beats": 0,
"body": "压身蹬地→空中收腿→脚先触地→屈膝吸收",
"music": "takeoff_percussion; landing_secondary_if_authored",
"coyote_ms": 90,
"jump_buffer_ms": 100,
"max_air_actions": 1
},
"dash": {
"input": "L_or_Shift / west_face / touch_dash",
"cue_to_contact_beats": 0,
"body": "低重心穿身或侧翻,出口可接跑",
"music": "short_transient",
"invulnerability_ms": 100,
"rule": "only authored hazard windows; no permanent spam invulnerability"
},
"liva": {
"input": "auto_response_to_successful_phrase",
"rule": "phrase_success unlocks one authored reachable cloud foothold; no random required platform",
"manual_call": "later_candidate_not_first_level"
},
"global": {
"response_target_ms": 50,
"response_target_status": "target_to_measure_on_hardware_not_claim",
"damage_only_on_wave_collision": true,
"visual_grade_locked_at_input": true,
"collision_failure": "keep rhythm grade; mark combat miss, no HP loss; diagnose reachability",
"contact_time": "music_clock(cue_beat + action_contact_offset)",
"slow_tempo_fast_tempo": "re-author_offsets_or_change_action; never arbitrary whole-body speed scaling"
}
},
"route_graph": {
"status": "illustrative_8_beat_phrase",
"route_id": "L01_P08",
"units": "meters_and_quarter_beats",
"entry": {
"beat": 32,
"position": [
0,
0
]
},
"exit": {
"beat": 40,
"position": [
14,
8
]
},
"routes": [
{
"id": "safe",
"nodes": [
{
"beat": 32,
"position": [
0,
0
]
},
{
"beat": 34,
"position": [
4,
2
]
},
{
"beat": 36,
"position": [
8,
3
]
},
{
"beat": 38,
"position": [
11,
6
]
},
{
"beat": 40,
"position": [
14,
8
]
}
],
"required_cues": [
32,
34,
36,
38
],
"score_weight_total": 4,
"reward": "standard"
},
{
"id": "flair",
"nodes": [
{
"beat": 32,
"position": [
0,
0
]
},
{
"beat": 34,
"position": [
2,
5
]
},
{
"beat": 36,
"position": [
7,
8
]
},
{
"beat": 38,
"position": [
11,
9
]
},
{
"beat": 40,
"position": [
14,
8
]
}
],
"required_cues": [
32,
34,
36,
38
],
"score_weight_total": 4,
"reward": "style_badge_only"
}
],
"choice_window_beats": [
30,
31.5
],
"lock_at_beat": 31.5,
"constraints": [
"same_entry_exit_beat",
"same_rank_score_budget",
"every_jump_reachable_with_margin",
"camera_reveals_next_required_landing",
"no_random_platform_spawn"
],
"recovery": {
"max_assists_standard": 0,
"assisted_mode_tokens": 2,
"drop_hp_cost": 20,
"method": "fade_and_move_to_next_authored_safe_node_with_two_beat_warning",
"music": "continues",
"suppress_cues_until_reentry": true,
"suppressed_cues_score": "miss",
"if_no_future_safe_node": "fail_at_next_safe_music_boundary",
"after_tokens_used": "fail_at_next_safe_music_boundary"
}
},
"chart_example": {
"status": "synthetic_not_the_candidate_song",
"bpm": 120,
"offset_seconds": 0,
"events": [
{
"id": "e01",
"beat": 32,
"action": "light",
"contact_beat": 32.5,
"instrument": "paigu_high",
"target": "sentinel_a",
"weight": 1
},
{
"id": "e02",
"beat": 34,
"action": "jump",
"contact_beat": 34,
"instrument": "woodblock",
"target": null,
"weight": 1
},
{
"id": "e03",
"beat": 36,
"action": "light",
"contact_beat": 36.5,
"instrument": "paigu_mid",
"target": "sentinel_b",
"weight": 1
},
{
"id": "e04",
"beat": 38,
"action": "heavy",
"contact_beat": 39,
"instrument": "big_drum",
"target": "resonance_gate",
"weight": 1
}
],
"optional_motion": [
{
"beat": 35,
"action": "dash",
"scoring": false,
"reason": "showcase_only_no_mandatory_hint"
}
]
},
"vfx_profiles": {
"status": "candidate_authored_assets_required",
"all": {
"protect_hud": true,
"emission_by": "combat_result_id",
"music_never_paused": true,
"reduced_flash_available": true
},
"light": {
"ink": "one readable broken brush arc",
"palette": [
"#122d31",
"#d54a36"
],
"screen_area_target_max": 0.08,
"presentation_freeze_ms": 18
},
"heavy": {
"ink": "fold→tear→flying-white→fragments",
"palette": [
"#10282b",
"#e54a36",
"#f0db9c"
],
"screen_area_target_max": 0.22,
"presentation_freeze_ms": 42
},
"break": {
"ink": "directional burst linked to actual broken guard",
"calligraphy": "one_result_one_glyph",
"screen_area_target_max": 0.28,
"presentation_freeze_ms": 55
},
"ensemble": {
"ink": "scene-wide flowing stroke behind protected cues",
"screen_area_target_max": 0.4,
"presentation_freeze_ms": 65,
"limit": "only authored musical climax; no full-screen white flash"
}
},
"level_01": {
"status": "candidate_music_first",
"name": "鼓坊朝云",
"residents": "鼓匠、运输伙计、守桥人、学徒",
"conflict": "共鸣失衡令升降鼓台失序;守桥者试验新来者能否接奏",
"track_file": null,
"duration_seconds": null,
"working_target_seconds": 300,
"phases_normalized": [
{
"start": 0,
"end": 0.1,
"name": "入塔·听见人间"
},
{
"start": 0.1,
"end": 0.28,
"name": "起行·两檐之间"
},
{
"start": 0.28,
"end": 0.45,
"name": "接奏·伙伴与支路"
},
{
"start": 0.45,
"end": 0.64,
"name": "独奏·追攀鼓楼"
},
{
"start": 0.64,
"end": 0.87,
"name": "合奏·守桥对答"
},
{
"start": 0.87,
"end": 1,
"name": "终章·回望与升门"
}
],
"first_build": "one_full_song_plus_start_settings_failure_retry_result",
"boss_hp_example": 300,
"player_hp_example": 100,
"damage_example": {
"light": 10,
"heavy": 25,
"hazard": 15,
"fall": 20
},
"damage_multiplier": {
"perfect": 1.25,
"good": 1,
"accepted": 0.7,
"offbeat": 0.4
},
"warning": "数值仅用于联调;门和Boss不得因前段可恢复失误形成无法结束的软锁"
},
"quality_gates": {
"status": "proposed_tests_not_results",
"G1": {
"name": "readable_rhythm",
"method": "5名初次玩家,无口头提示,第一分钟辨认轻重跳闪与下一拍",
"pass_target": "至少4人正确解释并完成基础句;记录样本小不能证明留存"
},
"G2": {
"name": "music_movement_contract",
"method": "合拍、早晚、错招、漏拍、两条路线、掉落、暂停和恢复",
"pass_target": "每条路线完整通曲;无重复计分;音画事件可追溯"
},
"G3": {
"name": "body_and_ink",
"method": "原速和慢放同看;检查支撑脚、鼓触、波碰撞、受击与墨",
"pass_target": "轻重可分、无滑步穿鼓、下一拍始终可读"
},
"G4": {
"name": "whole_song",
"method": "真实玩家从开始到结果页不剪辑游玩,失败重试一次",
"pass_target": "完整曲目、首尾与结算齐全;不能用短样段代替"
},
"G5": {
"name": "performance",
"method": "指定实机录制与不录制各完整跑一次,记录frame_time和audio_drift",
"pass_target": "目标60fps;P95≤20ms、P99≤33ms;大尖峰单列;音画漂移目标≤20ms,需测量"
},
"G6": {
"name": "reuse_proof",
"method": "用同工具配置第二段不同节奏、不同路线",
"pass_target": "无需复制核心代码;验证可编辑性而非一次性演示"
}
}
}