Release Specification / Ver1.3.0

クラリィのぷくぷくシャボン玉はこび 仕様書

Ver1.3.0 は、シャボン玉を弾くプレイ快感と、眺めて落ち着ける水中体験をさらに強めたリリースです。 追加された海の24時間サイクル、設定/ポーズからの時間帯切替、クラゲコンパニオンを中心に、ゲーム仕様・技術仕様・スクリプト構成・ログをまとめます。

Unity 6000.3.10f1 / URP UI Toolkit iOS / Android bundleVersion 1.3
New: Ocean 24h Cycle New: Jellyfish Companion Clock / Pomodoro / Timer PlayFab Ranking
タイトル画面
クラゲアイコン

ゲーム概要

基本体験

プレイヤーはクラリィを操作し、頭の判定エリアでシャボン玉を弾いてスコアや距離を伸ばします。 操作はシンプルですが、ヒット音、破裂音、端末振動、Bubbleのぷにょ変形、海中演出により「触って気持ちいい」反応を重ねています。

  • 頭の中心に近いほど高得点・高精度。
  • Normal / Time Attack / Center Hit の3モード。
  • 落下・時間切れ・規定ヒットでリザルトへ遷移。

作業用体験

Clock Mode / Pomodoro / Timer は、海中の美しさとクラリィのかわいい動きを活かした「眺めるゲーム」機能です。 Ver1.3では海の時間帯を実時刻や好みに合わせられるため、勉強・作業・休憩の背景としての価値が強まりました。

  • タイトルは実時刻・季節に連動する海を表示可能。
  • ゲーム中もポーズから昼/夕焼け/日没/夜へ即時切替。
  • クラゲコンパニオンが長時間滞在時の癒やし要素になる。
  • 仕様書のTitle代表画面は昼を基調にし、夕方・夜は海時間サイクルの差分として紹介。
正式名称
クラリィのぷくぷくシャボン玉はこび / Bubble Pop
ジャンル
海中カジュアルアクション、チル作業用ゲーム、時計/ポモドーロ/タイマー補助
対象端末
iOS / Android。Android Min SDK 33。
現行バージョン
bundleVersion: 1.3 / iOS 1.3.0 / Android versionCode 103
主な実装方針
Unity Input System、UI Toolkit、URP、イベント駆動、PlayFabランキング、モバイル触覚フィードバック。

Ver1.3.0 リリース差分

Ver1.3.0 の中心は「時間で表情を変える海」と「クラリィのそばに集まるクラゲ」です。 既存のゲームモードやストア/ランキング機能は維持し、タイトル・設定・ポーズ・水中演出の体験密度を上げています。

区分内容主な実装
新規24時間の海中時間帯サイクル。Day / Dawn / GoldenSunset / Sunset / Night を日の出・日の入り相対で補間。OceanTimeOfDayCycle / OceanTimeOfDayProfile
新規タイトルは端末の実時刻と日付に連動。愛媛県伊予市/松山相当の夏至・冬至モデルで日の出/日の入りを近似。ResolveHour() / ResolveSeasonT()
新規設定画面・ポーズ画面に「現実 / 日中 / 夕焼け / 日没 / 夜」の海時間タブを追加。SettingsController / PauseController
新規海の時間帯をシーン別に保存。タイトル、Normal、TimeAttack、CenterHit で独立スロットを持つ。GameSettingsStore / GameModeInfo
新規ゲーム3シーンへ OceanTimeOfDayCycle を実行時に自動付与。シーンへの手動配置漏れを防ぐ。OceanCycleBootstrap
新規クラゲコンパニオン。画面外から登場し、クラリィ/プレイヤーの周囲に定着して漂う。JellyfishCompanion / JellyfishCompanionManager
新規クラゲ用アニメ付きFBX、Animator Controller、半透明URPマテリアル、セットアップEditorツール。JellyfishCompanionSetup / Jellyfish.mat
更新時間帯Profileに Dawn を追加。Profile共有時に地形高さでカースティクスがずれないよう配置適用フラグを追加。OceanTimeOfDay.Dawn / applyCausticsPlacement

画面・素材ギャラリー

Ver1.3の実機画面を反映した縦画面の代表ギャラリーです。Titleは昼の画面を主役にし、 夕方・夜は海時間サイクルのバリエーションとして扱います。3モード選択、Clock / Pomodoro / Timer、 衣装クローゼット、海時間タブ付き設定、ゲーム中のHUD、結果、ランキング、ストアを確認できます。

タイトル画面Title

ver 1.3.0表示、クラリィ、時計/設定/クローゼット/ランキング/ストアへのホーム。

時計・ポモドーロ・タイマーClock / Pomodoro / Timer

時計、ポモドーロ、タイマーを切り替える作業用モード。

衣装クローゼットCloset

貝がら残高と衣装カードを表示し、クラリィの衣装を切り替え。

ランキングRanking

距離ランキングと自分の順位を表示。実機ではPlayFab名簿を確認。

ゲームモード選択Mode Select

Normal、どまんなか、タイムアタックの3モードをタイトル下部から選択。

NormalゲームプレイNormal

ゲームシーンでBubbleを弾く通常プレイ。バブル、クラリィ、距離、ヒット数、貝がらHUDを表示。

Center HitゲームプレイCenter Hit

15回制の中心ヒット。命中率、スコア、ヒット回数を表示。

Time AttackゲームプレイTime Attack

60秒制の距離チャレンジ。タイマー、距離、夜の海時間HUDを表示。

リザルトResult

距離、スコア、平均、拾った貝がら、復活/再試行/シェア導線。

設定Settings

BGM/SE/振動、ユーザー情報、問い合わせ、海時間タブを管理。

ストアStore

ゲーム内/ストア課金タブ、広告削除・衣装購入・購入復元。

ゲームモード

Normal icon

Normal Endless

Bubbleを落とすまで続く基本モード。距離、ヒット回数、命中率、スコアを伸ばす。海時間の既定は 日中

  • スコア、総移動距離、最大/平均精度を記録。
  • 同じ位置での放置連続ヒットはコンボガードで抑制。
  • 落下/破裂でリザルトへ移行。
Time Attack icon

Time Attack

60秒でどれだけ距離とスコアを伸ばせるかを競う短時間モード。海時間の既定は

  • 時間切れまたは落下で終了。
  • テンポ重視。ランキング/シェアとの相性が高い。
  • ポーズ画面から海時間を即時変更可能。
Center Hit icon

Center Hit

15回のヘディングで中心精度を競う採点モード。海時間の既定は 夕焼け

  • 中心ほど高得点。端でも最低命中率を保証。
  • 連続高精度でコンボ倍率が上昇。
  • Bubbleの水平移動はランダム方向で、中心狙いを成立させる。

Bubble 挙動 / 当たり判定 / Shader 詳解

Bubble は HeadingBall の物理、BubbleEffect のヒット変形、 BubbleShader の透明膜、BubbleBurst の破裂演出で構成されます。 Ver1.3でも中核ロジックは維持されています。

通常モードの跳ね返り

  1. Bubble が HeadingZone に衝突する。
  2. 頭ローカル座標へ変換し、中心からの offset を求める。
  3. centerThreshold 内は真上、外側は衝突方向へ Slerp して角度を付ける。
  4. targetHeightY と滞空倍率から垂直初速・カスタム重力を計算。
  5. 水平速度を更新し、Bubble の linearVelocity へ反映。

放置コンボ防止

Normal / TimeAttack では、前回とほぼ同じ頭ローカル位置で連続ヒットした場合に comboGuardDistancecomboGuardMaxRepeats で放置判定します。 閾値を超えると命中率を0にし、ランダム水平ナッジでループを崩します。

Center Hit は毎回ランダム方向へ飛ばすため、同じ位置での放置ループが成立しにくい設計です。

当たり判定と命中率

localHitPos = zone.InverseTransformPoint(ballPos) offsetXZ = new Vector2(localHitPos.x, localHitPos.z) offset = offsetXZ.magnitude accuracy = CalculateAccuracyScore(offset) hitColor = CalculateHitColor(localHitPos)
項目通常 / TimeAttackCenter Hit
命中評価中心からの距離でスコア化。精度は色にも反映。CenterHitAccuracy(offset)。中心100%、端でも最低保証。
跳ね返り方向中心は上、外側はヒット方向へ角度をつける。採点と跳ね返りを分離し、毎回ランダム水平方向へ飛ばす。
二重判定衝突判定と状態管理で抑制。centerHitHitCooldown 0.3秒
壁反射壁衝突時はステージ内へ戻す。水平方向だけ反射し、テンポを保つ。

シャボン玉 Shader

透明膜とFresnel

BaseColor、Alpha、Fresnel を組み合わせ、外縁ほど光る薄膜感を作ります。 命中方向の色は MaterialPropertyBlock 経由で個体へ反映し、共有Materialを汚さない設計です。

ぷにょ変形

BubbleEffect.TriggerHitSquish(finalDir) が衝突方向を渡し、 _SquishProgress を減衰振動として更新します。 Shader は _HitDirection 軸を縮め、直交方向を膨らませます。

Shader/Material パラメータ役割
_BaseColorBubble本体の薄い色。ヒット色と元色をブレンドする。
_FresnelColor外縁の発光色。命中方向・反応の気持ちよさを視覚化。
_SquishProgressヒット直後の変形量。時間経過で0へ戻る。
_HitDirectionどの方向へ潰すか。物理反射方向に対応。
_Surface / _SrcBlend / _DstBlendURPの透明描画/アルファブレンド。パーティクルやクラゲMaterialでも手動設定が必要な箇所あり。

Ver1.3 海の時間帯サイクル

OceanTimeOfDayCycle は時間帯Profileをキーフレームとして並べ、現在時刻に応じて海の色・フォグ・ライト・HUD・魚の見え方を滑らかに補間します。 タイトルは実時刻、ゲームシーンは各モードの既定Profileを基準にします。

Night
白み始め前
Dawn
日の出
Day
昼プラトー
Gold
夕方
Sunset
日没
Night

時刻ソース

RealTime端末の DateTime.Now と実日付。タイトル向け。
Fixed_fixedProfile を常時適用。ゲーム3シーン向け。
Manual_debugHour スライダー。調整・プレビュー用。

季節モデル

愛媛県伊予市/松山相当の値をもとに、夏至と冬至の日の出・日の入りをcosで補間します。 Fixedモードでは安定したゲーム画面を優先し、季節係数は0.5で固定します。

夏至日の出 4:58 / 日の入り 19:23
冬至日の出 7:10 / 日の入り 17:05

既定キーフレーム

#Profile基準Offset意味
1NightSunrise-0.5h日の出30分前、白み始め。
2DawnSunrise0h夜明けのピーク。
3DaySunrise+1.5h完全な昼へ。
4DaySunset-2.5h昼プラトー終わり。
5GoldenSunsetSunset-1.5hゴールデンアワー。
6SunsetSunset-0.75h夕焼け・薄明。
7NightSunset+0.5h完全な夜。

soft-only 適用

ランタイムでは OceanUnderwaterSettings.ApplySoftTo() を使い、色・強度・フォグなど軽量な値だけを反映します。 最後に ApplyExternalEnvironmentChanges(false) を呼び、光柱・粒子・カースティクスの再生成を避けます。

カースティクス配置保護

TitleとGameではTerrain高さが異なります。共有Profileが groundY を上書きすると光模様が床下へ潜るため、 applyCausticsPlacement がONのときだけ配置を適用します。

設定 / ポーズの海時間タブ

現実日中夕焼け日没
シーン既定保存キーUI導線
TitleReal(実時刻+季節)settings_ocean_time_of_day_title設定画面
NormalEndlessDaysettings_ocean_time_of_day_normalポーズ画面
TimeAttackNightsettings_ocean_time_of_day_timeattackポーズ画面
CenterHitGoldenSunsetsettings_ocean_time_of_day_centerhitポーズ画面
タブ選択 GameSettingsStore保存 OnOceanTimeOfDayChanged Cycle.ApplyNow() 海が即時切替

Ver1.3 クラゲコンパニオン

クラゲコンパニオンは、クラリィやプレイヤーの周囲を長時間ふわふわ漂う癒やし要素です。 タイトルでは経過時間で増え、ゲームでは距離連動に切り替えられる構造になっています。

生成ルール

時間スケジュール15, 45, 180, 600秒。タイトルでは15秒で1匹、45秒で2匹、3分で3匹、10分で4匹。
距離連動15, 40, 80, 140m。"Bubble"タグの HeadingBall.TotalTravelDistance を読む。
同時生成SPAWN_STAGGER 0.6秒 で1匹ずつ。スロット数と maxCompanions で上限。
ターゲットTitleClarieControllerPlayerController の順に自動検出。Explicit指定も可能。

配置スロット

中心は target.position + (0, 0.6, 0)。既定はクラリィ周囲4点です。Sceneビューでは選択時ギズモで番号付きの球が表示されます。

#1(-0.80, -0.50, -0.30) 左下
#2(0.85, 0.70, -0.30) 右上
#3(0.95, 0.00, -0.20)
#4(-0.85, 0.60, -0.30) 左上

1匹の状態遷移

Idle Approaching
画面外から一定速度
Attached
SmoothDampで追従
Leaving
上方へフェード

動きのロジック

  • 接近は Vector3.MoveTowards による一定速度。到着時に急に詰める不自然さを防ぐ。
  • 追従は Vector3.SmoothDampMAX_SMOOTH_DT 0.05 と1フレーム移動上限でワープを防止。
  • スロット内で wanderRadius とsin波を使い、固定点ではなく持ち場の中で漂わせる。
  • minDistanceFromCenter 0.85 でクラリィに近づきすぎない。

アニメとマテリアル

  • jellyfish_animated.fbx + Jellyfish.controller でFBXのベル収縮アニメをループ。
  • Animator+Controllerを検出した場合、コード側の拍動/上下浮遊/傾きは自動OFF。
  • Jellyfish.mat はURP/Lit Transparent、BaseColorは白寄り水色、Alpha 0.45。
  • フェードは MaterialPropertyBlock_BaseColor.a を個体ごとに更新。
Approaching: smoothPos = MoveTowards(smoothPos, followTarget, approachSpeed * dt) if Distance(smoothPos, followTarget) <= arriveDistance: phase = Attached velocity = 0 Attached: smoothPos = SmoothDamp(prev, followTarget, velocity, followSmoothTime, maxFollowSpeed, clampedDt) clamp per-frame movement to maxFollowSpeed * clampedDt Animated FBX: if Animator + RuntimeAnimatorController exists: position = smoothPos rotation = uprightEuler localScale = baseScale skip procedural pulse/bob/sway

搭載機能一覧

ヘディングゲーム

Bubble衝突、スコア、距離、命中率、難易度ランプ、コンボガード、壁反射、破裂。

モード選択

Normal / Time Attack / Center Hit をTitleのカードから選択。

Clock Mode

時計、ポモドーロ、タイマー。作業用・勉強用の眺める体験。

Jellyfish Companion

時間/距離でクラゲが増え、クラリィの周りを漂う。

Settings

BGM、SE、振動、海時間。UI Toolkitで構築。

Pause

再開、タイトル復帰、海時間切替。timeScale=0でも即時反映。

Ranking

PlayFabでランキング取得。未ログイン時はローカル表示。

Store / Ads

リワード広告、バナー、広告削除IAP、購入復元。

出現する魚の種類 / 頻度 / 特徴

FishParticleManager のデフォルト定義は13種です。画像素材が確認できる魚は12種で、 Oyabiccha は定義に存在しますが画像ファイルは今回未確認です。 ほぼ全魚種が avoidCenterArea = true で、プレイヤーとBubbleの通り道を避けます。

ソラスズメダイ

ソラスズメダイ

重み1.5、3〜7匹。青い高頻度差し色。

キンギョハナダイ

キンギョハナダイ

重み1.5、3〜7匹。暖色アクセント。

キュウセン

キュウセン

重み0.7、0〜2匹。低めの高さ。

チョウチョウウオ

チョウチョウウオ

重み1.2、1〜4匹。Hovering。

ハナゴイ

ハナゴイ

重み0.85、2〜4匹。紫ピンク。

キビナゴ

キビナゴ

重み0.8、5〜12匹。速い銀色の流れ。

マアジ

マアジ

重み0.65、2〜5匹。中層回遊。

イサキ

イサキ

重み0.55、1〜3匹。落ち着いた中型魚。

メバル

メバル

重み0.5、0〜2匹。海底近くでゆっくり。

マダイ

マダイ

重み0.95、1〜2匹。愛媛らしさ。

カワハギ

カワハギ

重み0.5、0〜2匹。StopAndGo。

ブリ

ブリ

重み0.25、0〜1匹。低頻度の見せ場。

魚種同時表示出現重み群れ動き特徴
Sorasuzumedai3〜71.5SmallGroup 2〜5GentleWave青い差し色。見せ場の多い高頻度枠。
Kingyohanadai3〜71.5SmallGroup 2〜5GentleWaveオレンジ系。ソラスズメダイ相当の頻度。
Kyusen0〜20.7NoneGentleWave砂地・岩場。低めに出る。
Chouchouuo1〜41.2NoneHoveringふわっと漂う観賞魚枠。
Hanagoi2〜40.85SmallGroup 2〜4GentleWave紫ピンクで色幅を追加。
Oyabiccha2〜40.85SmallGroup 2〜3GentleWave定義あり。画像ファイルは未確認。
Kibinago5〜120.8LooseStream 4〜8FastStraight銀色の小魚の流れ。
Maaji2〜50.65LooseStream 2〜4FastStraight自然なスピード感。
Isaki1〜30.55SmallGroup 2Straight落ち着いた中型魚。
Mebaru0〜20.5NoneHovering岩場・海底近く。
Madai1〜20.95NoneStraight愛媛らしさの主役魚。奥でも小さくしすぎない。
Kawahagi0〜20.5NoneStopAndGo止まる/動く変化。
Buri0〜10.25RareSmallGroup 2〜3FastStraight低頻度の大型回遊魚。実効重みは背景補正でさらに控えめ。

貝がら通貨 / 衣装コレクション

魚図鑑と同じ海のコレクションとして、10種の貝がらを用意しています。貝がらはクラリィの衣装と交換するゲーム内通貨です。 Normal Endlessではフィールドで拾い、Time AttackとCenter Hitではプレイへの集中を優先してリザルト報酬として獲得します。

モードフィールド貝がら獲得条件報酬リザルト表示
Normal Endless表示(同時5個)Playing中に接近して拾得貝がらごとの value(現行は1)貝がらアイコン + 「拾った貝がら +N」
Time Attack非表示60秒を完走3 + floor(ヒット数 / 10)、最大8貝がらアイコン + 「獲得した貝がら +N」
Center Hit非表示15回のヘディングをクリア6 + floor(最終スコア / 100,000)、最大10貝がらアイコン + 「クリア報酬 +N」

Normalの貝がらはプレイ開始時、または自分で拾った貝がらの20〜35秒後の再出現時だけに現れます。 未取得の貝がらをプレイヤー移動に合わせて再配置しないため、理由のない突然出現を防ぎます。

貝がらの種類一覧

SeashellDecorSetup.shells で一覧管理します。各定義は名称、テクスチャ、価値、出現重み、サイズ補正、色補正を持ち、 現行の10種はすべて価値1・重み1です。

青貝

青貝

価値1 / 重み1

アサリ

アサリ

価値1 / 重み1

アワビ

アワビ

価値1 / 重み1

ベニガイ

ベニガイ

価値1 / 重み1

ヒオウギガイ橙

ヒオウギガイ(橙)

価値1 / 重み1

ヒオウギガイ紫

ヒオウギガイ(紫)

価値1 / 重み1

イトカケガイ

イトカケガイ

価値1 / 重み1

サクラガイ

サクラガイ

価値1 / 重み1

サザエ

サザエ

価値1 / 重み1

ツメタガイ

ツメタガイ

価値1 / 重み1

貝がらで手に入る衣装

既定の「いつものワンピース」に加え、集めた貝がらで7着を交換できます。交換後はクローゼットから試着・装備でき、 タイトルとゲーム中のクラリィへ即時反映されます。

チェックスタイル

チェックスタイル

20 貝がら

ボーイッシュ

ボーイッシュ

50 貝がら

パジャマ

パジャマ

70 貝がら

夏ワンピ

夏ワンピ

120 貝がら

クラシックドレス

クラシックドレス

200 貝がら

チャイナドレス

チャイナドレス

300 貝がら

着物

着物

400 貝がら

有料課金で手に入る衣装 / 広告削除

iOSのStore「ストア課金」タブでは、貝がら交換とは別に衣装と広告削除を購入できます。 価格はストアの商品情報を優先して表示し、下記はカタログに設定された表示用の目安です。

学園制服

学園制服

目安 $1.00

アラビアン

アラビアン

目安 $2.00

魔法使いの服

魔法使いの服

目安 $2.00

プリンセス

プリンセス

目安 $2.00

商品商品識別子(公開用)内容価格 / 復元
広告削除••••••••バナー・インタースティシャル等の広告を削除。ストア表示価格 / 非消耗型・購入復元対応
学園制服、アラビアン、魔法使いの服、プリンセス••••••••購入後はクローゼットで試着・装備。ストア表示価格 / 非消耗型・購入復元対応

有料衣装のストア表示はiOS向けの仕様です。Androidでは同じ衣装を貝がら交換として扱い、iOS有料衣装の交換数は基準価格の一律2倍です(学園制服 1,000、アラビアン/魔法使いの服/プリンセス 各2,000貝がら)。

技術仕様

エンジン
Unity 6000.3.10f1、Universal Render Pipeline。
入力
Unity Input System。モバイル向けタッチ/仮想入力、プレイヤー移動。
UI
UI Toolkit(UIDocument、UXML、USS)。UGUI Canvasは基本使用しない。
描画
Bubble Shader、URP透明描画、UnderwaterDecorSetup、Renderer Feature、Particle System。
水中演出
カースティクス、光柱、浮遊粒子、スクリーン屈折、深度フォグ、魚群、サメ、クラゲ。
保存
PlayerPrefs。音量/BGM/振動、海時間、広告削除状態、ローカル統計など。
オンライン
PlayFabログイン/ランキング/Statistic送信。未ログイン時はローカルフォールバック。
収益化
AdMobリワード/バナー、IAP広告削除、購入復元。
ネイティブ
iOS/Android触覚フィードバック、Store Review、Native Share、iOS表示名ローカライズ。

スクリプト構成

GameSceneLogicManager.csHeadingBall.csPlayerController.csPauseController.csGameMode.cs。ゲーム進行、Bubble物理、入力、ポーズ、モード/海時間シーン区分。
Settings / UISettingsController.csGameSettingsStore.cs、UXML/USS。音量・振動・海時間タブを保存/反映。
Ocean TimeOceanTimeOfDayCycle.csOceanCycleBootstrap.csOceanTimeOfDayProfile.csOceanTimeOfDayProfileSet.cs、Editor。24hサイクル、固定Profile、Dawn、soft-only適用。
JellyfishJellyfishCompanion.csJellyfishCompanionManager.csJellyfishCompanionSetup.cs。クラゲ生成、追従、FBXアニメ、URP半透明Material生成。
Bubble EffectsBubbleBurst.csBubbleEffect.csBubbleRemnant.csBlobShadow.cs。破裂、ぷにょ変形、残骸、影。
Sea LifeFishParticleManager.csSeaLifeDecorSetup.csSeaLifeStreamingDecor.csSharkSpawner.csSharkSwimmer.cs。魚、サメ、装飾、品質プリセット。
Network / StoreLeaderboardClient.cs、AdMob、IAP、StoreReview、NativeShare。ランキング、広告、購入、レビュー、共有。
EditorOceanTimeOfDayCycleEditor.csOceanTimeOfDayControllerEditor.csJellyfishCompanionSetup.cs、iOS PostProcess群。調整・生成・ビルド後処理。

ログ一覧

ここではシステムのデバッグ出力ではなく、ユーザー操作・利用状況として記録される Unity Analytics のイベントと、 PlayFabへ送信する Statistic / ランキング値をまとめます。Debug.Log は実装診断用のため、この一覧の中心からは外します。

Unity Analytics: button_tapped

イベントパラメータ画面・ボタンの記録例
button_tappedscreenbuttonすべてのボタン操作を共通形式で送信。UGS初期化前は送信しない。
Titlescreen=TitleStartStart_NormalStart_TimeAttackStart_CenterHitClockModeSettingsRankingStoreCloset
Gamescreen=GameStartPauseResumeRetryStartOverTitleShareReviveAdTime_Day など。
Settings / Pausescreen=Settings または GameBgmSelectVibrationSelectContactTime_Real / Time_Day / Time_Sunset など。
ClockModescreen=ClockModeTab_ClockPlay_PomodoroPause_TimerReset_TimerCloseExit
Closet / Store / Ranking画面名 + 商品/操作名Equip_outfit_*Exchange_outfit_*Store_outfit_*Tab_InGameTab_RealMoneyRestoreSelectTypeSelectChoice

iOSではATTの許可状態を確認してからデータ収集を開始します。ATT拒否時はAnalytics収集を開始せず、初期化完了前のボタン操作もキューには入れません。

PlayFab: Statistic / ランキング

Statistic名記録タイミング集計
BubblePop_HighScoreNormal Endlessの新しいベストスコア確定時Maxヘディング回数
BubblePop_DistanceNormal Endlessの距離ベスト更新時Max距離(m × 10)
BubblePop_TotalScoreゲームオーバー時。セッション未送信分のみSum全モード累計ヘディング回数
BubblePop_TotalDistanceゲームオーバー時。セッション未送信分のみSum全モード累計距離(m × 10)
BubblePop_60secDistanceTime Attackの距離ベスト更新時Max60秒間の距離(m × 10)
BubblePop_CenterHitScoreCenter Hitのスコアベスト更新時MaxCenter Hitスコア
BubblePop_CenterHitAvePercentCenter Hitの平均命中率ベスト更新時Max平均命中率(0〜10000。87.65% → 8765)

PlayFab送信の扱い

  • ゲームオーバー時にモード別のStatisticを更新。
  • 複数Statisticは1回の UpdatePlayerStatistics にまとめて送信。
  • 未ログイン時は送信待ちキューへ保持し、ログイン後にまとめて送信。
  • ランキング画面は GetLeaderboardAroundPlayer で自分周辺を取得。

フォールバック

PlayFab未ログイン、開発者モード、SDK未定義時は、同じStatistic名に対応する PlayerPrefs のローカルベストを表示します。オンライン値とローカル値を混同しないよう、ランキング画面ではローカルフォールバックとして扱います。

Ver1.3 リリース確認観点

海時間

  • TitleでReal選択時、端末時刻に応じた見た目になる。
  • 設定タブでDay/Gold/Sunset/Nightへ切り替わり、保存後も維持される。
  • ゲーム中ポーズで海時間を切り替え、timeScale=0でも即時反映される。
  • Normal/TimeAttack/CenterHitの保存スロットが混ざらない。

クラゲ

  • Companion Prefabが各シーンで設定済み。
  • タイトル滞在15秒以降に画面外から自然に登場する。
  • Animator付きFBXではコード拍動がOFFになり、二重アニメにならない。
  • シーン遷移時にターゲット消失で自滅し、不要な残骸が残らない。

Appendix / 関連解説書

同じ Docs ディレクトリにある実装解説を、仕様書の補足として参照できます。