ゲームエンジン・アーキテクチャ第2版 も監修させていただきました

ゲームエンジン・アーキテクチャ 第2版が発売されました。
今回も、監修をさせていただきました。
といっても、元の訳がよくできているので、非常に短い時間で監修を行うことができました。
また、前回同様に湊さんにも行っていただいたので、安心して作業ができました。

見逃している間違いがありましたら、私の責任です。ごめんなさい。教えていただけると助かります。

ゲームエンジン・アーキテクチャ 第2版

変更された点についてですが、下に書き出してみました(全てを書き出したわけではないので、参考までに)。
第1版から第2版への変更は、5年たったということで、PS3(アンチャーテッド 黄金刀と消えた船団)世代からPS4(The Last of Us)世代へのアップデートが主ですが、将来の課題であったオーディオの項目も追加されています。また、C++11についてもページをとって説明されています。サンプルコードもそれに合わせてきちんと修正されてるのが素敵なところです。

個人的に良かったのは、第1章の最後。リソースに関するデータベース利用やwebの管理画面の話が追加されていて、ソーシャルゲームの人にとっては当然かと思いますが、コンシューマゲームだと、あまり導入が進んでいないところだと思うので、それが、ノーティドッグでは着実に導入されている点にさすがだなぁと感じました。

また、もうひとつは、++pじゃ無くてp++にノーティドックではコード標準を切り替えたというお話。おっさんプログラマは、(あえて読み難い)プレインクリメント演算子を使うように仕込まれてきたと思うので、この変更は以外に感じるのではないでしょうか(詳細は本文で!)。

他にも、キビバイトとか、知らないネタもあったので、第1版を買われた方も新たな気持ちで楽しめるのではないでしょうか。

本の値段は高いと感じられるかも知れません。しかし、私は、第1版が品切れになってから、若手に「とりあえずこれを読んでおけ」と指示する本がなくなって困った経験をもってますので、販売されている内にお買い求めいただくのが吉かと思います。
修正された項目は多いので、1つ1つが詳細に解説されているわけではないという点で過度な期待は禁物ですが、興味がある項目がありましたら、ぜひ、手にとってみてください!!

[非公式&適当] ゲームエンジン・アーキテクチャの第1版から第2版での変更点

  •  全体的な変更
    • 解説するゲームエンジンのベースが「アンチャーテッド」から、「アンチャーテッド+The Last of Us」に拡張
    • 主なターゲットがPS3, Xbox 360からPS4, Xbox Oneに変更
    • 画像など、最新の事例に差し替え
  • 第1章 イントロダクション
    • 「プレイヤー主導コンテンツ」について追加
    • エンジンの例として、DICEのFrostbite、CryENGINE、ソニーのPhyreEngine、Unity、プログラマではない人向け2Dゲームエンジンが追加
    • 「PS4のコアダンプ機能」について追加
    • UE4の3Dオーディオレンダリングエンジンの紹介の追加
    • 「リソースデータベース」について追加
    • 「Webベースのユーザーインターフェイス」について追加
  • 第2章:仕事用ツール
    • 複数スタートアップのデバッグについて間違い修正
  • 第3章 ゲームのためのソフトウェアエンジニアリングの基本
    • 「C++11」について追加
    • 「キビバイト」について追加
    • 「パイプライン、キャッシュおよび最適化」について追加
  • 第4章 ゲームのための3D計算
    • 「擬ベクトルと外積代数」について追加
    • 「quaternionの成分表記」について追加
    • 「デュアルクォータニオン」について追加
    • 「平面の方程式」について追加
    • 「gccのvector型」について追加
    • 「SSE組み込み命令を使ったコーディング」について追加
    • 「SSEドキュメント内の専門用語」について追加
    • 例として出したコードにconstを追加して改善
  • 第5章 エンジンサポートシステム
    • 「プレインクリメント演算子→ポストインクリメント演算子」推奨に変更
    • 独自仕様のコンテナクラス作成の利点に「並列データストラクチャのコントロール」を追加
    • 「UTF-32、 UTF-8」について追加
    • 「char vs wchar_t」について追加
    • 「WindowsのUnicode」情報の更新
    • 事例として、ノーティドッグのローカリゼーションツールについて追加
  • 第6章 リソースとファイルシステム
    • SSDについて追加
  • 第7章 ゲームループとリアルタイムシミュレーション
    • 「スクリーンティアリング」について追加
    • PS4、Xbox Oneについて追加
  • 第8章 ヒューマンインターフェイスデバイス(HID)
    • SIXAXISからデュアルショックに変更
  • 第9章 デバッグおよび開発のツール
    • Redisを使ったTTYチャンネルを管理について追加
  • 第10章 レンダリングエンジン
    • 「浮動小数点数深度バッファ」について追加
    • 「GPUの歴史の概要」にコンピュートシェーダ追加
    • 「PS4のシェーダリソーステーブル」について追加
    • 「OIT」について追加
    • バンプマッピング、ディスプレースメントについて追加
    • 「物理ベースのシェーディング」について追加
    • 「空のレンダリング順序」について追加
  • 第11章 アニメーションシステム
    • モーフターゲットの頂点数の増加について追加
    • 「リターゲット・ポーズ」について追加
    • 「PlayStation 2での最適化」を削除
    • 「自動アップデート」のツールについて追加
    • UE3からUE4の例に変更。(加算ブレンディングができない記述の削除)
    • IKの目標点に動的なオブジェクトを追加
  • 第12章 コリジョンと剛体力学
    • PhysXでAPEX情報について追加
    • PhysX、Havokでサポートプラットフォーム追加
    • Unrealエンジンの物理的マテリアルシステムについて追加
    • ノーティドッグでの弾丸処理について追加
    • 「高度な物理的要素」に、物理によるオーディオの合成、GPGPU追加
  • 第13章 オーディオ
    • 章自体が新規追加
  • 第14章 ゲームプレイシステムの概要
    • 「特別なオブジェクトのタイプ」について追加
  • 第15章 ランタイムのゲームプレイ基本システム
    • 「PlayGo」について追加
  • 第16章 まだやることがあるってこと?
    • 「オーディオ」について削除
    • 人工知能について修正
広告

無料で継続的な出版の環境を作成してみました

無料な継続的出版システム t-ceremony を公開しました。(スライド資料)
画像

  • t-ceremony?

オライリーさんや技術評論社さんは、GitHubを使って、プルリクでの編集作業や即時の出版物の作成などができるようになってきます。
そのような Re:VIEW による出版物の作成を、Bitbucket と wercker を使って、無料で実現するための仕組みです。

  • 本を執筆する敷居を下げたい

先日、知り合いと「本書いてみたいね」と、いう雑談をしていました。
今までの経験から、ある程度、きちんと進めてから出版社に話を持っていくような形にしないと、立ち消えになりやすいと感じており、執筆環境を整えようかなぁと考えていました。
以前、本を書いた際はwordを使っていたりしたのですが、ページ数が増えると編集に難儀したり、複数人で作業することを考えると、どうしてもバージョン管理は欲しいと感じていました。
そのような中、別の人から、「Re:VIEWは、オライリーさんでも使っているし、いいんじゃない?」という情報を小耳にはさみました。
確かに、Re:VIEWは、マークアップ言語でシンプルにかけるので、執筆も編集も楽かなぁと思いました。

ただ、セットアップになかなか苦労しました。
自分の環境では、Re:VIEWの公式ドキュメントのクイックスタートガイドをそのままなぞるだけでは上手くいかず、いくつかのサイトをググって、解決の糸口を見つけることができました。
それが、私だけならいざ知らず、他の人も同じように環境を整えるのか!?
そして、自分はMBAで他の人はWindowsを使っていたりと、環境整備のサポートで自分に負荷がかかるのは目に見えていたので、頭を抱えていました。

こんな環境の構築は、環境設定に詳しいフルスタックエンジニアならいざ知らず、コンピュータに詳しくない人なら心が折れるなぁと、感じました。
環境構築の技術に詳しくないと執筆できないのは完全に間違っているので、何とか環境構築の仕組みを楽にして、もっと多くの人に執筆のための気持ちを持って欲しいというのが今回の動機です。

  • 継続的出版の仕組みを手軽にしたいと思った

で、実際にどうするかいろいろと探しました。
Macでの環境構築は調べれば解決方法が見つかりそうだなぁと感じたのですが、Windowsの方があまり情報を見かけませんでした。
もちろん、それほど難しくはないだろうなぁとは思いましたが、それを検証するのも面倒だし、何よりWindowsの環境がどんどん汚れていくのは嫌。
ということで、クラウドでできる方法はないかという考えにだんだんと流れていきました。

そんな中で見つけたのが「[ReVIEW Tips] DockerでRe:VIEW–Qiita」という記事でした。
メンテナーの高橋さんによる記事ですが、Re:VIEW用のDockerfileが公開されていて、中身を見ると比較的簡単なスクリプトで書いてあったので、これなら、ubuntuが動いている環境なら実行できると勝ちを確信できました。

後は、無料で使えるCI探しです。
リポジトリ管理は、無料でプライベートリポジトリが始められるBitbucketと決めていたので、Bitbucketが使えるCIを探しました。
CIのサービスは、プライベートリポジトリは有償なものが多く、「Magnum CI
と「wercker」を見つけられた中、werckerの方が情報が多そうだったので、
こちらを使ってみることにしました。

いざ使ってみると、ビルド時間の制限がきつかったり、ビルドもエラーを起こしたりと、いろいろとあったのですが、何とか解決できて、これで比較的楽に環境が作れるかなぁと喜んでいたのでした。

で、仲間内だけで盛り上がっていたのですが、「GitHub Kaigi」で、WEB+DB PRESS編集部の稲尾さんが、「GitHubで雑誌・書籍を作る」というタイトルで、盛り上がっていたので、公開してみることにしました。
(稲尾さんの記事は、環境よりも編集の運用に主眼が置かれていて、必見だと思います。)

  •  便利な執筆のツールと信じています

ということで、実際にリポジトリの中身を見ると、単なるwerckerの設定ファイルしかなく、技術的に優れているわけでもありません(というか、適当に作ったので、ひどいもんです)。
名前も偉そうに「t-ceremony」とつけさせていただきましたが、これはシステムを呼ぶ際に識別できるようにしておいた方が良いと考えたぐらいで、世界制覇とかたいそうな野望もありません。

どちらかというと、リポジトリの中身自体よりも、Slideshareに上げた資料を見ていただいて、設定方法を知っていただくことに価値があるのかなと、思っています。

今回使わせていただいているサービスも、いつ有償になるかわかりません。ただ、その際に他のシステムに移る時でも、今回の仕組みが役に立つのではと信じています。

もちろん、無償が素晴らしいというつもりは全くなくて、今回の物は、あくまでも導入を楽にするためのサービスで、本格的になってきたら、きちんと有償プランなどを検討しましょう。
また、各出版社、編集部でやり方があると思いますので、実際に本を出すときには、それぞれの出版社のやり方に沿うのがベストだと思います。

  • 最後に

執筆となると、どのようにして良いかわからない方も多いと思いますが、微力ながらも、そのような方へのサポートとなれば良いなと思っております。

これからもよろしくお願いいたします。

  •  注意

現時点では、Re:VIEW でスクリプトを実行できてしまうようですので、不特定多数の方によるmergeは避けていただくのが望ましいとのことです。

Hello world!

Welcome to WordPress.com. After you read this, you should delete and write your own post, with a new title above. Or hit Add New on the left (of the admin dashboard) to start a fresh post.

Here are some suggestions for your first post.

  1. You can find new ideas for what to blog about by reading the Daily Post.
  2. Add PressThis to your browser. It creates a new blog post for you about any interesting  page you read on the web.
  3. Make some changes to this page, and then hit preview on the right. You can always preview any post or edit it before you share it to the world.