【MeisyoNX開発 vol.4】画面イメージを作っては考え直して

MeisyoNX作るよーということで、進めてまいりましょう。
前回 | 次回

コンセプトとキャラクターをある程度作ったので、画面イメージを作っていこうと思います。

中身を作り込む前に、おおよその画面(雰囲気)を作ってみて、企画がイケてるかイケてないか確認します。

何をするの?

画面を作るといっても、何をするんだっけ…という方が多いかと思います。

作業ステップとしては以下の通り。

作る画面を決める
↓
トンマナ(色設定)を作成
↓
モック画面を手で描いてみる
↓
モック画面を作ってみる
↓
作ったモックを元にアイデアを出す
↓
よさそうなアイデアからモックを作り直す
↓
そのモックを元に画面イメージを作る
参考:実践ゲームUIデザイン コンセプト策定から実装のコツまで

ここで重要なことは、コンセプトを守ることと、一番よく使う画面から先に作るということですね。

わかりやすいよう、ここで要素関係図の登場!

これを見ると、このゲームは練習(育成)と試合(実戦)が中心ですね!

コンセプトやテーマで画面に関係がありそうな要素としては、、
・高校野球(青春)
野球で色と言ったらグラウンド(茶)、芝生(緑)、スコアボード(濃い緑)、ユニフォーム(白・黒)が想起される。
現実に存在する「青春」感を出すなら・・・やはり背景は白、文字は黒で彩度低めにして、現実のような雰囲気を出す必要があるでしょう。

・近未来的な世界観・自動的に進む(放置)
近未来で自動化が進んだ世界なので、レトロではなく近未来的なUI・文字フォントを使う。

・おじさんたち(ユーザー)が、監督として指示を出して、細く長く遊ぶことがゲームプレイの前提
練習や試合での指示はシステムっぽい見た目から出す。
試合はYahoo スポーツナビのような雰囲気。
おじさんの目に優しくしないとプレイを続けるのが厳しい・・・億劫になる(実体験)ので、読みやすい白背景・黒文字にする。

要件を整理したので、作業を開始しましょう。

まずは、画面の雰囲気を大きく左右する色の設定、いわゆるトーン&マナー(トンマナ)を作ります。

彩度は抑えめに、現実感のある色で。目に優しく。眼鏡を外していても問題なく触れるように。

続いて、練習画面を作っていきましょう。

まずは手書きでいくつか案を書いて・書き直してみます。
ここで実際の画面で作ると、ビルド&スクラップに手間がかかるので手書きにします。

ここでは、他のゲームも参考にしたほうが良いと思います!
参考1:Game UI Database
参考2:ゲームUIブログ

ある程度案が固まってきたら、モック画面を作って・・・

※うーん、このイモっぽさ・・・。前作のMeisyo+と変わらない。

この画面を元に生成AIでいくつも案を出してもらいましょう。
適当に作ってみて良い案のパターンを盗み、次の案に生かしていきます。

※私はClaude Codeでモック画面とコンセプトを読み込ませて、案出ししてくれと指示しています。

ここで注意したいことは、(自分はプロではないので)一人で考えていても案は限られてくることを念頭に、自分の案を捨てる気を持つということですね。

誰かに案を出してもらうことで、「これはダメ、これは良い」とどんどん自分の考えが明確になっていきます。

それらの画面の要素から、良いと思うものを整理して、本番(バージョン1)の画面イメージを作っていきましょう。

どんなのできた?

色々作ってみたので、ゲームのプレイサイクルと合わせて見ていってみましょう!

練習方針を設定して(基本おすすめ設定でOK)、

放置時間を使って練習して、

試合する!

ホントはこの後に、試合結果詳細(1球速報的なもの)や成績分析(誰に強くて誰に弱いか)を見て、良い選手を見極めていくサイクルになるのですが・・・

とりあえず前の更新から2週間経ちそうなのでここまでで出します!

さいごに

結構時間がかかりましたが、落ち着いた配色かつちょっとスタイリッシュ感があるものにできた…かな?

この手の野球ゲームを良くプレイされている方には、「どんなのできた?」の画面を見たら「どこか見たことあるな・・・」感があるかと思います。
やっぱりいい画面って使い心地良いんですよね。

MVP(最低限のプロダクト)に必要な画面がもう少しあるので、作っていきたいと思います!

MeisyoNX 画面イメージ作成に時間がかかるorz

MeisyoNX作ってます・・・が。
画面を作るのが難しい!

理由:
・ワイ氏デザインセンス皆無
・AIでの自動作成が難しい(思った通りにならない)
・作ってみて壊している

最初にトンマナ(色調)を決めて、練習のイメージを手で書いて…

Webサイトとして作ってみて…

これはひどい。
Meisyo+と変わらない。

AIで配色パターンを考えてみてもらおう。

これはどうかな?

・・・というのを繰り返し。
20案くらい作っては壊しました。

成果物・・・になりそうなのはこちら。

・練習画面

放置時間を使って、リアルタイムっぽく練習結果が見れます。

画面が結構動くようになっていて、見ていて楽しかったりする。

・試合画面

こちらも放置メインで、大事な所(ピンチ/チャンス)だけ操作できる感じです。
Meisyo+リアル表示と、監督たちの甲子園の操作画面を組み合わせた感じになりましたね。

;つД`)うおー難しいぞ…

【MeisyoNX開発 vol.3】キャラクターをゴリゴリ作ろう

MeisyoNX作るよーということで、進めてまいりましょう。
前回 | 次回

コンセプトをある程度作ったので、キャラクター画像を作っていこうと思います。

コンセプトがどの程度楽しくなりそうかは企画の段階でほぼ決まっているので、今回はカードゲームですし、その雰囲気がおおよそ決まるキャラクターが重要なんですよね。

これも自身のモチベを上げていくために重要で、キャラクター的にどういうイメージのゲームになるか見えていたほうが安定感をもって作りやすいという過去の経験からです。

何をするの?

キャラクターを作るには、ストーリーが必要です。
ストーリーはコンセプトからある程度は想像できると思います。

わかりやすいよう、ここで要素関係図の登場!

ざっくりというと、監督が中心のゲームです。
チームとしては現役選手を中心に、コーチ5人とOBがサポートするシステムです。
つまり監督本人か関係者(特にコーチ)がストーリーの中心になるはず。

元々のMeisyoのストーリーは、監督とマネージャー(高藤雪)の関係がほとんどでした。
今回からはコーチ5人が重要になってきそうです。

というわけでコーチ5人の設定を作成してっと・・・

5人のコーチとモブの画像を作りましょう。
必要なのは、(1)カード画像、(2)バストアップ画像、あと(3)ちびキャラ画像。

ここで大事なのは、今後のシステム構築にも対応できるように、複数種類の画像を用意しておくことです。
カード画像は、各選手の詳細画面やガチャの当たり画面に。
バストアップ画像は、選手一覧やオーダー画面、ストーリーに。
ちびキャラ画像は、説明書だったり、ちょっと砕けた場面で使うために。

前作までは1つの画像で全部対応しようとしていたので詰んでました。

コーチの5人のバストアップ画像と、

最後にモブと。

生成AIですべて作っています。
ですが、顔形・印象・髪の長さなどすべて調整するプロンプトを作り、何度も調整し、いいのが出てくるまで出し直し…みたいなことをやっています。

再現性を取れるようになるまで作り込むのが結構大変でしたね。
(絵師の人を見つけたらこの子たちを書き換えてもらいたい…)

再現性をさらに高めるために、(1)カード画像(全身画像)から(2)バストアップ画像と(3)ちびキャラ画像を生成させるようにしています。
プロンプトで顔形をそれぞれの画像で指定するよりも、「添付した画像のキャラクターの顔を切り出して~」などと指示すればうまく出来ます。

注意点は、「○○(マンガ)の××(キャラクター)みたいな女性を~」と指定すると今後著作権的にNGになりそうなのでやめておきましょう。
ワイは固有名詞を出さないようにしていますし、生成に利用したプロンプトを保存しています。
今後を考えると、絶対そういう規制がきちんと整備されると思ってます。
一応、仕事で生成AIを取り扱ってるのでプロであるをいう自覚もありますし、クライアントでの構想や利用方針等を決めるときもありますしね…。
適当に決めると、あと10年変わらない可能性もあって、、リスクがあり、怖いんですよね。

という負の側面もありますので、利用は計画的に。

このカード画像、わりとかっこいいのでは…?姿勢も破綻してないですしね。

ここまでキレイに出すのにめちゃくちゃ苦労しました・・・。
野球は結構画像データがあるみたいで、右投げなら広く応用がききました。。
ただ、小柄+左投げサイドというかなりニッチなものはなかなかうまくいきませんでした。orz

さいごに

次はMVPの画面のイメージを作っていきたいかなと思います。
どういう体験ができそうな画面なのか、もっと向上させるならどういう画面にするか検討していきたいですね。

これまでの作品のデザインセンスが皆無なこともありつつ、ものぐさなこともあり、とりあえず作る → 更新せずそのままが多すぎるんですよね。;つД`)

いい感じに作れそうなものができるまで、叩いて叩いて~作っていきたいと思います。
それでは!

【MeisyoNX開発 vol.2】まずはゴールとプロセス設定から

MeisyoNX作るよーということで、進めてまいりましょう。
前回 | 次回

さっそく手を動かしてシステムや画面を作っていく・・・なんてことはしません。

これまでの経験から、高確率で途中で迷子(何をするんだっけ?)になるので。
そうするとモチベが下がってエタる(開発中止)・・・とならないよう、注意していきましょう。

作り切るためには、「限られた能力を頑張って使う」のではなく「仕組みでカバー」が鉄則です!

何をするの?

かんたんに言うと、ゴールと、そこまでのプロセスを先に決めるですね。
そうすると、今自分はどの状態で何をすべきかはっきりしてきます。

個人開発はゴールが自分の頭の中にしかないので、、少しずつ忘れます。これは人間なので仕方ない。
ゲームをはじめ、プロダクトはイメージが少しでズレると思ったものと違うものがでてきます。
そうするとモチベが下がって詰みます。

今回はMVP(Minimum Viable Product;必要最小限の機能を持った製品)を作り、ある程度面白そうであれば進めていきます。
(その時点で面白くならないなら、いくら頑張っても面白くならないんですよね…)

作業ステップとしては以下の通り。

コンセプト作成
↓
要件定義
↓
ゲーム内要素の関係図の作成
↓
MVPターゲット選定
↓
画面リスト作成

参考:
コンセプト「から」ゲームを作るのが苦手な人に捧げる、コンセプト「で」ゲームを作る方法
システム開発のV字モデルとは?流れやW字モデルとの違いを解説
※ゲーム開発(ワイの(まだ)趣味)とシステム開発(ワイの本業)の掛け合わせですね。

注力するポイントは?

一番重要なのはコンセプトです。
コンセプトがダメなら後工程でどう頑張っても仕方ないです。やること決まってるんで。

今のコンセプト(チーム)は「このチームで、一度しかないあの夏へ」ですので、要件が「=(メンバーが移り変わる)現役チームで強い相手に立ち向かう」ということが確定します。

以前は、「一度しかないあの夏へ」・・・で、これ結構解釈の幅があってコンセプトとして破綻してるんですよね。そうして考えた要件が「現役チームでノーマルモード(対NPC戦)を戦う。それこからプロになった選手たちがOBチームとして対人戦を戦う」・・・すげー複雑。困る。
むしろ、作れるもの(前作も同じ仕様)から逆算してコンセプトを曲解しとる・・・

できるだけシンプルにしたいですね。
プレイの上で、ユーザーに伝わらないと意味がないので…。

例えば、メインコンセプトの「99%の放置と1%の采配が勝負を決める、1日10分の高校野球監督ゲーム」も・・・ピンポイントな采配もできるが基本は放置がメイン。1日10分の縛りあり。という自分の中では単純明快なコンセプトです。

その後の頑張り

そういう検討を繰り返して、、ゲーム内の要素を整理して…

※この時点で破綻してることが結構ある。関係図が書けない=ゲームとして成り立ちません。。

MVPで最低限必要な要素を出して、画面リストとしてまとめました。

※生成AIをはじめ、いろいろな自動化・思考の外注ツールはかなり使ってます。助かりますね。

さいごに

次からはゲーム開発っぽいことをやっていきます!

MVPで使うキャラクター(メイン5名、モブ1名)イメージの作成をして、練習画面だったり特にゲームの初期のほうに体験するものを作っていきたいですね。

ゲーム自体の雰囲気と、キャライメージを合わせておかないと後で作り直しになるとアレですからね…。
ページのトンマナとかも作らないとかな。

まずはゴールとプロセス設定から!
作成の指針になるものを作っていきましょう。
それではー

名将と呼ばれた者達 Next Generations(Meisyo NX) 開発開始

皆さま、いかがお過ごしでしょうか。れいです。

めーっちゃ暑かった夏も終わりを迎え、勝者(沖縄尚学)が決まり、そろそろ過ごしやすい季節となってまいりました。
そろそろ寒くなるから風邪に注意するんやぞ…ということで(?)、

直近でアンケートさせていただいていましたが、
この度正式に新作ゲームの開発を開始したいと思います。

開発するのはどんなゲーム?

ゲームコンセプトは
「99%の放置と1%の采配が勝負を決める、1日10分の高校野球監督ゲーム」です。
裏コンセプトは
「仕事と家といろいろ頑張るあなたに、ほっと一息。」で、日常の癒しになるような体験を提供できるよう開発を進めていきます。

ジャンル的には放置 × 野球監督 × 戦略ゲーム(RTS)ですね。持ちうるリソースを最適配分し、敵に勝利することが目的のゲームジャンルです。

一言で言うと、「放置ゲーで、先に采配(いろいろな事前設定)をしておき、その成果を少しずつ楽しめるゲーム」ですね。
練習はその通りです。育成方針を決めて、育っていくのを見守って…。
試合も采配 → 放置要素が強く、途中の指揮もできるようになりますが、やはり事前設定をうまく出来るチームが勝つようになりそうです。

放置するにも期待感があって楽しいし、プレイも楽しいようなゲームで、・・・ただ、そんなにゲームに時間を使えない人に向けて送ります。(サブゲーム向けともいう)

そのようなコンセプトをまとめた初版コンセプトはこちら(α1版)。

やっぱりこのマークはいい感じ…
このマークでわかる通り、このゲーム(Meisyo NX)はMeisyo+の後継・・・もとい魔改造品です。

今も更新していて、「このチームで、一度しかないあの夏へ」という、現役チームを主軸としたわかりやすいストーリー・対人コンテンツを持つゲームとなる予定です。

追加予定の選手の卒業もあるので、その時のチームでその大会に挑めるのはたった一度きりなんですよね。
そうして、チーム力が随時変わっていくので、必然的に、メインの対人コンテンツであるユーザー甲子園(旧:公式戦)も大番狂わせが起こりやすい、毎回ワクワクできるゲーム体験となっていく予定です。

これまではこの人=強いor弱いがはっきりしてたし、戦う前に「負けそう」と思う→負けるがあたり前でした。
まあシステムがそう(卒業なし=選手の入れ替えが起こらない)ならそらそう(強い人はずっと強く、勝てない)よ。

今後もいろいろ変えて、最適なコンセプトに調整します。お楽しみに。
(皆さんのご意見待ってます!!)

いろいろ言いたいことはあるけど、「今のオンラインでできるゲームは続けることにめちゃくちゃコストがかかる」んよな…。
毎日の周回を強いられるイベント、イベントが終わらない(イベントの次にすぐイベント)、ついていかないと狩られる…運営側も経験したけども苦い記憶。
ホンマきついで、ワイみたいなおじさんには。;つД`)

ゲームタイトルでいうと、Meisyo Next Generations…次世代とは…?と思われる方もいらっしゃるかと思います。
これまでのMeisyoになかった選手の卒業・世代の継承やOBによるコーチなど、次の世代・目標とする試合に向けて積み重ねていくことを主眼としています。

Meisyo NXにしたのは、そのまま略するとMeisyo NGは…NGはイヤダナーという個人的な感想です。

ストーリーも次世代に変わる…つもり。ストーリーの登場キャラも作っていってます。

お姉さんカッコイイ

ストーリーの枠は決めているけれど、キャラクターはやはりインスピレーションが大事かなと。
なんで次世代(Next Generations)なの?という疑問も、今後出す初期版のストーリーを読んでいただくと分かる…かな!

どこでリリースするの?

Webアプリ…つまりブラウザ(ChromeやEdge)になります。
インストール不要。どこでもIDとパスワードさえあれば遊べます。

監督たちの甲子園はAndroidやiOSでしたが、元に戻します。
そういうこと(?)で名前も戻します。
放置ゲーのコンセプトもMeisyoがベースですしね。

今後はどう開発していくの?

以下のように、継続的にユーザーの皆さまの意見を取り入れて改善しつつ、完成までいければと思います。

1. コンセプト作成

いまやってるよー。
ゲームの大筋を決めていきます!

2. プロトタイプ開発

どういうゲームなのか伝わるよう、プロトタイプを作ります!
次のステップに向けて、自分が納得いくレベル感で出したいですね。

3. プロトタイプ発表・クラウドファンディング

伝えたい物語の示し方(ストーリーデザインやキャラクター設定、世界観・・・とそれを示すUIや画像)・・・いわゆるナラティブに課題感があるので、協力者を募りつつ、知名度を上げていきたいと思います。
今までは本当に最小限のリリースをして積み上げて作っていく形でしたが、プロトタイプ時点である程度魅せられるものにしたい。

4. 本格開発

コーディングAIもあるので、開発の高速化はできそうですが・・・?

5. リリース・継続開発開始

ここからが本番!

開発中止にならないように、ステップをきっちりと踏みながらやりたい…やるんやで;つД`)

自身の強みと戦略

Meisyoもそうですが、戦略は大事なので書いておきましょう。
もしかしたら、後年誰かが見て参考になるかもしれないし。

自身の強み

楽観的

なんとかなる気が強い。(感想)

ゲームを完成させられる

仕事で業務システムのシステム開発を内(実装側)から、外(構想側)からやってますが、複雑性が明らかに異なるんですよね。
ゲームのほうが圧倒的に難しい。
それを完成させられる時点でなかなか強いかなと。

構想とシステム設計と実装が一気通貫で出来る

仕事でもやってますが、なかなかできる人はいませんね。
構想した通り、思った通りに動かすことができるのは強いと思っている。
なお表現がよくなく、伝わりづらいことは分かってるので改善中…。

AIがチョットワカル

仕事でもやってるのでチョットワカルレベルです。すごい人はすごい(ナニソレ)
元々品質管理の仕事をやっていたので、ルールベースAIという基礎の基礎から入ってました。
今はLLMやベイズ推定・数理最適化なども理論面からある程度実装・改善ができます。なおレベル感は大学の教科書1冊目のレベルのもよう。

戦略

自分の強いところで戦う。

監督たちの甲子園でフル3Dゲームを作ってみて思ったんですが、総合格闘技過ぎて厳しかった。
複雑なゲームシステム構築やAI実装だけならまだしも、(自身が全くわからない)グラフィック、キャラの動き、感情の動きの表現をはじめとしたすべての軸をある程度高品質に達成しないと厳しいですな。パワプロがやっぱり強い。

Webならそれらの軸を落として、自分の強み(システムで楽しんでもらう)に注力できるかなと考えています。
それでいうと現在のMeisyoにユーザーさんもたくさんいらっしゃいますし。

継続的に発信する。

継続的な(心理的な)つながりって大事ですよね。
開発側で何がどう進んでいるのかわからなかったりして、ユーザーの方の認知が弱くなっていくかなーと思っています。

悩みや弱さも発信する。

発信では、どうしてもきれいなことしか言えなくなりますし、、
試行錯誤だったり、厳しいところ、泣きたくなるところだったりは見えません。
そういったところもユーザーの方へのコミュニケーションとして出していきたいと思います。
(カチッとした会社で作るなら無理でしょうけど、こちらは自分で方針を決められるので。こちらも戦略の1つです。)

そこでいうとコスト削減でいえば、AIで文章は作れますが、AIって良いもの、標準的なものしか見せないんですよね。
瞬間的なつながりというか、興味を持ったその人の共通点を知って少しうれしくなる・・・みたいなところって、強いところではなくて、弱いところ、隠したくなるところにあると考えています。
もちろん、この文章も自作ですし。(頑固)

さいごに

キャラクターをいろいろと作ってみています。いい感じですね。どうキャラ付けしよう。

いろいろ話したいことはありますが、まずはここまでで。
継続的に開発進捗をお伝えしていく予定ですので、これからよろしくお願いします!

つづきはこちら

監督たちの甲子園(v1.3.5) 新規ユーザー分析

私は運営するゲームの分析を日常的に行い、機能の改善を行っています。
元々ゲーム運営のアナリスト(コンサルタント)をしていたので、ゲームの分析はチョットワカルかもしれません。

今回は、ゲームの状況をかんたんに確認するために、新規ユーザーの継続率を分析していきます。

前提

・Unity Analyticsで分析した結果です。
Unity Analytics > SQL データエクスプローラーを利用しています。
SQLの種類はPostgreSQLベースに見えます。

・全ユーザーは含んでいないログです。
(上手く取れないユーザーがかなりいる模様…)

・SQLコードを公開します。
自身のゲームの分析などにご自由にお使いください。

分析したゲームはこちら

監督たちの甲子園 世紀の逆転劇

新規ユーザーの分析

まず、分析するにあたって対象ユーザーと指標を確認しましょう。

対象ユーザー

新規ユーザーとは、ゲームを開始してすぐのユーザーのことです。
※対して、既存ユーザーはゲームを開始して何日か経過して継続しているユーザーのことを言います。

指標:継続率

継続率は、対象となるユーザーが、対象となる経過日(24時間以内)にログインしている割合を確認します。

継続とは、
DAY1であれば、新規登録後24~48時間にログインしている人をいいます。
DAY3であれば、新規登録24*3~24*(1+3)時間にログインしている人、
DAY7であれば、新規登録24*7~24*(1+7)時間にログインしている人、
DAY14であれば、新規登録24*28~24*(1+14)時間にログインしている人、
DAY28であれば、新規登録24*28~24*(1+28)時間にログインしている人です。
※DAY1, 3, 7, 14, 28の日の区切りはゲームや会社によって変わります。

この指標は「毎日ログインすることが当たり前のゲーム」で採用されやすいです。
毎日プレイすることが必須ではない場合、以下の継続率(Week版)のような指標を入れてみることがあります。

指標:継続率(Week版)

継続率(Wide版)は、継続の判定幅を広くした継続率のことです。

継続(Week版)とは、
DAY1であれば、新規登録後24~24*(1+7)時間にログインしている人をいいます。
つまり、1日後から1週間以内にログインしている人を示します。

この指標は「毎日ログインすることが当たり前ではないゲーム」で採用されます。
「1週間に1回は触ってもらえるよね」ってことです。
これは分析の都合上、「ユーザーがゲームから離脱したかどうか」を厳密に判定できないため、かなり幅を持たせて分析をしています。
分析するサービスによって変わるので、調整して使ってみてください。

分析:バージョン別継続率

それでは、ゲームの分析を行ってみます。

ゲームはバージョンアップにより内容が様変わりするため、「継続率を取るにはバージョン別が良いだろう」ということでバージョン別に分析を行います。
加えて、特定のプラットフォーム(iOS/Android/PCなど)に異常がないことを確認するために、プラットフォーム別にも分析します。「プラットフォームの継続率が大きく違う」ことは、異常があると判断できます。

分析からわかること1

では、継続率を見ていきましょう。
初期バージョン(v1.0、v1.1、v1.2)はそれほど指標が変わりません。

テコ入れしたv1.3_1は指標が大きく改善しています。これは良いアップデートだったと言えるでしょう。
ただ、さらにテコ入れしたv1.3_2は初期バージョンより下がっています。これはよろしくないので、元に戻しましょう。

という、数字からゲーム内に何が起こっているかを想像しながら見ていく必要があります。

分析からわかること2

では、プラットフォーム別に見ていきましょう。

・iOSが良さげかも?
・Androidは要改善
・PCは人がいない
※加えて、完全オフラインではログが取れない仕組みなので実態が不明なユーザーもいます。

こちらの数値と外部データを見比べてみると面白いことがわかります。
・App Store(iOS)とGoogle Play(Android)の登録数から、ログが取れないユーザーがいそう。
・App Storeのアプリ保持数は200超だが、Google Playは100いくかどうか。
Google Playユーザーのほうがアプリを消す傾向にあると言えるでしょう。このゲームは400MB近く容量ありますからね…。

分析からわかること3

1日後継続しない人は、1週間にわたって観察してもほぼ継続しないことが読み取れます。DAY1とDAY1(WEEK版)の数値がほぼ同じですし。

ただ、3日後以降はユーザーは思い思いにログインしているようです。なぜなら、DAY3の1日間だけログイン割合より、DAY3~10の間のログイン割合が大きく伸びているからです。
つまり、平均的なユーザーはこのゲームに対してどのような接し方をしているか推察できます。

このデータから追加で、深掘りとして「毎日ログインしているひと」「たまにログインしているひと」の人数を確認して、それぞれに合わせた施策を打つ等を考えていけますね。

分析コード

当ゲームはバージョンの記載方法にCLIENT_VERSION=「X.X.X」を採用しているため、複数バージョンをVERSION_GROUPにまとめています。
ある程度ユーザー数がいないと分析できないので、複数バージョンをまとめるようにしてください。

-- ユーザーIDごとのゲーム開始時間
WITH user_first_start AS (
  SELECT 
    USER_ID
    ,time_start
    ,PLATFORM
    -- バージョンごとに切り分け
    ,CASE
        WHEN CLIENT_VERSION LIKE '1.0.%' THEN 'v1.0.X'
        WHEN CLIENT_VERSION LIKE '1.1.%' THEN 'v1.1.X'
        WHEN CLIENT_VERSION LIKE '1.2.%' THEN 'v1.2.X'
        WHEN CLIENT_VERSION LIKE '1.3.%' THEN 
            CASE
                WHEN CLIENT_VERSION <= '1.3.3' THEN 'v1.3_1'
                WHEN CLIENT_VERSION <= '1.3.5' THEN 'v1.3_2'
                ELSE 'v3_3'
                END
        ELSE 'others'
    END AS VERSION_GROUP
  FROM
    (
        SELECT 
            USER_ID
            ,EVENT_TIMESTAMP AS time_start
            ,PLATFORM
            ,CLIENT_VERSION
            ,ROW_NUMBER() OVER (PARTITION BY USER_ID ORDER BY EVENT_TIMESTAMP ASC) AS rn
        FROM
            EVENTS
    ) AS t
  WHERE
    rn = 1

)
-- 継続率
, user_retention AS (
  SELECT
    fs.USER_ID
    ,fs.time_start
    ,fs.PLATFORM
    ,fs.VERSION_GROUP
    -- 通常判定版(1day内)
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 1, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (1 + 1), fs.time_start)
         THEN 1 ELSE 0 END) AS day1
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 3, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (1 + 3), fs.time_start)
         THEN 1 ELSE 0 END) AS day3
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 7, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (1 + 7), fs.time_start)
         THEN 1 ELSE 0 END) AS day7
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 14, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (1 + 14), fs.time_start)
         THEN 1 ELSE 0 END) AS day14
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 28, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (1 + 28), fs.time_start)
         THEN 1 ELSE 0 END) AS day28
    -- 判定広め版(1week内)
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 1, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (7 + 1), fs.time_start)
         THEN 1 ELSE 0 END) AS day1_w
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 3, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (7 + 3), fs.time_start)
         THEN 1 ELSE 0 END) AS day3_w
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 7, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (7 + 7), fs.time_start)
         THEN 1 ELSE 0 END) AS day7_w
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 14, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (7 + 14), fs.time_start)
         THEN 1 ELSE 0 END) AS day14_w
    ,MAX(CASE WHEN
          e.EVENT_TIMESTAMP > TIMESTAMPADD(HOUR, 24 * 28, fs.time_start)
          AND e.EVENT_TIMESTAMP <= TIMESTAMPADD(HOUR, 24 * (7 + 28), fs.time_start)
         THEN 1 ELSE 0 END) AS day28_w
  FROM
    user_first_start AS fs
  INNER JOIN
    EVENTS AS e
  ON
    fs.USER_ID = e.USER_ID
  GROUP BY
    1, 2, 3, 4
)

-- 日別分析
SELECT
  VERSION_GROUP
  ,PLATFORM
  ,DATE(MIN(time_start)) AS date_min
  ,DATE(MAX(time_start)) AS date_max
  ,COUNT(*) AS count_uu
  ,SUM(day1) / COUNT(*) AS rate_day1
  ,SUM(day3) / COUNT(*) AS rate_day3
  ,SUM(day7) / COUNT(*) AS rate_day7
  ,SUM(day14) / COUNT(*) AS rate_day14
  ,SUM(day28) / COUNT(*) AS rate_day28
  ,SUM(day1_w) / COUNT(*) AS rate_day1_w
  ,SUM(day3_w) / COUNT(*) AS rate_day3_w
  ,SUM(day7_w) / COUNT(*) AS rate_day7_w
  ,SUM(day14_w) / COUNT(*) AS rate_day14_w
  ,SUM(day28_w) / COUNT(*) AS rate_day28_w
FROM
  user_retention
GROUP BY
  1, 2
ORDER BY
  1, 2;

さいごに

今日はかんたんに、新規ユーザーの継続率からゲームの現状を分析しました。
「もっと知りたい」「○○ってどう分析すればいいの?」というコメントをいただければ、記事を書いていきたいと思います。
ぜひコメントくださいませ。( ^^)/

監督たちの甲子園 世紀の逆転劇 戦略指針

知り合いにこのゲームをテストプレイしてもらったときに、
「めっちゃ楽しい。遊び方が分かればやけど。」というコメントをいただきました。

確かに、一見すると複雑怪奇なシステムのため、全体像を把握するのは困難です。
ただ、作者自身は「簡単なシステムを組み合わせているだけ」と考えています。その視点から、監督たちの甲子園を、深く楽しむためにはどんな論点で何を考えるべきかを解説します。
簡単な一言 → 各要素に対していえる一言 → その他と、少しずつ深めて記載していきます。

ゲームはこちら

監督たちの甲子園 世紀の逆転劇

目次

簡単なまとめ・・・最低限知っておきたい考え方はこちら
育成チェックリスト・・・強くなるために必要なことをできているか確認しよう
各要素に対して言える一言・・・より細かい各要素に対して、何を考えておくべきか書いたものがこちら

簡単なまとめ

・試合は敵より1点でも多くとれば勝ち。一つ一つの指示に得点期待値を考えて動きたい。
・指揮はじゃんけん。自分が得意な作戦か、敵から見ると選んだら嫌な作戦か、メリット・デメリットを考えて動きたい。
・バランス型選手は結局使いづらい。育成には運はあるものの、「どんな特徴を持つ選手を育てたいか」を考えておきたい。
・ユーザー甲子園の強いチームを参考にしよう。真似したら強くなれる。

育成チェックリスト

  1. 各選手の得意・不得意を踏まえて打順(攻撃)を組めているか
  2. 打順で前のほうに良い打者を揃えているでしょうか?
    同じような弱点を持った打者を並べていないでしょうか?例えば、速球が苦手(反応が低い)選手ばかりではないでしょうか。対人戦では、選手交代で弱みを突いてくるチームが多いです。

  3. 各選手の得意・不得意を踏まえて守備を組めているか
  4. 守備の要として、センターライン(投手・捕手・二塁手・遊撃手・中堅手)が特に打球が来やすいです。
    投手はもちろん、センター(中)・セカンド(二)・ショート(遊)にかなり打球が飛んできます。彼らは守備力の高い選手であり、かつ送球も高い選手でしょうか?
    センターに良い選手を置くことで、敵の平均打率を2分(2%)以上落とせることが分かっています。対戦相手全員が打率3割の打者でも、たった一人の活躍で2割8分に落とせるのは大きいでしょう。
    捕手は肩を高くしないと、盗塁が自由にできてしまいます。

  5. 投手はタイプの違う選手が複数存在するか
  6. 育成では、エース1人で投げ抜いて勝利することが可能です。
    ただ、対人では少しでもHPが減ると厳しいので代役が必要です。
    他の観点として、敵の弱点を突きましょう。
    速球が苦手なチームには速球投手、変化球が苦手なチームには変化球投手、一発長打が怖いチームには制球投手を繰り出すことで抑えやすくなります。

  7. スーパーサブが存在するか
  8. 何かに極端に特化している選手を、ベンチ入り18人のうち2~3人入れておくことで戦術の幅が広がります。
    特に、点が欲しい時の代打・代走、1点を守りたいときのセンターラインへの守備固めが大きなキーとなります。

  9. 練習Gは適切に分け、状況により入れ替えているか(そのままにしていないか)
  10. 練習では、能力値はSあたりまで上がりやすいです。
    ただ、それ以上になると上昇にマイナス補正があるようです。
    そのため、入学時点でどの選手をどのような方針で育てるかある程度決めておいたほうが良いです。

    例えば、捕手向けなら「強化方針は肩全振りなので、練習は反応と長打を上げよう」みたいな感じです。
    反応がSまで上がったら(だいたい2年中盤~後半で切り替え)、長打に切り替えることになると思います。
    コーチの指導がうまくいけば、2年前半でもS行けたりするんですが…そこは運ですね。

    よく悩むのは、投手は体力を伸ばしてから育成するかどうかですね。
    体力を伸ばせば、体力回復の必要回数が少なくなる分効率がいいことはわかっているものの、勝てない投手になる場合が多くて…。orz

  11. 育成方針を決めているか
  12. 練習では、能力値はSあたりまで上がりやすいので、育成方針はそれ以降を伸ばすのにうってつけです。
    育成方針で能力が伸びるのは「試合に勝利」が前提となるので、試合前にはきちんと何を育成したいか決めておきたいですね。

  13. 学年ごとの育成状態を加味して練習Gを設定しているか
  14. 例えば、現3年は反応が全員Sに到達しており、反応の練習が必要ないとします。
    ただ1・2年生はまだまだ育成の余地があります。
    投手・野手で練習Gを1つ使うとして、最大であと1つしか練習Gがないので「何の練習を選択すべきか?」ということですね。

    3年野手は長打や走塁になるでしょうが、1・2年野手向けに反応の練習をすべきでしょうか。
    それとも、捕手や守備固め育成のために使うべきでしょうか…?

  15. スキルを漏れなく設定しているか
  16. 育成では、スキルLvが試合の勝利によって向上していきます。
    1年秋からスキルを付与して、2年春・2年夏連覇、3年春連続優勝でスキルLv10になるくらいです。
    そのため、1年秋には必ず全員分(ある分の)スキルを付与しておきましょう!!

    対人戦では、全OB/OG選手に継承スキルを付与していない方を多く見かけます。
    おすすめ設定でもよいので付与しましょう!勝率が変わってきます。

  17. 起用法設定をしているか
  18. 全く設定していないよりもおすすめ設定、おすすめ設定よりも選手に合わせた設定が強いです。
    おすすめ設定だと能力に応じて配球・配球コース、打撃方針が決まってしまいます。

    特に投手・・・特化型投手は強みにしている球種を多投するように自分で調整したほうが良いかと思います。全然違います。
    コントロールが悪い投手はストライク中心がいいと思います。球数が多くなって、HPが削られて、失投で失点が多すぎます…。

各要素に対して言える一言

チーム

1人の選手が強くても勝てない。
強いチームを作るにはそれぞれの弱点を補うべし。
特定のチームに勝ちたいなら、相手の弱点を研究すべし。特にスキルを合わせると勝ちやすい。
(例:対デバフチームには、無畏(投手)、洞察(野手)で固める)

選手

万能型(器用貧乏になりがち)より特化型を育てよう。野手も含め体力が意外と重要。

指揮

速球 vs 反応、変化球 vs 巧打のように、選手の相性を理解しておきたい。
その時の確実性(期待値が高いもの)を取るか、1本に絞って運否天賦するか。

監督

指揮能力(能力UP)は1つに特化してもよくないので、育成パターンに合わせてバランス型にすべし。

コーチ

コーチも万能型より特化型。
5人がすべて同じ能力が高いとその能力を育成できない無駄になる期間があるので、育成パターンに合わせてバランスをとるべし。

学校

施設LvはALLMAX。ただLv3~4でも十分なステータスはある。
持てるリソース(時間・資金)を十分かけて、いかに効率よく能力値を上げる場を提供するか。

育成で考えたいこと

狙ったステータスアップがうまくのった選手をいかに手に入れるか

育成は確率に支配されているので、ベースの能力が高くても伸びない選手が出てきます。
期待値としてはベースの能力が高い選手のほうが高いですが、実際はそうはなりません。

能力のバランスはどうか

総能力値の最大値はどうしても天井があります。(よくある育成ゲームのように)ALLMAXにはなりません。
そのため、どこかを上げればどこかが下がります。どこを上げ、どこを下げるべきでしょうか?
投手は特に、「ステータスが高ければ強い」というわけではありません。
速球と変化球の球速差・変化量で、打ち取りやすい絶妙な値が存在するようです。
初期の投手が打ちにくいのもコレです。

打撃能力のバランスはどうか

野手の打撃能力は特に考える必要があります。
なぜなら、「反応・巧打・長打・走塁のいずれか2つを上げるか」という四者択二(二者択一のようなもの)があります。どれを上げるべきでしょうか。

ただ、アンチパターンがあり、反応+巧打または長打+走塁はダメです。
反応+巧打がダメな理由は、「打てても、飛ばない・走れない」だと単打マン(得点期待値低)になりかねないからです。
長打+走塁がダメな理由は、「よく飛ばせて走れるけど、当たらない」だと三振王になります。orz

特に、速球が特に強いため、反応と速球に差があるとほとんど当たりません。(ただ、当たったら飛ぶんですよね。)
そのため、反応を上げることが中心になると思いますが、変化球に対応できないと作戦「変化球中心」で打てません…。そのように、どこを取ってどこを下げるかが大事です。

その選手を使うべきタイミングは明確か

ストーリやユーザー甲子園を含め、選手登録数は18人のみです。
どのタイミングで使うべきかはっきりしない、他の選手と特徴が被っている選手は使いづらいです。
特徴が被っている選手が多くいるとなると、すぐに次の良い選手が見つかりやすいですし…。

その選手の弱点は何か、どういうシチュエーションが苦手か

各選手や所有スキルにはメタ(弱点)となるものが必ず存在します。
苦手なシチュエーションを把握していれば、起用法に効いてきます。

NPC状態でもチームが機能するか

ユーザー甲子園を含め、対人戦では敵プレイヤーから挑戦される場合はこちらのチームはNPCとして対戦します。
その際、NPC操作でも勝てるように起用法をしっかり組んであるでしょうか。
弱点を突かれる時間の少ない継投や野手起用など、考えられているでしょうか。

例えば、(1)代打・代走を多くする、(2)体力を高い状態を維持するですね。
「速球だけ」など1種類の能力のみ上げているチームに対し、弱点をさらす時間を減らすために(1)をします。
(2)は、野手も「試合中に体力が減っていくので、能力が落ちていくこと」を防ぎます。
(2)の類型として、投手の交代枠を増やすもあります。投手のHPが落ちない(70%以上)ようにすると、マジで打てません。
ただ…その枚数分選手を育てるのが大変だったりします。

スキルのシナジーを考えよう

スキル同士の組み合わせにより、想定外に強い選手を作ることができます。

例えば、無畏や洞察はデバフ無効です。
捲土重来は1~6回は打撃デバフを味方全体にかけますが、7回以降はバフに変わります。
洞察+捲土重来と組み合わせると、1~6回のデバフが無効化されます。

例えば、3~4番にチャンス〇+走者一掃の選手を採用します。
そうすると、走者が2人以上居ると驚異的なバフ量+自動発動(発動数制限なし)となります。

例えば、代打専門の打者にチャンス〇+洞察の選手を採用します。
そうすると、どんなタイミングでも、どんなキツいデバフがあっても、かなり良い成績を残せる代打になるでしょう。

上記のように、シナジーを持つスキルの組み合わせがあります。
そのため、そのようなスキルの組み合わせをベースにチームを組んでいくと強いです。

ただし、そのメタ(弱点)として、対策スキルが存在します。
自軍バフ盛りチームに対しては、洞察+捲土重来の組み合わせではバフ量が負けてしまうため、勝てないかもしれません。
洞察は、敵チームにデバフを与えるささやき戦術には強いですが、自チームや自身を強化するスキルには全く影響力を示せません。洞察自体のバフ量は多くないので、単純に常時弱いバフがかかっている無駄な存在にもなりえます。。

バランスを見ながら、どのスキルが強いか試していきたいですね♪

作者コメント

少しずつ書いていきますね( ^^)/
育成のポイントを追記してみました。(25/04/26)

監督たちの甲子園 世紀の逆転劇 公式サイト

ゲーム説明

伝統、戦略、想いが交錯する甲子園へ
――あなたの采配で一球のドラマを、勝利を掴み取れ!

一球のドラマを楽しもう!
次の一球にドキドキ、ワクワクする圧倒的な臨場感の3Dキャラ×物理シミュレーション。
これまでにない詳細な采配設定であなたの戦略を実現しよう。
あなたの独自戦略で全国優勝を目指せ!

★監督たちの甲子園の特徴
・采配:試合中に選手たちを指揮する。タイミングよく全力投球・打撃とスキルを駆使して、勝ちのチャンスをつかめ!
・戦略:「守り抜く」「果敢に攻める」「バランス重視」・・・あなたの方針が、勝利への道を照らす羅針盤。
・戦術:選手ごとに選手交代、バントや盗塁などの使用判断、配球や配球コースなど詳細な采配設定が可能。AIによるおまかせ設定も充実。
・育成:選手獲得から始まり、毎日の練習、大会での経験により、個性が開花する。初期ステータスよりも、選手のポテンシャルと監督/コーチとの関係性が重要。
・個人制作:「何かおかしいよ!」不具合報告や「こんな機能欲しい!」改善要望は、公式Discordやゲーム内のお問い合わせからぜひお寄せください。
・その他:常時オフラインプレイ可、試合のモード(指揮/スキップ)切り替え可、月1のユーザー大会(トーナメント戦)、キャラエディット、多様な高校でのロールプレイ(実装予定)、AIでの成績分析/予測機能(実装予定)

★他の野球ゲームとは異なる点
・選手の指揮に振り切ったゲームです。選手たちは直接操作できません。
・選手の能力は高ければ高いほど良いとは限りません。能力値のバランス、選手の役割、調子、対戦相手との相性、指揮やスキルとの親和性など、考慮可能な点は無数にあります。
能力のバランスが特に大事です。例えば、打撃だと「投球を打てない(当てれない)と話にならないけど、打てたとしても飛ばせるか走れるかしないとヒットにならない」みたいなイメージです。
・選手は育てて終わりではありません。世代を超える継承システムがあり、OB選手やコーチとして後輩たちの活躍をあなたとともにサポートします。試合で使うか、コーチで使うかによって育て方も変わります。
・選手の起用法を詳細に設定できます。複数選手の設定を連携させることで、状況による継投や代打攻勢/守備固めなど、さまざまな戦術が実現可能です。
・試合での3D物理シミュレーションシステム・各種AIは全て自作で、継続的にアップデートされています。

★このゲームをおすすめしたい人
・野球が好きな人、特に観戦が好きな人
・自分の読みがハマると脳汁が出る人
・資源の最適配分など、戦略を考えることが好きな人
・自分のペースで遊ぶことが好きな人
・有名選手ではなく、無名選手を見出し強くしていくことに楽しみを覚える人
・結局強い選手カードを集めるだけの野球ゲームが嫌いな人
・絶対的な正解がないゲームが好きな人
・見た目にはあまりこだわりがない人
・勝ち、負け、たまにある不具合も楽しめる人

★このゲームの世界観
近未来の世界、様変わりした高校野球。
不意にこの世界にやってきたあなたは、野球連盟のマネージャーとともに甲子園を目指します。
選手たちの想い、彼女の想い、連盟の想い…さまざまな想いとともにストーリーは進みます。

ダウンロード

Rei-Farmsよりリリースしています。
全てのアプリにはデータ共有機能が実装されており、他デバイスで遊んだデータを共有することができます。

Android


2025/2/14リリース!

iOS


2025/3/1リリース!

PC

公式ページ > Discord > リンクより最新版URLからダウンロードください。
2025/2/14リリース!

※PC版は、課金の値引き(約15%OFF)があります。
データ共有機能を使うことで、AndroidまたはiOSでプレイしている方も利用可能*です。
*例 PC版にデータ共有・購入した後、Android版にデータ共有する。

公式ページ

Discord:監督たちの甲子園
説明書はゲーム内にあります。
改善コメント、質問や不明点等はDiscordでお聞きいただくか、お問い合わせフォームでご連絡ください。

各種ルール

利用規約
プライバシーポリシー

ゲーム内容

野球 × 監督視点 × 3D × モバイルの考えつつやるゲームです!
野球観戦や、高校野球を観るのが好きの方におすすめ!
他には、RTS(Real Time Strategies)好きの方にもおすすめしたい。海外の有名どころで言うとHoIやAoEですね。

片手操作でプレイでき、ゆったり自分のペースで楽しむことができます。
電車でも、ベッドでも、お布団の中でも、お風呂でも、どこでも。
トップ画面と特定の画面以外は基本通信をしないので、通信環境が悪くてもロードに悩まされることなく…さくさくです!

試合も基本放置で、プレイしたいタイミング*1で、プレイしたいように*2プレイ可能です。
*1 途中停止可能。チャンス・ピンチ時自動停止や指定イニング以降自動停止など設定可能。
*2 指示のタイミングを1イニング、1打席、1球ごと設定可能。
野球の各種戦術、小技、スキルなど、重要なポイントで使って勝利を目指したいところ。

選手たちとのつながりも重要になります。
入学から卒業まで育て、ともに戦うだけではなく、卒業時に固有スキルを次世代に残していったり、それ以降もOB/OG選手としてまたコーチとしてチームに貢献してくれます。
都道府県ごとに選手の出現パターンが変わるようです。
なんか見たことある選手*がいる…強いな…ってなったら、その選手の出身地を調べてみてくださいね♪
* 選手能力や固有スキルで判断できます。

そのように、戦術にはさまざまなピースがあるので、戦略を構想*してから育成すると、より強く・楽しくプレイできるかもしれません!
* 例:3年後に夏の甲子園で優勝したい。エース投手が必要なのでオリジナル選手で地域の有力選手を採用し、打者はスカウトで3人(捕手含め)集めて、残りはセレクションで…かな?

すべてはここから始まりました。

(参考:作ったゲームを解説する「Unity-chanバッティング VS.こはくちゃんズ」)

かわいい3Dキャラクター達との野球をぜひお楽しみください!

追加資料

読んだら何をすればいいかわかるかも?資料ver.1
監督たちの甲子園 世紀の逆転劇 戦略指針

開発資料

読んだら何をすればいいかわかるかも?資料ver.2
固有選手やスキルのローデータがあります。
公開してほしいものをコメントください。あれば公開します。
MeisyoK_開発資料
MeisyoK_ゲームコンセプト

歴史

  • 23年03月28日 名将と呼ばれた者達3 正式サービス開始(終了済み)
  • 一言で言うと失敗しちゃった世界。得られるものは多分にあったが、この世界のプレイヤーや星谷さんにとってはつらい世界だったろう…。

  • 23年10月26日 ゲーム 監督たちの甲子園(仮) 制作開始
  • 「皆で楽しめる」を意識したつくりに変更。良いゲームの良いところをうまく取り入れたい。

  • 24年06月02日 Meisyo3のサービス終了、監督たちの甲子園(Meisyo4)への注力
  • 方針転換を正式に告知。とはいえ7カ月って結構作り込んでますね…。

  • 25年02月14日 監督たちの甲子園 リリース
  • Google Play(Android)、PC版でリリースしました。
    1年半もかかってるのか…(^^;

  • 25年02月15日 Google Play 100DL達成
  • 25年02月18日 Google Play 新作 無料スポーツアプリ部門 3位達成
  • 25年02月23日 Google Play 新作 無料スポーツアプリ部門 2位達成
  • 確認すると、スポーツアプリ全体で86位でした。なかなか健闘していると思います。
    (´Д⊂ヽ個人制作でここまで上がってこれたのはユーザーさんとの共同制作のおかげですね…!

  • 25年02月27日 詳細指揮 リリース
  • 1場面ごとにかなり細かい指示を出せるようになりました。

  • 25年03月01日 監督たちの甲子園(iOS版) リリース
  • 全プラットフォーム同時アップデートをし、iOSのみ進行不能バグを出しました。申し訳ない…。03月03日にバグ修正済み。

  • 25年03月06日 iOS版広告機能 リリース
  • iOSのバグの修正が終わったので、広告機能(広告を見ると報酬有)を本格的に導入するようにしました。

  • 25年03月15日 iOS版課金機能 リリース
  • App Storeの設定に不慣れなため、数々の失敗を超えやっと課金を導入できました。お待たせしましたorz

  • 25年03月16日 合計700DL達成
  • 集計してみたら500DL超えてた。

  • 25年04月09日 合計1100DL達成
  • DL数の伸びが落ちてきたため分析をしたら、、いまいちな結果(監督たちの甲子園(v1.3.5) 新規ユーザー分析)に。想定ユーザーの背景情報&ユーザーコメントを踏まえて、アップデートを行う。

  • 25年05月11日 v1.4.3リリース
  • UI刷新がある程度完了したバージョン。あとは高速試合のリリースをして、定期更新にしていこうと思っている。

  • 25年06月01日 v1.5.0リリース
  • 高速試合を含めリリース。

  • 25年09月01日 v1.6.0リリース
  • テストでモーション追加。これ以降定期更新していこう。

  • 25年10月08日 v1.6.2リリース
  • Unityの脆弱性対応。

作者コメント

作者自身でもプレイを続けてしまう、辞め時がないゲームになりました。
ここまで来るとなんだろう、不思議な感じですね。

作者的にはストーリーモードの難易度がちょっと易しめかもと思ってます。
ただし地方大会まで。本大会は投手が弱いと勝てないですね…。
・・・神宮決勝は普通に勝てません。
秋の地方大会でポロっと負けてめざましを使いますorz
ただ、これくらいがいいかもしれない。勝てすぎると緊張感がないですしね。

とはいえ、2013年?にMeisyoを出してから大分経ちましたね…。
Meisyoで初めて課金があり、Meisyo+でWebサービス全体を黒字化でき、Meisyo3はコケて、、その後がコレです。
実は、このゲームの原型となるような物理演算×野球×Webのゲームは2005年くらいから作ってました。
知り合いにプレイしてもらってずーっと改良してましたね。
ゲーム名は忘れましたが、ナニカは脈々と受け継がれているようです。
皆さんのご意見をいただくことで、日々パワーアップしていってます。

このゲームがヒットしたらアップデート・ブラッシュアップしつつ、派生ゲーム作っていきたいところですね。
・放置ゲー版:Meisyo+の後継的なイメージです。
・操作ゲー版:プロスピ的なイメージです。
・放置×RTS版:自動操作に完全に任せ(起用法設定でどうにかする)、選手育成を粛々と行うイメージです。
他にもいろいろアイデアがあるので、一緒にできる人がいたらうれしいかな。

すごく脱線しましたが、よりよいゲームを作っていきたいと思います。
それではお楽しみください~( ^^)/

Unity IAP(In App Purchase):消耗型編の覚え書き

この記事はUnity IAP完全攻略への道:消耗型編(+コンビニ決済)を掘り下げた記事です

この記事では、基本的な処理は書かれているものの初心者にはわかりづらい点があります。

問題1・IAPクラスをどこに置くべきかわからない

「多分、UIやアイテム反映処理と別だよなあ…」←その通りです

問題2・「PurchaseProcessingResult.Pending」した購入プロセスがデバイスを終了させると無効化する

「Androidアプリのテストで遅延購入すると、反映されずに消費だけ行われる」ぞい…困った
※実は、購入ID(product.definition.id)の永続化が必要

問題3・遅延購入を有効化したら、思わぬ挙動が出た

初期化タイミングが重要です。
pendingしていた購入を有効化すると、その後すぐ購入処理が走ります。
ゲームデータが読み込まれていないのに購入処理をすると・・・どうなる?

以下解説します。

問題1・IAPクラスをどこに置くべきかわからない

常時利用できる場所に置く必要があります。
例えば、ゲーム開始画面にGameObjectを置きIAPをアタッチします。スクリプトは以下のようにシングルトンにできるようにしておくといいでしょう。

public class IAP : MonoBehaviour, IStoreListener
{
    // -----------------------------------------//
    // 設定
    // -----------------------------------------//
    // インスタンス
    public static PurchaseManager Instance { get; private set; }

    // コントローラー
    IStoreController storeController;
    IGooglePlayStoreExtensions googlePlayStoreExtensions;

    // -----------------------------------------//
    // 初期化
    // -----------------------------------------//
    void Awake()
    {
        if(Instance == null)
        {
            Instance = this;
            Debug.Log("Purchase Manager Awake.");
        }
        else
        {
            Destroy(gameObject);
        }
    }

    // 以下その他処理
}

初期化は問題3で実装するため、とりあえずなしにしておきます。
※Start内で初期化すると問題が起こります…。

そして外部スクリプトから、呼び出せるような関数を作っておきます。

// IAP内
    // 購入
    public void PurchaseProduct(string dataId)
    {
        // ID設定
        string productId = dataId; // 必要に応じてIDを変更

        // チェック
        if(storeController != null && storeController.products.WithID(productId) != null)
        {
            storeController.InitiatePurchase(productId); // 購入処理を実行
            Debug.Log($"Purchase Add:{productId}");
        }
        else
        {
            Debug.LogError("Purchase failed: Product not found or not initialized.");
        }
    }

そして、アイテムショップから以下のコードで呼び出します。

IAP.Instance.PurchaseProduct(dataId);

IAPが初期化されていれば、上記のコードが実行可能となります。

上記のように、どこからでもアクセスできるようにしておきましょう!
問題2・3への対応も、この配置が良いようです。

問題2・「PurchaseProcessingResult.Pending」した購入プロセスがデバイスを終了させると無効化する

起動中はデバイスに購入待ちデータが保管されているんですが、永続化されていないんですよね。
そのため、起動中に購入待ち処理が完了すると問題なく購入が完了します。
(なお、読んでみても詳しく書いてないという…)

データの永続化には、以下のコードのように「購入したもののIDを、PendingまたはComplete時に保存(永続化)」が必要となります。
IDをリスト形式(List)で保存しておくのが一番簡単かもしれません。
保存するものはPlayFabでも、EasySaveでも何でも可能です。

    // 購入プロセス開始
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        // プロダクト呼び出し
        var product = args.purchasedProduct;
        Debug.Log($"購入レシート処理開始: {product.definition.id}");

        // コンビニ決済未完了
        if(googlePlayStoreExtensions.IsPurchasedProductDeferred(product))
        {
            Debug.Log("コンビニ決済未完了のためPendingとします");
            // ここでproduct.definition.idを保存
            return PurchaseProcessingResult.Pending;
        }

        // レシート送信開始
        StartCoroutine(SendReceipt(product));

        // レシート未送信時点ではPendingを返しトランザクションを張る
        Debug.Log("レシート未送信のためPendingとします");
        // ここでproduct.definition.idを保存
        return PurchaseProcessingResult.Pending;
    }

    // レシート送信
    private IEnumerator SendReceipt(Product product)
    {
        Debug.Log($"レシート送信 Product:'{product.definition.id}'");

        // サーバーに決済データを送信
        var addPurchase = xxxxx; // 非同期処理を実装し、完了を待つ(例:Firebaseでデータを送る等) // ToDo
        yield return WaitForTask(addPurchase);
        if(addPurchase.IsCompletedSuccessfully) // 成功
        {
            Debug.Log("レシート処理完了");
            // ここでproduct.definition.idを削除
            storeController.ConfirmPendingPurchase(product);
        }
        else // 失敗
        {
            Debug.Log($"エラー: {addPurchase.Exception?.Message}");
        }
    }

そして保存したIDを、デバイス再起動時に復活させる処理が初期化後に必要です。

    // 初期化
    public void InitializePurchasing()
    {
        // 初期化済み確認
        if(storeController != null) return;
        Debug.Log("Initialize Purchasing");

        // ビルダー立ち上げ
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        builder.Configure<IGooglePlayConfiguration>().SetDeferredPurchaseListener(
            product => Debug.Log("コンビニ決済開始")
        );

        // 商品追加
        foreach(XXXXX)
        {
            builder.AddProduct(dataId, ProductType.Consumable);
        }

        // 初期化
        UnityPurchasing.Initialize(this, builder);

        // 保留の内容を確認
        CheckPurchasePendings();
    }

    // 保留中の内容を確認
    void CheckPurchasePendings()
    {
        Debug.Log("Check Purchase Pendings:");
        List<string> listId = xxx; // 読み込み

        // Pendingになっていたものリストを取得し、再確認
        if(listId.Count > 0)
        {
            foreach(string productId in listId)
            {
                PurchaseProduct(productId); // 定義したPurchaseProductを実行し、復活
                Debug.Log($"ProductId: {productId}");
            }
        }
        else // else
        {
            Debug.Log("No Pendings.");
        }
    }

上記のように設定すると、遅延購入が可能となります!

問題3・遅延購入を有効化したら、思わぬ挙動が出た

ゲームデータの読み込みを少し遅延する方法(EasySaveやFirebase)で行うと、IAP初期化してすぐに購入処理が走るため困ったことが起こる場合があります。
かんたんに言うと、ゲームデータが消えます。

【思ってた読み込みフロー】
ゲームデータ読み込み
↓
IAP初期化
↓
遅延購入実行
↓
購入対応:ゲームデータ書き込み

【設定をミスったら起こる読み込みフロー】
IAP初期化
↓
遅延購入実行
↓
購入対応:ゲームデータ書き込み ← アイテムデータ等を読み取っていない段階で上書きをしてしまう
↓
ゲームデータ読み込み ← 遅延する

あっ・・・これはデータが消えますねえ…
そのため、ゲーム立ち上げ時にはIAPは初期化せずゲームデータの読み込みを行ってください。
その後、以下のコードでIAP初期化を行ってください。

IAP.Instance.InitializePurchasing()

まとめ

以上のように、IAPには思わぬ落とし穴があります。
注意して開発を進めましょう!
それでは~( ^^)/

Meisyo3のサービス終了、監督たちの甲子園(Meisyo4)への注力

Meisyo3のサービスを終了します。
継続ユーザーがほぼいないので動かしている意味がない・・・オワタ/(^o^)\
インストール数800くらいで停滞しました。
そして、自身も対戦相手がいないこともありやめました。

失敗の原因

いくつかの観点で評価してみました。

見た目

一目で楽しそうな見た目をしてない。

アプリストア上で目立たない。
今度はキャラクリを採用するので、キャラゲーっぽい(見た目が大きく違う9人が画面にバーンと出てくるような)紹介画像にしたいですね。
ゲームのロゴもちゃんと作る。

見た目がいまいち

キャラが生き生きしている部分がない。ロボットみたい。
練習をしているイメージもないし、試合くらいしか各々の名前を覚えるだけのタイミングがない。

カッコよくない

メインユーザーは10~20代男性だと思ってるので、スタイリッシュさがないUI。きつい。

育成

シーズン制きつい。自分で好きなだけ育成させてくれ。

これまでの放置ゲーだったMeisyoと違い、放置ゲーもどき+シーズン制(例:三國志真戦)でLvがリセットされるシステムにしていました。
※シーズン制:3か月に1回Lvリセットがかかり、システムの調整やスキル等が追加されていく。
放置ゲーなのでレベルがすぐに上がりにくい。(毎日ログイン必須)
シーズン更新でわくわくするには、ゲームシステムの変更やイベント、スキルの追加等がないときつい。いろいろと体力がある運営じゃないと厳しいですね…。
勝手にレベルリセットすんなよもう一回育てたくない。。

試合

試合の面白さが足りない

スキルや選手たちの使い方をよく考えられていなかったと思います。
3Dにして色々できることは増えたものの、何か物足りない。

全般

ゲームが重い。試合が落ちる(ゲームの不具合が多い)

はい。これは3Dエンジン(Unity)初挑戦だったもので、だいぶ上手くいきませんでした。
・どんなゲームなんかわからん(説明が少ない)
・どこでも楽にできるゲームじゃない(使いやすさ) 

遊び方が分かっていない

スマホは横持ちなので、電車移動中など、空き時間になるタイミングでは物理的・心理的にプレイしづらい。
そんなに操作が求められないなら縦持ちが正義では・・・?

遊べるプラットフォームが少ない

iOSリリースなしですかそうですか…(日本人の大半はiOSですよね)

作者コメント

監督たちの甲子園は、育成画面の作成・テストが終わり、試合画面の作成がほぼ終わりそうです。
上記できついなーってところはおおよそ改善され、別ゲーになってます。
試合のテストまで待っててねー!

選手たちを育て、甲子園優勝を目指します!
その後もコーチで選手の育成を手伝ってもらったり、ユーザー甲子園で一緒に戦ったりします。
育成システムは、自分のペースで好きなだけ育成できるシステム(ウマ娘や栄冠ナインと同じ)を採用しました。
試合システムは、1球ごとの指示も、スキップもできる監督目線の試合です。選手たちの直接操作はできません。

そのため、ナンバリングをMeisyo4とはしているのですが、Meisyo、Meisyo3とも全くの別ゲーです。
とはいえ、コアとなる思想は変わらないので、プレイされている/されていた方は取っつきやすいかなと思います。

開発中の画像をペタリと。
練習をしている選手たちのイメージ図です。

各々選手たちの動きを入れて、、生き生きとさせていきたいですね。

それではでは~

できたゲームはこちら

監督たちの甲子園~世紀の逆転劇~ 正式サービス開始