7月にAndroid スマホ用のシューティングゲーム作りを終わらせました。通して考えると特にキツかったことがあります。2つあるんですが、どちらもキツかった原因は同じです。
①広告の組み込み・表示
せっかくゲームを公開するなら、収入につながった方がうれしいですよね。画面の一部に広告を表示するようにして、ユーザーがそれを見たら広告収入が入る、というやり方があります。でもぼくらがまさか企業を「広告を出しませんか?」なんて聞いて回るわけにはいきません。ゲームの作者は広告を配信してくれる会社に頼んで自分の作ったゲームに表示するのでのです。そういった会社は、たくさんの企業を相手にして、広告を表示してお金をもらう、という仕事をしています。表示先がぼくらの作ったゲーム、というわけです。そういった、配信の会社はたくさんあります。
広告を表示するには、会社の指示に従って開発者側でいくつか作業することが必要です。ところが……それがなかなかうまくいかないのです。工程のどこかで大抵なにかトラブルが起こるんですね。例えば、Google の AdMob は広告を配信してくれるのですが、ぼくはうまくいきませんでした。サイトではいろいろ丁寧に「ああせよ、こうせよ」と説明してくれているんですが。ネットで検索すると、いろんな人がいろいろ試していて「こうしたらうまくいった」というような記事がたくさん見つかります。しかしそれを片っ端からやってもうまくいかない。開発環境はゲーム作者によって当然(細かな、あるいは大きな)違いがあります。一律、「こうすればOK」というわけにはいかないんでしょう。「××という環境変数を××に変えて、……」とか「××フォルダの××というファイルの××の部分を書き換えて、……」といった感じにみなさんいろいろ試しており、それを記事にしてくれているんですが。一番信頼できるのは広告会社の出している技術情報のはずで、それを見て分かる人はそれでうまくやります。そういう人はトラブったときにどうしたらよいか、分かる部分も多いのでしょう、ネットに情報を載せてくれています。ありがたいんですが、そういうわけで解決が難しいこともあるのです。結局うまくいったのは別の配信会社でした。
②ランキング機能の実装
いまどきのゲームなら、ランキング機能はついていることが多いでしょう(ぼく自身はゲームはほとんどやらないので想像ですが……)。実現する方法は? どこかにデータベースみたいなものを用意します。あちこちのスマホにダウンロードされたゲームは、スコアをそのデータベースへ送るようにします。そして上位10人分のスコアをゲーム側で手に入れるようにすればよいのです。そういうデータベースを用意してくれている会社があります。このブログでも紹介した、ニフクラやFirebaseなどがそうです。このとき、やはりさっき広告の表示で書いたような問題が起こるのです。
数学や物理の勉強をしていても分からないことはたくさん出てきますが、いったん解決すればそれは確実に自分の力になります。でも今回紹介したような話はどうか。トラブルを解決できても、それは次の不具合を直すための実力にはなっていない気がします。特に「ネットでこういう記事があった。それに従ってこうしたらうまくいった」みたいな場合です。こういう感じだと、ことによると明日起こる問題はもう解決できないかも知れません。
プロの友だちに聞いたら「そんなのは日常茶飯事。経験で、そういうときどうすればよいか何となく分かるようになってくる。それが技術者の実力でもある」とのこと。まあそうなんでしょうが、ぼくはとにかくこれが辛かったです……。