SlideShare a Scribd company logo
1 of 55
Doom3コード解説
(イベントシステムとカスタム
        RTTI)
     @DADA246
自己紹介
• 名前:多田 航@DADA246

• ゲームプログラマやってます

• 得意分野 C++,C#,GPU,javascript,PHP
• 描画関係とかCIとか
自己紹介
• 海外ゲーム歴
PC9801版Test Driveが最初?
その後Doom、Diablo、StarCraft、 NetStorm
から始まり、今ではSteam、Origin、iPhone
で海外ゲームを遊んでいます

秋葉原で輸入ゲームも良く買ってます
アジェンダ
•   Doom3ゲーム概要
•   Doom3コード概要
•   idLib
•   エンティティ
•   カスタムRTTI
•   イベントシステム
•   まとめ
Doom3とは?
• id softwareが開発したFPS
• 2004/8発売
• マルチプラットフォーム(Windows、Mac、
  Linux)
• メインプログラマはJohn Carmack

• 2011/10にソースコードが公開された
https://github.com/TTimo/doom3.gpl
Doom3の特徴
•   狭い通路
•   懐中電灯と武器を切り替えるスタイル
•   ステンシルシャドウ
•   いくつかのカットシーン
•   スクリプトドリブンのレベルデザイン
• コンソールウィンドウによるパラメータ
  調整
→idの伝統
John Carmack
• id Software設立者の一人で、
  FPSの生みの親
• wolfenstein、Doom、Quake、
  Rageなど数々のゲームを開発

• id Softwareのゲームはほとん
  どJohn Carmackが一人で書い
  ていると言われている
Doom3のコードを読んでみる
• Visual Studioで開く
→neodoom.sln

• Visual Studio Expressでビルドするためにはコード
  からATLを外す必要がある
→チャレンジしてみましたがビルド出来ませんで
した…

• ソースコードはGPLでもテクスチャなどのリソー
  スは公開されていません。Doom3を買う必要が
  あります
コーディングスタイル
•   C++
•   stl、boostは不使用
•   例外、標準RTTIは不使用
•   シンプルなテンプレート

→2004年のコンパイラ事情や、John Carmackが書
いたコードということで、移植性と処理速度を
重視していると思われる(なにしろDoomを書いた
プログラマーであり…そもそもQuake3まではC言
語だった)
コーディングスタイル
• C++の基本を押さえた書き方
→constの徹底
→最低限のvirtual
→プリコンパイル済みヘッダー
→クラスの前方宣言

• レガシーな書き方も残っている
→変数宣言を関数の先頭で行っている
→名前空間を使っていない
全体構成
• Game
→機種共通コード。別
verとしてGame-d3xpが
ある

• DoomDll
→機種依存コード。
exeが出力されるのはコ
レ
idLib
• ゲームタイトルに依存しない処理を集めたラ
  イブラリ

•   エンディアンスワップ
•   色定義
•   タイマー
•   Key/value dictionary
•   ローカライズ用辞書
•   汎用ファイルフォーマット
idLib
• ハッシュ(CRC32,MD4,MD5)
• テキスト(CmdArgs,Base64)
• コンテナ(2分探索,btree,ハッシュテーブル,
  リスト,リンクリスト,キュー,スタック,文字
  列リスト, Vector Set …)
→STLの代わり
数学
• ベクトル
• 行列
• 角度
• クォオータニオン
• 複素数
• 乱数(線形合同法)
• Lcp(Box Constrained Mixed Linear Complementarity
  Problem solver)
• Polynormal(Polynomial of arbitrary degree with real
  coefficients)
ジオメトリ
•   DrawVert
•   JointTransform
•   Surface
•   Surface_Patch(Bezier patch surface)
•   Surface_Polytope(多面体)
•   Surface_SweptSpline
•   TraceModel(コリジョン用モデル)
•   Winding(任意凸形状)
•   Winding2D
ODE(常微分方程式)
• Euler法
• 4次のルンゲクッタ法
衝突形状
• AABB,OBB,視錐台,球
• operatorオーバーロードを活用したシンプ
  ルなコード
プリュッカー座標系
• a way to assign six homogenous coordinates
  to each line in projective 3-space(wikipedia)ら
  しいですが、詳細は理解していません。

• 衝突判定に6次元座標を使う?
SIMD
• Simd_GenericでC++の汎用実装をしつつ、一部
  関数をSIMDに置き換えている

•   以下の実装がある
•   3DNow!
•   AltiVec
•   MMX
•   SSE
•   SSE2
•   SSE3(2004年 Doom3発売年)
SIMD
• 処理負荷を計測する「テスト」が関数ご
  と用意されている

• 四則演算の他にTransformVertsなどの描画
  演算や、UpSamplePCMTo44kHzなどのサウ
  ンド処理が実装されている
アロケータ
• MemoryBlock
• DynamicAllocator
• ページアロケータ

→大きめのメモリ確保はページ単位
小さめのメモリ確保はメモリプール
(MemoryBlock)で行う
TypeInfoプロジェクト
• Type Info Generator
→NoGameTypeInfo.hを生成する
CurlLib
• Daniel StenbergのcURL(クライアントサイド
  URL転送ライブラリ)
• http://curl.haxx.se



• ファイルシステムで使われている
アジェンダ
•   Doom3ゲーム概要
•   Doom3コード概要
•   idLib
•   エンティティ
•   カスタムRTTI
•   イベントシステム
•   まとめ
エンティティ
• ゲームオブジェクトはエンティティと呼ばれ、以下の種類が
  ある

•   idAnimatedEntity(アニメーションするもの。ActorやPlayer)
•   idTestModel
•   idEntityFx
•   idAFAttachment(Articulated figure:多関節形状)
•   idAFEntity_Generic
•   idCursor3D
•   idWeapon(武器)
•   idLight(光源)
•   idBeam
•   idFuncEmitter
•   …
エンティティの例
• idWeapon(武器制御)

• 武器のOn/Offや、サウンド
  などの他のモジュールの処
  理を行っている
idTypeInfo
• カスタムRTTI
• idClassでstaticな情報を扱うために存在する

• 他のクラスからは直接触られず、idClass経由
  で利用される
idTypeInfo主なフィールド
• クラス名
→文字列版とint版が用意されている
→int版は通信対戦時のパケットに使う

• 継承元のクラス名
• イベント(メソッドを関数ポインタにしたもの。
  後述)
• セーブ、ロード時に使う関数ポインタ
idTypeInfoの使い道
• クラス名の管理
→クラス名からインスタンスを生成する
→デバッグ表示、エラー表示にクラス名を入
れる

• 他のクラスと基底クラスが同じかどうか判
  別
• イベントの管理
idClass
• idTypeInfoをstaticで所持している
• イベントを実行する
• セーブ、ロードもある
idClass主なメソッド
• CreateInstance
• GetClassname
• ListClasses_f
→ “Classname”, “Superclass”, “Type”, “Subclasses”
の表示

• Spawn
→エンティティ出現時に呼ばれる
idClassイベント関連
• PostEventMS( const idEventDef *ev, int time )
• PostEventSec( const idEventDef *ev, float time )
• ProcessEvent( const idEventDef *ev )

→各種イベント(関数ポインタ)の実行。後述
idClass staticフィールド
• static int idClass::memused
→クラスインスタンスの総メモリ使用量

• static int idClass::numobjects
→クラスインスタンスの総数
フィールド初期化忘れ対策
• idClass::CreateInstance
→newするときにメモリ領域に0xcdcdcdcdを書い
ておく

→コンストラクタが走った後、メモリ領域に
0xcdcdcdcdがあるかどうかを調べて、フィール
ドの初期化忘れを見つける

Debugビルドでのみ上記チェックを行う
idEntity
• 様々な処理が集まっている

•   thinking(物理更新やUpdate処理など)
•   visuals(描画処理)
•   animation
•   sound
•   entity binding(エンティティの親子関係)
•   physics
•   damage(体力を減らしたり)
•   scripting(スクリプトの処理、シグナル管理)
•   gui(GUIに命令を出す)
•   targets(別のエンティティのシグナルを送る)
idAnimatedEntity
• idEntityにアニメーション(idAnimator)を加
  えたもの

• idAnimator
→複数チャンネルのモーションブレンドや、
親子構造が書いてあるが、詳細は割愛
おさらい
• idWeapon
他のエンティティ
• idLight(光源制御クラス)
• 光源の方向や色を保持している
• On/Offやフェードも出来る

• クラス階層がシンプル
エンティティの一括管理
• エンティティはidGameLocalで一括管理さ
  れている
• idGameLocalでは全エンティティを所持す
  る他、エンティティの作成、削除、検索
  ができる
idGameLocal
• 様々なモジュールの集合クラス

•   Entity(全エンティティの管理)
•   Random
•   Program(スクリプト)
•   Clipping
•   Physics
•   PVS(potential visible set)
•   MultiPlayerGame
•   SmokeParticles
•   カメラ
•   ゲームの種類などの汎用情報
•   …
idGameLocal
• 様々なメソッドを持つ

•   Entityの出現、削除、検索
•   ネットワーク対戦情報
•   セーブ、ロード
•   ユーザー情報
•   Draw
•   ゲームのリセット
•   Printf
•   マップのロード
•   AAS(area system)
エンティティの検索
• 名前で検索
  const char * name;
  idEntity* ent = gameLocal.FindEntity( name );




• Key Value Dictionaryで検索
  const char * key;
  gameLocal.GetTargets(Key Value Dictionary, Entity, key );
エンティティの検索
• クリッピング結果の取得


trace_t tr;//トレース結果用変数
gameLocal.clip.TracePoint( tr,線分の開始地点,線分の終了地点, …);

idEntity* ent = gameLocal.GetTraceEntity( tr );//エンティティの取得

ent->Signal( SIG_TOUCH );//シグナルの発行
ent->ProcessEvent( &EV_Touch, …);//イベントの実行
エンティティ生成
• idTypeInfoで型指定してエンティティを生
  成できる

worldModel = static_cast< idAnimatedEntity * >
            ( gameLocal.SpawnEntityType( idAnimatedEntity::Type, NULL ) );
アジェンダ
•   Doom3ゲーム概要
•   Doom3コード概要
•   idLib
•   エンティティ
•   カスタムRTTI
•   イベントシステム
•   まとめ
イベントシステム
• C++の関数をスクリプトから呼ぶためのも
  の
• idEventとidEventDefで構成されている
イベントを使った処理
• idWeaponで直接関数を呼
  ばずにイベント
  (idClass::ProcessEvent)を経
  由している
イベントの登録
• 各種エンティティの先頭でidEventDefを宣
  言 idEventDef EV_Weapon_Next( "nextWeapon" );
   const
    …




• その後マクロで関数をイベントに登録す
   CLASS_DECLARATION( idAnimatedEntity, idWeapon )
  る
     EVENT( EV_Weapon_Next,idWeapon::Event_Next )

    END_CLASS
イベントの呼び出し
• idClass::ProcessEventを呼ぶと、イベント登
  録された関数が呼ばれる


    idEntity *other;
    other->ProcessEvent( &EV_Touch, this, &collision );
スクリプト
• イベントはスクリプトクラスでも使われ
  ている
• Script_Compiler
• Script_Interpreter
• Script_Program
• Script_Thread
スクリプトからのイベント呼び
      出し
• スクリプトからidInterpreter::CallEventでイ
  ベントを呼べる

• idWeapon::Event_Clearといったメソッドを
  直接呼び出さないでイベントを経由して
  いるのはスクリプトのため?
まとめ
• Doom3を読んでみました
• 海外ゲームの基礎システムに興味を持って
  頂ければ幸いです
解説していないコード
•   スクリプトコンパイラ
•   ファイルシステム
•   物理
•   アニメーション
•   Dedicated Server
•   描画(renderEntity,qgl)
•   …
Question?
ご清聴ありがとうございました

More Related Content

What's hot

AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境Katsutoshi Nagaoka
 
Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Hiroshi Hayakawa
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)なおき きしだ
 
BHyVeってなんや
BHyVeってなんやBHyVeってなんや
BHyVeってなんやTakuya ASADA
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
BHyVe: The BSD Hypervisor
BHyVe: The BSD HypervisorBHyVe: The BSD Hypervisor
BHyVe: The BSD HypervisorTakuya ASADA
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会Etsuji Nakai
 
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜Takuya ASADA
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
物理マシンをケチる技術
物理マシンをケチる技術物理マシンをケチる技術
物理マシンをケチる技術Satoshi KOBAYASHI
 
Bhyve code reading
Bhyve code readingBhyve code reading
Bhyve code readingTakuya ASADA
 
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!Nishida Kansuke
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)nabe-abk
 
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタDRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ株式会社サードウェア
 

What's hot (19)

AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
Free bsd jail入門
Free bsd jail入門Free bsd jail入門
Free bsd jail入門
 
Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
 
BHyVeってなんや
BHyVeってなんやBHyVeってなんや
BHyVeってなんや
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
Bhyve Internals
Bhyve InternalsBhyve Internals
Bhyve Internals
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
BHyVe: The BSD Hypervisor
BHyVe: The BSD HypervisorBHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会
 
Osc2009 Do Xen Hara
Osc2009 Do Xen HaraOsc2009 Do Xen Hara
Osc2009 Do Xen Hara
 
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
物理マシンをケチる技術
物理マシンをケチる技術物理マシンをケチる技術
物理マシンをケチる技術
 
Bhyve code reading
Bhyve code readingBhyve code reading
Bhyve code reading
 
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
 
Slub data structure
Slub data structureSlub data structure
Slub data structure
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
 
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタDRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
 

Viewers also liked

shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャDADA246
 
Component basedgameenginedesign
Component basedgameenginedesign Component basedgameenginedesign
Component basedgameenginedesign DADA246
 
ゲームオブジェクトの管理
ゲームオブジェクトの管理ゲームオブジェクトの管理
ゲームオブジェクトの管理Shota Homma
 
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 Masafumi Takahashi
 
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことメモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことMasaya TARUI
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lightingozlael ozlael
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話Masayoshi Kamai
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングSatoshi Kodaira
 

Viewers also liked (11)

shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ
 
Component basedgameenginedesign
Component basedgameenginedesign Component basedgameenginedesign
Component basedgameenginedesign
 
ゲームオブジェクトの管理
ゲームオブジェクトの管理ゲームオブジェクトの管理
ゲームオブジェクトの管理
 
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことメモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なこと
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
 

Similar to Doom3 commentary

ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話Preferred Networks
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会Yoshihisa Ozaki
 
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみようcocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみようTomoaki Shimizu
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvimpebble8888
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64FFRI, Inc.
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectComputedasyprocta
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までMasayuki Nakano
 
オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータTakahiro Inoue
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点Kuniyasu Suzaki
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用Masafumi Okada
 
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼 [CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼 CODE BLUE
 
詳解Dexファイルフォーマット
詳解Dexファイルフォーマット詳解Dexファイルフォーマット
詳解DexファイルフォーマットTakuya Matsunaga
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power AutomateTomoyuki Obi
 

Similar to Doom3 commentary (20)

ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
 
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみようcocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみよう
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
 
Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvim
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectCompute
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵まで
 
オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータ
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
 
進化するArt
進化するArt進化するArt
進化するArt
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
 
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼 [CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
 
詳解Dexファイルフォーマット
詳解Dexファイルフォーマット詳解Dexファイルフォーマット
詳解Dexファイルフォーマット
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power Automate
 
IgGrid 入門編
IgGrid 入門編IgGrid 入門編
IgGrid 入門編
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (10)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

Doom3 commentary