C++

C++で初めてのゲーム開発する時に、気をつけて欲しいこと

C++で初めてのゲーム開発する時に、気をつけて欲しいこと

最初に

こんにちは、ろっさむです。

この記事は書き忘れていた初心者C++ アドベントカレンダーに登録します。ほんと申し訳ないです。

今回は私自身が専門学校に通っていた頃、自分がやらかしたことや、共に開発する仲間に「これだけは気をつけて欲しい」と思ったことを、対処法を添えてご紹介します。

ファイル名やフォルダ、コメントに、個人の名前をつけるな!

これは、学生さんたちが集まって共同開発する際に、分担しようとして失敗するケースです。たまにあります。

やめてください。

分担後に、誰か一人が途中で抜けたり、進捗が滞った際はどうするんでしょう。その人の名前のフォルダに入ってファイルをいじって、そのコードのコメントに「// ここからは(個人名)が書いた」とでも書くんでしょうか。

最初のうちは、フォルダには作成する機能の名前をつけましょう(例えば、フォルダ名は「Enemy」で、その下には敵の実装に直接結びつくようなコード類を入れておく)。

また、ソースファイル名やコメントに関しても、できるだけ個人に依存しないものにしましょう。誰か一人がその機能の担当となったとしても、そのコードを編集するのはその人だけとは限りません。

ソースファイル名は、その中で行う処理がどのような機能を持つかで決まります。コメントは、直近のクラスや処理が、一見した時や名前だけではわかりにくい時に補足として説明を加えましょう。

1つの機能を分担するのであれば、そのような用途にも対応した言語機能がC++にはあります。

また、「誰が作ったクラスかわからなくなるじゃないか!」と思う人もいるかもしれません。その件に関しては次項を確認してください。

コードの受け渡しにUSBを使うな!

これもグループ制作の時にありがちでした。

確かにUSBでのやり取りは楽です。敷居が低いですし。でも、よく考えてください。そのUSB、忘れたり無くしたらどうするんですか。しかも一つ前のバージョンとの差分とかも、見ることができません。新バージョンと区別するために古い方のフォルダの名前に日時情報を付与するのも変ではありませんか。延々と古いコードが蓄積されてメモリを圧迫する事態も起きます。

やめましょう。

プログラマなら世に出ているツールを使って、手間暇のかかる手動バージョン管理を闇に葬りましょう。

今回の場合だとGitが最適です。無料で使えますし。あと就活とかにもGitの経験は役立ちます。Git用に使えるウェブサービス、GithubやBitbucket等もあるし。

Gitを使えば、

  • 誰が編集した
  • いつ変更があった
  • その時の変更箇所の提示
  • 登録しているコード等の変更履歴

などなどの情報を残していくことが可能です。また、最新のバージョンをGit側に置いておくことで、自分のローカルに最新のバージョンを落としてきて誰にも迷惑かけずに簡単にテスト用コードを試したり、上手くいかなかったら最新のバージョンまで巻き戻したりすることもできます。

「でもGit難しそうだよ...」

と思うのもわかります。ほんとなら、チーム制作が行われる前に授業としてあった方がいいのかもしれませんが、ないものはしょうがないです。なので、自分たちで1日だけでも勉強して実際に使ってみましょう。

Gitを実際に開発に使う場合に必要となる勉強は以下のみです。

  • Gitの概念
  • リポジトリ作成
  • clone
  • checkout
  • add
  • commit
  • push
  • revert
  • reset

できればエンジニアだけでなくデザイナーさんも使用できるようになるのが望ましいです。

変数名にaとかbとか、testとか、パッと見て何に使われているかわからない名前はやめよう!

ちゃんと、どのように使われているかがわかる変数名にしましょう。英単語を思いつかない時はGoogle翻訳に自分がやりたいことを文にして投げてみたらいいと思います。

ただし、凝りすぎてめちゃくちゃ長い名前になったり、日本人があまり馴染みのない英単語を使いまくると、逆にわかりづらくなります。できるだけ日本人がパッと見て理解できる単語で名前をつけると、他人にも、3ヶ月後の未来の自分にも優しいコードとなるでしょう。

また、グローバルな変数(又はマクロや別名用の大文字変数)の名前の接頭辞にアンダーバー(_)を使わないようにしましょう。一応、グローバル名前空間以外であれば、接頭辞アンダーバーは認められていますが避けた方が無難です。接頭辞アンダーバー+英大文字は絶対禁止なのでやめましょう。言語処理に必要な予約語に使用されているため、意図しない影響が出てくるかもしれません。それからアンダーバーを二つ連続(__)で使用するのもよろしくないです。

あとは、名前をつける際に命名規則として、クラス名にはパスカルケース、関数や変数名にはキャメルケース、マクロには大文字スネークケース、といったようにチームで揃えておくと、グッと見やすいコードへ近付きます。

ifや、forを何重にも入れ子にするな!関数に分けよう!

正直何重にも連なっていると見辛いし直感的にわかりにくいしバグの元となります。関数ごとにわけましょう。ほんとに。

その他

  • グローバル変数は使わない。
  • 継承に頼り切りにならない。

など、まだまだあるとは思いますが、私個人で最低限気をつけて欲しい部分はこんな感じです。

この記事に関して、付け足したい項目や不明点などあればTwitterなどにてご連絡ください。以上。