本記事は、新歓ブログリレー2022の20日目の記事です。
春休みの前半を利用して、対戦型のタイピングゲーム『AVA-TYPE』を開発しました。プレイはこちらから。1万打鍵以上タイピングすると、あなたそっくりのタイピングをする「アバター」をオンライン上にアップロードできます。この記事では、今回のゲーム制作の振り返りに加え、ゲーム作りをしてみたい新入生に向けてノウハウを共有するという意味も込めて、開発のモチベや知見、今後の展望などを紹介します。前回記事「タイピングゲーム『CUBE』開発日記」はこちらから。
モチベ
まずは今回のタイピングゲーム『AVA-TYPE』を開発した動機について、簡単に紹介します。
タイピングゲーム作りてぇ!
まあ、やっぱりまずはこれに尽きますね。前作『CUBE』を公開したあとはタイパーの方を中心に様々な反響を頂きました。タイピングゲームにはメジャーなタイトルも数個しかありませんし、裾野を広げるのは正直簡単ではありません。実際、「タイピングゲームは流行らない」とまで評されているのを見かけたことがあります。ただ、その中でも確実にコアなファン層が存在しているのも事実です。まだまだ経験が浅いエンジニアの、それも個人制作のゲームにも関わらず一定数プレイして頂けるというのはやはりモチベに繋がります。
また、10年以上タイパーをやっている身として、「こんなタイピングゲームがあったら面白いな」というアイディアというか、想いが蓄積されているというのもあります。自分自身の妄想を形にしていく、そのプロセスそのものが楽しいです。
昨年リリースしたタイピングゲーム『CUBE』のプレイ画面 プレイはこちらから
「それ、新規性ありますか?」
前作『CUBE』を制作した時から共通している想いですが、「何か他とは違った、新規性のあるゲームを作りたい」というモチベーションもあります。一般的に、タイピングゲームは画一化されがちです。「決まった文字をいかに速く打つか」という極めてシンプルな目標を競うため、ある程度仕方のない側面もあるでしょう。その中でどう独自性を際立たせていくか、このゲームならではの新機能なり特徴なりを追加できるかが勝負だと思っています(もちろんどの分野のゲームでも独自性は大切ですが、タイピングにおいてはそれがより顕著だという話です)。
そんな中で、独自性として「他のタイパーのタイピングをシミュレーションするアバターと対戦出来たら面白いのではないか?」と思い至りました。リアルタイム対戦を出来るタイピングゲームは既にいくつかあります。とはいえ、いつでも尊敬できるタイパーと対戦できるわけではありません。無名のタイトルでオンライン対戦を実装したところで、そのうち過疎ってしまう可能性もあるでしょう。「いつでもどこでも手軽に、名前を知っている伝説のタイパーや実力の近いライバルのタイパーと対戦できたら良くないか?」というモチベで、このゲームが生まれました。
加えて、せっかくなので大学の講義で学んだ機械学習や表象文化に関する知識を生かしてみたいというモチベもありした。
続けてプレイしてもらいたい
何か継続してプレイしてもらう仕組みを作り出したいというモチベもありました。前作『CUBE』での反省点として、定着率があまり高くないという問題があります。「タイプウェル」や「歌謡タイピング劇場」などのように、コアなファン層に継続してプレイしてもらうことが本作の一つの狙いです。ソシャゲのように、日替わりで実施されるイベントか何かを、簡単なものでもいいから実装してみたいという動機で開発しました。
実装した「DAILY MISSION」機能
今回のゲームでは「日替わりアバター」「日替わりのアイテムセール」などが行われるのですが、本作ではこのイベント機能を全てフロントエンドで実装しています。このような日替わりイベントはそれぞれが一日ごとに乱数を発生させる実装にしてもよいのですが、イベント情報はやはりプレイヤー間で共通していた方が話題性も高いです。今回は、フロントエンド側で日付を元にした疑似乱数を生成してイベント情報を取得するという実装にしてあります。
つまり、このゲームのイベント発生などは全て確定的です。その気になればこのゲームの「イベント暦」を作ることも出来ます。その気にはなりませんが。
開発の流れ
2/10 開発開始
本ゲームは2/10に制作を開始しました。この日には構想を練り始め、レベルの数値決めやチーム制の導入などを行っています。何となく全体の画面デザインも決め始めました。
2/10の構想段階でのタイトル画面
2/15 アバターを描こう
開発開始から約1週間、ほとんどの画面のデザインを終了しました。この日までに、画面遷移の流れやシステムの大枠について決定し、汎用性の高い関数の作成を行っています。また、「アバター」の見た目を作ったのもこの日です。当初はタイピングに関連付けた見た目にしようかなと思っていたのですが、どう頑張ってもe-typingのイメージキャラクターと被るなあと思い方向転換しました。
イータイピング株式会社『e-typing』https://www.e-typing.ne.jp/member/ より引用(最終閲覧2022/03/28)
2/23 敵のタイピング実装
敵はやっぱり人間に近いタイピングをしてくれたほうが面白いので、どのように学習させるかを色々考えて実装しました。タイピングデータを学習した自分のコピーを生成するという目標があったため、ニューラルネットワークなんかで実現してもよいかなと当初は考えていました。ただ、モデルの構築にやや難があったのと、本当にNNで正確かつ効率的に再現できるのかやや疑問でした。プレイヤー全員がそれぞれ何十万打鍵、何百万打鍵とタイピングしてくれるのならば話は別ですが、なかなかそれは難しいです。そこで、このゲームではいくつかタイピングの特徴を抽出し、その抽出したデータに沿うようにタイピングの再現をしています。
ちなみにより具体的には、以下の8項目のデータを蓄積し、再現しています。
- 全体的な平均速度、平均正確性
- キー別の正確性、速度、安定性
- ミスの平均連鎖数
- 平均の初速
- ローマ字入力の場合、最適化のパターン(全て網羅はしていません)
- speedTensor
- cong
下2つの項目については造語なので補足が必要かもしれません。speedTensorは加速のパターンを再現します。ある時点でのタイピングについて、直近3打、6打、9打がそれぞれ自身の平均速度に対してどの程度の速度であるかをクラス分けしています。そして、その次のキーがどの速度で打たれたかを観測し、3種類のクラス分けに対応した平均速度に対応させます。N^3→Rの写像のようなものです。これにより、加速のパターンを再現することが出来ます。多分。congは、ミスはしないもののタイピング速度が極端に落ちる動きを再現するための仕組みです。自分でタイピングをしている際にこのような現象が発生することから考えつきました。より具体的には、ある1文字に対して「ミスはしていない」かつ「kpmが平均の2.5分の1未満」が成立した時に「詰まっている」と判断します。そして、この「詰まり」が何文字続くか、どの程度の確率で詰まりに入るのかなどを分析しています。
敵のタイピング画面。実は裏で色んな処理をしています。
3/1 BGM、効果音選び、そして冬眠へ
この日までにはほとんどの画面が完成して、BGMや効果音の選定に入りました。また、ニフクラを利用したオンラインアバター管理システムなどについても完成しました。ここから、スノボ旅行やら資格試験やら事務処理やらで2週間ほど開発中断期間に入ります。
3/17 開発再開、総仕上げ
この日に開発を再開しました。ただ、開発再開とは言っても主要機能の実装はほとんど終わっているのであとは細かな調整や追加のみです。主にチュートリアル画面の作成や敵アバターの難易度調整を行いました。あと、セール機能をつけたのもこのタイミングです(セールの価格表示がイマイチなのはそのためです)。
3/22 リリース!
3月22日、とうとう『AVA-TYPE』を一般公開しました! 公開前にもうちょっと告知とかしておいた方がよかったかなとも思ったのですが、予想以上に多くの方にアバターを登録してもらえて嬉しい限りです。当日と翌日はどちらも1日中空いていたので、報告を頂いたバグを中心に不具合修正なんかもやりました。
3/28現在、46名の方にアバターを登録して頂いています(名前部分を修正しています)。
知見
設計は大事
当たり前のことではありますが、ゲームを作る上で設計段階は本当に重要です。アジャイルやらなんやら言われていますが、私のような個人制作に関しては先に仕様を細かく策定したほうが良いと思います。正直なことを言うと、『CUBE』は作りながら気の赴くままに適当に機能を付け足していった産物です。よくあれで動いているなと思うほどグッチャグチャなものですし、開発スピードもそれほど速くありませんでした。しかし、今回の『AVA-TYPE』は仕様を事前にかなり練っておいたので非常に開発がスムーズにいきました。「作りたいものを考える段階」と「作りたいものを作る段階」をしっかり分けるクセをつけたいものです。
設計段階のメニュー画面。実際の画面のスクショではなく、設計段階で色々切り貼りして作った画像です。
プレイ層は意外と広い
今回の『AVA-TYPE』をリリースしたあと、Twitterなどで様々な方からご意見を頂きました。想定していたプレイ層は主にかつての自分のようなタイパーなのですが、それ以外の層からもプレイして頂いていたことが印象的です。特に、小中学生の方から反響があったのには驚きました。同時に、ふりがな機能の必要性などいくつか新たな発見もありました。Twitterを中心に広報しているためか予想以上に幅広い層へリーチしていたため、今後の制作に生かしていきたいです。
サーバーサイド、やりてぇ......
これが素直な感想です。フロントエンドだけでは、特に集客面で限界を痛感しました。この下の「展望」で詳述するので、ここでは軽く触れるだけにしておきます。
展望
最後に、今後の展望をまとめます。まだまだ高層段階で、未確定要素も多いです。
サーバーサイド、やる
これまで何となく敬遠してきたサーバーサイドにそろそろ手をつけたいなと思いました。『CUBE』『AVA-TYPE』の2作とも、ランキング機能はニフクラを使っているなどサーバー側のプログラミングを一切していません。何となく敷居が高いんですよね。ただ、今回のAVA-TYPEについても、「リアルタイムの対戦機能が欲しい」といった意見が少なくありませんでした。traPの講習期間も始まりますし、これを機にサーバーサイドも触ってみようかなと思っています。
traPでは講習会制度があり、部内に蓄積された技術、デザイン、作曲などの知見に触れることが出来ます。参加は自由ですが積極的に活用するのがおすすめです。
ゲーム性を持たせる
次回作はもっとゲーム性を高めてみようかなとも思っています。自分がいわゆる「競技タイピング」に触れてきたからか、どうしてもタイピングゲームというよりタイピング練習ソフトのようなものに偏りがちなんですよね。『CUBE』は一切ゲーム要素がありませんし、『AVA-TYPE』もコイン制度などを導入したとはいえ勝負は実力ベースで決定します。ただ、こうしたゲームはタイピングを極めたいコアな層(自分もその一員ですが)にはウケやすい一方で、その他の多くの人には継続してもらいにくく、ファン層も広がりにくいのかなというのが実感です。
今後は、「やりこむとゲームが有利になるシステム」と、「タイピングが速いと有利になるシステム」の中庸を目指したいですね。前述したように、次回は「タイピング練習ソフト」ではなく「タイピングゲーム」を作っていきたいです。一方で、かつての「盤打」まで速度要素を削ぎ落とすことは考えていません。次回作に向け、タイピングの実力とゲーム内の要素のバランスが取り方を模索中です。
ローカライズとか
次回作は日本語英語の2言語対応で作ろうと思います。今や海外で開発されたゲームに簡単にアクセスできる時代です。タイピングゲームはある種ニッチな分野であり、少なくとも「タイパー」と呼ばれる界隈に絞ればマーケットの規模は限られています。やっぱり反響があった方が嬉しいですし、海外へ目を向けない手はありません。ゆくゆくは多言語タイピングなんかにも手を出してみたい気持ちはありますが、まずは日本語と英語の2ヶ国語で頑張ってみようと考えています。
以上でこの記事の内容は終わりです。読んでくださってありがとうございました。新歓ブログリレー2022、明日は我がJK(情報工学系)の先輩@ayaseさんによる記事です。お楽しみに。