監督たちの甲子園(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とも全くの別ゲーです。
とはいえ、コアとなる思想は変わらないので、プレイされている/されていた方は取っつきやすいかなと思います。

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

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

それではでは~

できたゲームはこちら

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

C# 最適化による読み込み速度向上実験

ゲーム 監督たちの甲子園(仮)で、オーダー設定を作っています。
ただ、動作がクソ重いので最適化でどれくらい重いのか、最適化するとどうなるのか比較したいと思います。

動作イメージは下記の通りです。

動画の通りPCでも少しフリーズします。少し古いスマホだとちょっとイラっとするくらい待機時間が入ります。

実験はオーダー設定の3種類の時間をカウントします。
DisplayOrderFirst:オーダー(スタメン、控え、ベンチ外)の表示
ChangeOrder:メンバー変更
ChangeBench:ベンチメンバー設定

読み込み速度測定利用するデバイスは、よくあるノートPCです。

全く最適化をしていないので重いのかな;つД`)

最適化方法はUnity 最適化メモに準じます。

結果

DisplayOrderFirst:53%減
ChangeOrder:75%減
ChangeBench:69%減

大きく削減効果が見られました。
とてもスムーズに動作するように感じます!

最も効果があったのは、Instantiate()、Destroy()回数の最適化でした。
選手表示用のGameObjectの生成を何度も行うことをやめ、必要なタイミングだけInstantiateを行うようにしました。
オブジェクトプールは元々同じようなものが導入されており、より読み込み回数が少なくなるように変更しました。

その他はLinq削除、Debug.Log削除、Start, Awake, OnEnable で負荷の重い処理をしないを行いました。
上記のInstantiate()に関して、Start, Awake, OnEnable で負荷の重い処理をしないと組み合わせて・・・ChangeOrder用とChangeBench用のGameObject生成にはプリロード関数を作っておき、負荷がかかりにくいタイミングでupdate(フラグ管理)で読み込みをします。

負荷が気にならない部分に読み込みを分散するのは、体感に大きな影響を与えそうですね!

最適化前

DisplayOrderFirst:256ms
ChangeOrder:121ms
ChangeBench:129ms


クリック時の引っかかり感がどうしても気になる…。PCでこれはキツい。

最適化後

DisplayOrderFirst:120ms(ロード80ms、表示40ms)
ChangeOrder:30ms
ChangeBench:40ms


クリック時の引っかかり感がなくなりました。

コメント

クリック時の待機時間がかなり気にならなくなりました。
いずれかの選手を交代すると複数のデータを再設定する必要があるのですが、今回は生成部分を大きくカットした仕様となります。

より最適化するのであれば、交代に関与していない選手の再ロードは必要ないので、削減が考えられます。
とはいえ再ロードを含めた表示速度が30~40msのため、それほど改善の余地はないでしょう。

Meisyo3(前作)では、野球の試合中になぜか重い・・・続けていると落ちることが多くありました。orz
今回はこちらを利用しつつ、体感良く作れるようにします!

確かにInstantiate()の調整やオブジェクトプールの積極的な利用、プリロードの最適化もしてなかったな。。。

ゲーム 監督たちの甲子園(仮) 制作開始

弱小高校の監督となり、「数多の強敵を倒す」「逆境を跳ね返す」指揮(戦略・戦術)を楽しむ3Dストラテジーゲームの開発を開始します。

これまで同様の背景を持った名将と呼ばれた者達(Meisyo)シリーズを開発・運営しています。本作はその背景を引き継ぎますが、ゲームシステムを刷新し、モバイル(スマホ、Web等)で遊べるようにする予定です。

クローズドなテストプレイに参加したい方は下記で連絡いたしますので、ぜひ参加してみてください。
Discord:監督たちの甲子園(仮)

更新情報はTwitter:れいで発信しています。
現在は、育成のユーザーインターフェースを作っています。

作成工程(フェーズ)は、育成系と試合、最終調整と3フェーズに分けて実装していきます。
1月2日現在、育成フェーズが80%程度進捗しています。もう少々お待ちください。

育成画面イメージ↓

トップページ
練習風景1
練習風景2

※キャラクターは現在1キャラのみですが、最終調整時に追加します。

試合キャラクターイメージ(UIなし)↓

※今はモックアップのためほぼ何もありません。試合フェーズできちんと作ります。

画面は縦持ちスマホベースのため、現在はこちらでリリース予定です。
ある程度の反響をいただけた場合、PC版を別UI(横長版)でリリースします。

ゲームタイトル

監督たちの甲子園~世紀の逆転劇~
英:Koshien: Reversal Baseball

タイトルは、「監督」「甲子園(高校野球)」「指揮ゲー」「逆転できる要素」であることを直感的に分かるように変更しています。
「逆転できる要素」は、選手采配のタイミングとスキルの組み合わせですね。それらの要素をすぐに体験できるようなチュートリアル(かゲームの基本導線)を作りたいところ。
※有名ゲームでもないのでMeisyoのナンバリングやめました。

セールスポイント

弱小高校の監督となり、「数多の強敵を倒す」「逆境を跳ね返す」指揮(戦略・戦術)を楽しむ3Dストラテジーゲームという一文に集約されています。

遊び方としては、メインは「ノーマルモードで甲子園優勝を目指す!」です。
もう少し遊びたい人は「1か月に1回あるユーザー大会(現在の公式戦)で勝負!」って感じになると思います。

楽しんでほしいポイントはいくつもありまして、今までのMeisyoシリーズとは大きく異なる点があります。

ポイント1. 選手の存在感、試合の臨場感

すべての始まりは、この画像からです。

「このキャラクターたちを(自作のゲーム上で)モバイルで動かせるの?」という驚きと、投手の速球をプロレベル(150~160km/h)に上げた時の「凄ぇ・・・打てっこない」という畏怖、つまり、モバイル上でも選手の存在感や、試合の臨場感を出せるということに魅了されましたね。

皆がゲームをプレイしたいのは、もちろん暇つぶしもあるんやろうけど、ある感情が欲しくてプレイしてるんちゃうかなと・・・。(いきなりの関西弁)

いろいろなモバイルアプリを仕事上でも、趣味でもプレイしていて、なんか物足りないというか・・・そういう不足感を感じていました。ゲームシステムも単純で、レベルや装備(または課金)で強さを上げて、ちょろっと組み合わせを変えて物理で殴るようなゲームしかないのもあったでしょう。

たとえば、全般的に達成感が薄い。
野球ゲームに限らず、負けても再戦できるし、工夫※もそんなにできないし、何よりキャラクターたちの実在感がそこまでない。そういうことが積み重なって、そこまで思い入れがない。だから悔しくもなんともない・・・から達成感がないんやろなと。
よくある野球ゲームだと、なんか知らんうちに結果が決まって、選手たちが出荷されていく感。
※工夫というのは、「ゲームのストーリーに則れば考えうることができる準備」ですね。野球で例えるなら、監督なら「試合で選手をどう動かしたいか、あらかじめ考えとくよね?」ということですね。しかしほとんどのゲームでは、自動操作時の動きを一ミリも設定できない⇒何か知らんけどバカやって負けてる⇒何やこれツライみたいな感じです。

モバイルゲームはもちろんライトなプレイが求められているのはわかっているのですが、これで納得できるんか?と。

最近出た栄冠ナイン クロスロードも物足りないですね・・・というか育成に時間がめっちゃかかる割に、工夫の余地が少なすぎへん?と。
映像を見せられてる感がある。強くする方法をはじめとして、確かに「何をすべきか」がわかりやすいけど。
「え?それを調べるのもゲームちゃうん?」という昔ながらのおじさんの考え方もあり。

対して、この画像のように、直感的に、感性にグッとくるような、モバイルゲームが作れるということを知ってしまった。
これらを知るきっかけとなったインディーゲームたち、その製作者たちはすごいよねと。一般的に有名なタイトルでは最近だと、ウマ娘や原神みたいにスマホゲーでもやればできるやんと。(なお予算)

というわけで、選手たちの存在感と、試合の臨場感を楽しめるようにしたいですね。
もっと根源的な話で言うなら、試合会場のネット越し・テレビ越しで見る「高校野球」と、よくある高校野球のゲームがあまりにも違い過ぎて・・・どうにかしたいし、できそうや~という個人的な偏執・確信ですかね。

ポイント2. かんたん・さくさくプレイ

Meisyo3では、(使用している技術の問題で)Androidまたは一部のPCやデバイスのみしかプレイできませんでした。
このゲームでは、すべてのデバイスに対応できるように技術選定から一新します。

問い合わせでよくあった(プレイヤーさん)「プレイしたい」→(プレイヤーさん)「できない…」→(ワイ)「対応できないorz」がとてもつらかった・・・;つД`)

加えて、オフラインでのプレイを前提とします。どこでもダウンロードしたデバイスさえあれば、プレイできるようにします。
ロードなどの通信上の問題を少しも気にせずに、さくさくプレイできようにしたいですね~。

なお、オンラインでの対戦も想定していまして、そのメインは対人戦を想定しています。
・「ユーザー大会」・・・現在の公式戦と同じルール(1か月1回、全員本戦から開始)を想定。人が十分いるなら都道府県予選から実施したいなあ…。
・「ランク戦」・・・勝敗によりレート上下。レートによって報酬がもらえる。
・「甲子園大会」・・・ユーザーチームを相手にしたリアル系甲子園大会。地方大会から4~7回戦(レートや総合力で判定)を勝ち抜いて、優勝を目指すモードです。
※リアルタイムバトルではなく、NPCの代わりにユーザーチームと対戦するイメージです。

なお、モバイルゲームをベースとしており、かんたん・さくさくなプレイ体験を提供したいと思います。
見た目(インターフェース)や触り心地について、他にいくつかモバイルアプリを作っており、作者が作った従来のアレなものより少しずつ改善していっています。
Meisyo3は見切り発車な部分が大きかったのですが、今回は作者自身が納得いくまで正式リリースしません。(という心意気を持って開発したいですね)
「初心者が直感的に触れられる」初期UIを採用し、設定変更で「熟練者も満足できるくらい細かく設定できる」追加UIを提供する予定です。

それらの体験を向上させるためにユーザーテストを何度か行う予定ですので、興味のある方はご協力をお願いします。

ポイント3. さくさくゲームシステム

これまでの放置ゲーではなくなり、(不老不死の監督になって)1週間ごとに練習を指示していくゲームシステムにします。
ストーリーはありません。(プレイヤーが多くなったり、要望が出たら作るかも程度ですね)

ポイント4. 選手たちとのつながり

学校と、選手たち(&コーチたち)とのつながりでゲームが進みます。
(MeisyoやMeisyo+と違い、)選手たちが卒業します。卒業後は、プロ野球に進むことができればOB登録でき、自校のコーチとして選べるようになります。
コーチはランダムで各練習に顔を出し、コーチの能力に応じて練習効率を上げてくれます。

ポイント5. 甲子園

選手たちは1回きり、3年しかない高校野球生活で、甲子園出場・優勝を目標にしてゲームが進みます。
これまでになかった都道府県設定、都道府県ごとの特徴やスカウトシステムが出てきます。

これまで都道府県システムを入れるの忘れてたのは申し訳ない…orz
やっぱり地元って強いですよねえ…。

ポイント6. 指揮

Meisyo3で推していた「指揮」や「スキル」のタイミング・使いどころ。これらの要素によって、より大きく試合運びが変わるバランスにします。

MeisyoやMeisyo+では試合が全自動で進行するため、スキルは自動発動でした。
対して、このゲームでは「発動タイミングを選べる」「自動発動」など種類を増やし、戦術を組み立てるうえでどのようなチームにしたいかを実現できるようにします。

それを織り込むので、大きな視点でのチームとしての相性、小さな視点での選手としての相性など、さまざまな戦略的な要素が生きるように・・・したいですね。
先行逃げ切り型で、強い中継ぎ→抑えで逃げ切るチームや・・・後半巻き返しをする(序盤耐え、後半で能力が上がってくる)ようなチームですね。

さまざまな要素で楽しめるサービスを作っていきたいと思います。
それでは、よろしくお願いいたします。

作者コメント

Meisyo4の制作を色々と準備していましたが、ゲームコンセプトがほぼ固まり、開発工程がある程度見えたので発表することにしました。

開発方法はMeisyo3とは違い、先にUIを作って、ユーザーテストでプレイのおおざっぱな体感を確かめてから作りこみをしていきたいと思います。
なぜなら、Meisyo3は「とりあえず作ってリリースする!」「いまどのレベルくらい作れるか市場で試す!」(今思うと、Unity一作目で本気か!?)という挑戦的な面がありましたし、人に未完成のモノを見せるのも恥ずかしいかなーという感情がありました。

ですが、Meisyo3をリリースしてから何度か知人に実地ユーザーテストをさせてもらい、改善を反映した結果体感が全くの別ゲーになったので、、絶対採用した方がええやんと。

そこで得た知見として、試合(3D)は見た目・キャラクターモーション/音声などを除き、中身は改修すべきポイントは所々にあるもののMeisyo3で問題なさそうでした。工数も大幅に削減でき、いかにさくさく・かんたんさを初期の段階で詰め切れるかが勝負かなと~。
(試合中の特定タイミング(アルゴリズム上のすぐ対応できない不具合)でメモリ不足になって落ちる不具合は早急に対応せねばですが。。)

絵やサウンドについては、これまで使ってこなかったCanvaやFigma、生成AIなどを使ってより魅力的なものを提供していきたいですね。
↓記事の画像が、それらのツールを使って自作した球場の一枚絵です。かなりリアルにできた気がする。

画像を高明細度で細かく見るとグラウンドに何人選手がいるんだ!?ってなりますが、画像サイズが小さいとそこまで気にならないわね。

(;^^)まずはUI作ってテストプレイしていこ~
( ^^)ノよろしくー