
ãã¶ã€ããŒç»é¢ãããã¬ãŒã€ãŒç»é¢ãŸã§
ãããã¯ãã¬ãã«ãã¶ã€ããŒãDoom EditorïŒDoomEDïŒã䜿çšããŠ2Dã§éçºããŸããã LINEDEFSã¯ã¯ããŒãºãã»ã¯ã¿ãŒïŒãœãŒã¹ã³ãŒãã®SECTORSïŒãèšè¿°ãã3次å ïŒé«ãïŒã¯ã»ã¯ã¿ãŒããšã«ç€ºãããŠããŸããã Doom E1M1ã®æåã®ã¬ãã«ã¯æ¬¡ã®ããã«ãªããŸãã

ãããã§ã®äœæ¥ãå®äºãããããã€ããªã¹ããŒã¹ããŒãã£ã·ã§ãã³ã°ïŒBSPïŒã¡ãœããã䜿çšããŠããããåãåããŸãã LINEDEFãååž°çã«éžæããããã®å¹³é¢ãå²ç·å¹³é¢ã«ãªããŸããã ã€ãŸããåžã®ãµãã»ã¯ã¿ãŒã®ã¿ãæ®ããŸã§ïŒã³ãŒãå ã®SSECTORïŒãLINEDEFã¯ã»ã°ã¡ã³ãã«åå²ãããŸããïŒSEGSïŒã
èå³æ·±ãäºå®ïŒ DoomEDãšiBSPã¯äž¡æ¹ãšã... NextStepã¯ãŒã¯ã¹ããŒã·ã§ã³ã®Objective-Cã§æžãããŠããŸãã 15幎åŸãã»ãŒåããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®åãèšèªãã¢ãã€ã«ããã€ã¹ã§ã²ãŒã ãå®è¡ããŸãïŒ [çŽã PerãïŒ2010幎ãDoomã¯iPhoneã§ç»å ŽããŸãã]ç§ã¯ãŠã§ãèå€åŠè ãšããŠå°ãåããŠããªããšãidbspã®ãœãŒã¹ã³ãŒããèŠã€ããŸããã äžèŠã®äŸ¡å€ããããŸã ã
以äžã¯ã第1ã¬ãã«ã®ãããã®ååž°çãªåå²ã®äŸã§ãã
ååž°ã¬ãã«1


éžæããå£ãå²ç·å¹³é¢ïŒèµ€ïŒã«å€ãããéã§ããŒã¯ãããŸãã åæé¢ã¯ãBSPããªãŒã®ãã©ã³ã¹ãåããäœæãããSEGSã®æ°ãå¶éããããã«éžæãããŸããã ç·è²ã®å¢çç©åœ¢ã¯ãåŸã§ããããã©ã°ã¡ã³ãå šäœãç Žæ£ããããã«äœ¿çšãããŸããã
ååž°ã¬ãã«2ïŒå³éšå空éã®ã¿ïŒ


ãã®çµæãSECTORSã»ã¯ã¿ãŒã¯ã³ã³ããã¯ã¹ãµãã»ã¯ã¿ãŒïŒSSECTORSãšè¡šèšïŒã«åå²ãããLINEDEFSã¯ã»ã°ã¡ã³ãïŒSEGSãšè¡šèšïŒã«åå²ãããŸããã

å šäœçãªäœæ¥ããã»ã¹
ã¡ã€ã³ã¬ã³ããªã³ã°ã¡ãœããïŒ
R_RenderPlayerView
ïŒã¯æ¬¡ã®ããã«ãªããŸãã
void R_RenderPlayerView (player_t* player) { [..] R_RenderBSPNode (numnodes-1); R_DrawPlanes (); R_DrawMasked (); }
ããã§ã¯4ã€ã®æäœãå®è¡ãããŸãã
-
R_RenderBSPNode
ïŒãããäžã®ãã¹ãŠã®ãµãã»ã¯ã¿ãŒã¯ãBSPããªãŒã䜿çšããŠãœãŒããããŸãã 倧ããªãã©ã°ã¡ã³ãã¯ãå¢çã®é·æ¹åœ¢ã䜿çšããŠç Žæ£ãããŸãïŒåã®ç»åã§ã¯ç·è²ã§è¡šç€ºãããŠããŸãïŒã -
R_RenderBSPNode
ïŒå¯èŠSEGSã»ã°ã¡ã³ãã¯ãã«ãã¯ã¢ããããŒãã«ãä»ããŠç»é¢ã«æ圱ãããã¯ãªããã³ã°é åã䜿çšããŠããªãã³ã°ãããŸãã å£ã¯ãã¯ã»ã«ã®åãšããŠæç»ãããŸãã åã®ãµã€ãºã¯ãã¬ãŒã€ãŒã®èŠç¹ããã®è·é¢ã«ãã£ãŠæ±ºãŸããYåã®äœçœ®ããé«ãã¯ãã¬ãŒã€ãŒã«æ¥ç¶ãããŸãã å£ã®ããŒã¹ãšãããã¯ãé£è¡æ©ã®å¹³é¢ãäœæããŸãã ãããã®æ§é ã¯ãåºãšå€©äºã®ã¬ã³ããªã³ã°ã«äœ¿çšãããŸãïŒãã©ããã³ãŒãã§åŒã³åºãããŸãïŒã -
R_DrawPlanes
ïŒR_DrawPlanes
ãã¬ãŒã³ã¯ããã¯ã»ã«ã®åãããã¯ã»ã«ã®è¡ã«å€æãããç»é¢ã«ã¬ã³ããªã³ã°ãããŸãã -
R_DrawMasked
ïŒããªããžã§ã¯ããïŒæµããªããžã§ã¯ããéæãªå£ïŒãR_DrawMasked
ãŸãã
ãã€ããªã¹ããŒã¹åå²ã®äžŠã¹æ¿ã
E1M1ïŒæåã®Doomã«ãŒãïŒãšBSPã®2ã€ã®äŸã¯æ¬¡ã®ããã«ãªããŸãã
// // ax + by + c = 0 // = (a,b) // ( A B): normal = (-1,0) c = 3500 // A ( A A1 A2): normal = (1,0) c = -2500 // B ( B B1 B2): normal = (-0.24,0.94) c = -650 // (x,y) // .

BSPããªãŒã®èµ°æ»ã¯åžžã«ã«ãŒãããŒãããéå§ãããäž¡æ¹ã®ãµãã¹ããŒã¹ããœãŒãããŸãã ååž°ã¯äž¡æ¹ã®åããŒãã«å¯ŸããŠå®è¡ãããŸãã
äŸ1ïŒãã¬ã€ã€ãŒïŒç·è²ã®ç¹ïŒã¯ããã€ã³ãp =ïŒ2300,1900ïŒããçªãèŠããŸãïŒ


// = ( 2300, 1900 ) // R_RenderBSPNode AB (-x + 3500 = 0): -2300 + 3500 = 1200 , , . (A , B). // R_RenderBSPNode : A1/A2 B1/B2. // R_RenderBSPNode A1/A2 (x - 2500 = 0): 2300 - 2500 = -200 , . (A1 , A2). // R_RenderBSPNode B1/B2 (-0.24x +0.97y - 650 = 0): -0.24 * 2300 + 0.97 * 1900- 650 = 641 , . (B1 , B2). : : { A1, A2, B1, B2 }
äŸ2ïŒãã¬ã€ã€ãŒïŒç·è²ã®ç¹ïŒã¯ãp =ïŒ5040ã2400ïŒã®ç§å¯ã®ãã«ã³ããŒããèŠããŸãïŒ


// = ( 5040, 2400 ) // R_RenderBSPNode AB (-x + 3500 = 0): -5040 + 3500 = -1540 , . (B , A). // R_RenderBSPNode : A1/A2 B1/B2. // R_RenderBSPNode B1/B2 (-0.24x +0.97y - 650 = 0): -0.24 * 5040 + 0.97 * 2400 - 650 = 468 , . (B1 , B2). // R_RenderBSPNode A1/A2 (x - 2500 = 0): 5040 - 2500 = 2540 , . (A2 , A1). : : { B1, B2, A2, A1 }
BSPããªãŒã䜿çšãããšããã¬ãŒã€ãŒã®äœçœ®ã«é¢ä¿ãªãããããäžã®ã©ãããã§ãäžå®ã®é床ã§SEGSããœãŒãã§ããŸãã ããã«å¯ŸããäŸ¡æ Œã¯ãåãã¬ãŒã³ã«å¯ŸããŠ1ã€ã®ä¹ç®æŒç®ãš1ã€ã®å ç®æŒç®ã§ãã ããã«ãããŠã³ãã£ã³ã°ããã¯ã¹ã«ãããã¹ãã®ããããããã®å€§éšåãç Žæ£ãããŸãã
泚ïŒããã«ã¯ããããŸããããBSPã¯ãã¬ãŒã€ãŒã®åšãã®ãã¹ãŠã®SEGSã»ã°ã¡ã³ãããããšã圌ãèŠãŠããªããã®ã§ãã£ãŠããœãŒãããŸãã BSPã䜿çšããå Žåãå¯èŠæ§ã®ãã©ãããã«æ²¿ã£ãŠã¯ãªããã³ã°ã䜿çšããå¿ èŠããããŸãã
å£
BSPå£ïŒSEGSïŒãè¿ãããé ãã«äžŠã¹æ¿ãããšãæãè¿ã256ã®å£ã®ã¿ãã¬ã³ããªã³ã°ãããŸãã åSEGSã®2ã€ã®é ç¹ã¯2ã€ã®è§åºŠã«å€æãããŸãïŒãã¬ãŒã€ãŒã®äœçœ®ãåºæºã«ããŠïŒã
æ³šïŒ 1993幎ã«ã¯ãæã匷åãª486DXãã·ã³ã«ã®ã¿FPUïŒæµ®åå°æ°ç¹æ°çšã®ã³ããã»ããµãŒïŒãæèŒãããŠãããããDoomãšã³ãžã³ã¯
int
æ°ã®ã¿ã§æ©èœãããã€ããªè§åºŠæž¬å®ïŒBAMïŒã䜿çšããŠãã¹ãŠã®è§åºŠãèšç®ãã
float
圢åŒã¯ã»ãšãã©äœ¿çšãããŸããã§ããã åãçç±ã§ãæŽæ°ã®ç²ŸåºŠãè¶ ãã粟床ã¯ãåºå®ã³ã³ãä»ãã®ãã€ããª16.16圢åŒã§ãã
fixed_t
ã䜿çšããŠéæãããŸããïŒããã«ã€ããŠã¯ã ãã¡ããšãã¡ããã芧ãã ãã ïŒã
è§åºŠã«å€æããåŸãã«ãã¯ã¢ããããŒãã«ïŒ
viewangletox
ïŒã䜿çšããŠãç»é¢ç©ºéã®X座æšãååŸããŸããã BAMã¯
int
ã§å®è¡ãããããã8 KBã®ã«ãã¯ã¢ããããŒãã«ã«åãŸãããã«ãå³ã«19ãããã®ã·ããã䜿çšããŠãæåã«ã³ãŒããŒã32ããããã13ãããã«ã¹ã±ãŒãªã³ã°ããŸããã
次ã«ãã¯ãªããã³ã°é åã«åŸã£ãŠå£ãããªãã³ã°ããŸããïŒ
solidsegs
ãäžéšã®èšäºã§ã¯ãDoomãšã³ãžã³ã®ãªã³ã¯ãªã¹ãã«ã€ããŠèšåããŠããŸããã䜿çšãããŠããªãããã§ãïŒã ããªãã³ã°åŸãæ®ãã®ã¹ããŒã¹ã¯è£éããããã¯ã»ã«åãšããŠã¬ã³ããªã³ã°ãããŸããããã¯ã»ã«åã®é«ããšY座æšã¯ãããããSEGSã»ã¯ã¿ãŒã®é«ããšãã¬ãŒã€ãŒã®èŠç¹ããã®è·é¢ã«åºã¥ããŠããŸããã
ã¯ãªããã³ã°ãµãŒãã§ã¹ã«é¢ãã泚æïŒäžå¯èŠãµãŒãã§ã¹ã®ã¯ãªããã³ã°ã¯ã
angle2-angle1 > 180
ã䜿çšããŠè¡ãããŸããã ã¹ã³ãŒãå ã®å£ã®ã¿ãã¬ã³ããªã³ã°ãããŸããã

泚ïŒãã¹ãŠã®å£ãåäžã®ãã¯ã¹ãã£ã§æ§æãããŠããããã§ã¯ãããŸããã å£ã«ã¯ãäžéšã®ãã¯ã¹ãã£ãäžéšã®ãã¯ã¹ãã£ãããã³äžçšåºŠã®ãã¯ã¹ãã£ïŒéæãŸãã¯åéæïŒããããŸãã äžã®ãããªãããããããã«ããŠã£ã³ããŠã®ã·ãã¥ã¬ãŒã·ã§ã³ã«ã¯äŸ¿å©ã§ãããããŠã£ã³ããŠãã¯ãå®éã«ã¯é«åºã§å¹³åçãªãã¯ã¹ãã£ããªãã»ã¯ã¿ãŒã§ãã
èå³æ·±ãäºå®ïŒå£ã¯åçŽã®åãšããŠã¬ã³ããªã³ã°ããããããå£ã®ãã¯ã¹ãã£ã¯å·Šã«90床å転ããã¡ã¢ãªã«ä¿åãããŸããã ãã®ããªãã¯ã«ãããäžå€®åŠçè£ çœ®ã®äºåãã£ãã·ã¥æ©èœãå®å šã«å©çšããããšãå¯èœã«ãªããŸãããRAMãããŠã©ãŒã«ãã¯ã»ã«ãèªã¿åãããã»ã¹ã¯ãååŽã«8ã€ã®é£æ¥ãã¯ã»ã«ã§CPUãã£ãã·ã¥ãäºåã«èšå®ããŸããã åŸç¶ã®èªã¿åãããŒã¿ã¯æ¢ã«RAMãã£ãã·ã¥ã«ãã£ããããèªã¿åãã¬ã€ãã³ã·ã®å€§å¹ ãªåæžãéæãããŸããã ã¡ã¢ãªå ã®ããŒã¿ã®äºåãã£ãã·ã¥ãšæŽåã®è©³çŽ°ã«ã€ããŠã¯ããThe Art of Assembly Language programmingãïŒã»ã¯ã·ã§ã³3.2.4ãã£ãã·ã¥ã¡ã¢ãªïŒãåç §ããŠãã ããã
å¹³ããªè¡šé¢ïŒåºãšå€©äºïŒããŸãã¯æªåé«ãé£è¡æ©
å£ã®åãã¬ã³ããªã³ã°ãããšããç»é¢ã¹ããŒã¹ã®äžäžã®åº§æšã䜿çšããŠããå¹³é¢ããç»é¢ã¹ããŒã¹å ã®ãšãªã¢ïŒå¿ ãããæ°Žå¹³ã«é£ç¶ããŠããå¿ èŠã¯ãããŸããïŒãçæããŸããã ããã¯ãDoomãšã³ãžã³ã§visplane_tã宣èšãããæ¹æ³ã§ãã
// // visplane? // typedef struct { fixed_t height; int picnum; int lightlevel; int minx; int maxx; byte top[SCREENWIDTH]; byte bottom[SCREENWIDTH]; } visplane_t;
æ§é ã®æåã®éšåã«ã¯ãããããªã¢ã«ãã«é¢ããæ å ±ïŒ
height, picnum, lightlevel
ïŒã
height, picnum, lightlevel
ãŸãã æåŸã®4ã€ã®ã¡ã³ããŒã¯ãç»é¢ã¹ããŒã¹ã®ã«ãã¬ããžãšãªã¢ãå®çŸ©ããŸãã
2ã€ã®ãµãã»ã¯ã¿ãŒãåããããªã¢ã«ïŒé«ãããã¯ã¹ãã£ãããã³å ã¬ãã«ïŒãæã£ãŠããå ŽåãDoomãšã³ãžã³ã¯ããããçµåããããšããŸããããvisplante_tæ§é ã®å¶éã«ãããããã¯åžžã«å¯èœã§ã¯ãããŸããã§ããã
ç»é¢ã®å¹ å šäœã«å¯ŸããŠãvisplaneã¯ãã¯ã»ã«ã®åã®äœçœ®ãä¿åã§ããŸãïŒvisplaneã¯å£ãç»é¢ã«æ圱ããããšã§ååŸãããããããã¯ã»ã«åãšããŠäœæãããŸãïŒã
以äžã¯ãåæç»é¢ã®3ã€ã®åºæ¬çãªé£è¡æ©ã§ãã

ç·ã®é¢ã¯ç¹ã«èå³æ·±ããã®ã§ã
visplane_t
ãäžé£ç¶ãªïŒæ°Žå¹³æ¹åã®ã¿ã®ïŒé åã
visplane_t
ã§ããããšã瀺ããŠããŸãã åã¯é£ç¶ããŠãããããvisplaneã¯ãããä¿åã§ããŸãã ãã®å¶éã¯ãšã³ãžã³ã«çŸããŸããäžéšã®ãµãã»ã¯ã¿ãŒã¯1ã€ã®é£è¡æ©ã䜿çšããŠããŒãžããã³ã¬ã³ããªã³ã°ã§ããŸããããããã®éã«åçŽæ¹åã®äœããããå ŽåãããŒãžã¯äžå¯èœã§ãã
以äžã¯ãé£è¡æ©ã®æçåã瀺ãã¹ã¯ãªãŒã³ã·ã§ãããšå¯Ÿå¿ãããããªã§ãã

èå³æ·±ãäºå®ïŒå³ããèšå®ãããé£è¡æ©ã®å¶éïŒ
MAXVISPLANES
128ïŒã¯ãã²ãŒã ãèœã¡ãŠDOSã«æ»ã£ãããã
MAXVISPLANES
ã«ãšã£ãŠå€§ããªé çã®çš®ã§ããã 次ã®2ã€ã®åé¡ãçºçããå¯èœæ§ããããŸãã
-
"R_FindPlane: no more visplanes"
ïŒããŸããŸãªãããªã¢ã«ã®é£è¡æ©ã®åèšæ°ïŒé«ãããã¯ã¹ãã£ãããã³å ã®ã¬ãã«ïŒã128ãè¶ ããŠããŸãã -
R_DrawPlanes: visplane overflow (%i)
ïŒé£è¡æ©ãæçåãããšããã®æ°ã¯128ãè¶ ããŸããã
ãªã128ã«å¶éãããã®ã§ããïŒ ã¬ã³ããªã³ã°ãã€ãã©ã€ã³ã®2ã€ã®ã¹ããŒãžã§ã¯ãvisplanesãªã¹ãã§ã®æ€çŽ¢ãå¿ èŠã§ããïŒ
R_FindPlane
ã䜿çšïŒã æ€çŽ¢ã¯ç·åœ¢ã§ããããããã128ãè¶ ããæ°å€ã®å Žåãã³ã¹ããé«ãããããšãå€æããŸããã Lee Killoughã¯åŸã«ãç·åœ¢æ€çŽ¢ããã§ãŒã³ããã·ã¥ããŒãã«ã«çœ®ãæããããšã§ãã®å¶éãæ¡åŒµããŸããã
ãªããžã§ã¯ããšéæãªå£
ãã¹ãŠã®åºäœã®å£ãšãéæãªäžå€®ã®ãã¯ã¹ãã£ãã®å£ãããã³å€©äºãšåºã®è¡šé¢ãã¬ã³ããªã³ã°ãããåŸãããªããžã§ã¯ããã®ã¿ãæ®ããŸãïŒæµãæšœã匟è¬ãåéæã®å£ã ãããã¯æãé ããã®ããæãè¿ããã®ãŸã§ã¬ã³ããªã³ã°ãããŸãããå£åç §ããŒãã«ã䜿çšããŠã¹ã¯ãªãŒã³ç©ºéã«æ圱ãããããšã¯ãããŸããã ã¬ã³ããªã³ã°ããã»ã¹ã¯ãåºå®ã®ã³ã³ãã§2é²æ°ã®16.16ãèšç®ããããšã«ãã£ãŠå®è¡ãããŸãã
泚ïŒãã®ãããªã¯ãäžéšã®ãã¯ã»ã«ã3ååæç»ããå¿ èŠãããææªã®ã·ããªãªã®1ã€ã瀺ããŠããŸãã
ãããã¡ã€ãªã³ã°
Mac OS Xã®ã€ã³ã¹ãã¥ã«ã¡ã³ãã§Chocolate DoomãããŠã³ããŒããããšããããã¡ã€ãªã³ã°ãè¡ãããšãã§ããŸããã
[iPhoneã®]ããŒãã¯ãããã©ãã®éåœã«ã»ãŒäžèŽããŠããããã§ããã»ãšãã©ã®å Žåãå£ïŒ
R_DrawColumn
ïŒã倩äº/åºïŒ
R_DrawSpan
ïŒãããã³ãªããžã§ã¯ãïŒ
R_DrawMaskedColumn
ïŒã
R_DrawMaskedColumn
ãŸãã ã¬ã³ããªã³ã°ã«å ããŠãå£ã®è£éïŒ
R_RenderSegLoop
ïŒããã³åãããã¯ã»ã«ã®è¡ãžã®é£è¡æ©ã®å€æïŒ
R_RenderSegLoop
ïŒã«é«ããªãœãŒã¹ã³ã¹ããããããšã«æ°ä»ããŸããã ãããŠæåŸã«ãAIïŒ
R_MobjThinker
ïŒã«
R_MobjThinker
ããBSPããªãŒïŒ
R_RenderBSPNode
ïŒããã€ãã¹ããŸãã

å転ããã³ãŒã«ããªãŒã䜿çšãããšãã»ãšãã©ã®äœæ¥ãå®éã«BSPããªãŒã®èµ°æ»ãå£ã®ã¬ã³ããªã³ã°ãããã³visplaneã®çæã䌎ãããšãããããŸãïŒ
R_RenderBSPNode
ïŒ2çªç®ã®åã¯è²»ããããæéã®å²åã§ãïŒã

ãã¹ãŠäžç·ã«
ãããŠä»ãæåŸã«ãäŒèª¬çãªæåã®ç»é¢ãçæãããããªããããé çªã«èŠãããšãã§ããŸãïŒ
- ãã¯ã»ã«ã®åãšããŠã®å£ãè¿ãããé ããŸã§
- ãã¯ã»ã«åã®ãããªå¹³ããªè¡šé¢ãè¿ãããé ããŸã§
- é ãããè¿ããŸã§ã®ã¢ã€ãã ã
èå³æ·±ãäºå®
- Doomã¯ç·åœ¢ä»®æ³ã¡ã¢ãªã¢ãã«ãåããNeXTSTEPã·ã¹ãã ã§éçºããããããid Softwareã¯åœæã®ã»ãšãã©ã®ã²ãŒã ã§äœ¿çšãããŠããEMSãšXMSãæŸæ£ããããšã決å®ããŸããã 代ããã«ãéçºè ã¯DOS / 4Gã䜿çšããŸãããããã¯ããœãããŠã§ã¢ããªã¢ã«ã¢ãŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒDOSïŒã®ãããã¯ãã¢ãŒãã§RAMã«ã¢ã¯ã»ã¹ã§ããããã«ããã¡ã¢ãªãšã¯ã¹ãã³ããŒã§ãã
- NexTã¯ãŒã¯ã¹ããŒã·ã§ã³ã¯éåžžã«åŒ·åã§ãã£ãããããšãã£ã¿ãŒãã²ãŒã ãããã³ãããã¬ãŒãåæã«å®è¡ã§ããŸããã ã²ãŒã ãååã«å®å®ãããšãã³ãŒãã¯ãããã¯ãŒã¯ãä»ããŠPCã«éä¿¡ãããWatcom DOS / x86ã³ã³ãã€ã©ãŒã§ã³ã³ãã€ã«ãããŸããã DOS / 4Gã®ãããã§ãã³ãŒãã¯PCãšNeXTã®äž¡æ¹ã§åãã¡ã¢ãªã¢ãã«ã§å®è¡ãããŸããã
- Masters of Doomã®æ¬ãè£å®ããèå³æ·±ããããªïŒ
- å€ãã®è©³çŽ°ã¯ãJohn RomeroïŒ rome.ro ïŒããã³planetromero.comã®Webãµã€ãã§èª¿ã¹ãããšãã§ããŸãã
æšå¥šèªæž
- 1997幎ã«ãªãªãŒã¹ãããå ã®ãœãŒã¹ã³ãŒãã¯èªã¿ãããã§ãããã³ã¡ã³ãããªãããã»ãšãã©ã³ã¡ã³ãããªããã³ã³ãã€ã«ãããããªãŒãã£ãªãµãã·ã¹ãã ã®ãœãŒã¹ã³ãŒãããããŸããïŒã©ã€ã»ã³ã¹ã®åé¡ã®ããïŒã
- ãã§ã³ã¬ãŒãã»ãã¥ãŒã ïŒããããïŒ ããã¯åãªããã°ããã移æ€çã§ãããSDLã«åºã¥ããŠãããã»ãŒãã¹ãŠã®ãã©ãããã©ãŒã ã§brioã䜿çšããŠã³ã³ãã€ã«ã§ããŸãã ãã®èšäºã®ãããªãçæããããã«ãããã³ã°ããã®ã¯ãã®ããŒãã§ãã
- ãã€ã±ã«ã»ã¢ãã©ã·ã¥ã«ããæ¬ãGraphics Programming Black Bookãã BSPããªãŒãç解ããã®ã«åœ¹ç«ã¡ãã€ã³ã¹ãã¬ãŒã·ã§ã³ã®å€§ããªæºã§ãã ãã®ç·ã¯ããªããã¢ã»ã³ãã©ãŒã«å€¢äžã«ãããããšããã§ããŸãã
- Doomã®ãã¹ã¿ãŒ ïŒDoomã®äœæã«é¢ãã詳现ãèšèŒãããidãœãããŠã§ã¢ã¹ããŒãªãŒ