Skip to content

early277/IntervalBattle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IntervalRouteMVP

縦画面・1オクターブ鍵盤・地図・特訓/攻略・HP/MP・攻撃ゲージ・技を入れたMVPです。

主な仕様

  • 縦画面固定
  • 1オクターブ鍵盤
  • 五度円配置の12拠点
  • 中央に「無音の核」
  • 各拠点に2モード
    • 特訓: 父が映す仮想敵。攻撃なし。
    • 攻略: 実体敵。攻撃ゲージあり。
  • HPは数値 + ゲージ
  • MPは数値 + ゲージ
    • 減速: 攻撃ゲージを遅くする
    • 二分聴: 候補を6個に絞る
    • 四分聴: 候補を3個に絞る
    • 直観: 正解鍵を一時表示
  • 敵は常に1体ずつ出現
  • 攻略クリアで五度円上の隣接拠点を解放
  • 6拠点攻略で通常の無音の核を解放
  • 12拠点攻略で真・無音の核を解放

Xcodeで開く

IntervalBattleMVP.xcodeproj

ルール

敵本体 = インターバル
オーラ = ルート
正解 = ルート + インターバル

Update: multi-aura / save / skills / root-key highlight

  • Progress is saved with UserDefaults.
  • Cleared dungeons and unlocked areas persist after closing the app.
  • Multi-aura dungeons were added:
    • 2-aura dungeons
    • 3-aura dungeons
    • 6-aura dungeons
  • Normal final battle opens after clearing a 6-aura dungeon.
  • Skills:
    • 減速: slows the attack gauge.
    • 二分聴: narrows candidates to 6 keys.
    • 三分聴: narrows candidates to 4 keys.
    • 四分聴: narrows candidates to 3 keys.
    • 回復: restores HP.
  • The exact-answer skill was removed.
  • The current root aura key is lightly colored gray on the keyboard.

Update: 2-4-6-12 map / persistent hint / SFX

  • Multi-aura dungeons are now placed inside the map.
  • Progression is now 2-aura -> 4-aura -> 6-aura -> 12-aura final.
  • Candidate narrowing skills persist across enemies while their timer is active.
  • When a new enemy appears during the skill duration, candidates are recalculated to include the new correct answer.
  • Heal MP cost increased to 28.
  • Sound effects were added using iOS system sounds.

Update: scrollable route map / single final core

  • The map is now larger than the screen and scrollable in both directions.
  • Route lines connect single-aura areas, 2-aura dungeons, 4-aura dungeons, 6-aura dungeons, and the final core.
  • The final core is no longer split into normal/true nodes.
  • The center battle is always a 12-aura battle.
  • Each multi-aura dungeon has flavor text in its BattleConfig/story and context menu.
  • Node sizes were increased to reduce label overlap.

Update: pitched audio

  • Fixed Swift compile error by replacing Set.contains closure usage with contains(where:).
  • Enemy spawn now plays the current root aura pitch in a lower octave.
  • Keyboard tap now plays a dyad:
    • lower note = current aura/root
    • upper note = tapped keyboard note
  • This is intended to help the player hear the interval relationship, not only see it.

Build fix

  • Fixed malformed @Published property declarations in GameModel.swift.
  • Kept pitched audio:
    • enemy spawn plays the root aura in a lower octave
    • keyboard tap plays lower root + upper tapped note

Update: route unlock conditions / full combinations / timing / random keys

  • Route unlock is now connection-based.
    • If a cleared node is connected to a map node, that connected node opens.
    • Unconnected map nodes do not open merely because the clear count increased.
  • Each dungeon now uses all combinations:
    • allowed root auras × 11 interval enemies.
  • Attack time:
    • 1 aura: 12 seconds
    • 2 auras: 6 seconds
    • 4 auras: 3 seconds
    • 6 auras: 2 seconds
    • 12 auras: 1 second
  • Keyboard layout:
    • 1-aura and 2-aura battles keep the normal keyboard.
    • 4-aura, 6-aura and 12-aura battles use randomized pitch positions.

Update: shifted keyboard start

  • The previous fully randomized keyboard grid was removed.
  • For 4-aura, 6-aura, and 12-aura battles, the keyboard now remains a real keyboard layout.
  • Only the leftmost white key is randomized.
  • Possible leftmost keys: C, D, E, F, G, A, B.
  • 1-aura and 2-aura battles keep the normal C-start keyboard.

Update: 8-white-key shifted keyboard / all battles

  • Removed the START label on the leftmost key.
  • Shifted keyboard now displays 8 white keys instead of 7.
    • Example: E start becomes E F G A B C D E.
    • This allows missing black keys such as E♭ to appear at the right edge.
  • Random keyboard start is now applied to all battles, including 1-aura and 2-aura battles.
  • The map background and route colors were adjusted slightly toward an RPG-map style.

Update: 7-white-key shifted keyboard with side black keys

  • White keys are back to 7 visible keys.
  • Black keys are computed cyclically, so if a side black key is needed it appears at the right edge.
    • Example: E-start shows E F G A B C D plus E♭ at the right side.
  • The keyboard start is randomized every time a new enemy appears, not only once at battle start.
  • This applies to training, 1-aura, 2-aura, 4-aura, 6-aura, and 12-aura battles.

Update: left/right side black keys and skill timers

  • Shifted keyboard now shows side black keys on both sides when needed.
  • Skill effects now show remaining time gauges.
  • Slow and candidate-narrowing durations are about doubled.
  • Candidate-narrowing skills remain active across enemies as before.
  • Added 二択聴: narrows candidates to 2 keys.
  • Heal MP cost changed to 24.
  • In training mode, candidate-narrowing skills consume no MP because virtual enemies have very low resistance to skills.

Update: skill naming/cost and map/key readability

  • Skills changed:
    • 二分聴: 6 MP, 6 candidates.
    • 四分聴: 24 MP, 3 candidates.
    • 六分聴: 98 MP, 2 candidates.
    • 三分聴 removed.
  • Candidate highlights were made more subdued.
  • If a key is both the aura root and a candidate, the aura background is prioritized and candidate status appears as an outline.
  • Map route lines were made thinner and lighter.
  • Map canvas and node spacing were increased to reduce overlaps.
  • Multi-aura nodes were widened and their backgrounds strengthened so route lines do not obscure names.

Update: route visibility and text masks

  • Route line visibility was restored closer to the previous stronger style.
  • Added small dark masks behind map labels.
  • Area names, status text, and core labels are now less affected by route lines passing underneath.
  • Node backgrounds were made more opaque while keeping their color identity.

Update: skill gauge label names

  • Candidate-narrowing effect gauges now show skill names instead of candidate counts.
    • 6 candidates: 二分聴
    • 3 candidates: 四分聴
    • 2 candidates: 六分聴

Update: HP-adaptive order, level-up, and final depth

  • Every area still contains all required combinations: allowed root auras × 11 interval enemies.
  • Enemy order is adaptive within the remaining undefeated combinations.
    • High HP: prioritizes combinations with longer recorded response time and more mistakes.
    • Low HP: prioritizes combinations with shorter recorded response time and fewer mistakes.
    • The final number of enemies and combinations does not change.
  • Response time and misses are stored internally per root-aura × interval combination.
  • First clear of a previously uncleared area increases player level by 1.
  • Level slightly increases max HP and MP.
  • Final core remains 132 combinations but is displayed as three depths: 44 + 44 + 44.

Update: field map / battle background / UI polish

  • Added low-resolution pixel-style field map background and battle background.
  • Skill buttons now fit without horizontal scrolling.
  • Added visible level-up notification on first clear.
  • Keyboard hint highlight made more subtle.
  • Removed aura-key highlight from the keyboard; aura guidance is now shown near the keyboard instead.

Update: aura label position

  • Moved the aura name display from near the keyboard to directly below the enemy.
  • Simplified the aura label so the player's eye can stay on the enemy area.

Update

  • Added a new skill: 根音視 (highlights the root aura note on the keyboard for a limited time).
  • Enlarged the aura name below the enemy and simplified it to text only.
  • Single-aura dungeon battles now reuse the older cave-like stage background.
  • Multi-aura dungeons continue to use stage-specific backgrounds.
  • Improved the field map background with a more RPG-like terrain feel.

Update: map route simplification / skill row / highlight

  • Vector route lines are no longer drawn because the field-map background itself shows the routes.
  • Map label dark mask boxes were removed; labels now use only a subtle shadow.
  • Skill buttons are back to a single row.
  • Keyboard highlights were made slightly stronger.
  • 6-aura areas were renamed/reframed as 六重険路: steep routes toward the 12-aura final core.

Update: text clipping fix

  • Training battles no longer show the long top story text.
  • Training explanation is shown before starting the training.
  • Battle flavor text uses a smaller caption and up to three lines.
  • Long final/multi-stage flavor text was shortened to avoid clipping.

Update: gauges, map memory, resonance/taitoku

  • Skill effect gauges are displayed above the skill buttons with a stable height.
  • Returning to the field map now scrolls back near the previously selected node.
  • Locked map nodes can be tapped to show reward information, but cannot be challenged yet.
  • Clear result now displays immersive resonance wording instead of S/A/B rank:
    • 体得: average response <= 0.50 sec
    • 澄響: average response <= 0.75 sec
    • 残響濃し: average response <= 1.00 sec
    • 残響あり: average response <= 1.50 sec

Update: taitoku threshold / gems / aura label / map focus

  • 体得基準を平均応答1.00秒以内に変更。
  • 敵下のオーラ音名をさらに大きくし、該当オーラ色の半透明背景を追加。
  • マップ復帰位置をUserDefaultsに保存し、選択地点を中央固定ではなく左上寄りに戻すよう調整。
  • 20個の宝玉・技案を GEM_SKILL_DESIGN.md として追加。
  • 未開放ダンジョンの報酬表示を、汎用名から各宝玉名へ変更。

Update: gem upgrade system

  • Added 20 gem skill definitions.
  • First clear of a multi-aura dungeon obtains its gem.
  • Re-clearing an already cleared multi-aura dungeon strengthens that gem up to Lv5.
  • Existing battle skills now scale with related gem levels where already implemented.
  • Clear resonance display avoids S/A/B rank wording.

Update: speed-based gem strengthening and skill colors

  • Re-clearing an already cleared dungeon now strengthens the gem more when average response time is shorter:
    • <= 1.00 sec: +3 levels
    • <= 1.25 sec: +2 levels
    • otherwise: +1 level
  • Gem skills now include color definitions.
  • Current skill buttons are color-tinted for easier selection.

Update: gem level time thresholds

Gem strengthening now uses target level thresholds:

  • First clear: Lv1
  • Average <= 4.00 sec: Lv2
  • Average <= 2.00 sec: Lv3
  • Average <= 1.00 sec: Lv4
  • After Lv4, another <= 1.00 sec clear reaches Lv5

Build fix

  • Removed a stray leftover else if average <= 1.25 block in GameModel.swift.
  • This fixes the parser error that caused many follow-on Cannot find ... in scope errors.

Update: skill unlock flow and preserved map scroll

  • Initial visible battle skill is only 減速.
  • Other battle skills appear only after obtaining the matching gem.
  • Empty skill slots are shown to keep the skill area stable.
  • The field map now preserves the actual scroll offset while moving into and out of battles, instead of jumping back to the top-left.

Update: weapon customization and reset confirmation

  • Added a 武器カスタム screen from the map header.
  • Equipped skill gems determine which battle skills appear.
  • The initial equipped skill is only 減速.
  • Matching gems unlock skills; up to 6 can be equipped.
  • Reset progress now shows a confirmation dialog before clearing data.

Update: initial twelfth listen

  • Added 十二分聴 as an initial skill alongside 減速.
  • 十二分聴 costs MP 255.
  • In training, MP is not consumed, so it is mainly intended for practice confirmation.
  • It narrows candidates down to 1 note.
  • It is treated as a father-given initial gem/skill and cannot be removed from the weapon.

Update: removable initial skills

  • Initial skills 減速 and 十二分聴 are now removable from the weapon customization screen.
  • They remain always unlocked, so they can be re-equipped later.
  • Reset returns the weapon to the initial state with both equipped.

Update: gem labels, Sanbun listen, resonance gauge

  • Renamed the father-given gem to 古律の宝玉.
  • Built-in gems now show 授与済 instead of 未入手.
  • Added 三分聴, obtained from 二重洞 F/C, narrowing candidates to 4.
  • Weapon customization cards now show where each gem is obtained.
  • Removed gem-obtain wording from locked map node descriptions.
  • Added a resonance gauge under MP showing average tuning time and gem level thresholds.

Update: potential gems, debug clear, outer gems

  • Clear overlay now shows average tuning seconds only, not gem/potential targets.
  • Resonance gauge is moved under the HP/MP top area with fixed height.
  • Long-press the battle top status area to reveal debug clear buttons.
  • Weapon customization now shows cost, function, potential-stage effects, and source location.
  • Added gems for all 12 single-aura outer dungeons.
  • User-facing wording prefers 潜在 over 宝玉Lv.

Update: compact customization, traits, and stealth skill

  • Weapon customization is split into 技 and 特性.
  • Skill cards are compact, with one-line summaries.
  • Tapping a card opens a detail panel with quantitative potential effects.
  • Skills and traits each have up to 6 equipped slots.
  • Added 気配断ち: pauses the enemy beat for a few seconds, but the player cannot attack during it.

Update: revised skill/trait table

  • Reflected the user-revised skill and trait table.
  • Initial active skills are now 十二分聴 and 根音視.
  • 緩拍 is now obtained from D近郊.
  • Added HP small/medium/large recovery skills.
  • Updated 二分聴 / 三分聴 / 四分聴 / 六分聴 acquisition points and costs.
  • 気配断ち now hides the enemy and cancels when the player presses a key.
  • Added multiple passive traits: auto HP/MP recovery, tuning recovery, max HP/MP, risk traits, and beat-slow traits.

Build fix and trait replacement

  • Restored missing GameModel methods used by ContentView:
    • skillColor(_:)
    • activateEquippedSkill(_:)
  • Rewrote some Button and ForEach code to avoid SwiftUI generic inference errors.
  • Replaced the HP10% beat-slow trait with 延響律, which extends skill effect duration:
    • 潜在1:+2秒
    • 潜在2:+4秒
    • 潜在3:+8秒
    • 潜在4:+16秒
    • 潜在5:+32秒

追加修正

  • ContentView.swift の game.gemRewardText(for: dungeon) 呼び出しに対応する GameModel.gemRewardText(for:) を追加
  • 単独オーラ戦の背景をオーラごとの専用背景へ切り替え
    • C/G/D/A/E/B/G♭/D♭/A♭/E♭/B♭/F それぞれ専用
  • 二重・四重・六重・最終戦は既存の個別背景を継続使用

今回の追加

  • フィールドマップを同心円ごとの RPG 風レイヤー構成へ変更
    • 外周拠点帯
    • 二重洞帯
    • 四重洞帯
    • 六重険路
    • 無音の核
  • 背景側に街・洞窟・遺跡・険路・核の意匠を描き込み、ノード位置と地形の対応を強化
  • 単独オーラ 12 地点それぞれに固有の地名とフレーバーテキストを追加
  • 単独戦・中層戦・最終戦の戦闘説明文を背景イメージに合わせて再調整

Story update: fighting motive

  • Added a prologue screen between title and map.
  • The map is now framed as 音環島, an island whose center governs the concept of sound.
  • The twelve outer bases maintain the island's tuning order.
  • C is now Cの灯火港, the harbor town where the father trains the protagonist.
  • The father initially uses 十二分聴 to guide the protagonist, then is sealed by his old friend.
  • The old friend becomes/serves the 無調律の力 because of resentment toward people who can play freely and accurately.
  • The protagonist's motive is to cross the island, reach 無音の核, stop the disappearance of music, and prove that anyone can reach free musical expression.

Build fix

  • Fixed ambiguous cos / sin calls in the RPG-style map background.
  • Added an unlabeled initializer to MapZoneText, fixing Missing argument label 'text:' in call.

Update: rewards and final-depth story

  • Reverted the field map background toward the previous clearer version.
  • Enlarged enemy display size.
  • First-time gem acquisition now uses clear average time to set the initial potential.
  • First-time gem acquisition now displays only the obtained gem and potential, without 共鳴 wording.
  • Weapon customization header now changes by tab: skill slots on 技, trait slots and totals on 特性.
  • Multi-aura and final nodes now open an explanation panel before battle.
  • Area/detail panels now show reward and potential thresholds.
  • Final core has three depth phases with story intermissions and a final scene where the former friend smiles and throws himself into the silent abyss.

Update: full-screen area details

  • Area clicks now transition to a full-screen detail view rather than showing an inline map panel.
  • Multi-aura and final-core areas now use the same full-screen pre-battle detail flow.
  • Battle flavor text is no longer shown during combat; it is shown on the pre-battle detail screen.
  • Aura badge text under enemies is reduced to about 70% size.
  • Reward text now includes the gem effect.
  • Removed the unnecessary “初回でも平均に応じて…” wording.
  • Fixed the final-core ending text persisting after clearing other areas.

Production phase start

  • Fixed clearedFinalCore private access from ContentView.swift.
  • Added GameModel.isFinalCoreClearedForView as a read-only view-facing property.
  • Added PRODUCTION_IMPLEMENTATION_PLAN.md.

Update: locked rewards and final intermissions

  • Cleans old equipped skill/trait settings via a data-version migration.
  • Locked areas now open the full-screen detail view and show reward/effect information.
  • Final core no longer tells the player there are three phases beforehand.
  • Final core now pauses after each internal phase and shows dialogue before resuming.
  • Final intermission dialogue no longer remains after clearing unrelated areas.

Bug fix: trait reset and defeat overlay

  • Fixed trait helper functions returning level-1 values even when a trait is not equipped.
  • Reset now removes saved equipped trait/skill/gem/combo-performance keys before writing the clean default state.
  • Clear-only results, gem rewards, level-up text, and final-core scenes are shown only on victory.
  • Defeat now clears reward/final-scene/intermission text immediately.

Compiler-safe rebuild v2

  • Rebuilt from the last stable trait_reset_lossfix line instead of the dialogue branch.
  • Moved all long map-detail text generation out of MapView.body and into GameModel.
  • Replaced inline MapInfo(...) construction in ForEach closures with simple calls:
    • game.auraMapInfo(aura)
    • game.dungeonMapInfo(dungeon)
    • game.finalCoreMapInfo()
  • Added area dialogue, multi-area solo rationale, and final-core pre-battle dialogue.
  • Added upper-to-lower connected route unlocking.
  • Moved 気配断ち to F近郊 and HP小回復 to G近郊.
  • Changed user-facing wording to 宝玉レベル.
  • Hides unowned items in weapon customization and fixes the equip button readability.

Build fix: string literals

  • Fixed broken newline string literals in GameModel.rewardThresholdText and levelDetailLines.
  • The generated Swift source now uses escaped \n inside string literals instead of accidental physical line breaks.

Update: HP/MP, reward display, and multi-area individuality

  • Battle start now fills HP/MP to the current max including equipped traits.
  • Max HP/MP no longer increases just because the player enters deeper areas.
  • Pre-battle reward text is now shown in a larger dedicated reward detail box near the battle button.
  • Reward details are grouped in the same style as the weapon customization detail panel.
  • Multi-aura areas now have more individual names, lore, and dialogue.
  • Four-aura areas are no longer all treated as tower-like areas.

Update: world setting and father advice

  • Applied the far-future / ancient-civilization setting.
  • The island is framed as 音環島 / 屋久の環, with an ancient sound-core at the center.
  • Replaced 能力者 wording with 真律者.
  • Rewrote father dialogue to be warmer and less commanding.
  • Removed the visible outer-area training button.
  • Added father advice during outer-area battles, e.g. direction from the current root by semitones.
  • Fixed broken multiline string literals in dialogue and reward-detail text.

Update: father advice wording

  • Removed the real-world technical word 半音 from user-facing father advice.
  • Advice now uses keyboard/in-world wording such as 右へ○つ先の鍵 / 左へ○つ先の鍵.

Build fix

  • Fixed Extra argument 'rewardDetail' in call by adding rewardDetail to MapInfo.
  • Kept reward details displayed in the pre-battle detail screen.
  • Rechecked newline string literals in reward detail text.

Build fix: MapInfo.rewardDetail

  • Fixed Extra argument 'rewardDetail' in call.
  • Patched MapInfo definition to include rewardDetail: String = "".
  • Checked both ContentView.swift and GameModel.swift because the MapInfo struct location differed between branches.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages