2009-09-01 :-)
_ 朝ッ
0700 起床
_ [CEDEC2009]CEDEC 2009 - CESA Developers Conference 1 日目
@パシフィコ横浜
情報技術はどこへ行くのか?-主役は交代している-
原島博(東京大学)
3 分の 4 くらいは CEDEC 前に載った↓を読めばOK
4Gamer.net ― 技術を売りにしているうちは,成熟期とはいえない。CEDEC 2009で基調講演を担当する原島 博教授が業界の外側から見る「ゲーム業界」とは
- ゲームのこれから
- 大人になる
- 産業に発展させる
- 尊敬できる産業となること
- 小説とゲームの差は何か
- 子供が小説読むと褒められてゲームやってると怒られる社会
- 中年向けゲーム
- 中年は時間がない
- 長時間プレイする気力がない
- 10分で完結するゲーム
MMO ゲームサーバのバックエンドアクセス実装法
- 中嶋謙互(コミュニティーエンジン)
- 中麦(ヘッドロック)
MMOサーバー実装 一般論
- 要求事項
- レスポンス
- 100ms
- 信頼性
- データ巻き戻りは NG
- レアアイテムを取得したのに無くなったりしたらエライことになる
- 処理性能
- サーバー台数を減らす
- 通信回線を減らす
- 対応
- 非同期化
- コールバックを使う
- スレッドは使わない
- タスクシステムを実装する
- パケットもこれで処理
- なるべくオンメモリで処理させる
- ディスクアクセスは非同期処理させる
- 外部化
- プロセスの外で処理させる
- 遅い処理を外部に出す
- ハードウェアで処理させる
- ネットワークパケット受信
- 暗号/復号
- 圧縮/展開
- ストレージアクセス
- DBアクセス
- ~1998
- DBMS 使わない
- データはバイナリファイルに保存
- ~2004
- DBMS 使う
- key-value とか
- BLOB
- 現在
- DBMS 使う
- 複数テーブル x 複数カラム
だいたいどれもこんな構成
フロントエンド バックエンド cli --- インターネット--| GMSV | --- | DBSV --- DBMS |
- GMSV: ゲームサーバー。ゲームを処理
- DBSV: データベースサーバー。DBMS へアクセス
- DBMS: MySQL とか
- 関心ごと
- DBSV, GMSV 間の処理は定石がない
- 非同期コールバックはデバッグが難しい
- 状態遷移が入り乱れる
- 真・女神転生IMAGINE の事例
- 方針
- できるだけ往復処理を少なくする
- cli と DBMS 間の処理のこと
- GMSV の処理確認を厳しくする
- アイテム課金などで不正されないように
- できるだけ往復処理を少なくする
- 実装
- 追加, 削除を 1 リクエストにまとめる
- 全てのリクエストをまとめた
- リクエスト 1 つで 1 往復
- DBSV は同期処理
- MySQL のトランザクションを利用
- 情報全部入りパケット
- ゲームに必要な情報を全て詰め込んだ
- 結果
- DBSV 1プロセスで 1000接続OK
- パンドラサーガ の事例
- 方針
- DBSV を極度に簡素化
- チェックはすべて GMSV でやる
- DBSV は GMSV の要求をひたすら受け入れる
- 実装
- 投げっぱなし 書き込み
- GMSV で擬似トランザクション生成
- DBSV は 1プロセス
- DBSV は同期処理
- ツール LibPST を作った
- LibPST
- O/R マッパー
- DB トランザクション構成管理
- CSV からテンプレート( のようなもの? )を使ってソースを生成
- .h とか .cpp など
- まとめ
- 共通点
- DBSV
- 1プロセス
- 並列化なし
- 同期処理
- すべてのリクエストを 1往復
- コールバックはなるべく使わない
- 状態遷移が入り乱れなくてすむ
- DBSV
- 関心
- なるべくオンメモリで処理
- データ差分は投げっぱなし
- 質疑応答
- Q: トランザクションをネストしてるのは何故か?
- ( トランザクションの中にトランザクションを突っ込む )
- A: トランザクションを 1 つにまとめるため
- アイテム購入すると
- 所持金を減らし
- アイテムを追加
- の 2 つのトランザクションが必要になるがこれを 1つにまとめる
- SQL では結局 2つになる
- 子トランザクションが失敗したら親も失敗する
- アイテム購入すると
- Q: サーバースペック
- A: パンドラサーガ
- Linux
- メモリ 4GB
- CPU 2.4 ( ってなんだ? )
- A: 女神転生
- メモリ 8GB
- Linux
画像認識技術とゲーム・インターフェイス
- 鈴木健太郎(ソニー・コンピュータエンタテインメント)
- 掛智一(ソニー・コンピュータエンタテインメント)
- 尾上直之(ソニー)
- 大久保厚志(ソニー)
- 動画処理
- パターンマッチング
- トラッキング
- 輝度情報を使う 8bit
- 色情報は量が多いので扱いづらい
- 顔認識
- 入力信号( カラー画像 )
- グレースケール化
- パーツ検出
- 顔識別
- 属性判別
- 男/女
- 大人/子供
- 国
- 顔検出の流れ
- 入力
- グレースケール
- 顔パターン 20x20 を探す
- 画像縮小 0.75倍
- 顔パターン 20x20 を探す
- 画像縮小 0.75倍
- 以下略
ただし人間の顔だけでなく森や岩肌を人間の顔と誤認識することはある
- PS3 での顔認識
- SDK で提供
- PSP でも提供予定
「電脳フィギュア」を生み出したゲームデザインとプロデュース論 -芸者東京の社長、おおいに語る。-
田中泰生(芸者東京エンターテインメント)
- 自己紹介
- コンサルタント
- テクモ
- 芸者東京 ←いまここ
- 電脳フィギュア
- Youtube 動画は再生回数 95万回
- YouTube - 電脳フィギュア ARis(アリス) PV
- 広告費用 0円
- 画質や画像認識の質はかなり悪い
- テクモの基準ならばまず通らない
- 物が売れることと品質はあまり相関はない
- ある程度の品質までは相関ある
アイデアのフレームワーク
金がないひとがよくあるゲームを作るとゴミになる
- ブレインストーミングは制限つけてやってる
- その中で勝つ方法を考える
- 使えるリソース
- 金
- 人
- アイデア
- 聞いて面白く
- 見て面白く
- 触って面白く
- 人に伝えずにいられない
- 自分だけが面白いのではダメ
- プロトタイプ
- Flash書記官
- プランナー
- 紙は使わない
- 紙じゃ伝わらない
- 動くものを作る
- 画面フローを作るなど
- 実物に近いものを作る
- 品質は低くていい
- どうせ製品にするときに作り直す
- 製品化
- 発表するタイミングを決める
- マイルストーンを作る
- 自分がやろうとしてることを他の誰かがやってないかいつもチェックしてる
- 金儲け
- 仕組みはシンプルにしておく
- 権利はなるべく自分たちで全てを持つ
- 意思決定権を自社で抱え込む
- 製品化のプロセスのうち自分たちですべてやる
- やれない理由が無い限りやる
- マーケティングコミュニケーションは以下の流れで伝播する
- カンファレンス
- ネットメディア
- 雑誌
- テレビ
WiiでDSが動くまで ~面白いコト・新しいコトに対するプラットフォーマーとソフトメーカーとの取り組み事例
- 紙山満(スクウェア・エニックス)
- 光吉勝(任天堂株式会社)
FINAL FANTASY CRYSTAL CHRONICLES Echoes of Time の事例
- DS 版はある
- Wii 版も作る
- DS のことだけを考えて作ったリソース、ソースコードを手を加えずに Wii 版を作りたい
- 作業
- DS から Wii へのポーティング
- DS も Wii も CodeWarrier
- NitoroSDK を使っている
- DS 用 SDK
- とりあえずビルド → エラー
- エラーになった関数をひたすらスタブ作ってく
- ラッパーを地道に作る
こうか?
- エンディアン問題
- DS
- リトルエンディアン
- ARM
- Wii
- ビッグエンディアン
- PowerPC
- コンバーターを自作してあるのでそれを使用
- グラフィック
- Wii 用に 4 倍の解像度のものを作った
- サウンド
- DS のサウンドプロジェクトをコンバートして Wii 用へ
- キーシェアリング
- DS でのマルチプレイ時のデータシェアの仕組み
- キーシェアリング開始
- 乱数シード生成
- 全員でシードを共有
- つまり全員同じ乱数になる
- ランダム要素も共有できる
- DS でのマルチプレイ時のデータシェアの仕組み
- 問題事例
- SQRT 実装の差( 2乗根 )
- DS ではハードで処理
- Wii ではソフトで処理
- 誤差が生じる
- 実装がどうなってるか任天堂に訊いたり
- C 言語実装の差
- NG: foo( rand(), rand() )
- OK: a = rand(); b = rand(); foo( a, b )
- DS と Wii で引数の処理が違った
- そのほか CPU に依存するものなど
具が多め 飯が少なめ?
多め。肉 150g くらい<br><br>おーい、具が おーい<br><br><br><br>(〜・ω・)〜