锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产精品久久久久久电车,国内精品久久久久影院色,欧美激情免费在线http://www.shnenglu.com/zgpxgame/category/19142.html鍍忎綔璇椾竴鏍峰啓紼嬪簭錛屽儚寮圭惔涓鏍鋒暡浠g爜錛屽儚鐪嬪皬璇翠竴鏍瘋寮婧?/description>zh-cnSat, 19 Jan 2013 13:31:32 GMTSat, 19 Jan 2013 13:31:32 GMT60Doom3婧愮爜鍓栨瀽璧勬枡鏁寸悊http://www.shnenglu.com/zgpxgame/archive/2012/07/07/182002.htmlzgpxgamezgpxgameFri, 06 Jul 2012 19:25:00 GMThttp://www.shnenglu.com/zgpxgame/archive/2012/07/07/182002.htmlhttp://www.shnenglu.com/zgpxgame/comments/182002.htmlhttp://www.shnenglu.com/zgpxgame/archive/2012/07/07/182002.html#Feedback0http://www.shnenglu.com/zgpxgame/comments/commentRss/182002.htmlhttp://www.shnenglu.com/zgpxgame/services/trackbacks/182002.htmlDOOM3_SOURCE_CODE_REVIEW.doc

zgpxgame 2012-07-07 03:25 鍙戣〃璇勮
]]>
Doom3婧愮爜鍓栨瀽錛?錛?-鏋舵瀯綆浠嬶紙璇戯級http://www.shnenglu.com/zgpxgame/archive/2012/04/25/172673.htmlzgpxgamezgpxgameTue, 24 Apr 2012 16:07:00 GMThttp://www.shnenglu.com/zgpxgame/archive/2012/04/25/172673.htmlhttp://www.shnenglu.com/zgpxgame/comments/172673.htmlhttp://www.shnenglu.com/zgpxgame/archive/2012/04/25/172673.html#Feedback1http://www.shnenglu.com/zgpxgame/comments/commentRss/172673.htmlhttp://www.shnenglu.com/zgpxgame/services/trackbacks/172673.html    鍓嶆鏃墮棿鐪嬪埌鍥藉涓鍗氬涓婄殑鍑犵瘒Doom3浠g爜鍒嗘瀽鐨勬枃绔狅紝鎰熻鍒嗘瀽寰椾笉閿欙紝灝辮嚜宸辯炕璇戜簡涓涓嬶紝浠ヤ笅鏄瘧鏂囷紝鏈変笉澶悊瑙e湴鏂瑰氨鐩存帴璐翠簡鍘熸枃銆傚ぇ閮ㄥ垎鏄寜鑷繁鐨勭悊瑙g炕璇戠殑錛屽彲鑳芥湁浜涘湴鏂硅瘧鐨勫茍涓嶇簿紜傛湁鍠滄鐨勬湅鍙嬪彲浠ュ湪榪欓噷鐪嬪師鏂囷細(xì)http://fabiensanglard.net/doom3/錛岃繖閲屾榪庡悇縐嶈璁恒?/p>

 

綆浠?/strong>

    2011騫?1鏈?3鏃ワ紝id Software渚濈収鎯緥鍙戝竷浜嗗墠涓浠e紩鎿庣殑婧愮爜錛岃繖嬈″彂甯冪殑鏄疍oom3寮曟搸錛?a >id Tech 4銆?

    Within hours the GitHub repository was forked more than 400 times錛屽ぇ瀹跺湪涓嶅悓鐨勫鉤鍙頒笂緙栬瘧騫朵笖鏌ョ湅娓告垙鐨勫唴閮ㄥ疄鐜版満鍒躲傛垜涔熼┈涓婂紑濮嬩簡Mac鐗堟湰浠g爜鐨勫涔?fàn)銆?

    榪欎喚浠g爜鍦ㄦ竻鏅板害鍜屾敞閲婃柟闈紝鏄戶id Software鍙戝竷Doom iPhone浠g爜鍚庯紝鏈濂界殑涓浠戒唬鐮併傛垜寤鴻姣忎竴涓埍濂借呴兘鍘昏涓璇伙紝騫剁爺涔?fàn)杩欎唤浠g爜鐨勫疄鐜般?

    榪欓噷鏄垜鐨勭瑪璁幫紝閲岄潰璁板綍浜嗘垜鐞嗚В鍒扮殑涓浜涘唴瀹廣傚儚寰甯鎬竴鏍鳳紝鎴戝皢鍏舵暣鐞嗗湴娓呮櫚浜嗕竴浜涳紝鎴戝笇鏈涘畠鑳藉府鍔╀竴浜涙湅鍙嬭妭鐪佷竴浜涙椂闂達(dá)紝騫朵笖鎴戜篃甯屾湜瀹冭兘淇冧嬌鎴戜滑闃呰鏇村鐨勪唬鐮侊紝騫舵垚涓烘洿浼樼鐨勭▼搴忓憳銆?

 

鑳屾櫙

    鎷垮埌榪欎喚鍏鋒湁寮鍒涙х殑寮曟搸浠g爜鏄竴浠跺緢浠や漢鍏村鐨勪簨鎯呫傛棭鍦?004騫碊oom3鍙戣鏃訛紝瀹冪‘绔嬩簡瀹炴椂3D鍥懼艦鍜岄煶棰戠殑鏂版爣鍑嗐傚畠棣栨浣挎妧鏈笂鍏佽緹庢湳鍒涗綔浜哄憳鍍忓ソ鑾卞潪妯″紡閭f牱鍘昏〃杈捐嚜宸辯殑鎯蟲硶銆傚敖綆?騫磋繃鍘諱簡錛岄嬈″湪Delta Labs 4閬囪HellKnight鐨勬儏鏅粛鐒跺緢闇囨捈:

    瑙嗛鍦?a target="_blank">榪欓噷

    鐢卞崱椹厠鍒涢犵殑“緇熶竴鐨勭収鏄庡拰闃村獎”姒傚康鍦ㄨ繖涓棰戦噷琛ㄧ幇寰楀緢鏈夋椿鍔涳紝鎴戝皢鍦ㄥ悗闈㈢殑娓叉煋閮ㄥ垎鍐嶄粙緇嶈繖閮ㄥ垎鍐呭銆?

 

鍒濇鐨勬帴瑙?/strong>

    Doom3婧愪唬鐮佸彂甯冪幇鍦ㄥ紑濮嬬敤github錛岃屼笉鍐嶆槸浠ュ墠鐨刦tp server銆?

    浠嶵Timo鍙戝竷鐨勫師濮嬩唬鐮佸緢瀹規(guī)槗鍦╒isual Studio 2010涓婄紪璇戙備笉騫哥殑鏄紝涓嶈兘鐢╒isual Studio 2010 Express鐗堢紪璇戯紝鍥犱負(fù)Doom3浠g爜涓嬌鐢ㄤ簡MFC錛岃孍xpress鐗堟病鏈夈?

    windows浠g爜鍦ㄨ繖閲岋細(xì)git clone https://github.com/TTimo/doom3.gpl.git

          

 

    鎴戝枩嬈㈠湪Mac緋葷粺涓嬬敤XCode嫻忚浠g爜銆傜浉姣斾簬Visual Studio錛屽畠鍦ㄦ悳绱㈤熷害鍜屽彉閲忕殑楂樹寒鏂歸潰閮界粰鎴戝緢浜彈鐨勪綋楠屻傛垜鎯崇敤XCode鏉ョ紪璇戠▼搴忥紝浣嗘槸欏圭洰璁劇疆鏈変竴浜涢棶棰樸備笉榪囧緢瀹規(guī)槗閫氳繃鍑犱釜綆鍗曠殑姝ラ淇濂姐傝繖閲屾湁涓涓猤ithub宸插寘鍚簡鎵鏈夌殑淇敼銆?

    git clone https://github.com/badsector/Doom3-for-MacOSX-

          

榪欎袱浠戒唬鐮侀兘寰堝鏄撶紪璇戯紝鍙互涓閿畬鎴愩?

  • 涓嬭澆浠g爜
  • 鐐笷8鎴朇ommand+B 錛堣瘧娉細(xì)澶ф鏄痻code鏋勫緩蹇嵎閿級
  • 瀹屾垚

    鏉傝錛氫負(fù)浜嗚繍琛屾父鎴忥紝base鏂囦歡澶逛笅闇瑕佸寘鍚獶oom3 鐨勮祫婧愩傜敱浜庢垜鐨勬満鍣ㄤ笂娌℃湁cd椹卞姩鍣紝鎵浠ユ垜涓嬭澆浜哠team鐗堟湰銆備技涔巌d Software涔熷仛浜嗗悓鏍風(fēng)殑浜嬶紝鍦╒isual Studio鐨勯」鐩緗噷浠嶇劧鍖呭惈浜嗚繖鏍風(fēng)殑瀛楃"+set fs_basepath C:\Program Files (x86)\Steam\steamapps\common\doom 3" !

    鏋舵瀯

        瑙e喅鏂規(guī)錛坰olution錛変腑欏圭洰鐨勫垝鍒嗗弽鏄犱簡鏁翠釜寮曟搸鐨勬灦鏋?


     

        涓嬮潰浠ユ洿鍙鍖栫殑鏂瑰紡鏉ユ鎷繖涓灦鏋?

    doom3_diagram2

        Doom3鐨勫ぇ閮ㄥ垎浠g爜鍦?004騫?0鏈堢殑鏃跺欏彲浠ラ氳繃鍙戝竷鐨?a >Doom3 SDK涓湅鍒幫紝浣嗘槸SDK閲屾病鏈塂oom3鎵ц鏂囦歡閮ㄥ垎浠g爜銆傚湪SDK涓彲浠ユ瀯寤篿dLib閮ㄥ垎鍜実amex86閮ㄥ垎錛屾牳蹇冨紩鎿庨儴鍒嗛偅鏃朵粛鐒舵槸闂簮鐨勩?

    娉ㄦ剰錛氬湪娓告垙妯″潡(gamex86)錛屾瘡涓涓被閮芥槸浠巌dClass緇ф壙鐨勶紝榪欐牱寮曟搸鍙互鎵ц鍐呴儴RTTI錛屽茍涓斾篃鍙互閫氳繃綾誨悕瀛楁潵瀹炰緥鍖栫被銆?

    鏉傝錛氫綘浠旂粏瑙傚療涓婇潰鐨勬灦鏋勫浘錛屽彲鑳戒細(xì)鍙戠幇鏈変竴浜涘熀鏈鏋訛紙渚嬪FileSystem錛夊彧鍦―oom3.exe涓傝繖閲屽氨浼?xì)鏈変竴涓棶棰橈紝灝辨槸褰揼amex86涔熻鍔犺澆璧勬簮鐨勬椂鍊欍?

    闂細(xì)閭d箞gamex86鏄浣曞鐞嗙殑鍛紵

    絳旓細(xì)榪欎簺瀛愮郴緇熸槸浠嶥oom3.exe涓姩鎬佸姞杞藉埌gamex86.dll涓殑錛岃繖涔熸槸鎸囩ず綆ご鍑虹幇鐨勫師鍥犮?

     

        濡傛灉鎴戜滑浣跨敤PE explorer絳夊伐鍏鋒煡鐪媑amex86.dll錛屾垜浠細(xì)鐪嬪埌gamex86.dll瀵煎嚭浜嗕竴涓嚱鏁幫細(xì)GetGameAPI:  

    榪欐槸鍚孮uake2鍔犺澆renderer鍜実ame 鍔ㄦ佸簱鏂瑰紡涓妯′竴鏍鳳細(xì)褰揇oom3鍚姩gamex86.dll鐨勬椂鍊欙紝浼?xì)浜ゆ崲瀵硅薄鐨勬寚閽?

    • 閫氳繃LoadLibrary灝哾ll鍔犺澆鍒拌繘紼嬬殑鍐呭瓨絀洪棿涓?
    • 閫氳繃GetProcAddress鑾峰彇GetGameAPI鍦╣amex86.dll涓殑鍦板潃
    • 璋冪敤GetGameAPI

    gameExport_t * GetGameAPI_t( gameImport_t *import );

        鍦ㄦ渶鍚庡畬鎴?#8220;鎻℃墜”鏃訛紝Doom3.exe鏈変竴涓寚閽堟寚鍚慽dGame瀵硅薄錛実amex86.dll鏈変竴涓寚閽堟寚鍚慻ameImport_t瀵硅薄錛岃繖涓璞″寘鍚簡gamex86.dll涓病鏈夌殑瀛愮郴緇燂紝姣斿idFileSystem銆?

    typedef struct {

        int                                version;                  // API version

        idSys *                            sys;                      // non-portable system services

        idCommon *                         common;                   // common

        idCmdSystem *                      cmdSystem;                // console command system

        idCVarSystem *                     cvarSystem;               // console variable system

        idFileSystem *                     fileSystem;               // file system

        idNetworkSystem *                  networkSystem;            // network system

        idRenderSystem *                   renderSystem;             // render system

        idSoundSystem *                    soundSystem;              // sound system

        idRenderModelManager *             renderModelManager;       // render model manager

        idUserInterfaceManager *           uiManager;                // user interface manager

        idDeclManager *                    declManager;              // declaration manager

        idAASFileManager *                 AASFileManager;           // AAS file manager

        idCollisionModelManager *          collisionModelManager;    // collision model manager

    } gameImport_t;

     

    typedef struct {

        int            version;     // API version

        idGame *       game;        // interface to run the game

        idGameEdit *   gameEdit;    // interface for in-game editing

    } gameExport_t;

     

    娉ㄦ剰錛氫竴涓ソ娑堟伅鏄紝id tech4鐨勫紑鍙戣呭湪Doom3 SDK 鏂囨。欏靛緢濂界殑鎻忚堪浜嗗悇涓瓙緋葷粺銆?

     

    C… ++ ?!

    • 鍦╥d Software鍘嗗彶涓婅繖鏄涓嬈$敤C++浠g爜浠f浛浜咰銆傚叧浜庢浜嬫垜闂簡鍗¢┈鍏嬶細(xì)

    "

    Hello John,

    I wonder what motivated to move the team to C++ for idtech4.

    Fab

    "

    "

    There was a sense of inevitability to it at that point, but only about half the programmers really had C++ background in the beginning. I had C and Objective-C background, and I sort of "slid into C++" by just looking at the code that the C++ guys were writing. In hindsight, I wish I had budgeted the time to thoroughly research and explore the language before just starting to use it.

    You may still be able to tell that the renderer code was largely developed in C, then sort of skinned into C++.

    Today, I do firmly believe that C++ is the right language for large, multi-developer projects with critical performance requirements, and Tech 5 is a lot better off for the Doom 3 experience.

    John Carmack

    "

    浠栦篃鍦?004騫寸殑鏃跺欐湁璇勮錛?/p>

    "
    Is C++ a better language for developing games than C? Today, most games are developed in C++, and I know that Doom 3 was developed in C++. Having worked with both C and C++ for quite a while, do you think C++ is really a better language for developing games?

    "

    "

    Yes, it is. I'm not a fan of the more complex features of C++, but grouping things into classes is a Good Thing.

    John Carmack

    "

    • 浠g爜涓嬌鐢ㄤ簡澶ч噺鎶借薄鍜屽鎬併備絾鏄竴涓紓浜殑鎶宸у彲浠ラ伩鍏嶆煇浜涘璞″洜铏氬嚱鏁拌〃鑰屽甫鏉ョ殑鎬ц兘闂銆?
    • 鎵鏈夌殑璧勬簮閮戒嬌鐢ㄥ彲璇繪у緢濂界殑鏂囨湰鏂瑰紡瀛樺偍銆傛病鏈夊お澶氱殑浜岃繘鍒跺唴瀹廣備唬鐮佷腑騫挎硾鍦頒嬌鐢ㄤ簡Lexer/Parser鐨勭粍鍚堛?
    • 妯℃澘琚敤鍦ㄤ綆灞傚疄鐢ㄧ被涓紙idLib錛夛紝浣嗘槸浠庝笉浼?xì)鍦ㄩ珮灞備唬鐮佷腑鍑虹帋图屼笉浼?xì)鍍廏oogle鐨刅8浠g爜閭f牱鍒虹瀻浣犵殑鐪箋?
    • 鍦ㄤ唬鐮佹敞閲婃柟闈紝瀹冩槸id Software鐨勪唬鐮佷腑絎簩濂界殑錛屾渶濂界殑鏄疍oom iPhone浠g爜錛屽彲鑳藉洜涓哄畠姣擠oom3鏄洿榪戠殑涓孌墊椂闂寸紪鍐欑殑銆?
    • 鐪嬩竴涓嬬紪鐮佺害瀹氫篃鏄緢鏈夎叮鐨勪簨鎯咃紝鍦?a href="ftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc">榪欓噷銆?

     

    涓誨驚鐜瑙?/strong>

        榪欓噷鏄富寰幆灞曞紑鍚庣殑浠g爜錛氾紙鏇磋緇嗙殑鍦?a >榪欓噷錛?/p>

    idCommonLocal    commonLocal;                   // OS Specialized object

    idCommon *       common = &commonLocal;         // Interface pointer (since Init is OS dependent it is an abstract method

    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )

    {

        Sys_SetPhysicalWorkMemory( 192 << 20, 1024 << 20 );   //Min = 201,326,592 Max = 1,073,741,824

        Sys_GetCurrentMemoryStatus( exeLaunchMemoryStats );

        Sys_CreateConsole();

        SetErrorMode( SEM_FAILCRITICALERRORS );

        for ( int i = 0; i < MAX_CRITICAL_SECTIONS; i++ ) {

            InitializeCriticalSection( &win32.criticalSections[i] );

        }

        Sys_Milliseconds();

        common->Init( 0, NULL, lpCmdLine );               // Assess how much VRAM is available (not done via OpenGL but OS call)

        Sys_StartAsyncThread() // 寮鍚紓姝ョ嚎紼?

        {                      // 寮傛綰跨▼灞曞紑錛堣瘧娉細(xì)寮傛綰跨▼涓茍娌℃湁鎵懼埌綾諱技鐨勪唬鐮侊級

            while ( 1 )

            {

                usleep( 16666 );                         // Run at 60Hz

                common->Async();                         // Do the job

                Sys_TriggerEvent( TRIGGER_EVENT_ONE );   // Unlock other thread waiting for inputs

                pthread_testcancel();                    // Check if we have been cancelled by the main thread (on shutdown).

            }

        }

     

        Sys_ShowConsole

        while ( 1 )

        {

            Win_Frame();

            common->Frame();

        }

    }

     

        榪欐槸id Software寮曟搸鐨勬爣鍑嗕富寰幆錛岄櫎浜哠ys_StartAsyncThread鍑芥暟琛ㄦ槑Doom3鏄綰跨▼鐨勶紝榪欎釜綰跨▼鐨勭洰鐨勬槸涓轟簡澶勭悊鏃墮棿鏁忔劅鐨勫姛鑳斤紝寮曟搸涓嶅笇鏈涜繖閮ㄥ垎琚撫鐜囬檺鍒朵綇銆?

    • 澹伴煶澶勭悊
    • 鐢ㄦ埛杈撳叆澶勭悊

    鏉傝錛歩d Tech4鐨勯珮灞傚璞¢兘鏄娊璞$被錛岃繖灝嗕細(xì)浣跨▼搴忓湪榪愯鏃朵粠铏氬嚱鏁拌〃涓煡鎵捐櫄鍑芥暟鍦板潃鑰屽鑷存ц兘闂銆備絾鏄繖閲屾湁涓涓?#8220;鎶宸?#8221;鏉ラ伩鍏嶈繖涓棶棰樸傛墍鏈夌殑瀵硅薄琚互闈欐佺殑鏂瑰紡瀹炰緥鍖栵紝濡備笅錛?

            idCommonLocal    commonLocal;                 // Implementation

            idCommon *       common = &commonLocal;       // Interface manipulated in the code

    榪欐牱緙栬瘧鍣ㄥ湪緙栬瘧鏃跺氨鍙互鍐沖畾琚皟鐢ㄧ殑鍑芥暟錛屼粠鑰屼笉鐢ㄥ幓鏌ユ壘铏氬嚱鏁拌〃銆傝繖瀹為檯涓婃槸涓涓弻璧紝since the pointer does not have to be dereferenced at runtime either since its address is known at compile time. 

    鏉傝錛氬凡緇忚榪?銆?嬈緄d Software寮曟搸鐨勬垜鍙戠幇錛屾湁涓浜涘嚱鏁板悕浠巇oom1寮濮嬪氨涓鐩存病鏈夋敼鍙樿繃錛氳礋璐e鐞嗛紶鏍囧拰娓告垙鏉嗚緭鍏ョ殑鍑芥暟浠嶇劧鍙獻(xiàn)N_frame()

     

    娓叉煋鍣?/strong>

        Doom3涓渶浠や漢鍏村鐨勫綋鐒舵槸娓叉煋鍣ㄩ儴鍒嗐傝繖閲屾湁澶鐨勫唴瀹癸紝鎵浠ユ垜灝嗚繖閮ㄥ垎鐨勭瑪璁板垎鍒板彟涓綃囨枃绔犻噷浜嗐傚湪榪欓噷
        濡傛灉浣犲錛堝満鏅級棰勫鐞嗗拰鍏ュ彛緋葷粺錛坧ortal system錛夊緢鎰熷叴瓚o紝鍙互鐪?a >榪欓噷銆?

     

    鏂扮殑鏍囧噯

        鏂扮殑鏍囧噯鍙互姒傛嫭涓轟竴涓瘝錛歎nification

        鍓嶄竴浠e紩鎿庡湪娓叉煋鎵鏈夊厓绱犵殑鏃跺欙紝浣跨敤鐨勬槸涓嶅悓鐨勬柟寮忥紝緇忓父瑕佽姳璐瑰緢闀挎椂闂寸殑棰勫鐞嗐俀uake2涓殑鍩轟簬鍏夎兘浼犻掔殑lightmap錛屽湪璁捐鑰呰兘鐪嬪埌鏈緇堢殑鏁堟灉鍓嶉渶瑕佺瓑寰堥暱鏃墮棿銆?

     

    鐗╃悊寮曟搸

    錛堣瘧娉細(xì)鍘熸枃榪欓噷娌℃湁鍐呭錛屽ぇ姒傝繕娌″啓濂斤級

     

    鑴氭湰鍜岃櫄鎷熸満

    錛堣瘧娉細(xì)鍘熸枃榪欓噷娌℃湁鍐呭錛屽ぇ姒傝繕娌″啓濂斤級

     

    鍦板浘鍔犺澆

        鎴戣蹇嗕腑錛屽姞杞芥墍娑堣楃殑鏃墮棿寰堥暱錛屾垜涓鐩存兂鐭ラ亾鍦ㄥ姞杞藉満鏅殑鏃跺欙紝紼嬪簭鑳屽悗閮藉仛浜嗕簺浠涔堛?

     

    緇撹

        It was not always easy to focus...

        But overall it was very educationnal to read most of it.



  • zgpxgame 2012-04-25 00:07 鍙戣〃璇勮
    ]]>
    Doom3婧愮爜鍓栨瀽錛?錛?-TypeInfohttp://www.shnenglu.com/zgpxgame/archive/2012/04/22/172361.htmlzgpxgamezgpxgameSun, 22 Apr 2012 12:28:00 GMThttp://www.shnenglu.com/zgpxgame/archive/2012/04/22/172361.htmlhttp://www.shnenglu.com/zgpxgame/comments/172361.htmlhttp://www.shnenglu.com/zgpxgame/archive/2012/04/22/172361.html#Feedback3http://www.shnenglu.com/zgpxgame/comments/commentRss/172361.htmlhttp://www.shnenglu.com/zgpxgame/services/trackbacks/172361.htmlTypeInfo妯″潡鏄?/span>Doom3涓敤浜庡姩鎬佺被鍨嬭瘑鍒紙RTTI錛夊拰杈呭姪鏌ラ敊鐨勬ā鍧楋紝鍙互媯(gè)嫻嬬被涓湭鍒濆鍖栧彉閲忋佹墦鍗版煇縐嶇被鍨嬬殑瀵硅薄涓墍鏈夋垚鍛樺彉閲忕殑鍊鹼紝鎴栨墦鍗版暣涓▼搴忎腑鎵鏈夊疄浣撳璞?/span>(idEntity)鐨勫箋傚湪鍐欑▼搴忚繃紼嬩腑錛屽彲鑳界粡甯鎬細(xì)鍑虹幇涓浜涚敱浜庢湭瀵規(guī)垚鍛樺彉閲忓垵濮嬪寲鑰屽鑷寸殑闂銆傝岃繖綾婚棶棰樹竴鑸湪Debug妯″紡涓嬫病鏈夐棶棰橈紝鍦?/span>Release鐗堟湰涓伓灝?dāng)鍑虹帋图寴q欏鑷村緢闅懼畾浣嶄笌闂鐩稿叧鐨勪唬鐮併?/span>

        闄や簡媯(gè)嫻嬫湭鍒濆鍖栫殑鍐呭瓨錛屽叾浠栨柟闈㈢殑搴旂敤錛屽彲浠ヤ粠TypeInfo.h涓殑鍑犱釜鍑芥暟鍙互鐣ョ涓浜屻?/span>

     /*
    =================================================================================== 

        Game Type Info

    ===================================================================================
    */

    // 鏍規(guī)嵁鍋忕Щ鍙栧緱鍙橀噺鍚?/span>
    const char * GetTypeVariableName( const char *typeName, int offset );
    // 鎵撳嵃鏌愪釜瀵硅薄鐨勪俊鎭?/span>
    void PrintType( const void *typePtr, const char *typeName );
    // 灝嗘煇瀵硅薄鍊煎啓鍏ユ枃浠?/span>
    void WriteTypeToFile( idFile *fp, const void *typePtr, const char *typeName );
    // 緇欐煇瀵硅薄鐨勬墍鏈夊彉閲忚瀹氫竴涓垵濮嬪?/span>
    void InitTypeVariables( const void *typePtr, const char *typeName, int value );
    // 鍒椾婦鎵鏈夌被鍨嬩俊鎭?/span>
    void ListTypeInfo_f( const idCmdArgs &args );
    // 灝嗘墍鏈夋父鎴忕姸鎬侊紙鎵鏈塱dEntity淇℃伅錛夊啓鍏ユ枃浠?/span>
    void WriteGameState_f( const idCmdArgs &args );
    // 姣旇緝娓告垙鐘舵?/span>
    void CompareGameState_f( const idCmdArgs &args );
    // 嫻嬭瘯淇濆瓨娓告垙
    void TestSaveGame_f( const idCmdArgs &args );


    緇忚繃鍑犲ぉ鐨勫姫鍔涳紝鎴戝皢
    TypfInfo鐩稿叧鐨勪唬鐮佹彁鍙栧嚭錛屽崟鐙垱寤轟簡宸ョ▼鏂囦歡錛屽茍鍋氫簡綆鍗曠殑浠g爜婕旂ず銆傛湁鐖卞ソ鐨勫悓瀛﹀彲浠ユ繁鍏ョ爺絀躲傜偣鍑?a title="榪欓噷" href="http://www.shnenglu.com/Files/zgpxgame/TypeInfo.rar">榪欓噷涓嬭澆銆傚湪宸ョ▼錛?/span> vs2010錛?/span> 涓紝Example鏄竴涓畝鍗曠殑婕旂ず紼嬪簭錛宨dLib鏄Doom3婧愮爜涓璱dLib鐨勫垹鍑忕増鏈俆ypeInfo鏄敓鎴怗ameTypeInfo.h綾誨瀷淇℃伅鐨勬帶鍒跺彴宸ュ叿銆?br />
    TypeInfo鐨勭敤娉曚負(fù) typeinfo.exe [source_code_path] [out_file_name]

     

    瀹炵幇錛?/span>

    TypeInfo媯(gè)嫻嬫湭鍒濆鍖栧唴瀛樺疄鐜板師鐞嗕負(fù)錛屽浠g爜涓墍鏈夌殑澶存枃浠舵壂鎻忓垎鏋愶紝騫跺皢綾誨瀷涓紝鍙橀噺鍚嶏紝鍙橀噺綾誨瀷絳変俊鎭褰曠敓鎴愪竴涓?/span>GameTypeInfo.h鏂囦歡銆傜劧鍚庡湪new涓涓璞℃椂錛屼細(xì)鍏堝皢榪欎釜瀵硅薄鐨勫唴瀛樺垵濮嬪寲涓?/span>0xcdcdcdcd銆傚綋瀵硅薄鏋勯犲畬鎴愭椂錛屾嫻嬪璞″唴瀛樹腑鏄惁鏈夋煇鍊間負(fù)0xcdcdcdcd錛屽鏋滄湁錛屽氨閫氳繃GameTypeInfo.h涓褰曠殑綾誨瀷錛屽彉閲忓悕錛屽亸縐葷瓑淇℃伅灝嗘湭鍒濆鍖栫殑鍙橀噺淇℃伅鎵撳嵃鍑烘潵銆?/span>

    灝嗕笂榪拌繃紼嬪垎涓轟笁孌靛唴瀹癸細(xì)1. 瑙f瀽 2. 鐢熸垚綾誨瀷淇℃伅 3. 鍒╃敤綾誨瀷淇℃伅

     

    1. 瑙f瀽錛?/span>

    鍩烘湰鐨勮瘝娉曡В鏋愬湪idLib涓疄鐜幫紝鐩稿叧綾諱負(fù)idToken, idLexer, idParser銆?/span>

     

    2. 鐢熸垚綾誨瀷淇℃伅

    idTypeInfoGen鍒╃敤idParser鏉ヨВ鏋愪唬鐮佸ご鏂囦歡錛岃褰曠浉鍏崇被鍨嬩俊鎭紝綾誨瀷淇℃伅鍖呮嫭錛氬父閲忥紝鏋氫婦閲忓拰綾伙紙鍖呮嫭緇撴瀯浣擄級

     

    // 甯擱噺淇℃伅 
    typedef struct {
        const char * name;
        const char * type;
        const char * value;
    } constantInfo_t;

    // 鏋氫婦褰㈠彉閲忎俊鎭?/span>
    typedef struct {
        const char * name;
        int value;
    } enumValueInfo_t;

    // 鏋氫婦綾誨瀷淇℃伅
    typedef struct {
        const char * typeName;
        const enumValueInfo_t * values;
    } enumTypeInfo_t;

    // 綾繪垚鍛樺彉閲忎俊鎭?/span>
    typedef struct {
        const char * type;
        const char * name;
        int offset;
        int size;
    } classVariableInfo_t;

    // 綾葷殑綾誨瀷淇℃伅錛堝寘鎷粨鏋勪綋錛?/span>
    typedef struct {
        const char * typeName;
        const char * superType;
        int size;
        const classVariableInfo_t * variables;
    } classTypeInfo_t;

    鎵鏈変俊鎭褰曞湪GameTypeInfo.h涓紝璇︾粏鍐呭鍙互鏌ラ槄婧愪唬鐮併?br />
    3. 瀵圭被鍨嬩俊鎭殑鍒╃敤

    3.1 閫氳繃綾誨瀷鍚嶅垱寤哄疄渚嬨傚湪Doom3紼嬪簭鐨?/span>GamePlay灞傦紝涓昏鐨勭被閮芥槸浠?/span>idClass緇ф壙涓嬫潵鐨勶紝騫朵笖鍦ㄧ被澹版槑鍜屽畾涔夋椂錛岄氳繃idTypeInfo璁板綍綾誨瀷淇℃伅錛屽寘鎷褰曠被涔嬮棿鐨勭埗瀛愬叧緋匯傚湪綾諱腑鍔犲叆瀹?/span>CLASS_PROTOTYPE錛?/span> CLASS_DECLARATION鏉ュ疄鐜般?br />鍒涘緩綾誨疄渚嬫椂鏄繖鏍風(fēng)殑錛?/span>

    idTypeInfo *cls;
    idClass *obj;
    cls = idClass::GetClass( "idPlayer" );
    obj = cls->CreateInstance();

     

        3.2 杈撳嚭鏈垵濮嬪寲鍙橀噺鐨勫悕縐般?/span>

         idClass涓噸杞戒簡new鎿嶄綔絎︼紝浠ヤ究璁板綍鍐呭瓨鐨勪嬌鐢ㄩ噺鍜屽垱寤虹殑瀵硅薄涓暟錛屽鏋滈渶瑕佹嫻嬫湭鍒濆鍖栫殑鍐呭瓨錛岃繕浼?xì)灏嗗唴瀛樺垵濮嬪寲湄?fù)0xcdcdcdcd銆?br />

    void * idClass::operator new( size_t s ) {
        int *p;

        s += sizeofint );
        p = (int *)Mem_Alloc( s );
        *p = s;
        memused += s;
        numobjects++;

    #ifdef ID_DEBUG_UNINITIALIZED_MEMORY
        unsigned long *ptr = (unsigned long *)p;
        int size = s;
        assert( ( size & 3 ) == 0 );
        size >>= 2;
        for ( int i = 1; i < size; i++ ) {
            ptr[i] = 0xcdcdcdcd;
        }
    #endif

        return p + 1;
    }

     

     
        瀵硅薄鍒涘緩鍚庯紝璋冪敤
    FindUninitializedMemory鏉ユ嫻嬫湭鍒濆鍖栫殑鍐呭瓨

    /*
    ================
    idClass::FindUninitializedMemory
    ================
    */
    void idClass::FindUninitializedMemory( void ) {
    #ifdef ID_DEBUG_UNINITIALIZED_MEMORY
        unsigned long *ptr = ( ( unsigned long * )this ) - 1;
        int size = *ptr;
        assert( ( size & 3 ) == 0 );
        size >>= 2;
        ptr = ( unsigned long * )this;
        for ( int i = 0; i < size; i++ ) {
            if ( ptr[i] == 0xcdcdcdcd ) {
                const char *varName = GetTypeVariableName( GetClassname(), i << 2 );
                idLib::Warning( "type '%s' has uninitialized variable %s (offset %d)", GetClassname(), varName, i << 2 );
            }
        }
    #endif
    }
        
        榪欓噷閫氳繃
     GetTypeVariableName 鍦ㄧ被鍨嬩俊鎭〃涓煡鎵懼彉閲忓悕縐般?br />

        3.3鎵撳嵃杈撳嚭鏌愪釜瀹炰緥鐨勬墍鏈夋垚鍛樺彉閲忓箋?/span>

     

             浠g爜瀹炵幇鍦═ypeInfo.cpp鏂囦歡涓紝娌℃湁浠旂粏鐮旂┒榪欐浠g爜瀹炵幇錛屽氨涓嶅湪榪欓噷鍗曞垪浜嗐?/p>

    zgpxgame 2012-04-22 20:28 鍙戣〃璇勮
    ]]>
    青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美成人免费视频| 亚洲网站在线| 老鸭窝毛片一区二区三区| 韩国一区电影| 欧美sm视频| 欧美国产先锋| 亚洲在线视频观看| 欧美一区二区三区四区视频| 国产一区二区精品久久99| 久久久久久噜噜噜久久久精品| 欧美一区二区三区免费大片| 影音先锋中文字幕一区二区| 欧美激情精品久久久久久| 欧美日韩国产不卡| 午夜日韩av| 久久久欧美精品sm网站| 亚洲精品一区二区网址| 一区二区av在线| 国内精品免费在线观看| 久久综合激情| 欧美日韩一级黄| 久久久久久久久岛国免费| 欧美大片在线看免费观看| 亚洲综合精品自拍| 久久综合999| 午夜精品久久久久久久蜜桃app| 性欧美精品高清| 99精品99| 久久精品99国产精品酒店日本| 最新日韩av| 欧美一级在线播放| 亚洲少妇一区| 久久久久99精品国产片| 亚洲一区视频| 欧美成人日韩| 中文欧美在线视频| 欧美少妇一区| 蜜桃久久av一区| 国产精品进线69影院| 男女激情久久| 国产麻豆综合| 日韩午夜中文字幕| 影音先锋国产精品| 亚洲欧洲av一区二区| 一区二区三区 在线观看视| 欧美一级在线亚洲天堂| 亚洲一区二区免费看| 美日韩在线观看| 久久久久久久一区| 国产精品制服诱惑| 日韩亚洲不卡在线| 亚洲国产精品一区制服丝袜| 午夜电影亚洲| 久久成人综合视频| 国产精品专区第二| 亚洲午夜精品福利| 亚洲在线成人精品| 欧美午夜电影在线| 亚洲最新视频在线| 一区二区日韩免费看| 欧美极品一区二区三区| 欧美国产91| 亚洲精品1234| 可以看av的网站久久看| 麻豆久久久9性大片| 国产曰批免费观看久久久| 先锋影音网一区二区| 午夜在线a亚洲v天堂网2018| 国产精品久久久久9999高清| 亚洲午夜一级| 新狼窝色av性久久久久久| 欧美午夜精品久久久久久人妖| 一本色道久久加勒比精品| 亚洲一区免费网站| 国产精品日本| 欧美一区午夜精品| 欧美1区免费| 亚洲欧洲一区二区三区久久| 欧美—级高清免费播放| 一本色道久久99精品综合| 小处雏高清一区二区三区| 国产伦精品一区二区三区高清版| 亚洲欧美一区二区三区在线| 久久九九全国免费精品观看| 在线免费观看欧美| 欧美看片网站| 亚洲欧美激情一区| 猛男gaygay欧美视频| 亚洲精品一级| 国产精品久久久久久久久久久久久久 | 亚洲视频你懂的| 久久精品2019中文字幕| 亚洲成色999久久网站| 欧美国产视频一区二区| 亚洲天堂av图片| 久热精品在线| 中日韩视频在线观看| 欧美中文字幕在线观看| 日韩视频国产视频| 国产精品久久久久一区二区| 久久9热精品视频| 亚洲韩国青草视频| 亚洲一区二区三区激情| 国内精品久久久久久影视8| 蜜月aⅴ免费一区二区三区 | 亚洲欧美日韩国产中文在线| 国产一区91精品张津瑜| 欧美不卡在线| 性欧美xxxx视频在线观看| 亚洲国产高潮在线观看| 欧美中在线观看| 日韩一级在线| 狠狠色狠狠色综合日日tαg| 欧美插天视频在线播放| 久久www成人_看片免费不卡| 日韩午夜三级在线| 麻豆91精品91久久久的内涵| 亚洲专区一二三| 亚洲精品四区| 在线精品视频免费观看 | 久久久久免费视频| 中文精品99久久国产香蕉| 国产精品亚洲片夜色在线| 免费在线亚洲| 久久本道综合色狠狠五月| 亚洲午夜在线视频| 日韩一级精品| 最新日韩欧美| 欧美国产综合一区二区| 久久超碰97人人做人人爱| 在线一区日本视频| 亚洲人精品午夜在线观看| 在线成人激情黄色| 国内精品久久久久久久影视蜜臀 | 亚洲精品之草原avav久久| 在线 亚洲欧美在线综合一区| 国产精品自拍一区| 国产精品入口尤物| 国产精品视区| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩www| 欧美日韩一区二区欧美激情| 欧美成人资源| 欧美精品一区二区三区一线天视频| 你懂的国产精品| 欧美成人免费一级人片100| 蜜臀久久99精品久久久画质超高清| 久久久久久电影| 麻豆成人在线播放| 欧美国产精品人人做人人爱| 欧美成人精品一区二区| 美女国产精品| 欧美精品系列| 欧美性大战xxxxx久久久| 国产精品入口66mio| 国产日产欧美精品| 红桃av永久久久| 亚洲人成亚洲人成在线观看| aa日韩免费精品视频一| 一区二区三区免费在线观看| 亚洲一二区在线| 久久av一区二区三区漫画| 久久影视精品| 最新国产精品拍自在线播放| 亚洲伦理网站| 午夜精彩视频在线观看不卡| 久久国产日韩| 欧美日韩国产一区二区三区| 国产精品video| 红桃视频成人| 欧美亚洲日本一区| 久久一区二区视频| 欧美日韩综合精品| 国产一区二区三区视频在线观看| 在线成人av| 亚洲自啪免费| 毛片一区二区三区| 一区二区三区|亚洲午夜| 欧美夜福利tv在线| 欧美精品一区三区| 国产亚洲精品一区二555| 亚洲国产影院| 欧美一区激情| 亚洲欧洲一区二区三区| 中文一区二区| 蜜桃视频一区| 国产视频一区在线| 日韩午夜av电影| 久久嫩草精品久久久久| 亚洲另类视频| 久久网站免费| 国产亚洲精品高潮| 中文在线一区| 欧美激情一区| 久久精品日韩| 国产精品日韩欧美大师| 一区二区不卡在线视频 午夜欧美不卡在 | 麻豆国产精品777777在线| 夜夜嗨一区二区| 欧美电影免费观看高清完整版|