3Dゲーム開発
3Dゲームシステムの原則
1. レンダリングパイプライン
ステージ
1. 頂点処理 → ジオメトリの変換
2. ラスタライズ → ピクセルへの変換
3. フラグメント処理 → ピクセルの着色
4. 出力 → 画面へ
最適化の原則
| 技法 | 目的 |
|---|
| フラスタムカリング | 画面外のものをレンダリングしない |
| オクルージョンカリング | 隠れたものをレンダリングしない |
| LOD | 距離に応じて詳細度を下げる |
| バッチング | ドローコールをまとめる |
2. シェーダーの原則
シェーダーの種類
| 種類 | 目的 |
|---|
| 頂点シェーダー | 位置、法線 |
| フラグメント/ピクセルシェーダー | 色、ライティング |
| コンピュートシェーダー | 汎用計算 |
カスタムシェーダーを書くべき場合
- 特殊効果(水、火、ポータル)
- スタイライズドレンダリング(トゥーン、スケッチ)
- パフォーマンス最適化
- 独自のビジュアルアイデンティティ
3. 3D物理
衝突形状
| 形状 | 使用例 |
|---|
| ボックス | 建物、木箱 |
| 球 | ボール、高速チェック |
| カプセル | キャラクター |
| メッシュ | 地形(高負荷) |
原則
- シンプルなコライダー、複雑なビジュアル
- レイヤーベースのフィルタリング
- 視線判定にはレイキャスティング
4. カメラシステム
カメラの種類
| 種類 | 用途 |
|---|
| 三人称 | アクション、アドベンチャー |
| 一人称 | 没入型、FPS |
| アイソメトリック | ストラテジー、RPG |
| オービタル | インスペクション、エディター |
カメラの操作性
- スムーズフォロー(lerp)
- 衝突回避
- 移動に応じた先読み
- 速度に応じたFOV変更
5. ライティング
光源の種類
| 種類 | 用途 |
|---|
| ディレクショナル | 太陽、月 |
| ポイント | ランプ、たいまつ |
| スポット | 懐中電灯、舞台 |
| アンビエント | ベース照明 |
パフォーマンスに関する考慮事項
- リアルタイムシャドウは高負荷
- 可能な場合はベイクする
- 大規模ワールドではシャドウカスケードを使用
6. レベルオブディテール(LOD)
LOD戦略
| 距離 | モデル |
|---|
| 近い | 完全な詳細 |
| 中距離 | 三角形50% |
| 遠い | 25%またはビルボード |
7. アンチパターン
| ❌ やらないこと | ✅ やるべきこと |
|---|
| メッシュコライダーの乱用 | シンプルな形状 |
| モバイルでリアルタイムシャドウ | ベイクまたはブロブシャドウ |
| 全距離で同一LOD | 距離に応じたLOD |
| 最適化されていないシェーダー | プロファイリングと簡略化 |
覚えておいてください: 3Dは錯覚です。詳細そのものではなく、詳細の印象を作り出しましょう。
使用タイミング
このスキルは、概要に記載されたワークフローやアクションを実行する場合に適用可能です。
制限事項
- このスキルは、タスクが上記の範囲に明確に一致する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、専門家レビューの代替として扱わないでください。
- 必要な入力、権限、安全境界、成功基準が不足している場合は、立ち止まって明確化を求めてください。