実装方法は目的に合わせて柔軟に考えてみよう【ゲーム開発】
ちょっと抽象的な話になってしまいますが、何かの機能を実装する際にはその機能の実装に目を向けすぎないことが大切です。時には「本当にこの機能は必要か」と自分に問いかけることも必要だったりします。
ゲームを完成させることが本来の目的であるはずなのに、その機能を実装することが目的に切り替わってしまって、思った以上に時間が過ぎてしまっていた……なんてこともよくあるので、目的を意識することを忘れずにしたいところ。
機能の実装に躍起になることも
例えばゲームを作っていてとある機能を作りたいと思っていたとしましょう。
その機能を実現するための方法を調べていたらライブラリが既にあるようでした。早速そのライブラリを導入してみたものの、自分が実現したい機能の一部だけうまくいかない……なんてことが稀によくあります。
ライブラリはあくまで他の人が作ってくれたものですから、100%自分が実現したいことが含まれているかというと、必ずしもそうではないんですよね。(100%ではないだけで90%くらいは自分のやりたいことが既にAPI一発でできちゃったりするのでめちゃくちゃありがたいのですが)
こうした時にはライブラリの中をくまなく探してどうにか自分が実現したい機能ができないか時間をかけて探してしまいがちです。
そして「なんでこの部分だけピンポイントで無いんだ……」なんて嘆いたり。見つからない、見つからないよぉ……と呟きながらAPIドキュメントを眺めている様子は、客観的に見たら生前の落とし物を探している幽霊のようです。追い詰められている時はだいたい死んだ魚のような目をしていますからね(笑)
固執すると手が止まる
なにかひとつの方法に固執するのは思わぬ足止めになったりするので、一度深呼吸をして「本当にこの機能が必要か?」と自分に問いかけてみましょう。
それが絶対になくてはならない機能だったらライブラリを拡張して自分でカスタマイズするのも良いでしょうし、なくてもなんとかなる機能であればいっそ実装しないか次のアップデートに回すのも良いと思います。
あるいは似たような機能を持ったライブラリを組み合わせることができるかどうかまで視点を広げてみるのも良いでしょう。
ライブラリをくまなくみている最中は本来実現したい機能が頭から抜けて、ライブラリ自体をうまく使えないかと模索しちゃいがちなので目的を見失わないように注意しておくことも大切です。
大事なのは目的を意識しつつ、視野を狭めないことです。
なんなら、別の方法でその機能を実現したっていいんですからね。方法はひとつじゃないと思っているだけでも気が楽になります。
勉強が先か、リリースが先か
ただ、ライブラリから勉強するのも大切なことです。他の人のソースコードを見て学ぶのはとても良い機会ですし、ぜひやっておきたいところです。特にGitHubでよく使われているライブラリは、多くの人の目に触れているだけあって読みやすかったり書き方がきれいだったりするのでここから吸収していくのも良い勉強です。
「このライブラリのそもそもの目的は? どのような課題を解決したかったのか?」といった部分をソースコードとReadMeから読み取ることで、実装と意図との対応が見えてくるのも良い点です。今はTwitterなどのSNSでライブラリの作者と連絡を取ることもできるので、答えてくれるかどうかは別として質問できる点も良いところ。
ライブラリ自体にはこうした利点があるので、その利点を生かすために、今は機能を実装してゲームを完成させるのが先か? それともライブラリから学んで技術を高めるのが先か? と、目的に合わせて行動を選択するようにすると良いと思います。
目的はなにか? という問いかけは普段のお仕事でもやっていると思うので、その考えをゲーム開発にも使っちゃいましょう。
ゲーミフィケーションの考え方ではゲーム開発の知識を普段の生活に持ち込むことでモチベーションを維持・向上させようとしています。逆に普段の生活や働き方の知恵もゲーム開発に持ち込むことでより効率的なゲーム開発ができます。
ゲーム開発特有の話というよりはなんだか仕事のフレームワークみたいな話になりましたが、伝えたかったのは「柔軟さも意識してみましょう」ということでした。
個人的なおすすめ
個人的なおすすめですが、勉強するのとリリースするの、どちらが先かと言われたらリリースを先にした方がいいと思っています。
その理由として、勉強した知識は使わないと身につかないためです。友達から聞いた話ですが、その友達は上司から「後学のためにこれを学んでおいて。業務指示じゃないから作業時間はチャージしないでね」なんてほぼ強制的に勉強させられたことがあったそうです。が、ものの見事にその知識は使うことがなかったようで、悲しい顔をしていました。実践の機会のない知識を勉強するのはなかなか大変なことです。
ゲームをリリースするために必要な知識を入れることもありますが、あくまで目的はリリースのためと割り切っておくのが良いでしょう。
リリースした後に、プロジェクトを振り返ってみて理解を深めていくのはぜひやるべきだと思っています。リリースした後ならユーザーさんの反応という材料もあるので、意思決定の精度が上がります。
「多分ユーザーさんはこう感じるだろう」と思って開発するのと、「実際にユーザーさんからこういう反応が返ってきた」というのでは、情報の重みが変わってくるはずです。ユーザーさんの実際の反応の方が大切な情報ですよね。
RPGで例えるなら、ストーリーを先に進めることでより効率の良い狩場を使うことができるイメージです。最初の城の周りで延々とレベルを上げ続けるのと、ストーリーに合わせて成長していっていい装備、いいスキルを身に付けて楽々敵を倒してレベル上げをするのでは、後者の方が楽ですし爽快感もあります。強い敵を倒しているという実感もあって自信につながりますし。
「いやいや、俺は知識を万全にしてからゲームを作りたいんだ!」というプレイスタイルならそれはそれでいいと思います。自分のスタイルに合わせてやりやすい方法を選ぶのがベストですからね。
まとめ
ゲームを完成させてリリースすることが目的だったはずが、開発途中で追加している機能を実装すること自体が目的になってしまうこともあるので、機能実装そのものに注目するのではなく、リリースという目的を念頭においておきましょう。
リリースするためにこの機能は必要か? といった問いも必要なことがあります。
固執を避けて柔軟に、です。
ゲーム開発の攻略チャートを作りました!
-
前の記事
モチベーションを上げるゲーミフィケーション【ゲーム開発者の強み】 2020.10.18
-
次の記事
料理人を目指すか素材の生産者を目指すか【ゲームの素材から作る?】 2020.10.20
コメントを書く