2010-09-01 :-)
_ [CEDEC]CEDEC 2010 - CESA Developers Conference 2 日目
ゲームの知能と小説の感覚 ヒトの宇宙の究極(?)問題を考える
- 瀬名秀明(作家)
パラサイト・イヴと SF のひと、という程度にしか知らない。SF 方面でよく名前を見るよなあ、と考えていたら Yonai から速達が飛んできた。SF のひとらしく重力とか 2001 年宇宙の旅とか人工知能とかそーいう方面の話題。
大きく分けて重力と知能について。たぶん
重力は、既存の重力を利用したゲーム( だるま落とし、パチンコ、not テトリス )について紹介し、有り得ない重力を表現したもの(滞空時間が長すぎるアレとか、ルパン三世カリオストロの城の冒頭とか))、重力を無視したものを考えると思考の幅が広がるかもしれないよ、というもの。
2001年 宇宙の旅の HAL から始まり、人工知能の話題。「機械が人間と同じように動作し、人間と同じに見えるならば、それは人間である」といった話題。つまり duch typing ですね。自身の著書「デカルトの密室」でも触れたという「逆チューリングテスト」について紹介されてた。
not テトリス はこーいうの → http://zoome.jp/thika/zpdia/p/25/87 重力ぽい動きをする。
410477801X
社内の技術教育、どうしていますか? ~ コーエーテクモの研修事例
- 金井新一(コーエーテクモゲームス)
技術支援部のひと。ここではおもにトップダウンによる新人への教育の話題。
社内教育に片足を突っ込んだことがあるので[ 20100318#p02 ] 気になって話を聞いてみた。新入社員にたいする教育は強制的に実行すればいいわけだけど、それ以降 新入社員以外の経験者についての教育はどうしてるのか、というのが知りたかった。結論: 任意で参加。まあそうだろう。
ねらい
- 教育が重要なのは分かっているが優先度が上がらない
- そういうひとのためになれば幸い
- レポートに「考えさせられた」「刺激になった」で終了したら勿体ない
- 具体案を作り実践するのだ
新入社員教育事例
- 4月
- 一般研修
- 人事部による
- ビジネスマナーとか
- コンプライアンスとか
- 一般研修
- 5月
- プログラム研修
- プログラマと非プログラマ(プランナー、デザイナー...)に分ける
- 座学 + プログラミング
- Microsoft Visual Studio Express を使う
- 非プログラマ向け
- コンピューターの基礎知識
- C言語の文法
- プログラムに触れさせておくことでプログラマの気持ちが分かるようになる
- 今後スクリプトを書くこともあるだろうからそのとき拒否反応しないようにする
- プログラマ向け
- アルゴリズムとデータ構造
- スタック、再帰、配列
- マインスイーパー作成
- デバッグ
- バグ回避
- ASSERT
- C++ の const
- 職業プログラマとしての心構え
- 大学や個人ではやらない領域をケア
- プログラム研修
勉強会事例
- 3Dグラフィックス講習
- 新人 + 社内希望者向け
- 1コマ2 時間 x 6くらい
- 用語に馴染ませる
- ワークフローを知る
- 社内独自のデータ形式を説明
- ツールの存在やデータの存在を教える
- 社内ツール研修
- 新人 + 社内希望者向け
- 半日 x ツール 6 種類
- シェーダー講習
- プログラマ + 社内希望者向け
- 1 コマ 2 時間 x 8
- DCCツール講習
- プランナー + 社内希望者向け
- Autodesk Softimage を使う
- 2 日間
- リソースの受け渡しを円滑化する
- そのうちプラグイン書けるようになってくれると嬉しい
- 技術連絡会
- 全社向け
- 2, 3 ヶ月に 1 度
- 開発したライブラリ、ツール、技術調査を連絡
- 他者の注目タイトルを上映
- 数学、物理、グラフィックス輪講
- 講師役の負担減らす
- 専門書を読む習慣をつける
- 英語にも慣らす
- ITパスポート試験の参考書
- 新人向け
- 試験目的ではない
- PCに慣れてないひとをケア
- テーブルマナー研修
- 新人向け
- 懇親会のときにやる
- ビジネスマナーとして
- 結婚式のマナーとか
準備のコスト
- 講習
- 1 コマ 2 時間で 2 週間くらい
- スライド + 資料 + 課題 + リハーサル
- 自社に合わせた内容に出来る
- 参考書 + 輪講
- 1 コマ 2 時間で 1 週間くらい
- 適した本があるかどうか
- PC機材確保
- 会議室に設置
- ノートPCを用意
- たいてい 1, 2 台故障する
これからの課題
- 個人のフィードバックはムラが出来る
- 講師の人数確保
- チームワーク開発
- 1つゲームを通して作成させたい
- ゲームデザイン
- 正解が無いので教えるのが難しい
まとめ
- 自分たちが動く
- 小さな勉強会から始める
- 教えたいことを持ってるひとは割といる
新人以降
- 各部署に配属されたら各部署の方針に任せる
- 「こういう講習がある」とアナウンスはしておく
- 参加は任意
ユニットテスト導入の技術的課題とその解決例
- 益弘和(Ubisoft Osaka)
ところで組み込み機器開発でユニットテストは使えるかなあ、無理だよなあ、と思っていたが、ライブラリなど下層には適用できるらしい。まあそりゃそうだよなあ。
- C++ でターゲット(実機)ごとにビルドシステムを動作させる
- C++ のテスティングフレームワークはたくさんあるけど結局 Boost::unittest を選んだ。ただし標準出力を開発環境ごとに実装する必要がある( streambuf を実装 )
- ビルドシステムは make のラッパー
- ユニットテストの設計
- コードは小さく
- 継承よりもコンポジション
- NVIイディオム
- NVI イディオム - Code++
- DbC/PbC と NVI
- vNull Development Blog: NVIイディオムとは
- interface 内で事前条件と事後条件をチェック
- 契約による設計
- ref. オブジェクト指向入門
- ビルドシステムはターゲットごとにオプションで切り替える
- automake の configure とは異なるアプローチ
- ターゲットを切り替えるたびに configure するのが面倒くさい
- 参考 CEDEC 2009 - バグを限りなくゼロにする方法 (PDF)
- ユニットテストはゲーム開発に有効か?
- ライブラリ、ミドルウェアには有効
- コンテンツには難しい
並列動作しているサーバー間におけるスクリプトの協調動作
増永哲也(スクウェア・エニックス)
FF11 での以下の機能での協調動作についての話題
- コンクェスト
- デュミナス
- ビシージ
- カンパニエ
FF11 の基本構成。これ x ワールドぶんあるらしい。ワールドが siren 等なのかは分からん。
- 協調動作とは
- サーバープロセス間のデータやりとり
- 敵が倒される
- アイテムを入手する
- イベントが発生する
- ....
- サーバーAデータ更新
- ストレージへ保存
- サーバーA死亡
- 復旧
- ストレージからデータ復旧
みたいな流れは基本
コンクェスト
- ベータ版時の実装
- NFS
- ストレージ経由でファイルやりとり
- ファイル 1 のみ
- fcntl(2) で排他制御
- →ストレージが高負荷になる
- 正式サービス時の実装
- ファイルは共有しない。排他しない
- ストレージに保存
- (たぶんここで何かの DB を使うようにしたんだろう)
- 15分ごとにデータをサーバーへブロードキャスト
デュミナス
- 実装
- 排他制御の情報のみやりとり
- ( mutex か?)
- ストレージに保存
- ブロードキャストなど
ビシージ
進行データのみやりとり 実装はコンクェストと同じ
カンパニエ
戦争なのでデータ大量
- 初期実装
- コンクェストとだいたい同じ
- ピーク時にログイン出来なくなる
- ストレージ高負荷
- 新実装
- 必要最小限のデータのみやりとり
- データを圧縮
- 約 4 分でデータ更新
教訓
- ストレージ負荷 > ネットワーク負荷
- ボトルネックは IO
- ( DB の読み書き )
- スクリプト間負荷特性はつまりストレージ負荷特性と同じ
- サーバー間通信するたびにストレージにアクセスするため
新実装案
※ただし動作未確認
- これまで
- エリアサーバーがみんなストレージへアクセス
- 改良案
- ストレージにアクセスするのはスクリプト間サーバーのみにする
- エリアサーバー ⇔ スクリプト間サーバー ⇔ ストレージ
- スクリプト間サーバーには揮発性データを持たせる
- ストレージには不揮発性データを持たせる
- つまりスクリプト間サーバーをキャッシュにする
教科書に載らない光学 ~魅力ある絵作りのために知っておきたい色光学豆知識~
- 川瀬正樹(シリコンスタジオ)
カメラやレンズの原理をちゃんと理解してそれをシミュレートするくらい気合いを入れれば自然な絵が出来上がるよ。という話題なんだが、カメラやレンズの原理の説明が細かすぎて伝わらない。いや理解出来るんだけどね