エンジニアが書いてるようなブログ

ゲームプログラマをやっています。仕事やゲームや趣味に関してつらつら

CoD:WW2 からまなぶ、飽きないゲームづくりのテンポ3選

こんにちは

最近、CoD:WW2 を買いました。

https://www.amazon.co.jp/gp/product/B07254346J?ie=UTF8&blackCurtainKey=cero-black-curtain&redirect=true

この手のシューティングゲームはAVAのようなオンラインゲームしかやったことがありませんでした。ですが、今回第二次世界大戦をモチーフにしているということで、ストーリーも気になり買ってみることにしました。

実際やってみると、とっても面白かったです!!

ですが、それ以上にゲームとして完成されていると感じました。歴史あるゲームなので当たり前ですが、初めてプレイする身としては感動しました。

今日はCoD:WW2 でうまいなと思ったゲーム表現をつらつら書いていきたいと思います。

ゲームのテンポがすごい

一番すごいと感じたことは、ゲームのテンポがかなり良いと感じました。ゲームのテンポが悪いと、最悪飽きてしまったり、イライラしたりとゲーム進行に支障きたしてしまいます。

1.短期目標の長さが適切

ゲームを始めると、最終目標はストーリーや上官の言葉から理解できます。しかし、まず何をするかがわかりません。敵を倒すのか、アイテムを探索するのか、悩んでしまいます。

このゲームは、スタートボタンを押すと、目標地点とそこまでの距離と目的が見えます。

そして、このゲームのいいところは、その目標が絶妙に近いところです。あまりに遠すぎる目標は意欲がなくなりますが、目標が近いので、意欲低下なくゲームができます。

2.銃を打つ以外のアクションのタイミングが絶妙

FPS型の銃を打つゲームは単調になりがちです。相手をみて、銃を打って、次に進む。それ以外に要素がない場合は作業になってしまい、後半に飽きが来てしまいます。

このゲームでは、銃を打つメインパートの他に、コマンド打つ場面や、戦車を操作する場面、戦闘機を操る場面など、多種多様なゲーム表現を繰り出してきます。

これによって、新しい刺激が入り、普段の銃を打つメインパートにも新鮮な気持ちで当たることができます。

3.やられた際の次の戦略が立てやすい

FPSゲーム全般に当てはまることですが、銃でやられた後に、どこから、当たったのか、誰に殺されたのかを表示する機能があります。

例えば、スナイパーにやられたなら、次は初めにスナイパーを倒そうという戦略がたてられます。これによって、無駄なつまずきもなく、テンポよくゲームを進められます。

まとめ

CoD : WW2 に限らず、歴史のあるゲームはノウハウの塊です。学べることはたくさんあります。

特にあまり考察されていないゲームはその時は面白くてもすぐに飽きが来てしまいます。

このような、テンポを大事にしたゲームをもっとやりたいなと感じます。

会社に入って初めて気づく、一日8時間も仕事ができないこと

こんにちは

最近、ゲームのリリース作業などで重度の残業して、ちょっと思ったことを書きたいと思います。

新卒の方で、なんか残業が多いなと思う方はぜひ読んで下さい。

一日の仕事は8時間?

毎日9時に出社して、17時に帰るとします。そうすると一日の作業時間は8時間となります。通常では、この時間間隔で業務の作業時間を見積もってタスクを決めて行きます。

しかし、このように決めたタスクが果たして、時間通りに実行できるでしょうか?いろいろな原因が有ると思いますが、時間の観点からすると不可能です。

実際の作業時間は半分?

以下の図を見てください。これは、僕の一日の平均的な予定と、理想のスケジュール、そして実際のスケジュールとなります。

f:id:tkymx83:20171118202521p:plain

理想のスケジュールでは、17時に仕事が終わっていても、実際は朝会や会議などでかなりの時間が取られてしまいます。

とくに複数の案件を抱えている場合は会議だけで仕事が終わる場合もあります。

実際に定時までで終わると、作業時間は実際の半分の4時間ほどしか残っていません。

それじゃ定時に帰れないの?


帰る方法はあります。それは、予定を組む方法を変えることです。例えば、一日4時間しか働けないのであれば、4時間のスケジュールを立てることです。

仕事のスケジュールを決めるのは、仕事の仕方や予定を組む人が違うのであれば難しいかもしれません。しかし、自分で工数を決めることができる場合はできればそうしてほしいです。

それじゃ仕事が終わらないじゃんと思うかもしれません。

そんなことはありません。ただでさえ、今は残業を前提としたスケジュールを組んでいます。

残業をできない日もあるかもしれません。「残業がきつかったので、仕事ができませんでした。」そんな言い訳は誰も聞いてくれませんし、そんな不安定な仕事を誰も望んでいません。

できない時はできない。それこそが責任のある仕事管理だと思います。

Cocos 2d-x の導入が超簡単だった。

こんにちは。

皆さんはゲーム開発のフレームワークは何をつかっていますか?

僕は昔、Cocos 2d-x で最近は Unity ばっかりです。

Unity は視覚的に作りやすい、よく使われると、王道のような存在なのです。

ですが、フリー版ではゲーム起動時のアイコンが出るのであまり使いたくないなと思っていました。

そこで、今回久々に Cocos 2d-x に手を出したのですが、予想以上に導入が簡単になっていたので、紹介したいと思います。

環境

macOS Sierra
バージョン 10.12.6

ダウンロード

以下URL から ダウンロードします。
www.cocos2d-x.org

f:id:tkymx83:20171111202124p:plain

環境変数の設定

cocos というコマンドを使用可能にするために
初期設定を行います。

まずコンソールでCocos 2d-x をインストールしたディレクトリに移動します。

その後以下のコマンドを実行します。

python setup.py

この際、以下のようにAndroid SDK, NDK のパスを要求されますので、必要な場合は入力をしてください。

f:id:tkymx83:20171111230024p:plain


Android SDKAndroid Studio などをいんすとーるしていれば、 ~/Library/Android/sdk/ に有ると思います。

環境変数は ~/.bash_profileに書き込まれるので、以下のコマンドを実行して、環境変数の適応を行ってください

source ~/.bash_profile


これで、cocos コマンドが使えるようになりました。

プロジェクトの作成

では、cocos コマンドでプロジェクトを生成します。

以下のコマンドでプロジェクトを生成します。

cocos new MyGame -p com.your_company.mygame -l cpp -d NEW_PROJECTS_DIR


MyGame :自分のゲームの名前を
com.your_company.mygame :自分の任意のパッケージ名を
NEW_PROJECTS_DIR:プロジェクトを作成するディレクトリを

※ コマンドを実行するとNEW_PROJECTS_DIR/MyGame の中にプロジェクトのファイルがあります。

プロジェクトを起動

では、ios のプロジェクトを起動したいと思います。
xcode が入っていれば、以下のファイルをダブルクリックすることでxcode上でプロジェクトが展開されます。

MyGame/proj.ios_mac/LifeGame.xcodeproj 


展開されたら、ビルドを実行します。そうすると以下のようにサンプルプログラムが起動します。

f:id:tkymx83:20171111203250p:plain

まとめ

かんたんですね。

たった3ステップで終わってしまいました。

Unity などと違い、起動も早く、開発効率も良いと思われます。

それでは!

ゲーム開発が進まない、3つの理由 〜特に趣味でチーム開発〜

こんにちは

皆さんゲーム開発していますか?

"やっているけど、進まない。"
"なんか、会議で話しても何も決まっていない気がする。"

そんなことを感じている人がいるかもしれません。

今回はそんな方々に僕の経験からなんでゲーム開発ができないかをまとめました。

まずは結論から

進まない理由はだいたい以下の3つです。

1. 今やるべきことがわからず無駄な開発をする。
2. 作るもの具体像が湧いていない。
3. 担当分野があいまいで誰が何を判断すればいいかわからない。

それでは簡単に説明しようと思います。

1. 今やるべきことがわからず無駄な開発をする。

これは、いちばんのあるあるです。

例えば
"開発が始まって間もないのにチュートリアルから全てを考えている"

"キャラクターのある技の細かい性能を考えることに時間をさいてしまう"

"基本的な機能も決まっていないのにコンテンツを増やすことを考えている"

上のような経験はありませんか?

なぜ無駄な開発をしてしまうのか?それは、無駄な部分には夢が詰まっているからです。

"すごい技を出せるゲームがつくりたい"、"こんなストーリーのゲームがいい"。"主人公のパラメータは絶対これ!"

などなど、ゲーム作成は夢から始まるのはいいことですが、それは作られた物があってからの話です。

まず行わないといけないは、ゲームのメインの一番面白さを左右する部分をさっさと作ることです。

それが終わったら、リリースまでたくさんのコンテンツを作るのが得策だと思います。

2. 作るもの具体像が湧いていない。

企画をやってといわれて、まずはじめに何を考えるでしょうか?

チームで企画の共通認識がない場合はそれぞれ別のことを考えているかもしれません。

その状況でいざ会議をしてみると、みんなバラバラな意見しか出ず、意見がまとまることはありません。

まずおこなわないといけないのは、共通認識を作ることです。

たとえば、今日の会議ではテーマとコンセプトとシステムを決めようと提案します。そうすると、みんなそれについて考えてきます。

当たり前のようかもしれませんが、これができていないことが結構あります。

これは開発の初めだけではなく、中盤でも何を持って企画の完成とするのかなど、考えることはさまざまです。

ゲーム開発に慣れていない間は、会議の終わりに次の会議までに何をやってくるのかを一人ひとり明確に決めるようにしましょう。

3. 担当分野があいまいで誰が何を判断すればいいかわからない。

プログラマが3人でゲーム開発をした時、一人の人にタスクが集中していたりしませんか?

重大の問題が見つかった時、どうやって決定を下すのかを決まっていますか?

このように、タスクの割り振りや規格の決定など、何を持って物事を決めるかを考えることは大事です。

特に趣味でやっている場合はこれが曖昧となるため、とても苦労することになります。

そんな時にやらないといけないのは、責任の範囲を話し合う前に決めておくことです。

プログラマが複数人いても、バトル部分、UI部分、ネットワーク部分など、分担は様々です。

企画でも、細かいことを決める人と、もっと大きなことを決める人、企画の面白さに責任を持つ人、等色々決めることができます。

相談して決めることは最もコストが高く、判断基準も曖昧になりがちです。

責任を分散して、最終決定は誰かに従うなどを、決めておくことで、決める手を省くことができるのでとってもやりやすくなります。

※責任をおっても自分で独断していいわけではありません。周りの人の意見をまとめるということです。

まとめ

3つとその対策をまとめると

1. 今の開発の段階を考慮して作るべきものを考えよう
2. 具体的に何をどこまでやるのかをしっかり話し合ってから開発を行おう
3. 責任を分散することで、決定や会議にかけるコストを削減して開発に集中しよう

以上です。

チェックボックスと箇条書きだけでタスク管理をしていて気づいたこと

こんにちは!

最近、タスク管理にEvernoteを使っています。
しかし、チェックボックスと箇条書き機能しか使っていません。

それだけ??

と、思ったかもしれません。
ですが、シンプルなので、見やすく、まとめやすく、とても使いやすいです。

今日は、チェックボックスと箇条書きの魅力を紹介したいと思います。

チェックボックスと箇条書きのタスク管理

僕のタスクリストはだいたい以下のようになっています。

f:id:tkymx83:20171106235757p:plain

見て分かる通り、シンプルです。チェックボックスと箇条書きのみからなっています。

だいたい僕は以下のような項目を作って、管理しています。

  • いつものタスク
  • スケジュール
  • 優先度の高いタスク
  • 優先度の低いタスク

これを一日ごとに作ります。作るのは前日の終わりか、その日の朝です。
前日の分をコピペして、付け足したり、削ったりしながら今日を決めていきます。

このような使い方をしていてよかったことを上げたいと思います。

視覚的にわかりやすくかける

タスクに対して、情報を付け足したい時があると思います。

例えば、買い物の行き先や、特売情報などです。

普通のタスクリストを使っていると、項目が小さくて書けなかったり、書く欄が無いなど不便なところがあります。

しかし、箇条書きなので、視覚的にわかりやすい階層構造で記述することができます。

自分なりの情報を付け加えることができる。

僕の場合は [OK], [WAIT]などの情報を付けています。

[OK] なら、今すぐ行動ができる

[WAIT] なら、何か待っていて、それが終わったら行動ができるということです。

こうすることで、今何をやるべきかをすぐに判断できます。

このような付加的な情報を簡単にわかりやすくつけることができます。

今のタスクのみに焦点を当てることができる

このタスクリストは毎日その日の日付で作り直します。

具体的には前日のノートをコピーして、当日のものにします。

そのときに、スケジュールを書き換え、終わったタスクは消します。

そうすると、今やらないといけないタスクのみが見えるので、それに集中することができます。

さらに、いままでの分は残っているため、前のタスクは過去の情報からわかります。

まとめ

やってよかったことを色々話しましたが、まとめると以下のようになります。

  • テキスト飲みとシンプルなので、タスク管理ソフトのやり方に合わせる必要がない
  • 自分の思い通りに工夫できる
  • 毎日作り直すことで、今そのときに集中してタスクを管理できる

一番のメリットは自由度だと思います。

タスク管理は毎日行うことなので、自分の思い通りになるものを使うのが一番だと思います。

ゲーム企画を始める時にはじめに考える3つのこと

こんにちは。

今回は、ゲームを企画するときに僕がよく行っていることを解説したいと思います。
なおこれは、以下の本からの受け売りになります。

対象読者

  • ゲームを企画したいけど、何から決めたらいいかわからない
  • チームで企画することになったけど、進め方がわからない
  • ゲームの考えがありすぎてまとまらない

初めに考える事

端的に言うと、はじめに考えることは、ゲームの「テーマ」「コンセプト」「システム」です。

テーマ

テーマとは、そのゲームで表現したいぼんやりとした全体的なものです。

例えば、「はしる」「氷」「空」「飛ぶ」「踏みつける」などです。

ぼんやりとしたものなので、自分が作りたいものをイメージするとよいうと思います。

また、対象がきっちり決まっている場合は、その方に届けたいイメージを決めます。

コンセプト

コンセプトとは、遊んでくれる人が感じる感情です。

例えば、「素早く駆け抜けたときの爽快感」、「努力して高く飛べたときの達成感」などです。

ゲームで一番遊んでくれる人が楽しいと感じてくれる場面を思い浮かべると良いと思います。

システム

システムはコンセプトを再現するための具体施策となります。

例えば、コンセプトが「素早く駆け抜けたときの爽快感」ならば、「キャラクタが障害物に当たらない間は高速に移動し続けるシステム」、「高速であれば有るほど周りの動きが遅くなる」などなどです。

忘れてはいけないことは、コンセプトがぶれないことです。そのために、コンセプトでしっかりと楽しさを決める必要があります。

次にすること

システムまで決めると、もうゲームが完成したようなものです。

骨組みが完成しているので、あとは肉付けをしていくだけです。

こんなステージ、ストーリー、キャラクターがいい!などです。

しかし、一つ忘れてはいけないことがあります。

それは、はじめに決めた、テーマ、コンセプト、システムを曲げないことです。

これに注意して楽しいゲーム開発を行ってください。

マルチタスクの落とし穴、「思い出しコスト」が作業を遅らせる

こんにちは、最近仕事をマルチタスクで行う限界に気づきました。

※本記事は筆者の思ったことを綴っています。読者と筆者の今後の成長のためにも、あえて断定気味に書いています。もし違う意見があればコメントお願いします。

対象読者

  • 何故かいつもマルチタスクになり、なんか仕事がうまくいかないと思っている。
  • マルチタスクはいけないこと、一つに事に向かう必要があるとは思っている。

結論

マルチタスクは思い出しコストが高いため、おすすめはしない。

マルチタスクの原因は一つのタスクに集中しているときに、待ち時間が発生して、他のことに気が移ってしまうため。

待ち時間は次の工程をいかに効率的に進めるかどうかを考えよう。

マルチタスクの原因

マルチタスクになってしまう原因はいくつかありますが、だいたい以下のような理由だと思います。

  • 他の人に聞かないいけないがその人がいない
  • 緊急性の高いタスクが入ってきた
  • ダウンロードや読み込みの時間が長い
  • 会議が入っていてその間会議のことを考えないといけない
  • 会議の準備など、時間に左右されるタスクがある。

どれも仕方ないように見えますよね。

マルチタスクの問題点

一番大きな問題は「思い出しコスト」です。
以下の図を見てください。

f:id:tkymx83:20171029130054p:plain

マルチタスクの理想は図の上です。
※赤い線が待ち時間です。

このように、タスク切り替えがスムーズにでき、最短でタスクを終わらせられると見えます。

しかし、実際は違います。思い出しコストが存在します。

思い出しコストには以下のようなことも含まれます。

  • どこまでやっていたかをメモなどを見ながら思い出す。
  • 作業の環境を整える

これらを短縮することはとても難しいです。メモなどがあっても全ては把握し直すことはできないのです。知的作業であった場合は、考慮漏れなども発生して、手戻りで更に時間を使うことも有るでしょう。

ではどうすればいいのか?

図の下のように一つの事に集中する必要があります。

待ち時間の間に次の工程をいかに短くするか考えるということです。

作業に集中していると、どうしても今のことしか考えることができません。しかし、ちょっと考えるだけで、無駄な作業や、効率的に作業をやる方法が浮かんできます。

例えば、似た作業を一緒に行う。フローを考察して無駄をなくす。やるべきこと、やらないことを整理する。今行っていることが正しいのかを考える。などです。

待ち時間はそれらのことを考えるのにうってつけの時間になります。そして、思い出しコストなしに、更にタスクを短くできる。

図を見ても、その長さは理想の状態と同じです。

最後に

仕事をしているとどうしても、待ち時間が惜しいものです。特にはじめのうちは作業を効率的にこなそうとマルチタスクに心が動いてしまいます。

しかし、マルチタスクに効率性を求めずに、今のタスクを効率的にやる方法を考えてみてもいいのではないでしょうか?

無駄なことを、複数行うのか?
それとも、効率的なことをひとつだけ行うのか?

成長するのは後者だと思います。