ゲームプログラマのためのコーディング技術

ゲーム プログラマ ノ タメノ コーディング ギジュツ

ゲームプログラマのためのコーディング技術の表紙
プログラミング
著者:
大圖衛玄(オオズ, モリハル)
出版社:
技術評論社
出版日:
2015年06月
ISBN:
9784774174136
在庫:
在庫あり
0
中級者向け
プログラミングゲーム開発コード設計ソフトウェアエンジニアリング抽象化コーディング規約保守性チーム開発ソフトウェアアーキテクチャパフォーマンス最適化

なぜ注目されているか

言及数
246位
総合301位 ↓ 2 ランクダウン 言及 12 件・うち記事 11 件を掲載
02320222023202420252026

書籍紹介

多くの機能を持つゲームのプログラムは、巨大で複雑になりがちです。また、コードの保守、機能追加の工程には複数のプログラマが関わります。ゲームのプログラムには「わかりやすいコード」「効率よく機能を追加できる設計」が求められます。これはゲームに限らず、職業プログラマとして必要なコーディング技術です。本書では、すぐに実践できるコーディング技術を解説していきます。まず、コードの抽象化を理解するため、複雑なコードを単純にして小さくするテクニックを紹介します。

技書の森解説

『ゲームプログラマのためのコーディング技術』 (大圖 衛玄 著、技術評論社、2015 年 6 月刊) は、巨大で複雑になりがちなゲームのプログラムを、わかりやすく機能を足しやすい形に保つための書き方を、C++ のサンプルコードで解説する実践書です。副題はコーディングパターン、オブジェクト指向、コードメトリクスの 3 語で、版元は読者として脱プログラミング初心者、新人ゲームエンジニア、ゲーム開発初心者を挙げています。動くコードは書けるようになったものの、書いたコードが自分でも読みにくくなってきた段階の人に向いた一冊です。

全 3 章の構成、わかりやすいコードから品質計測まで

目次は全 3 章です。第 1 章のわかりやすいコードを書くためのテクニックは、変数と定数、計算式と条件式、assert の活用、制御文、関数、クラス、小さなクラスと、小さな単位から順に積み上げます。制御文の節では if 文、for 文、switch 文それぞれの削減と単純化を扱い、早期リターンへの書き換え、決定表による if 文の削減、null オブジェクトの導入、STL のアルゴリズム関数への置き換え、ラムダ式によるループの一般化といった項が並びます。小さなクラスの節には Timer クラス、Score クラス、2D ベクトルクラス、矩形クラスなどの例が置かれ、ゲームのコードで繰り返し出てくる部品を題材にしていると読めます。第 2 章のシンプルな設計のための原則とパターンは、カプセル化、凝集度、結合度、継承と委譲の関係から オブジェクト指向設計の 5 つの原則 とデメテルの法則へ進み、Template Method、Strategy、State、Composite、Iterator、Observer、Singleton の各パターンと、パターンを乱用しないという注意までを扱ったあと、クラス設計のコツを初級編、中級編、上級編に分けて解説します。第 3 章のソースコードの品質計測は、コード行数や最大ネスト数、サイクロマティック複雑度、Halstead 複雑度、保守性指標といった計測の指標、コードクローン検出、静的コード解析、計測値の活用法、ツールとして SourceMonitor と Cppcheck の紹介で構成され、巻末に次のステップへ向けた参考文献の紹介が付いています。

条件分岐と関数を小さく保つことがゲームのコードに効く理由

ゲームのプログラムは、キャラクターの状態や入力、当たり判定、画面の切り替えといった条件が絡み合い、ひとつの関数の中で if 文の入れ子が深くなりやすい性質があります。条件式に名前を付けて関数へ切り出し、分岐を表や多態に置き換え、ループを標準ライブラリのアルゴリズムで書き直すと、ひとつの関数が担う仕事が減り、読む人が一度に追う分岐の数も減ります。第 1 章が関数の基本原則として 1 つの関数につき 1 つの仕事を掲げ、小さな関数の必要性と並べて小さな関数による実行速度低下の項も置いているのは、性能を気にしがちなゲーム開発者の疑問に先回りした構成と読めます。第 2 章の設計原則は、こうして小さくした部品どうしをどうつなぐかの判断基準にあたり、変化しやすい部分を抽象インターフェースで分離するといった項目は、仕様変更が繰り返されるゲームの開発で効いてくる考え方です。第 3 章の計測は、こうした改善の効き目を数値で確かめる道具で、メトリクス計測を目的にしない、メトリクス計測でプログラマの評価をしないという節が置かれている点からも、数値を規約やレビューの優先度付けに使う補助として位置づけていると読めます。

C++ の前提知識と 2015 年刊として読む注意

サンプルは C++ なので、クラス、継承、仮想関数、STL のコンテナといった基本の文法は読み進める前に押さえておく必要があります。C++ そのものの入門書ではありませんが、版元が挙げる想定読者に脱プログラミング初心者が含まれるとおり、設計の経験は前提にしていないと読めます。本書は 2015 年 6 月刊のため、第 3 章で紹介されるツールの画面や入手方法、C++ の規格の扱いは刊行時点のものとして受け取り、手元の環境と照らし合わせて読むのが安全です。

大規模なゲームエンジンの内部構造や描画、物理、ネットワークといったゲーム固有の技術を学びたい人には目的が合いません。扱うのはどの分野のコードにも通じる書き方と設計で、版元もこれはゲームに限らず職業プログラマとして必要なコーディング技術だと説明しています。読みやすいコードの本を一冊読み終えて、次に設計の段へ進む道筋を探している場合は、リーダブルコードの次に読む本の道筋 も参考になります。

ゲーム会社に入ったばかりの人や、個人制作のゲームのコードが膨らんで手を入れるのが怖くなってきた人にとって、条件分岐の整理からクラス設計、品質の計測までを C++ のコードで通して学べる本書は、日々書くコードの質を一段上げる足場になる一冊です。

言及した記事 (11 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: