見出し画像

ゲーム作ろうと思ってから完成するまでの記録-2

長くなり過ぎたので、つづきを書いていきます。
noteのマガジン機能でまとめているので、そちらを見れば全部網羅できるようになっています。
https://note.mu/kayamatetsu/m/md0b168bcd4aa

16週目

16週間って、終われば4ヶ月です。実働2ヶ月で、1日ちょっとずつだから開発コストを計算すると…しなくていいです。好きで作ってるんだから。

また、「仕事じゃないから」というのも考えてないです。とにかく好きな物を自分なりにスパークして作る。それを見た人から色々な仕事の依頼が来ます。そういうふうにやっていくのが僕は好きなので、そうしています。自分の作ったものに惚れてくれた人と仕事をするのは、非常にやりやすいし、僕も頑張れます。

この期間は、まずストーリーの漫画を書いていました。シナリオができれば、ダンジョンの構成や敵の種類なんかもリンクしてくるので、かきました。これは、noteでも見れるようにしました(ぜんぶまとめてマガジンに列記してあります)。

そのあと、ダンジョンのマップを作ります。毎回、遊ぶ度にダンジョンのマップを一定のアルゴリズムに沿ってランダムに生成します。といっても、僕の今回のゲームの場合は普通のゲームのような地図は無く、基本的には一本道で、「その道中に何が配置されているか」というマップになります。これを作りました。後で調整しやすいように、この部分だけ独立したファイルで管理しておいて、メインのゲームプログラムから読み込ませています。

マップのランダムさは、あまりにもランダムにすると運の要素が強くなってしまって、不公平感も出ます。あまりにルールが強すぎても、「覚えた者勝ち」になってしまうので、面白くありません。

僕は、運が先手で来て、その運をプレイヤーが克服するタイプのゲームが好きです。なんとなく、人生っぽい気がするし。運がベースにありつつ、ラッキーをつかめるか、アンラッキーの被害を最小にできるか、その一番大事な部分で人間の知識や判断が問われる、というのが好みです。

つぎに、アイテムの効果を作っていきます。各アイテムを、各敵に使った時の効果を考えていきます。アイテムは今15種類、敵は25種類ぐらいいるので、375種類の効果がありますが、重複するものもあるからそんなに大変じゃないです。例えば、マシーン系のネコに硬いものを投げた場合、カキーンとなるけど、液体を投げた場合は破壊できる、という感じです。

次は、最初の方に着手した敵の絵が全然できてないので、次はそっちをやりつつ、ダンジョンを1週遊べるように、決めた仕様をコードに訳していく感じです。

途中引っ越しで2ヶ月飛んでるせいか、今の所どこもしんどい感じは無く、全部楽しい感じです。操作入力の部分が1日だけちょっと大変だったかな。


17週目

外は暑いですね。毎日アイスを食べてます。

敵の絵をどんどん進めました。9割終わりました。基本的なダンジョンの敵組成はこれで足りるので、一旦ここまでにしました。

工場でカセットを生産する昔のコンピューターゲームとは違って、アプリのゲームは、あとからいくらでもアップデートできます。あとで敵とダンジョンを追加します。だけど、はっきり言って、最初からできるだけ揃っている方が良いです。好きになってくれるプレーヤーは、最初の1ヶ月で、すごい遊んでくれます。その時にボリューム不足でガッカリさせたら、僕も不本意です。だから9割は作っておきます。

ネコです。描けたそばから、宣伝用の画像もイメージして作ってみます。自分がワクワクしない感じだったら、軌道修正していきます。作るのが楽しいのは結構なんですが、完成形を見ても「うむ、よいぞ」と思えるようにします。

このへんは、前回も登場したネコです。

チーズも襲ってきます。

ゾンビもいます。

そろそろアイコンも作ります。16秒で考えて、よかったので、こんなのでいいと思いました。アイコンについても、色々な流行や「ダウンロードしてもらうための理論」みたいなのがあります。無限に工夫できます。10個作って、売れてるアプリや、周囲に並ぶであろうアイコンと並べて、ターゲットになりそうな人にアンケートをとるとかも、よくやられています。

最後の最後は「自分の商品の看板として納得いくのか」ということに尽きます。どこかでかじり読みした安っぽい「DLされるアイコンの作り方」記事を参考にしても、納得いって後悔しなければ良いんです。

(改めて書くことでもないですが)納得・不服、後悔・無後悔の判断も、自分がどういう人間で、どういう生き方で、どういう感じのことをしていきたいのかっていうことが関わるので、全部そういうのも含めてデザインします。全て、単に、「僕は、こうです」ということです。

ネコの絵を進めている間にも、少しだけコードを書きました。具体的には、敵を画面サイズに合うように調整して、それを画面に登場させる演出部分とかです。

適当に作って、4インチ(スマートフォン)と8インチ(タブレット)で確認します。タブレットはもうちょっと大きい物で試した方が良いかもしれません。どこかの段階で1度は確認しときます。

次は、アイテムを使った時に敵がリアクションしたりする部分、ネズミがネコから攻撃を受けてダメージを負う部分を作ろうかと思ってます。それができたら特殊なアイテムや、特殊なダメージ。ここは今までに比べたら少し大変です。甲子園で言うと、準々決勝ぐらいかな。


18週目

他のことをやっていて進められませんでした。
他のことは大体終わったので、来週はできると思う。

ちょっと伊豆に行ってきました。いろいろ見れて良かったです。僕は郊外のニュータウンで育ったので、戦後〜70年代の良い感じの建物とかをあまり子どもの頃に接していなかったです。なので、色んな所でそういうのを見たりするのが好きで、ゲームをつくる上でもとても良いです。


19週目

この週は絵が全然ないので見てきたシーラカンスを貼っておきます。

やったことを書きます。

・外部ファイルみたいな感じで置いてあるダンジョンのマップデータをゲームが読み込んで、そのデータを元に敵の出る確率とか分布を計算する仕組みを作った。

・このゲームは、アイテムに使用効果(たとえば、「使用対象のHPを8回復させる」とか)があるんじゃなくて、アイテムと使用対象の組合せで効果が決まる(たとえば「ネコマシーンに水ゼリーを使うとショートして壊れる」とか)。その組合せが今回は500通りぐらいあったので、大変にならない程度に作文して入力していく。まだ日本語だけ。翻訳不能なダジャレとかもあるので、英語とかは一回全部完成してから。

・ネズミのライフが増えたり減ったりする部分。ゼロになったら死んだり、最大ライフ以上にならないように、とかはまだ作ってない。

僕はプログラマーではないから、絵を扱わないでコードだけでずっと作業していくのは結構つかれる。ただ、疲れてても仕方ないので、「テストプレイっぽい動きができるように進めていく」。

ゲームが一通り動かなくても、たとえばドラクエみたいなRPGで「外を歩き回ってランダムに敵が出て、戦闘はまだ作ってないからAボタンを押したらすぐ戦闘画面が終わって元の画面に戻る」みたいな部分だけ作っちゃえば、敵の出る頻度と出る敵の種類が確認できたりする。部分的にでもテストしていくと自分は楽しいです。

もうしばらくコードばっかりいじって、そうしたら試しに遊べるようになりそう。そしたら次は、ネズミの装備を作ろうと思う。装備は今までほとんど作ったことが無かったから、あまり難しくせず、単純なやつを作る予定。


20週目

先週に引き続き、一緒にデザインやプログラムの仕事をしている4人で夏休み合宿してました。みんなそれぞれの作業をして、好きに過ごします。僕はゲームを作ったりしてました。

僕はgoogleドキュメントのスプレッドシートがかなり好きで、意味も無く色々な物を表にして、管理しています。これは意味あります。

敵の分布を、ダンジョンの階層に応じて変化させていく表です。ドラマチックな冒険になるように、まるでダンジョンが生きているかのようにメリハリをつけられたら最高です。だけど、適当でいいと思います。

実際の確率と、体感確率というのは全然違うので、何度も遊んでみて気に入ったテーブルに調整するのがいいと僕は思います。そういう調整に時間をかけるためにも、完成は早い方がいいね、と思います。難しいけど。

敵の攻撃の種類に応じて、色んなアニメパターンが出るようにします。古今東西色んな方式がありますが、思い出に残っていて好きなのはスーパーファミコン「MOTHER2」の幾何学的なエフェクト、ゲームボーイ「サガ」などのシンボル化されたようなエフェクト等です。

ああいう「思い出に残るエフェクト」というのは、単に個性的なだけではなく、ゲームの内容や様式としっかり同調して、ゲーム全体のリズムを強く大きくしているような印象があります。

マザーではマップ構成などに「斜め」というのが多く使われていて、6角形、3角形、平行四辺形のデザインがとても合うようになっています。
サガではゲームボーイならではの画面の狭さに、四角い敵やコマンドがみっちりお弁当のように詰まっていて、そこに境界線のしっかりした具体性のあるエフェクトが入り、点滅や揺れと協調しています。
って感じ?とにかく良いものは、良い。

これは、書いてるプログラムの例です。プログラムと言っても僕が書いているのはとても初歩的なもので、「この絵をこれだけ動かしたい」とか、「こういうメッセージを表示したい」という感じの連続です。算数も「さんすうすいすい」登場レベルしか使えません。

コードも全然きれいじゃないし、正直これを見せるのもとても恥ずかしいですが、プログラミングやってみたい人の勇気になれば。冗談抜きでこれはバカにされるレベルですが、それでも前向きな気持ちでいれば生きていけます。

せっかく合宿中だから、ということで、一通り動くようにして試しに触ってもらいました。課題がドッサリ、まだ実装しないといけないことも多い。やってもらってる最中に「あ、そのアイテムまだ使っても動かないのよ」「あ、その敵まだ動かないです」の連続。

結構だるくなってくるのもこのあたり。だけど、嫌ならそれだけのこと。完成して、あの人に遊んでもらったり、あの人に感想を言ってもらったり、できるだろうか。それだけのものを作れてるだろうか。完成が近づいてくると自信も減ってくる。

頭の中でイメージしてた理想の状態を、素手で組み始めて理想通りのゴールに辿り着けることなんて、奇跡に近い。色々不安にもなるけど、「完成しないより完成した方がいいんじゃないかな」というのは僕の場合、最後まで変わりません。


21週目22週目23週目

この3週間は何だったかと言うと、簡単に言うと夏休みです。
このゲームはほとんど一人で作っていて、見せて感想をもらったり、技術的な相談をしたりするのは日常的に色々あるんだけど、基本的には一人。普段はグループで作業を協力して進めたり、催しを計画したりしています。

そういうグループ活動は、みんなの予定があった時に一気にやったりするので、どうしても毎日ゲーム作りがストップする期間があります。これのバランスは人それぞれだと思いますけど、僕は「再開するのが困難になるほどストップしちゃ困る」とか「1年間に何も作ったものがないっていう状態は避けたい」とか、なんとなく思うことがあります。

今年は僕は一緒に仕事もしている大阪の本屋「シカク」で店長と「二人フリマ」というのをやっています。今もやっているので良かったら是非どうぞ。他にも冊子作りをやっていたんですが、これはまだ完成は先になりそうです。

23週目

で、23週目です。適当に計算してるのでズレがあるかもしれませんが、5ヶ月経ってます。実際作業したのがどれくらいかは知らないですけど、とにかく。
ゲームオーバーを作ります。できました。
ゲームオーバー条件を作って、それをトリガーに操作不能にして、演出を入れて、動かしたパラメータなどを初期化、次の画面を呼び出し、という感じです。

同じようにしてゲームクリアも作ります。ゲームを止めて離脱するのはゲームオーバーと同じなので、結構似てます。ゲームの出口はこの2つなので、これでゲームのメインパートが一周できたことになります(本当は出口はこれ以外にも「端末の電池が切れる」「電話がかかってくる」とか色々あるけど、その処理は後回し)。何度かテストして、レアなバグ以外は適当につぶして、次の作業に移ります。

本当はそろそろメモリ使用量とかを削りたいんですが、アイデアだけメモっておいて、あとでやります。実機テストをiPad miniとAndroidの小さいやつでやっていて、前者と後者でだんだん動作に差が出てきたためです。前回「利子20階」というアプリを作ったとき、iOSでかなり遅い動作になってしまって、クパチーノの方角(東だと聞いております)を向いて怒り泣いた覚えがあります。今回はそんなことないようにしたいんです。絶対!でもそれは、あとで。

もう随分前だけど、ダンジョンに入る前にドラクエで言う「町」というか、集落のような画面を作っていました。そこでは色んなお店やステータスチェックみたいなのができるようになったらいいなと思っていたので、そこの画面で動くお店機能とかをデザインします。

iPhone6は大きいらしいですが、Androidは色んな機種があるし、iPhoneもまだまだ古い機種が現役で動いてます。なのでボタンはできるだけ大きくしたいんですが、意外に画面に収まらないもので、すこし苦労します。

こういうのは1つ1つがツールソフトみたいな動きになるので、バグらないようにきれいにコードします。ゲーム内通貨であってもプレイヤーが時間や根性、時には幸運を使って稼いだスコアなので、これを消費する部分は特に、変な挙動をしないように作ります。手間はかかるけど気をつければ大丈夫です。

こういうものも自前で組むことによって、より「自分で作ったものを遊んでもらう」ということが可能になります。僕は最終的にはエレメカ(「じゃんけんゲームマシン」みたいなゲーム筐体)も自分で作って、好きな液晶やボタンで自分のゲームを動かしたいです。


そして時は流れ…

完成しました!最初に思い立ってから1年かかっちゃいましたね。

でもいいんです、完成したというのはそれぐらい素晴らしいことです。最初に書いたと思うけど、「自分の好きなようにやる」というのが一番です。「売れなきゃ意味ない」「特別驚くような内容ではない」とか、他人の評価は気にせず、まずは思いっきり楽しんで作って、日々が幸せであることが僕は好きです。

すごくおいしいドラゴンフルーツを食べたことがあるでしょうか。本当のAAAAAクラスのドラゴンフルーツには、苦みもえぐみも塩気も、微量ですが含まれています。それが本当に素晴らしい配合になっています。制作作業にも面倒さや苦しみや悩みが混ざっていますが、それは、AのAのAのAのAを起こすためのスパイスです。

終盤のあらすじ

まず、別のアプリを作りました。「エンカウント将棋」というミニゲームです。

なぜかというと、冒頭に書いたかもしれませんが、僕は今回、アプリゲームを作るためのミドルウェアを変えました。新しいミドルウェアで書き出したアプリで不具合が起きないか確認したかった感じです。

2011年に僕は初めてスマートフォンアプリを作ったんですが、そのころはネイティブで作っていました。「ネイティブで作る」というのは、iOSとかAndroidの、それぞれ提供している開発環境で作るって感じです。

ネイティブじゃない場合は、何か別の開発ソフトを使って、その開発ソフトがネイティブに翻訳してるイメージです。こういう開発ソフトを、中間に立ってくれるのでミドルウェアといいます。大体のイメージなので、本当にこういうことを知りたい人は自分で調べてみてください。

ミドルウェアは諸刃ウェアなので、いろいろ便利なことと不便なことがあります。ですが、大体iOSとAndroidのアプリを同時に開発できたりします。日本語しかしゃべれない僕が、日本語とポルトガル語とタガログ語をしゃべれる人を雇う感じです。

それを新しいやつにしたので、そのミドルウェアで作ったものがどれぐらいいい感じで動くか、実際にストアに並べてみてユーザーに届くまでやってみて問題がないかを確認するということです。説明長くてすいません。なぜ変えたかと言うと、一番の理由は、「もっといいやつが見つかって、数年は使えそうな感じだったから」です。

そしてその「エンカウント将棋」は、自分たちがたまにやっている「クソゲー大会」で適当に作ったミニゲームでした。クソゲー大会というのは、一緒に頼まれ仕事とかをしてる仲間で「この日を休みにして、朝から10時間でゲーム作ろう」とか決めて、夜みんなでそれを遊び合って、技術的な意見交換をしたりする感じです。何が楽しいかというと、お菓子やジュースを買い込んで机の上に並べるのが楽しいです。遠くに住んでてもskypeをつなぎっぱなしにして「あー全然まだ作れてない!」とか言い合います。

それをアプリ用にアレンジして、「アプリ内課金」をつけました。この課金システムが、できれば「利子98階」に組み込みたい仕組みだったので、調べて使えるようにしました。

僕は、作る側として、無料アプリが好きです。というのも、お金をもらってしまうと、責任が少なからず生じるからです。自分のプログラムミスで動かなかった場合、バグがひどくて最悪だった場合、全然面白くなかった場合、など。

なので、無料で遊んでもらってから、動作確認がとれて内容に納得してから買ってもらいたいのです。その場合、(1)無料アプリと有料アプリを作って個別にダウンロードしてもらう、か、(2)無料アプリの中に課金する仕組みを入れる、になります。

(1)は、「エンカウント将棋無料体験版(無料)」「エンカウント将棋完全版(有料)」のように、別個のアプリとしてストアに並べる感じです。これは、ダウンロードする側は面倒だし、作る側は、何かアップデートする時に2本とも更新しなくちゃいけなかったりします。

あまり苦労話をしても仕方ないので、とにかくそれをできるようにして「エンカウント将棋」をリリースして、それで問題ないことを確認しました。そして「利子98階」にそれを実装して、リリースしました。

あとやったことといえば、友達や知り合いに声をかけて、色んな人にテストプレイをやってもらいながら、意見を集めて難易度や操作を調整したり、バグを直したり、英訳をつけたりしました。

英訳は少し大変でした。「英訳は少し大変でした」って10文字だけど、英語だと「translation(翻訳)」だけで11文字なので、色々なレイアウトや文学性を犠牲にしながら、動作やコストとニラメッコさせて調整しました。

とにかくそうして完成し、ひとまずAndroid版をリリースして、iOS版も審査に出したので、いずれ発売です。iOSアプリを出すためには、節っぽい穴による審査があります。これを通過すると、パクリアプリや差別表現アプリでもiTunesStoreに並びます。審査はダメでも審査をしている一人一人は素敵な人だと思う。改善することを願っていますし、応援しています。

審査以外にも、ストアに出すには色々な作業があります。アプリの説明を各言語で書いたり、iOSだとアイコンが16種類も提出しなくちゃいけなかったり(iPad用とかiPhone4のこの画面用とか、サイズバリエーションがたくさん)。

こういうのは手伝ってもらいながら、適当に進めていきます。アプリを出すまでには事務的な作業もあるけど、何かを考えたり作る作業の合間に、気分転換に準備しておいたりすると、自分は楽です。なので、先にどんな素材を準備するのか把握しておくといいかもしれません。

そういうわけで

まとめとしては、「やっぱり完成することは自分にとって、楽しく生きるために大切であり有効な感じ」ということです。

たとえ小さな物でも、完成させると、その大きさに応じた社会的な信用もゲットできます。「この人は会社勤めじゃなくてネットでの言動も不真面目だけど、これぐらいの大きさのアプリを完成させる能力はある」という客観的な事実が、頼りないかもしれないけど、僕の生活を守ってくれています。

この「利子98階」を作っている1年間の間にも、何本かアプリ制作の仕事を依頼されて、完了したので、次のゲームを作ったりしても死なない感じにはなってると思います(貧乏だからって死なないけどね)。

それと、この1年間の間に、2回引っ越しをして、ベルリンにも滞在していたので、あまり「ずっと作っていた」というより「色々なことの隙間で作っていた」という感じがします。これからも、あまり無理はせずに、好きなように、「今自分は好きなようにやってるかな」と点検しながら、自分が素晴らしいと思えるように、やっていこうと思います。

もしあなたが何かを完成させようとしているなら、うまくいくといいですね!うまくいかなくても、そんなにダメージを受けずに次に行けるといいですね。人生は長いので、時には適当な気持ちでやり過ごした方がいい時もあるだろうし。

最後になりましたが、読んでくれた人、ありがとうございます。昨日までに有料noteを買ってくれた人には、ゲームの中で使える隠しコマンドを、後日お贈りします。もしよかったらアプリをダウンロードして、お盆の頃、入力してみてください。無料でダウンロードするだけでコマンドは使えますので、ゲームに課金しなくても大丈夫です。


今は、次のゲーム「平家にあらずんばカニにあらず」を準備しています。数年前から興味を持ち出した源平合戦をテーマにした、カニのゲームです。神戸の西の方に引っ越して、ここらへんの海岸には源平の色んな史跡があって、興味が強まってきました。本州の横長い、鎌倉から山口県に向けて一直線に横移動して衰退していった平家の、カニのごときたるや。東から西に「退いていく」というのは、ゲームのスクロール方向としては「マジョリティ」。逆に源氏は左へ攻めていった。これはマイノリティが「覆し」をおこなうっていう、本当に「おごれるものは久しからず」、盛者必衰の理を表現してる。いや本当に、これはいいぞって感じです。「利子98階」も、住居を奪われたネズミがそれをお金で覆そうとする話です。興味があったら是非遊んでみてください。

「完成するまでの記録」をまとめたマガジン

https://note.mu/kayamatetsu/m/md0b168bcd4aa
日誌などのある1番最初のnote
https://note.mu/kayamatetsu/n/ne4224998c792