差分表示

  • 最後の更新で追加された行はこのように表示します。
  • 最後の更新で削除された行はこのように表示します。

#contents

*The Look of Viva Pinata: A Detailed Tour Of The Graphics Engine
2007/3/8 9:00-10:00

-engine written on-team
-must deal with very busy garden
-things close to player must always look good

**overview of pipeline
-models were generated in Maya
-エクスポータも自分で書いた
-shader関連の情報はnative microcodeで表現

-Why not HLSL?
--good microcode is faster
--control GPR usage and fetch latency
--but DX10 doesn't support microcode
--but easy to translate well-designed microcode generator into HLSL

-support per-mesh static LOD-ing and dynamic tessellation
-artist can set up in Maya via a MEL interface
-used in virtually every model in the game, most areas of the garden
-have at least 3 levels
-maintaining good triangle to pixel ratio

**rendering in game
-All rendering, apart from fonts, particles and XUI, done on a separate thread
-double-buffered command buffer
-this uses up memory (8MB for us)

**render passes
***shadowing pass
use 8GPix/sec depth-only mode
bottlenecks tend to be vertex throughput, triangle setup or bandwidth
Idea: could theoretically extract greater fill-rate ....
use a dual orthographic nested frustum approach
outer frustum static
-encompasses area twice the size of central square
-contribution faded out at frustum edges
inner frustum moves around with player
--tries to frame greatest visible area
each frustum: 1344x1344 D24S8 texture
costs a lot: 1/2 ms for each

uses lots of swept volume visibility tests to only render contributing occuluders
...

don't really need to generate mip levels
-nested frustums already a 'mip'
cost of generation hugely outweighs any slight cache problems

***diggable surface pre-draw pass
-the diggable surface is the central soil square in the garden
-can be modified in various ways
-shaders are very expensive
-edge-based tessellation helps a lot

-whole central square split into 16x16 quads
-the vertex shader projects each quads into screen space

-pre-draw passes produces a 1280x720 buffer containing filtered shadow lookups
 "contact occulusion" values and various other attributes

-also render water reflections during the pass
--rendered into a smaller buffer
--uses pipelined visibility queries


***predicated tiling opaque pass
-the game renders at 720p 2X MSAA, so needs two predicated tiling process
-have highly useful "alpha to coverage" feature
--can also do limited order-independent alpha blending
-renders low-lying fur grass, long grass etc.
-the dynamic fur on the animals is driven using vertex shader memory exporting
--acts on the most extruded vertex
--this vertex is constrained to lie within a sphere on a stick

-watar shader uses background cube map and exaggerated Fresnel


***post processing pass
-how do you do accurate depth-based post processing with 2X MSAA?
-resolve color and depth value for each fragment separately and do post processing on both fragments in parallel
-then combine together in a "manual" AA step

three post-processing passes:

1. "deferred"-type cheap lighting
-dynamics lamp-generated lights "un-desaturated" the surrounding visible sphere

2. depth of field, fog and desaturation
-works in parallel on both fragments
-only blends up to 60% though
--produces nice "aura" effect
-standard fog plus a novel "swirly" fog at border
blue shiftもやってた

3. standard blur(?)

in total, post processing costs 4.5ms


two main shader families
-one for normal surfaces
-another for volumetric "fur" surfaces

shader feature
-material "rim lighting" (輪郭にオーラが出てたような)
-black and white
-color change for sick etc. animals
-phong lighting
--per-texel specular

-bring out bump maps on unlit sides of model, or it looks a bit flat
--tried using quadratic spherical harmonics
---didn't bring out enough
--so settled on simpler "reflected directional"

***more widespread use of displacement mapping
good way to manage large "low frequency" parts of background
compress large disp. maps into a lossy 2D Haar wavelet basis, and decompress it in the shader





* Keynote: A Creative Vision - Shigeru Miyamoto (Nintendo)
Thu 11:00 AM 12:00 AM (予定より30分遅れて開始。終わりも15分くらいオーバー)

+Expanded Audience
--プレーヤー拡大




*Next Generation Destruction in the UE3 Engine (Sponsored by AGEIA)
Thu 12:00 PM 1:00 PM

基調講演が遅れたので途中から入った

**demo
-WARMONGER
-火の粉のパーティクルがちゃんと地形と当たりを取ってた
-車が変形してた
-ビルが鉄骨を残してバラバラに

**pre-fracture
No art required for destruction

BSP fracture
-find good cutting algorithm
-further features for other types of materials
-clean up UV coordinates
-clean up extraneous geometry

**hardware support
-crumbling
--Rigid body callbacks
-instancing render support
-fluid as debris
--cheap but less accurate collision

**how did we make it?
-procedual asset creation
-artist creation supported, but slow and expensive
--good for custom cases
-structural support optimization
-lots of hacks
--flags to bypass support calculations
--designer specified behavior

**tradeoffs with UnrealEngine3
-static baked lighting vs Dynamic lighting
-actor draw overhead
--skeletal mesh rendering
--instancing support

**Embers
-actually fluids
-force fields used by weapon effects
-force cylinders around fires

**future improvements
-water towards to spiling and spewing everywhere, influencing other stuff
-gas pipe where gas can be ignited by shots
-skyscraper destruction

**metal cloth
-good for variation
-no support for tearing
-difficulty in tuning




*Creating Innovative Launch Titles for the Nintendo Wii and Its Unique Controller
Thu 2:30 PM 3:30 PM

**SpongeBob Squarepants information
-start:May2005 ~ alpha:May2006 ~ master:August2006
-team size: core 21, production 38 + art outsources
-very successful franchise
-diverse gameplay styles

**Expectations of a Wii launch title
-showcase the new features
--unique controller
--new ways of interacting with a game
-get it out on time!!
--don't waste the opportunity

**Controller Overview
-readings are a combination of orientaion and movement

**how we used the controller
-general movement
-camera control
-use of the pointer
--カメラ移動に使ってた
-attack move
--左右振りは結局やめた?
-swiping is tiring
-sync movements
-butt-bounce move
--コントローラーを立てて倒す動き
--Y軸の反動を認識しているらしい
-sprint move
--ヌンチャくを上下に振る
--Y軸のピークを検出
-lag issues
--できるだけ早く反応する必要がある。予測している?ようなことも言ってた
-steering wheel action
--ハンドル持ち
-small movements unnoticed

**flying
-multiple control options
--操縦桿持ち
--just assess angles
--dead zones

**rampaging
-sideways swiping
--横に振る
-tie action to animation
-持ち上げて落とす
--よくキャラと同期してた

**more advanced actions
-gesturing
--縦に持って円を描くようにまわす
-repeat patterns
-change "state" in-game
--ドアを開けてた

**teaching the controls
-understanding the controls
--how they relate to the game
--how they give the intended result
-understanding how to hold them
-understanding how to move them
-simple and clear control explanations
--diagram
--small amount of text

**test, test and more test
-focus testing is key
-internal focus tests
--get everyone to play the game!
--game team testing
--company wide testing
-external focus tests
--get everyone ELSE to play the game!
--client / publisher testing
--external focus tests
-controller tests
--no current standardization
--no benchmark from other titles

**implementing the controls
-massive amount of data
-detecting movement over time
-mimic controller movements on screen
-holding the controllers for too long
-distance to the screen
-different players hold the controller differently
-shaking the controller

Wiiコンでいろんな楽器のフリをしてた。ゲームに入ってるかは不明

コントローラを使いこなすのに5ヶ月?8ヶ月?かかったらしい
担当プログラマは1人!?
ミドルウェアは使えるか?使っているか?みたいな話もしてた




*A LocoRoco Postmortem: Making Happiness into Gameplay
Thu 4:00 PM 5:00 PM 

小さいころからAIに興味があった

**基本ルール
フルーツを食べてでかくなる
ボタンを押すと合体&分離

**AI
放っておくと勝手に動く

**コンセプト
-simple
重厚長大へのアンチテーゼ
女性や子供も入りやすく

-fun
笑わせるためのAI

-dramatic
3Dゲームと並べても見劣りしないように
→見た目のインパクト・物理演算

**生まれたきっかけ
電車の中でPDAにスケッチしてた 2004/春
PCでのプロトタイプ 2004/秋
プレゼン
-基本の遊びは理解してもらえたが、AIが入ることの面白さは伝わらなかった
-2回却下された
-1ヶ月・企画1プロ1デザ2でプロトタイプ(PSP)を作ってプレゼン→通った
-動くものを見せないと、こういう企画は通らない。土日使ってでもデモを作る

2005
3ヶ月 企画・プレゼン デザイナ2人と
1ヶ月 PSP pre-プロトタイプ
3ヶ月 プロトタイプ 8人
11ヶ月 開発 16人
2006/June master

**アートワーク
+最初は粘土っぽいの
+紙・布
+水彩画風
+ベタぬり グラデーションは入れない
コストを下げるためにシンプルにした
ゲームっぽくしたくなかった

**キャラクターコンセプト
ゲームの役割優先のものと、
見せたい動き・仕草優先のものの両方がある

**キャラクターメイキング
テレビで見た動物で、見た目が面白いもの
家で飼ってるインドカエルウオも入れた

アニマルプラネット・ナショナルジオグラフィックなんかよく見てる

**仕様設計
LocoRocoのステージはイラレで描く→Mayaにインポートというスタイル
ヤクモノ配置ツールは自作してるみたい(LevelToolsという名前)
スイッチ押したら反応するとか、イベント処理もつけられる

**音楽
生演奏感・ライブ感
リップシンクさせてるし、キャラごとに歌ってるパートが違う
ロコロコ6種類にそれぞれ違うコーラスが用意されてる
同じ人に複数回歌わせて、重ねることで人数いる感じを出してる
「ロコロコ語」があって、歌詞に入れてある
全部で60曲くらいボーカル曲がある

**次回作
-続編作ってます
-群集AI
-音楽も新ネタを仕込み中

**質疑
-タイトルの由来は?
--世界の人になじみやすい・覚えやすい名前
--LRボタンとひっかけてLocoRoco
-次のプラットフォームは?
--ファンの期待は裏切りませんよ
-AIは何をやってる?
--条件分岐の固まり
--ほかのキャラとの連携や、物理計算による予想外の動きは苦労した
-どこの国で最も売れた?
--ヨーロッパ、次に日本

手軽に遊べることを狙ってPSPで作った
アニメの話もあるけど、特に動いてはいない



*3D Tricks: Engineering Innovation on the Nintendo DS
5:30 PM 6:30 PM

**graphics hardware
-layer based
-layers are sorted and blended to final image

**limits
2048poly/frame
6144verts/frame
N(4〜8) polygons per scan line
up to 512k for textures

**don't be limited
大量のポリゴンを使うのではなく、特徴的な機能を使いこなせ

**some DS features
-dynamic lighting
--directional lights
--can simulate point lights
-alpha
--auto sorting available
-stencil shadow
--1bit stencil buffer

**toon shading and edge marking
-crisper / more visual "pop"
-It's free!

**toon shading
-create a toon color table
-ハードがintensity -> テーブル引きをやってくれる
-テーブルをうまく作って狙いのエフェクトを出すべし

**edge marking
-create edge color table
-hardware draw an edge when different polygon ID are adjacent
-polygonIDでテーブル引いて色が決まる

**techniques
-テーブルを全部同じ色にすると、インクっぽくなる
-テーブルをグラデーションさせると、エッジ点滅ができる

**artifact
-can use DS window feature to hide (almost)
-hide the top row with sprites or BG

**fog
-黒いフォグをきつくかけるだけで夜っぽくなる
-use as general purpose color filter
-オブジェクト単位でON/OFFできる
-allows an object to be emphasized
--目立たせたいキャラを残してきついフォグをかける
-DS fog is rendered after all polygons based on Z depth
--can interfere with alpha
--Zを描いてないピクセルがあると、変な絵になる

**textures
-texture matrix effects
--low cost
--scrolling, scaling, rotation
--川の流れを表現してた
--行列操作だけでニュース映像を作ってた。どうやってるのやら

-environment mapping
--use multi-pass rendering
---second pass with DTE bit (depth test equal)
--compensate with clever texture

**texture streaming (バックグラウンドローディング)
--DSはこれに向いてる。なぜなら:
--Snappy ROM performance
--DMA can transfer between ROM and VRAM

-method 1
--double buffer VRAM banks
--load textures during "render blank"
---v-blank開始時のわずかの時間
---数フレーム分使えば、ロード完了

-method 2
--with One Time ROM

-Level layout
--ロードが終わる前に次のマップにいけないように
--VRAMが足りないほどの視界を見せないように うまくマップを作る

**2D billboards
-スプライトをビルボードとして使おう
-ライトフレアに便利
-もちろん、シーンの奥には置けない
--けど、90度の角を曲がるときにグロウがあふれてるように使ってた
-PositionTestでカメラ座標がわかる

newsで議論しましょう: nitro.graphics3d
nntp://news.sdsg.nintendo.com


Q&A
-ミップマップの別レベルをストリーミングしてもいいのでは?
--よく聞こえなかった



*The Programmers Challenge
Thu 7:00 PM 8:00 PM

4択クイズのスタイルで進む。一応Panel扱いになっている。
著名なプログラマーが回答者になって、ゲーム業界を皮肉った問題やプログラムの知識を問う問題に挑む。
a〜dの4択のうち、dが(ときには全部が)ジョークになっていて、そこで笑いを取る作り。

問題例をいくつかあげると、

Q. PS3が発売延期になったのはなぜ?
d. 久夛良木さんが火星旅行から帰ってこなかったから

Q. あなたはEAの社長です。12000人時かかるプロジェクトを4週間後に終わらせないといけません。
   スタッフの人数は (中略) 一人あたり何時間サービス残業させればいい?
d. 480時間/週

Q. ダイクストラアルゴリズムの最悪計算量は?
d. コードをコピペしただけだからわからない

終始とても盛り上がってた。
口頭のジョークがわからなくても、問題と選択肢は画面に映るのでそこで笑える。

問題は4ジャンル×5レベル×2ラウンド=40問。
・メモリ容量とか、数字を当てる問題
・Nuts and milk (本当にあったゲームのタイトルは?とか)
・タイトル名を足し算したり引き算したり
・計算問題(EAの問題がこれ)

・言語に関する問題
・ビット位置にコーンフレークとか名前をつけてからビット演算
・アルゴリズムの最悪計算量を答える
・なんだっけ
*The Programmers Challenge

Thu 7:00 PM 8:00 PM



4択クイズのスタイルで進む。一応Panel扱いになっている。

著名なプログラマーが回答者になって、ゲーム業界を皮肉った問題やプログラムの知識を問う問題に挑む。

a〜dの4択のうち、dが(ときには全部が)ジョークになっていて、そこで笑いを取る作り。



問題例をいくつかあげると、



Q. PS3が発売延期になったのはなぜ?

d. 久夛良木さんが火星旅行から帰ってこなかったから



Q. あなたはEAの社長です。12000人時かかるプロジェクトを4週間後に終わらせないといけません。

   スタッフの人数は (中略) 一人あたり何時間サービス残業させればいい?

d. 480時間/週



Q. ダイクストラアルゴリズムの最悪計算量は?

d. コードをコピペしただけだからわからない



終始とても盛り上がってた。

口頭のジョークがわからなくても、問題と選択肢は画面に映るのでそこで笑える。



問題は4ジャンル×5レベル×2ラウンド=40問。

・メモリ容量とか、数字を当てる問題

・Nuts and milk (本当にあったゲームのタイトルは?とか)

・タイトル名を足し算したり引き算したり

・計算問題(EAの問題がこれ)



・言語に関する問題

・ビット位置にコーンフレークとか名前をつけてからビット演算

・アルゴリズムの最悪計算量を答える

・なんだっけ