godot-genre-idle-clicker について
Godotで放置系クリッカーを開発するためのスキルです。巨大数の経済、オフライン収益、パフォーマンス、転生進行に関する設計指針とスクリプトを備えています。
主な機能
- 01仮数・指数による通貨演算
- 02生成器コストの指数増加
- 03UNIX時刻によるオフライン収益計算
- 04シグナル駆動のUI更新
- 05スレッドによる追いつき処理
活用シーン
- 01浮動小数点の範囲を超える通貨の表現
- 02ゲーム終了中の収益計算
- 03放置ゲームのUIとCPU負荷の軽減
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thedivergentai/ game-dev-agentic-skills --skill godot-genre-idle-clickerインストール後、Claude Code で/godot-genre-idle-clickerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/expert-idle-clicker-patterns.mdmigration-notes.mdscripts/big_int_save_parser.gdbig_number.gdbig_real.gdclick_juice_manager.gddecoupled_economy_signal_bus.gdfunctional_income_reducer.gdgenerator.gdidle_performance_setup.gdlightweight_upgrade_resource.gdoffline_progress_calculator.gdoffline_progression_manager.gdprecision_cost_validator.gdscientific_notation_formatter.gdscientific_notation_math.gdthread_safe_ui_updater.gdthreaded_catchup_simulator.gd詳細
絶対に避けること(エキスパート向けアンチパターン)
経済と数学
- 通貨に標準の浮動小数点数を絶対に使用しないでください。1e308 での
INFクラッシュを防ぐため、必ず BigNumber(仮数/指数)システム(例:1.5e300)を実装してください。 - 収益の生成に
Timerノードを絶対に使用しないでください。フレーム変動によるずれを防ぐため、必ず_process(delta)内で手動のアキュムレーターを使用してください。 - ジェネレーターのコストや成長率を絶対にハードコードしないでください。業界標準の 1.15x を使い、必ず指数関数式
Cost = BasePrice * pow(GrowthFactor, OwnedCount)を使用してください。 - 浮動小数点数の完全一致(
==)を絶対に判定しないでください。精度損失による進行の停止を防ぐため、必ずis_equal_approx()または>=を使用してください。 - 科学表記の文字列を絶対に
to_int()で解析しないでください。必ずto_float()または専用の BigNumber パーサーを使用してください。
パフォーマンスと最適化
- 毎フレーム、すべての UI ラベルを絶対に更新しないでください。値が変わったときのみラベルを更新するよう、必ず シグナル を使用するか、更新頻度を 10 FPS に抑えてください。
- モバイルで Low Processor Usage Mode を絶対に無視しないでください。バッテリーを長持ちさせるため、必ず
OS.low_processor_usage_mode = trueを有効にしてください。 - 毎秒数百個のテキストノードを絶対にインスタンス化/削除しないでください。クリック時のフィードバックには、必ず オブジェクトプーリング または
MultiMeshInstanceを使用してください。 textプロパティを変更して大規模なログを絶対に更新しないでください。メインスレッドのブロックを防ぐため、必ずappend_text()を使用してください。
プレイヤー体験と永続化
- オフライン進行 を絶対に無視しないでください。システムの UNIX タイムスタンプ(
Time.get_unix_time_from_system())を使い、必ずseconds_offline * total_revenueを計算してください。 - 「プレステージ」リセットを損失のように絶対に感じさせないでください。次のプレイが大幅に速くなるグローバル倍率(2~5 倍)を必ず用意してください。
- オフライン時間の計算に
Time.get_ticks_msec()を絶対に使用しないでください。アプリの再起動時にリセットされるため、必ず 永続化される UNIX タイムスタンプ を使用してください。 - 生データに Node 階層を絶対に使用しないでください。軽量でシリアライズ可能なロジックには、必ず
RefCountedまたはResourceオブジェクトを使用してください。
🛠 エキスパート向けコンポーネント(scripts/)
対応するシステムを実装する前に、以下を必ず読んでください:
- big_number.gd — float の INF を超える仮数+指数
- generator.gd — 指数関数的なコスト/レート単位
- scientific_notation_formatter.gd — K/M/B/T および科学表記の表示
- offline_progress_calculator.gd — UNIX によるオフライン経過時間の補填(
ticks_msecは使用しません)
エキスパート向けの元のパターン
- big_number.gd - e308 以上のスケールに対応する仮数+指数の計算。
- generator.gd - 指数関数的なコスト単位と生産レートの計算。
- scientific_notation_formatter.gd - 読みやすい K/M/B/T および科学表記の接尾辞。
モジュール式コンポーネント
- offline_progress_calculator.gd - UNIX タイムスタンプによる現実の経過時間の追跡。
- functional_income_reducer.gd - 高速な収益合計のパターン。
- threaded_catchup_simulator.gd - WorkerThreadPool によるバックグラウンドでの経過分の補填。
- precision_cost_validator.gd - コスト曲線/購入可能性のチェック。
- scientific_notation_math.gd - フォーマッター用の共通仮数ヘルパー。
- idle_performance_setup.gd -
low_processor_usage_mode+ シグナルによる UI 更新頻度の制御。 - decoupled_economy_signal_bus.gd - 経済→UI シグナルの更新頻度の制御。
- lightweight_upgrade_resource.gd - アップグレード用
.tresパターン。 - big_int_save_parser.gd - 巨大な数値を安全に永続化。
- thread_safe_ui_updater.gd - スレッド処理による経過分の補填後に UI を遅延更新。
コアループ
- クリック → 2. ジェネレーターを購入 → 3. 放置収入 → 4. アップグレード → 5. プレステージ
判断ツリー
数値と表示
| 必要なもの | 対応 |
|---|---|
| ~1e308を超える値 | 必須 big_number.gd |
| ラベル/省略表記 | 必須 scientific_notation_formatter.gd |
| ~1.15^nのコスト曲線 | generator.gd + precision_cost_validator.gd |
オフラインとパフォーマンス
| 必要なもの | 対応 |
|---|---|
| オフライン分の進行計算 | 必須 offline_progress_calculator.gd(UNIX時刻) |
| 長時間の進行計算 | threaded_catchup_simulator.gd |
| バッテリー/アイドル時のCPU使用率 | idle_performance_setup.gd |
スキル本文にBigNumber/Offlineのチュートリアルを再度埋め込まないでください。上記のスクリプトを読み込んでください。
スキルチェーン
| フェーズ | スキル | 目的 |
|---|---|---|
| 1. 数学 | godot-gdscript-mastery | ビッグナンバー演算 |
| 2. UI | godot-ui-containers、labels | 科学表記/接尾辞付きラベル |
| 3. データ | godot-save-load-systems | オフラインのタイムスタンプ+プレステージ |
| 4. ロジック | signals | 更新頻度を抑えた経済UI |
| 5. バランス調整 | godot-monte-carlo-balancer | マイルストーン到達までの時間帯 |
よくある落とし穴
| 落とし穴 | 解決策 |
|---|---|
| Expert Componentのhrefが誤っている | 上記のリンクは、正規のbig_number/generator/formatterを参照しています |
オフライン処理でTime.get_ticks_msecを使用 | オフライン計算機経由でUNIX時刻を使用します |
| 毎フレームUIを更新 | economy bus/performance setup経由でシグナルによる更新頻度の制御を行います |
エキスパート向け知識(必要に応じて)
LLMの無知に関するルール: 一般的なエージェントが読む前に知らない内容なら、リファレンスを読み込んでください。エキスパート固有の差分は削除しないでください。
- expert-idle-clicker-patterns.md — 基本となる教育的内容を復元(アーキテクチャ、理由、実装の詳細)
- big_real.gd
- offline_progression_manager.gd
- click_juice_manager.gd
リファレンス
段階的な情報開示:特定のAPIを調査するときにのみ公式ドキュメントへのリンクを開いてください。関連スキルは、同じ領域のスキルに引き継ぐときに読み込み、スキル全体の一覧を事前に読み込まないでください。
公式ドキュメント
- アイドル処理と物理処理 — 収益は、ずれが生じる
Timerノードではなく、_process(delta)(または固定シミュレーションティック)で蓄積する必要があります。これにより、ジェネレーターはフレームレートに左右されずに動作します。 - Time — オフライン中の進行状況の反映には
Time.get_unix_time_from_system()を使用します。アプリの再起動時にリセットされるget_ticks_msec()は使用しないでください。 - ゲームの保存 — 通貨、ジェネレーター数、プレステージ倍率、最後に保存した UNIX タイムスタンプを永続化し、再起動後も復帰時の収益を維持します。
- データパス — オフライン用のタイムスタンプや大きな数値の文字列を各プラットフォームで書き込めるよう、セーブデータは
user://に保存します。 - リソース — ジェネレーター、アップグレード、プレステージ曲線は
.tresリソースとして定義し、コードを変更せずにデザイナーがcost_growth_factorを調整できるようにします。 - GDScript のエクスポート — 基本コスト、収益率、成長係数を
@exportで公開し、バランス調整をインスペクターから行えるようにします。 - シグナルの使用 — 残高が変化したときだけ
currency_updatedを発行し、HUD のラベルが毎フレーム書き換えられないようにします。 - OS — ジェネレーターの待機に時間の大半を費やすモバイルのアイドルセッションでは、
OS.low_processor_usage_mode(および sleep usec)を有効にします。 - 複数スレッドの使用 — 長時間にわたるオフライン進行状況のシミュレーションは
WorkerThreadPoolで行います。数千ティックを再生している間、UI をブロックしてはいけません。 - スレッドセーフな API — シミュレーション結果をラベルに反映するには、このページに記載されている
call_deferredとメインスレッドのルールに従う必要があります。 - 文字列のフォーマット — K/M/B の接尾辞や
%.2fe%dの科学表記には、適切な書式指定文字列が必要です(適切な場合はString.num_scientificも使用します)。 - RefCounted — BigNumber とアップグレードのデータは、Node ツリーではなく、軽量な
RefCounted/Resourceデータにする必要があります。
関連スキル
前提条件
- godot-gdscript-mastery — 仮数/指数クラス、
powによる成長、精度を保った比較(is_equal_approx)は、放置型経済を構築するうえで基礎となる GDScript のパターンです。 - godot-resource-data-patterns — バランス曲線をデータ駆動の
.tresアセットとして維持するため、ジェネレーターとアップグレードの定義はリソースを中心に設計します。 - godot-signal-architecture — 通貨の疎結合なバスは UI にシグナルを送り、ラベルからシミュレーションのウォレットを変更できないようにします。
- godot-save-load-systems — オフライン進行状況とプレステージ状態を扱うには、UNIX タイムスタンプと大きな数値の文字列を安全に保存できる、バージョン管理されたセーブハンドラーが必要です。
補完
- godot-economy-system — ゲームにショップやプレステージショップを追加する段階になったら、ソフトカレンシーのウォレット、消費先、トランザクション API をアイドル系ジェネレーターと組み合わせます。
- godot-ui-containers — ジェネレーターのリストやアップグレードのグリッドには、更新頻度を抑えたラベルを紐付けた
GridContainer/VBoxContainerのレイアウトを使用します。 - godot-ui-rich-text — 指数表記、サフィックス文字列、追記専用ログには、巨大な
textの塊を作り直すのではなく、Label/RichTextLabel のパターンを使用します。 - godot-performance-optimization — 低プロセッサーモード、UI の更新頻度抑制、プール化したクリックエフェクトにより、モバイルでもアイドルループのバッテリー消費を抑えられます。
- godot-autoload-architecture — シーンの再読み込み後も維持するシミュレーションマネージャーや経済バスは、Autoload の所有権ルールに従う必要があります。
- godot-particles — クリック時のフィードバックには、タップごとに Label ノードを生成するのではなく、バッチ処理された
GPUParticles2D.emit_particleを使用します。
下流/利用者
- godot-monte-carlo-balancer — コスト曲線とプレステージ倍率を Resource 駆動にした後、成長率をリリースする前に、モンテカルロ方式のキャリアシミュレーションで目標達成までの時間帯(勝率ではなく)を検証します。
- godot-platform-mobile — スマートフォン向けにアイドルゲームをリリースする際は、このジャンル向けスキルの低プロセッサーモード、バックグラウンドからの復帰、オフライン進行の反映パターンを活用します。
マスター
- godot-master — ライブラリのルーターおよびミラー化されたモジュールのエントリーポイントです。関連スキルの検索や、Domain Skill の編集後に共有スクリプトのミラーを同期する場合に使用します。
コメント
Markdown 対応