Журнал "Хакер (спец)", посвященный разработке игр

133
¯˘¯¯˝ ¯¨¯˚¨ ˚˛ˇ¯—˝ ˘—˝¸ 03|64|— 2006 GAME CODING ˘˝—˛´˛¯ ˘—˚˛¯ 6 ˝¯ˇ—´¸¯ DIRECTX 8 ˆ ˚ —¯´˛¸¨ 12 ¨˙¨˚ ´ ¨ˆ— 20 ˛ˇ¨¨˙¨ ¨ˆ—˛´˛ ˆ—¨˚¨ 24 ˙´˚˛´˛¯ ˝¨¸¨¯ 30 ˚—¨ˇ˛´¯ ˙˚¨ 36 —¯¯ˇ LUA! 42 ˇ—˛`¸¯ ˇ¯—¯˝˛¨˛¨ 46 ˆ ´ ˇ—˛¸˛¯ 56 ¯¯´¯ ¨ˆ— 62 ˙¨ ¨ˆ— ˛ ´˙¸˛ 66 —˛¨ ˜´¯—˝˛¯ ¯ 76 ˆ ˛ 3D-˜´¨˘˚ 80 ˚˚ ˙˚¸¸ FLASH 90 ¨˝¯—´ ˛ STEP CREATIVE GROUP 96

Upload: emulatesu-website

Post on 07-Mar-2016

249 views

Category:

Documents


6 download

DESCRIPTION

"Хакер (спец)" за март 2006 года - неплохой выпуск, целиком и полностью посвященный вопросам разработки игр. Из интересного - интервью с разработчиками культовой для фанатов ZX-Spectrum студии - Step Creative Group и многое другое

TRANSCRIPT

  • 03|64| 2006

    GAMECODING 6 DIRECTX 8 12 20 24 30 36 LUA! 42 46 56 62 66 76 3D- 80 FLASH 90 STEP CREATIVE GROUP 96

  • ii nn tt rr oo

    , , , , , - , . , , , . !

    , , , , . , . ? : , - . . ! , ! , ,. , ? , . . - , -? :). FallOut? (, , ) - - , . , death-mach Quake 3? - ? , , , - . , . , ,- !

    ! , . , - - Delphi, :). , forum.xakep.ru .

    , , a l e x a n d e r @ r e a l . x a k e p . r u

  • 6 8 DIRECTX .NET ?12 14

    20 24 30 32

    36 38 [] , 42 LUA! 46 52 DEAD CAN DANCE 56 , , 58 62 66

    . . , , . .

    AvaLANche ([email protected]) Dr.Klouniz ([email protected]) ([email protected])CD/OFFTOPIC SkyWriter ([email protected]) ([email protected])- ([email protected])

    (game)land ([email protected]) ([email protected]) E ([email protected]) ([email protected]) ([email protected]) , ([email protected])- ([email protected]).: (495) 935.70.34: (495) 780.88.24

    ([email protected]) ([email protected]) ([email protected]).: (495) 935.70.34: (495) 780.88.24

    PUBLISHING ([email protected]) ([email protected]) ([email protected])

    .: 8 (800) 200.3.999

    101000, , , / 652, [email protected] http://www.xakep.ru

    ScanWeb, , 77-12014 4 2002 . 42 000 . .

    03(64) 2006

    www.xakep.ru

    GAMECODING

  • 76 TETRIS 80 3D-: 86 90 FLASH - The Office Space

    SPECIAL DELIVERY

    96 MADE IN RUSSIA Step Creative Group100 104

    offtopic

    STEP CREATIVEGROUP( )

    HARD

    106 : INTEL ! LGA 775 112 A-DATA VITESTA DDR2-533 DDR2SOFT

    114 NONAME nnm.ru116 VPN- Windows 2003 Server

    CREW

    118 E- !STORY

    120

  • , , , - . ! , ,

    CD:DIRECTXDirectX 9 SDK ( 2006)DirectX SDK Symbols ( 2005)

    AGL 1.1Irrlicht 0.14.0Nebula2 SDKOGRE SDK 1.0.7Torque Game Engine 1.4

    Boost 1.33.1FMOD 4.03.00Lua 5.0.2ODE 0.5OPAL 0.3.1OpenALSDL 1.2.9

    NONAMEAimOne Screen Recorder v1.31CUE Splitter v0.5Crypto 2.0DriveCrypt 4.20GIF Movie Gear 4.1.0Jet Audio 6.2.5 Plus VXLight Alloy 3.5.5944Miranda IM MDpack '07.02.06 New Weather v1.0Opera 9 TP 2 (en)Quiet Internet Pager (QIP) Build 7810 AlphaRight Click Image Converter 2.2.2Total Video Converter v2.4Unlocker 1.7.9

  • , - -p ( 7 p 2006 ) ( 3dgamers.ru):

    1 CALL OF DUTY 22 P3 MAX PAYNE 24 P HP.

    , Y 5 SILENT HUNTER 36 PP III7 P8 PP III9 2: Y YP1 0 COUNTER-STRIKE 1. ANTHOLOGY

    p- Ozon, p -p ( ) - y p ( 3dgamers.ru):

    1 P P 3: P (PRINCE OF PERSIA 3: TWO THRONES)

    2 LADA RACING CLUB3 HALF-LIFE 2.

    4 P : P P

    5 LADA RACING CLUB6 WORLD OF WARCRAFT 7 CALL OF DUTY 28 NEED FOR SPEED: MOST WANTED9 X3: 1 0 - Y

    NPDTechWorld, p- -p ( p 22 28 -p 2006 ) y p( 3dgamers.ru):

    1 WORLD OF WARCRAFT2 CIVILIZATION IV3 THE SIMS 24 AGE OF EMPIRES III5 BATTLEFIELD 26 ZOO TYCOON 27 CALL OF DUTY 28 THE SIMS 2 NIGHTLIFE9 BATTLEFIELD 2 SPECIAL FORCES1 0 GUILD WARS

  • 6 |

    rrppgg , , RPG RolePlaying Game, . : - (, I - , -) . - , - :). , . ? 3D - 2D? RPG . : - , 3D RPG . , Fallout Nuclear Time, KingsBounti ( !). - Heroes 2.

    :

    .

    .

    -

    .

    :

    -

    : -

    -

    .

    ,

    .

    -

    , -

    -

    : ) .

    :

    .

    .

    ,

    -

    -

    -

    .

    .

    :

    A I .

    ,

    -

    .

    -

    -

    ,

    ,

    .

    2006 , - : - , 2D-. , -. XXI , , - , ( FOR FUN). | ([email protected])

    -? - RPG, ? , . : , . , . - . Dungeon Keeper, . : - -. , - . , - /new life of/ . . . , Warcraft 2000 War2, - - . - . , - :). ? . , , old_school' C&C 2. , - . - , ?

  • Mortal Combat, Street Fighter, Tekken ? , - , - ( ) , , , . ? :)

    | 7

    ffppss, , -. , , - . , . , - tacombs ( , Wolf 3D, , - ) Blood. , - - , .Pocket Hexen, Doom Quake , , , :).

    :

    ,

    .

    ,

    (

    ,

    ) .

    .

    :

    A I -

    .

    -

    .

    -

    -

    .

    :

    -

    .

    .

    :

    .

    . , :), , , - . , - ( ) . ? :) , . , - , Pocket Pref, Open Source- Linux, - --, -, , -, AI. .-- :). -? , - AI , -. , ( -) . - , . , , ?

    -. , : - - ---, ., , - ,

    :

    ;

    -

    ;

    ;

    ;

    :

    .

    -

    -

    .

    :

    .

    .

    ( ,

    ) .

    :

    -

    .

  • ?? , Managed DirectX DirectX , , .NET . - DirectX .NET, - Managed DirectX.

    DirectX - 2003 . , - , , - DirectX. , C# - DirectX8. , - - . , - ( DirectX).

    . - , , - , . , - , -- , -, .

    - DirectX 9 , MS - Managed DirectX, DX SDK - . - , - DX SDK 9.0, - Help - directx9_.chm directx9_m.chm. - DirectX ++, DirectX 9.0 for Managed Code Managed DirectX.

    DX SDK - Samples C# VB.NET DirectX . , - VB , - VB.NET , - DirectX.

    Managed DirectX - :

    MMIICCRROOSSOOFFTT..DDIIRREECCTTXX..DDIIRREECCTT33DD 3D-;

    MMIICCRROOSSOOFFTT..DDIIRREECCTTXX..DDIIRREECCTTDDRRAAWW , 2D- ;

    MMIICCRROOSSOOFFTT..DDIIRREECCTTXX..DDIIRREECCTTSSOOUUNNDD ;

    MMIICCRROOSSOOFFTT..DDIIRREECCTTXX..DDIIRREECCTTIINNPPUUTT - .

    , , - . , managed DirectX - .

    :

    MICROSOFT VISUAL C#

    MICROSOFT VISUAL BASIC .NET

    MICROSOFT VISUAL C++

    MICROSOFT JSCRIPT .NET

    . , Managed DirectX 3D-!

    -. , - DX SDK, - FPS, - - DirectX, - Managed DirectX. - DXSDK\Sampl-es\C#\Direct3D\DolphinVS.

    Pentium M 1.7 ( ATIMobility Radeon 9700) - FPS : 1) - C# Managed DirectX 540 FPS; 2) C DirectX 620 FPS.

    80 FPS ( - 15%) . , - - - -. -, C# -

    | 9

    directx9_m.chm Managed DirectX

    ddiirreeccttxx .NET?

    MANAGED DIRECTX, , QUAKE, LINUX, WINDOWS

    , .NET - MS - JAVA: ? - - JAVA?! , - .NET, MS - MANAGED DIRECTX (- DIRECTX) | AKA HORRIFIC

  • - . - , 15% , .

    - . Managed DirectX -

    , , C# VB.NET, . VB !

    -, - Managed DirectX, - . - . API Managed DirectX. ?

    , , Managed DirectX . Managed DirectX 9 Graphics and GameProgramming (Sams Publishing, 2004). , .

    - Managed DirectX . , C# - Managed DirectX. MS, - .NET - - .NET Frame-work, , - .

    . -, .NET, , Windows. - Linux, 100%.

    , DirectX, . ManagedDirectX DirectX, -

    COM. Linux, , - . Managed DirectX. , - , Sun, FreeBSD, MacOS, .NET, , - , .

    , - . , , . - , MS - .NET .

    ManagedDirectX? , , - - Microsoft. - - ATI GeForce, . - , . , -, Managed DirectX , - DirectX. , Managed,

    10 |

    , C#

    ( - MS). - Managed DirectX

  • GamePost

    !

    GamePost

    FFaahhrreennhheeiitt ((IInnddiiggoo PPrroopphheeccyy))

    $69.99

    :

    FFaahhrreennhheeiitt (( IInnddiiggooPPrroopphheeccyy)) 22000055 .. ,, ,, ,, .. ,, ,, - ,, - ,, - ..

    ::

    Adventure

    :

    GGuuiilldd WWaarrss MMMMOORRPPGG - ,, ,, - .. - ,, - .. ..

    ::

    RPG

    AAggee ooff EEmmppiirreess IIIIII

    $79.99

    :

    AAggee ooff EEmmppiirreess IIIIII XXVVII-XXIIXX .. ,, - .. - ..

    ::

    Strategy

    * * *

    GGuuiilldd WWaarrss SSppeecciiaall EEddiittiioonn ((EEUURROO))

    $79.99

  • 12 |

    PC NVidia GeForce 2GTS. -, . , - , , .

    GeForce 3 1. DirectX 8.1. - - , - ( )., : 1., 2. 3.. ( Windows Longhorn) Microsoft DirectX 9.0c, - .

    , - - , - (GPU). , Quake ? , , - -. , - GPU, - .

    - , - , - , . , . - , (-). -

    3D-: x, y, z , . - : , - , .. - , - (, , ).

    - . - . , 25 . - . , , -

    PhysX

    IT, - . , . |TONY ([email protected])

    PHYSX , CPU

  • - ( ). - , - ( ). - (,). , . ( -) , ( ), . ? , -, - . - , - . -. - .

    - - . ( ), 1.4, . 2.0 - 2..

    , - , . - (, ) - , CPU, ( ). - , - , () , ..

    - , . - , - . : XML- VertexShader ( main). - , , , - .

    , - - ( ) - , , - (-) . - : o.pos = mul( i.pos, Worl-dViewProjection ). main() (uniform) , - (Input re-gisters). , , CPU, - ( ). , - . ( ), . - - ( - nrm e2v). , ( ) - . (-). (2.0 2.) - , 2.0 (- ), , . - 2. - . , - , - , - .

    - , . , . . : , , ( ) - .

    - - . , . , GPU, -, , - , , - .

    -. . Z- ( -), . - ? . - , - - . ? - , - .

    (XML PixelShader). - , . , , - .. ( -). - . . , . - - . - , , - 2.- . () - , - . - ( ) .

    | 13

    1 . 4 2 . 3 . 0

    ( ) 8 32 224 () 16 16 () 16 16 2 12...32 32 / 4 16 16 / 2 8 10 1 1 (, ) /

  • - ,

    IT-. - -. - PC . - , - , - () . - - . - , , -. PC- 512 , - 600 , 24- - . SLI . - . ?

    , - , . - -: , , - . - Microsoft, - DirectX. ?

    . - - -? . -, ? -, , , - , ? ? , : http://thg.ru/graphic/20060114/onepage.html.

    1 . 1 2 . 3 . 0

    128 256 512* ( ) 96** 256** 256** () 16 16 () 16 16 ( ) 16 16 16 12 12*** 32 1 1 (, ) 4 ( ) 8 8 12* , D3DCAPS9.MaxVertexShader30InstructionSlots** , D3DCAPS9.MaxVertexShaderConst*** , D3DCAPS9.VS20Caps.NumTemps

    : , 1., 3.0

  • , - . , -, PPU (PhysicProcessing Unit). , 2005 , - , AGEIA - , - , - Voodoo 3DFx. , PhysX - , CPU. , ,, , .. PhysX. , , - AGEIA, , - , - , - . - , , - ( ) PhysX -. , 125 . , - 130- PCI PCI-Ex-press. 25 . , - 128 2.0 GDDR3-, - . - XDR-.

    AGEIA - - , . , , - TSMC. $100 400. API PhysX SDK, Me-

    gon NovodeX, 2005 . - 2005 , - 2006 . - AGEIA, , - . , AGEIA. - PhysX . - , $199. , -, , - AGEIA. , PhysX SDK Unreal Engine 3. 17 2006 - Emergent Game Technologies (- Gamebryo 3D). , - PhysX: The Elder Scrolls IV: Oblivion, Loki, Warham-mer MMORPG, City of Villains, Tom Clancy's GhostRecon Advanced Warfighter. - , , - PhysX.

    - AGEIA. , Havok, Havok FX, - - CPU, GPU . Radeon, ATI, 3.0 1000 , , .

    : Pentium 4 3 12 GFLOP, - 6 ; ATI RadeonX1800XT 120 GFLOP , , 42 . , - . - CPU GPU. , , , ATI - .

    AGEIA ATI. AGEIA $400, ATI $600. , -. ATI Crossfire SLI NVidia: , , . - $1200, , , 400 .. AGEIA. , , - -. - Half-Life 2. (Havok 2) Intel AMD. , , , , -

    ? , - -

    , ? , - , - , 2006. : Longhorn, AGEIA

    PhysX, Sony PlayStation 3,Nintendo Revolution ,, -, Oblivion.

    -, ?..

    | 15

    1.X F.E.A.R

    2.X F.E.A.R

    3.0,ParalaxMapping -

    -

  • 16 |

    : : , , ?.. ? ?

    : , - . Blazzads, - - Warcraft. -, - . , - , -. ., , .

    , replayability, , . -, , The Sims, - -. , . FPS, -, . .

    . , , . Enter the Matrix -, , .

    : , .

    : . . - , . , , ... , , . . , , , , , , ... , :).

    : , -. , , - : -, . , , - , , - RPG, . , , -, , , - RPG-, -. , . , , :), . -, , , - .

    : PlayStation2, Xbox, Xbox360, GameCube. , , - , , . , , , .

    , , action/adventure,, RPG .. . - : , - , -, , , - . , - . , -. , - ( , ). , , -, , , .

    : , , . -, , . . - , - , . . , . , , -, The Sims.

    - . PR- - . -

    PACHELLA

    SWASHBUCKLERS:BLUE AND GREY. - -, .

    CHSNARK

    KDV GAMES. 15 ( ) ,3D-, , -, 3D .

  • | 17

    : , . , , , , . , - . , ,, - .

    : , , . - , - / .. -, . , -, . : , , , , - . , :).

    : : ?

    : , . -. , , , , . - , , .

    : , - , . , . - -/ , . 90% - , .

    : . . ( ZX-Spectrum) , , -, , , ...

    : , , -. , : ?. -

    STEP CREATIVE GROUP(www.stepgames.ru). - -

    - . - OFFICIAL PLAYSTATION . - , - , - 20-

    .. - - STEP CREATIVE GROUP (www.stepgames.ru). DESTINY GAMES,

    MASSIVEASSAULT: (BY WARGAMING.NET)

    MEDIAMOBILE GFI. .

    TERAN

  • 18 |

    , , , , . : , Crytek, - , DirectX 10 Shader Model 4.0.

    : . , - . , - , . .

    : Windows - , . , , , , . . PC , , , , .

    : , - - , . .

    : , ( ) . - , - . , -. , , , -- . : ?.

    : - , - , . , - ( , , ), - .

    : ? , , , . ...

    : . , , , , . , Warcraft III . Battlefield 2 F.E.A.R. . - ,

    . -, . . - , , :), - . . , , Half-Life radeon', Doom geforce'...

    : , 110% . , . , , . - , , , , - , , - . , - , - . .

    : ( ). - :).

    : - . - , - , , . : , - -. , , .

    : , -. ( - 3D-), , . . , - .

    : . - . , - - , . , . , : -, .

    : , -- , - , , - , ,

    MISTLAND SOUTH GFI (www.mistgames.ru). . : : , : -

    C++ DEVELOPER. . PATHTRACE,

    STEP CREATIVEGROUP (www.stepgames.ru). - . - 1:

  • www.boycottgun.com Association For American Indi-an Development p p -p GUN Activision, p- . p-p , p p p, y p- .

    Doom 1994. - -. Doom - - Marine Doom.

    p (Mike Morhaime Blizzard), ypMMORPG World of Warcraft ppp p . -, y py, yp p - p 5,5 p.

    py yp www.metal-gearsolid.org, p p - , Kuja105. , Kuja105 , p py - p .

    Vivendi Universal y - p y Ice Age2: Meltdown. p p Xbox,PlayStation, GameCube, GameBoy Advance,Nintendo DS PC 2006 ! , p p py :).

  • 20 |

    - (- ), ( - ). , - - . - -: rag-dolls (Half-life 2, Psi-ops ..). -, , , - . , , .

    (() , - ( , - ). , , , 100% -, -

    . -: - .

    - : . - , - , .. -, quadtree ( ) -tree ( ), - . - - - . , - , - continuous collision detection (CCD)

    , - . ( ) - , - | WWW.STEPGAMES.RU

    P h y s X H a v o k T r u e A x i s O D E T o k a m a k N e w t o n

    CCD rag-dolls

  • ( -). continuous collision detection - , - , , - .

    ((), , - , . - : - , , . , , . - -. , , .

    ( ) -

    (Rigid body simulation). , ( , , ..). - , , - - . , , (,, , ..), - ( , - ). - , - . , -: ( : - , , , -, , ), ( - ). , . . - , . , , , - ( - ), ( ).

    - (rag-doll), - , ( ) , . - - . - (joint) (constraint).

    , ( - ) - . ( ). ball-joint hinge-joint. Ball-joint , - , ( ). Hinge-joint -

    , . rag-dolls.

    , - : , - , -, , - - , - rag-dolls, ..

    . , , - .

    . , - . - , - . - : - , 100% - . - , - : , -, ..

    - . , , ( ) - . - : - , -, .

    , - , ( ). . -, - -, , , - . - : , - , rag-dolls .

    . (- ), - . 2005 - AGEIA - , - -. , , 40 000 ( , , ).

    , . , , , - ( www.devmaster.net/engines ).

    PhysX ((www. aageia.com, ) - AGEIA , . - - ( Unreal Engine).

    : -

    (, , ) - , ;

    | 21

    -

  • 22 |

    - ;

    ;

    ;

    (- ), - ;

    ;

    ;

    - ;

    ;

    .

    Havok ((www.havok.com, ) . ( www.havok.com/content/blogcategory/29/73). - Havok - Havok FX, - 3.0.

    : ;

    ;

    - ;

    ;

    RAG-DOLLS;

    (- );

    .

    Trueaxis ((www.trueaxis.com) . .

    : ;

    - ;

    - -, , ;

    ;

    .

    ODE ((www.ode.org, BBSD, ) -, ( S.T.A.L.K.E.R. ODE), - , . ODE .

    : ;

    ;

    , - ODE .

    Tokamak ((www.tokamakphysics.com, c, )

    : ;

    ( : BALL

    HINGE -

    RAG-DOLLS).

    Newton ((www.physicsengine.com, c, - )

    : -

    ;

    ;

    RAG-DOLLS;

    .

    OPAL (open physics abstraction layer:http://ox.slug.louisville.edu/opal/wiki) - , - . - ODE, TrueAxis. http://prdownloads.sourceforge.net/opal/opal-0.3.1-src.zip?download.

    , - opal-0.3.1-src\samples\simple\ - OPAL, . SDL (www.lib-sdl.org/index.php). - main.cpp h-. - .

    , - . - main.cpp -, .

    std::vector gEntities;opal::Simulator* gSimulator = NULL;

    gSimulator opal::Simulator - OPAL. opal::Simulator , - . -. , - . , , - , - .

    gEntities - opalSamples::Entity, . - , . opalSamples::Entity opal::Solid* mSolid. opal::Solid - OPAL. -, , . - getTransform mSolid.

    mmaingSimulator = opal::createSimulator();gSimulator->setGravity(opal::Vec3r(0, (opal::re-al)-9.81, 0));

    opal::createSimulator(). - setGravity -. , , - , . , , , , , , .

    1. opal::Solid* platformSolid = gSimulator->cre-ateSolid();2. platformSolid->setStatic(true);3. opal::BoxShapeData boxShape;4. boxShape.dimensions = gGroundDimensions;5. platformSolid->addShape(boxShape);

  • - , . - ( - ).

    , ( ), . - , , ..

    - boxShape, ().

    - , , addShape. (Shapes), - . OPAL, , - , , . , - ( dimensions ), :

    Matrix44r offset;Material material;

    offset - , material . OPAL' :

    hardness 0 1. , - .friction 0 1, . , .bounciness 0 1, . , .density . - .

    ((, , - )

    while (!gQuit){

    opal::real dt = (opal::real)timer.getElap-sedSeconds();

    gQuit = processInput();if (!gPaused){

    gSimulator->simulate(dt);}

    }

    . - simulate , . - , , ..

    gSimulator->destroy();

    - destroy -, - , , , -, createSolid.

    . , . , - , , - , - , -

    | 23

  • 24 |

    : - . . , ;) | AKA HORRIFIC (WWW.VR-ONLINE.RU)

    ? - , , -, . - - . :), , , , - . . , , - , , -

    - C++ , . , -, .

    , ++, Microsoft. - , Windows , - ? - Windows ?

    , !!! ? .

    , ( ) - Pentium 4, - Visual C++ 6.0 . ? , VisualStudio 6.0 Pentium 4, MMX- . , ?

  • MMX , SIMD, - 20%, .

    Windows? -, DirectX , , Intel? , - 10-15%, , - . -, , - , 10% , - . - .

    - -, . ( , -), IntelVTune Performance Ana-lyzer. - . - VTune, -- ,

    VTune. , , - . .

    . - . , - .., - . - , .

    , -. , - , -. : , , , - inline, , , - .. ( ), , -

    . , 1000 , 3000 !

    , - , . - .

    iinntteell Intel - , . intel.com - . Hyper-Threading , - . - , ?

    | 25

    Intel VTunePerformance Analyzer

    Intel Windows

    - . . , .

    - -. , , - , , - - .

    : - ,, . - - , - .

    C h S n a r k

    K D V G A M E S

  • 26 |

    . , , , . - : www.intel.com/cd/ids/de-veloper/emea/rus/dc/games/index.htm.

    , .

    aattii nnvviiddiiaa ATI NVidia - - , Intel, -. - , - .

    , - . ? -, , -, , .. - - , -.

    - - www.ati.com www.nvidia.com, . , . , , . , : ATI, NVidia. . SDK , - . , -, - .

    - , , , . , - , - . -, -. , - .

    , - . , , , . - . - -, - , -. , , - . , .

    ? , , -. , -

    - , . - ,

    , , , , .

    . , , - , .

    , - 100x100 . - , - 10 000 . - 256 ( ), -

    , 65 535. - -, 20 000 , , , - .

    24 , -, 16 777 216. , : . - , .

    - . - 800x600 16- , 800*600*2 =960 000 . 1 ! - 1024x768, - 1 572 864 . , , - .

    , . - 15 .

    - .kkrieger. 97 ( , ,)

    DIRECTDRAW, GDI: .

  • , - 800x600, 1024x768.

    - ., , 1280x800, - 800x600 1024x768 , . - .

    - 16 , . - , . - , , -. , - .

    - : - . - . - -, . , - , .

    - - , Blt BltFast( DirectDraw). , , - : - , -

    ( Blt ) - , -. Blt - WinAPI- memcpy.

    . , - 800x600 -, . , - , , , - , . - : 800x600 , . . , ? , , ? , . Blt, - . , - . , . , . - , - . - (, 600 : 200 , 400 ), - , . - !

    , - , . - . , - .

    . Command&Conquer(, , C&C). - . , -, , .. , , :

    for (int i=0; i

  • 28 |

    , , , - . , -, -, , , , . - , , -, .

    . - - . , - , ., , - , - , .

    DirectX SDK - (DXSDK\Samples\C++\Direct3D\Billboard). , , . - - .

    33dd - Direct3D - . , - IDirect3DIndexBuffer9 - 16- 32-. 65 535, - 16- . 32 , .

    Direct3D . , . - ! -, , 32- -. , .

    16-, . - , - , . -, .

    -, . - .

    , - ( , , -

    ). , - . .

    , , , - . , . - 3D-, - ( 3D StudioMax), - . 30- . ( ), - 12- .

    , , -, .

    , . - 32- , 12-. , - , - . .

    . , -. , , - . , . ? ? - , - .

    -, :

    ( ), , - .

    - , 16X16. , .

    , - , .

    , - ,

    DirectX, - , - . , , . , - , - . , - , , , .

    , - , - . www.vr-onli-ne.ru - - - .

    ! - ( )

    32-

    16-

  • !

    GamePost AAggee ooff EEmmppiirreess IIIIIICCoolllleeccttoorr''ss EEddiittiioonn

    $125.99

    CCoommmmaanndd && CCoonnqquueerr::CCoolllleeccttiioonn

    $49.99

    CCaallll ooff DDuuttyy 22CCoolllleeccttoorr''ss EEddiittiioonn

    $99.99

    -

    ?

    * *

    *

    *

    Diablo AAction Figure: Necromancer $$4422..9999

  • ssyynnooppssiiss - - , - . - - , . - , , , - . - EAX- -, - , . - -, - : , -, .. , System Shock 2 , - - , -, -.

    API - , - . , - FMOD.

    . , , - , - | AKA TONY ([email protected])

    30 |

  • - . - , PC, Mac, , PlayStation 3 Xbox 360. FMOD - -. , , MP3, , - -, OGG.

    - FMOD_RESULT. FMOD_OK, - . - FMOD_Er-rorString(). FMOD ++, , - . FMOD , : DSP(digital signal processing), , .

    // result = FMOD::System_Create(&system);// result = system->getVersion(&version);if (version < FMOD_VERSION){printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n",version, FMOD_VERSION);exit(-1);}// , .result = system->getDriverCaps(0, 0, 0, 0, &speakermode);// FMOD result = system->setSpeakerMode(speakermode);// FMODresult = system->init(32, FMOD_INIT_NORMAL, 0);

    FMOD, , - FMOD, - FMOD. init() - , , - , . .

    // result = sound1->release();result = sound2->release();

    // result = system->close();// result = system->release();

    release(). - close().

    // , result = system->createSound("../media/drum-loop.wav", FMOD_SOFTWARE | FMOD_2D, 0,&sound1);// result = sound1->setMode(FMOD_LOOP_OFF);// , , , , 3D-result = system->createSound("../media/ste-reo.ogg", FMOD_HARDWARE | FMOD_3D, 0,&sound2);

    - System::createSound(), (, - ..). - System::createStream(), , - System::setStreamBuf-

    ferSize(). , FMOD -, FMOD::Memory_GetStats(). FMOD::Me-mory_Initialize(). , ., - - . - - FMOD_3D. - , - - Sound::setMode().

    FMOD - . , , - ,

    . - - FMOD . - ( ) - update() .

    // , result = system->playSound(system, FMOD_CHAN-NEL_FREE, sound1, TRUE, &channel);// 7.1result = channel->setSpeakerMix(channel, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);// result = channel->setPaused(channel, FALSE);// FMODsystem->update();

    , , -, ( , ) , - - -. -. , : - - .

    // result = system->set3DSettings( 0.9, 0.9, 1.0 );// FMOD_VECTOR vel, pos;

    result = channel->set3DAttributes(&pos, &vel);// FMOD_VECTOR vel, pos, forward, up;

    result = channel->set3DListenerAttributes( 0, &pos, &vel, &forward, &up);

    , . - , 22.00 , ;)

    | 31

    FMOD

  • 32 |

    : ? , /, ...

    : PC Microsoft Visual C++ .NET 2003. - (CVS, SVN). Test Track Pro Seapine Software.

    : , , , . : - ? , -

    . , - : Visual Studio, 3DS Max/Maya,Photoshop, Microsoft Office. , : - ( 3DS Max), - , .. , - , , ., Facegen Modeller , , - , .

  • | 33

    : : ++ . : Maya + Photoshop = (: -). . .

    : Visual C++, 3D Max, Maya, , - . , .

    : , . . , , , : MS Visual Studio (, .net) - - , GNU CodeWarrior; Maya 3DS Max 3D-, .. Photoshop Painter -. Sound Forge . MS Office .

    : Visual Studio, Maya 3D, Photoshop . , middleware-, , . .

    : , , Word',Excel'. Visio.

    : , , - . ++, - . , OpenGL DirectX.

    AI, . - : , .. , , (First Person Shooter). Quake 3, . , .. , . , , .

    : J2ME SDK, . IDE (- ), J2ME. - Borland JBuilder, IDEA NetBeans. , - , , .

    : ., , , . ?

    : , ? - . , -, . , - () . Counter-Strike: -. . , - . , , . AI . , . - , , ( - ), . - , AI. , - . , -. .

  • 34 |

    , , -, . - .

    : -, . , NPC, - . -, . - , , .

    : , , - ...

    : , , . , . - , , - . , - ( - ), -. , .

    : - . . , - . , - , , .

    : - , , . - , , - , :). .

    : -, , . - . AI - .

    : , , - , . , , , . -, , ..

    : , - ( , , AI) - , . -, . - , . - , - . - , - . - AI ( ).

    : ? , /, ...

    : - StarForce, Securom .. . StarForce, , . , - . , . - . . - , , .

    : : StarForce, SecuRom, SafenSec... . StarForce.

    : ? , ?

    : , , -: , , , .. . , . - , - - .

    : - . -: - . - , .

    : ( AI).

    : , , -. . , , - . : - , - .

    : ?

    : , - , . - . - ( ) . , , , ,Bluetooth,

  • 36 |

    , - , , - . - - : , , , , , . - , , , .

    - - , . , C++. , (, ), . , - . - .

    , , (, - ) . - -, . , , - - .

    - . - - , - . , , .

    , - API , - - , , - , - , , . - ,

    , , - / . , , , , , . - , - , .

    ?? - -. -. -, , - :).

    , -, . , , - -, .

    ,, -, . , , - .

    , , , -, - . , .

    - - , - ( ). - - , , . , , ..

    , - . , - , . , - - , , - .

    , - . , . -, - .

    - , - , - Microsoft Excel -. - Visual Basic. Excel , Visual Stu-dio. Excel CSV. VisualBasic' .

    ? - . - -, | (WWW.STEPGAMES.RU)

  • : ,

    , - .

    - - - .

    , .

    , - - , - .

    - , . - - , - .

    -, . ? - , . , .

    Python ((www.python.org) OOpen SSource: (Guido van Rossum)www.python.org/~guido : 1990 : 2.4.2, (28 2005 .)

    :

    ;

    - ;

    ;

    ;

    .

    :

    .

    .

    , , - -, -

    .

    - .

    - , .

    - , (, , C/C++). -, -.

    , PYTHON 3000, - - - PYTHON 2.X.

    Ruby ((www.ruby-llang.org) OOpen SSource: (Yukihiro Matsumoto)en.wikipedia.org/wiki/Yukihiro_Matsumoto : 1995 : 1.8.4, (12 2005 .)

    : .

    - , .

    - .

    2.0 -

    -

    .

    : API .

    , BO-OST.PYTHON LUABIND.

    .

    .

    , , -

    ,

    -

    -

    .

    Lua ((www.lua.org) MMIT ((Open SSource): Roberto Ierusalimschy, Luiz Henriquede Figueiredo, Waldemar Celes : 1993 : 5.0.2, (17 2004 .)

    : -

    , .

    API .

    , - .

    - (EXTENSIBILITY LANGUAGE).

    ( 150 ), - (RE-GISTER-BASED VIRTUAL MACHINE). - LUA - .

    , - .

    (DOMAIN SPECIFIC LANGUAGES).

    , - .

    - .

    : -

    , - UTF-8.

    - - . - - . - -, - LU-ABIND (luabind.sf.net).

    -, , .

    , Lua - , - .Python, , . -, - Scons(www.scons.org) - Ruby , , , - 2.0

    | 37

  • 38 |

    50- - . . , , - .

    , . , , , - - .

    ?? - (artificial intelligence) . , - , . - , ,

    - . -, . , , |YPP ([email protected])

    ,

    [[]]

  • , , - , -? , , - , - , , . - , . , , .

    - . , : , , - -. : ();; () ; () . , - , : - , , - .. - ( ) - (), , - . , , - , - , (- ) . -

    // (, ;)), .

    - / . , - , - (: , , ..), - . , - ( , -; ..). ( , , , . , :( . .)

    . - : N , , - .

    - .

    ,, , - , (fini-te state machine). :

    . : , , , .. : , ; , , .

    . , . - , -, ( ). , ? , (waypoint) . . , - , .

    - . : - ; . -: ; - . -: ( ); - . :

    | 39

    , - -. . - (: W, A, S, D). , .

    , . - , : , , - . ,

    . - AI, , AI, -, - .

    - , , AI, - , - . - -, .

    / A n d r u s h a

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

  • ; (,) . . - , - . . , - , - . : - - ; - .

    , , - ( ) , FPS. - Doom, Quake Wolfenstein, , .

    , - , . , - -. , - ,. - 10% , 50% - 50% , - .

    - . - () , - . , /-/, : , , ..

    , . , , - . , , , -, . , , , ( ) . - , ( - ). , - . , ?( : , , - Half-Life...) - !

    , - ., - - ( ). - - (rule system). - : ->-. . , - ( - ). , . , . - RTS:

    1 ->

    2 > && ->

    3 > ( )-> , !

    4 ->

    5

    , - . , 2 3, - , . (- , -

    3 - 2.) , - . : true-> .

    - . (decision tree), :

    if ( 1 )1;

    elseif ( 2 )

    2;else

    // ...

    - -, . - , Age of Empires.

    - - . , , ?

    - - . -, -

    40 |

  • , - / . -

    / ( GTA The Sims).

    -, - ( ?). - , . , , . - (- -, ). , - (- , : , :) . -). : - , -. , -, . . . , -

    , , -, , , .. (. ).

    N ( ). (fitness testing), - . - - . , , , . -, N - . . .. -, , - . : - , , . .

    , , - . - - - . - , - ,

    . : -. - : 1) - , - ; 2) - , - (). - (weights) -. - , .

    - , . , , - , , . - . -!

    - , , . , , . , , :).

    , - - . , - , , . , - , Crimsonland: - , , :)

    | 41

    ?, - ? , , , . . - , , - - . , .

    , , , , , , , , , , , 510 110. , ,

    Half-Life

  • Lua 1993 - - - (Computer Graphics Technology Group, TeCGraf) - (Pontifical Catholic University, PUC-Rio) --. : (Roberto Ierusalimschy), (Luiz Henrique deFigueiredo) (Waldemar Celes). - (LOO-ah). www.lua.org/versions.html.

    2003 5.0.2, - ( - 5.1 -) Lua . -, (register-based) , , -. - 150 (100 ).

    Lua (clean) C( ANSI C C++), - , , ANSI C. - (portability) !

    Lua - (extension lan-guage), ( Lua C API).

    Lua , - Pascal. - , -

    42 |

    c 5.0.2LUA C API 5.0.2 -: ( 5.1 - ). LUA - (www.lua.org). LUA LUAFORGE (luabinaries.luaforge.net).

    lluuaa!!

    LUA (www.lua.org) -, . - | (WWW.STEPGAMES.RU)

    - LUA 5.1 WWW.INF.PUC-RIO.BR/~ROBERTO/TALKS/NOVELTIES.PDF

  • Lua C- , , - - - . Hello world Lua :

    print(Hello, world!);

    . , :

    print Hello, world

    : , - C- . - Lua -, (Domain-Specific Languages, DSL), , . Lua - .

    Lua -, - Excel, -- Visual Basic. , (, CSV), Lua .

    - - Lua - , C++. Lua , , C++. - - , , C++, .

    Lua . Lua (closures). ... , . - (coroutines) - ( - - , (callbacks) / (events). - (, type - ), Lua , - ( - Programming In Lua). (

    - ), C++, Lua.

    Lua, - - (Lua C API), - (lua.exe), , - . , . -, , - Lua, . - , .

    . Lua - print, - , . print Lua . tostring() .

    Lua (first-class values), -, - . - Lua . __con-sole_print, , - print Lua , , :

    print = function(...)for i = 0, arg.n -1 do__console_print(tostring(arg[i]) .. "\t")end__console_print(arg[arg.n] .. "\n")end

    -, __con-sole_print C/++, - , print (luaB_print() lbaselib.c Lua). - , fputs() - . , - print Lua :

    print = __console_print

    - , - -.

    - C (Lua C API). C Lua . C, , , -, , - . , -, . Lua C API . , - push pop, - , , -. - Lua LuaReference Manual.

    , -. - - Lua C API, , . , - -.

    Lua (extension pro-gramming language), -

    | 43

    WWWWWW..LLUUAA..OORRGG LUA. , LUA 5.0 REFERENCE MANUAL, - PROGRAMMING IN LUA, - .WWWWWW..LLUUAA-UUSSEERRSS..OORRGG LUA. LUAUSERS WIKI, , , - .WWWWWW..LLUUAAFFOORRGGEE..NNEETT -, LUA, - LUA .WWWWWW..IINNFF..PPUUCC-RRIIOO..BBRR//~~RROOBBEERRTTOO - WEB- - ., , .WWWWWW..KKEEPPLLEERRPPRROOJJEECCTT..OORRGG WEB- LUA. , LUASOCKET, LUAPROFILER LUALOGGING.

  • Lua C (, , C++).

    Lua C API, - , - Lua C C++. : 1) - , - ; 2) .

    Lua, Lua C API - , -. API - . Lua Programming Manual Programming With Lua.

    C++ Lua - :

    TOLUA, TOLUA++ (www.tecgraf.puc-rio.br/~celes/tolua, www.codenix.com/~tolua);

    SWIG (www.swig.org);

    LUABIND (luabind.sourceforge.net).

    toLua, SWIG (SWIG Lua, ).

    Luabind C++ - Lua, - - - . , Luabind Lua C API( ).

    Lua , . , Lua - . , , . , - Lua ( Lua , - Lua Users Wiki).

    Lua - , . - , , -, . - ,

    Lua -, .

    , -, Lua, . - , ( ), , - dofile/dostring.

    Lua - . , -. , , :

    a = 2 * 34567 + ba = 69134 + b.

    C++ . , - Lua , - , , C++.

    , - . - - . , , , , , - 1% , - 1%.

    ( ) . , -, Lua Profiler (www.keplerproject.org/luaprofiler). , - .

    , Lua, lua_pcall(), .

    ( , - ) - . , - , - . , , , .

    , :

    LUA

    ERROR() NIL .

    , ERROR(), ( ) - PCALL(), - PROTECT, - (DIEGO NEHAB) FINALIZEDEXCEPTIONS (www.lua-users.org/wiki/FinalizedEx-ceptions). - NEWTRY (. ).

    - NIL. , , -, -, , - NIL.

    - , , .., NIL.

    - , - LOCAL - - - . - -. - -, G_. LUA LINT - . LUA 5.1 LUA, , - (_G), , - - .

    - . - . , -. LUA LUA TECHNICAL NOTE 7: MO-DULES & PACKAGES - (www.lua.org/notes/ltn007.html).

    . ,

    44 |

  • , -, - . LUA - . , - LUA , - C++, LUA - .

    Lua - (garbage collector): - , -, (,userdata, , ) - Lua ( ).

    Lua - (threshold), . , - , , . -

    , - , .

    , - 0 ( lua_setgcthreshold() C collectgar-bage() Lua). , - .

    , , - Lua, -, - . , - .

    Lua , Lua - . 5.0.2 - ( non-incremental mark and sweep). , , ( , - , ). , ,

    - , -. Lua, .

    , , , Lua - , , : -, , , , .

    ( some_string), , some_string , :

    some_string = some_string .. "a"

    Lua TechnicalNote 9: Creating Strings Piece by Piece (www.lua.org/no-tes/ltn009.html). Lua 5.1 - , -

    | 45

  • 46 |

    ( , 70%) Java ( J2ME, Java 2 Micro Edi-tion) , - - - . - - -, - (Virtual Machine, VM). - VM Sun (- Java) -, - -, SDK ( - ) .

    , , , , VM. ! . , - J2ME- - , - -

    . , - ( - - ),, , , -

    . , Sun - Java. , MIDP 1.0 - , MIDP 2.0 - . - .

    IBM PC , . , , , -, , -. .

    , -, , - .

    , . , . , - , , .

    , , . , , - . , - .

    , . ! , , . , |

    Eclipse J2ME

    jj22mmee

  • - (Binary Runtime Environ-ment for Wireless, BREW) , Qualcomm. - CDMA, , , BREW, GSM- . , ! - SDK /++-

    ARM Builder, - (- ).

    - , Qualcomm ., BREW, . , , Qualcomm - . -, -

    , - , - BREW .

    Execution Engine In-Fusio, Sun, -, J2ME. - ( BREW), ( Java), - . 10-15 , 30 ! , Execution Engine (, -, , ), -

    J2ME- - - -. Execution Engine -- , - . -: Philips Fisio 530/825, Alcatel OT735/535/531, Panasonic X70/G60, Sagem myX-5/myG-5/myX-6... , SDK - .

    | 47

    : J2ME , - - . , . - - ( ), .

    , , ? . ,, - , - , J2ME.

    ( Fight Hard 3D) . ,

    . , - , . - -, , , - , . - , -, .

    . Synergenix . - . , J2ME - 400 KIPS, Mophun 60 MIPS, 150 . , , , ,. Synergenix .

    bbrreeww

    eexxeeccuuttiioonn eennggiinnee

    mmoopphhuunn

    - , - Execution Engine

    ACE , Mophun

    Wireless Graphics Engine ( WGE) TTPCom API, - - . , SDK . - .

    wwggee

    , WirelessGraphics Engine

  • :

    . - , . , - , - , - - .

    , - . - , - , CGA-, EGA- VGA-.

    . - , - - , -. , - , - .

    - . - , - . - , - . , , , - .

    -,

    , - - - .

    - -. , . J2ME, - -.

    , , , - - , - , - .

    - - . - .

    API . - - - , - , - - . - --, - - .

    . , - , - - , . - ...

    48 |

    , - ( ) - . -, . - , . ?

    , , -, , ZX-SPEC-TRUM, . -, , - . - ( , -), . -

    , , - , - .

    , - , - -,

    - , - Execution Engine

  • : + CD + +

    200 .

    ( . ) *( )

    ...

    :/ / ( )e-mail

    * . .

    + CD

    6 12 900 . 00 . 1740 . 00 .

    + +

    6 12 2550 . 00 . 5040 . 00 .

    1 2 : 3 :

    : [email protected];

    : (495) 780-88-24;

    : 119021, , . , . 11, . 44-45, , .

    ! .

    , , .

    , , 20- .

    . , . , , .

    : -, (495) 500-00-60, www.interpochta.ru , , , , .

    15% , ,

    , , : 780-88-29 ( ) 8-800-200-3-999 ( , ,). : [email protected]

  • 52 |

    deadcan dance

    . 3D-- 3D- /-, . - 3D Studio Max ( 3DS). , - MS DOS-.

    3D Studio Max - , . , - - , - - . 3DS Character Studio, . - Character. , , -, .

    - , - . -, 3DS MAX 6 Character Studio 4. (- . . http://bhv.ru/books/bo-ok.php?id=3888). ! , -

    3DS. , - , .

    , ? , , , , .

    , . - 3DS MAX 6 Character Studio 4. - . . , , . , :). 3D-- - , . , . , .

    , . . - - . , 0,5, 90 - - 45. - -. - ( 3D--

    DX SDK DXSDK\SAMPLES\C++\DIRECT3D\MESHES\SKINNEDMESH

    , - - . (MESH), , - , . , . | AKA HORRIFIC

    Plug-in , .x-

  • | 53

    ). , 1, 100%.

    , : -. ( - ). , , , . (,, ) - , , - .

    -, - . , . -, -, - , ( -) . , , , - .

    , , . -

    : ? .max -, . .3ds, - . , . - , .

    , .x, Microsoft , -

  • 54 |

    ? , . 3DS Max .x, plug-in, Microsoft. plug-in - DX SDK, . - .

    .x- -: Direct3D - -- -. Microsoft -

    . - . - .

    -, .x- . - , - . , . - , . . , :). - , , - .

    , . - - , - . , - . - , - , . , -, , - . , , . , ,

    . -.

    - .x- - D3DXLoadMeshHierarchyFromX, :

    HRESULT D3DXLoadMeshHierarchyFromX(LPCTSTR Filename,DWORD MeshOptions,LPDIRECT3DDEVICE9 pDevice,LPD3DXALLOCATEHIERARCHY pAlloc,LPD3DXLOADUSERDATA pUserDataLoader,LPD3DXFRAME* ppFrameHeirarchy,LPD3DXANIMATIONCONTROLLER*

    ppAnimController);

    .Filename - , .x-.MeshOptions . D3DXMESH_MANAGED, - . , , .pDevice IDirect3DDevice. , , .pAlloc ID3DXAllocateHi-erarchy, - .x-. - .pUserDataLoader ID3DXLoadUserData -

    1 - . , - - -, - . -, - , . : D3DXFRAME, - , D3DXMATRIX. - - .

    2 : - , . : , ,, .. - , - . , , - . , .

    3 .X- , - . , - - , .

    , :),

  • | 55

    . , .x- , -, , , - - ID3DXLoadUserData.ppFrameHeirarchy D3DXFRAME.ppAnimController ID3DXAnimationController, - . , .x- - -. , .

    D3DXLoadMeshHierarchy-FromX, - D3DXFRAME. ? :typedef struct _D3DXFRAME {LPTSTR Name;D3DXMATRIX TransformationMatrix;LPD3DXMESHCONTAINER pMeshContainer;struct _D3DXFRAME *pFrameSibling;struct _D3DXFRAME *pFrameFirstChild;

    } D3DXFRAME, *LPD3DXFRAME;

    ?Name . - , , - . , , . -, - , , .TransformationMatrix . .pMeshContainer .pFrameSibling - D3DXFRAME, . , - , .pFrameFirstChild , - .

    , . - - (- ), ( , ). - , : -

    , . - - , ( ) . , , , , , . - :

    void (D3DXFRAME , D3DXMATRIX ){// , ..

    .TransformationMatrix *= ;

    // ,

    if (.pFrameSibling)(.pFrameSibling, );// ,

    if (.pFrameFirstChild)(. pFrameFirstChild,.TransformationMatrix);

    }

    ! , - - .

    -. , .

    , , - . - , . . , - -. .

    http://cherb.web.ur.ru/mal.html -. , -, , - mesh . - - , - .

    tiny.x, DirectXSDK

  • 56 |

    1989 . , - -. - 60, , , . : (, , , , - ). (-) , . ( 0) , - . . , , . , -, 14- - :). , - , . , , , -, , - - .

    ,, sseexxoonniixx , , - ( Sky). , , - -, :), - , - . , - , - ( , ). SeXonix' - , -. , . - - :).

    ?

    . -

    -

    -

    ,

    - -

    : ) ,

    . ,

    -

    ,

    .

    :

    X O N I X -

    .

    !

    :

    ; ) .

    . - ( ==== :)). - -, . , . , , . , . , - , - :(. :). - . , - . Must have, :).

    ?

    -

    . -

    -

    . -

    -

    -

    E X - - ,

    A D I D A S

    ( , -

    -

    -

    .

    . 10-15 . , , , - . ? . - ', - 286-, - . , : .. | ([email protected])

    , ,

  • | 57

    , , . PC , : . - : -. - . , - , game over. , , - ( ) AI: ,, , -. , Bluetooth'? :). , Delphi . :

    B - O - O - O M !

    -

    !

    :

    ,

    , -

    .

    !

    ccaassttllee wwaarr && ssccoorrcchheedd eeaarrtthh , . . . , . ? , . ! , -: . ? -, , ( Bluetooth? ;)) :).

    Scorched Earth . ( , ) - - . , - . , !, - . , , - ( )

    bboooommbbeerrmmaann-! , . - , -, - 90-. , -, . , ( ), .

    BoomberMan ? - -? . , . . . - , , , , - - . , . - - ( ) ( : ). BoomberMan Java, ;).

    :

    C A S T L E W A R

    .

    , ,

    !

    -

    ,

    -

    W O R M S ' .

    H T T P : / / 3 8 6 . B Y . R U / G A -

    M E / C A S T L E . Z I P -

    .

    :

    ,

    ?

    . -, - - . , , , . , - . , -, .

  • - , , - 3D- , , - , . -, .

    - . - - , - . , , , ?.. - . - . - , .

    , - . , , - , --, - . , - - , - , . ? - - .

    , ( ). -, , - , ( ).

    , , -, - . - . -: , , . - , , .

    - - lipsync (lip ,sync synchronization, ). - . - , . - .

    - . , . -- , , .

    , - , , . -, - , -

    -. , - , . , , - , , , .

    - , , , -, - . (,, -) : - . , .

    - . - , . , . . , . , - . , -

    | 59

    . - | , (WWW.STEPGAMES.RU)

    - , - . DIRECTX FRAMEWORK

  • . , - .

    - . - , - . - . - , , . - .

    - - .

    , - . (. skin ) , - . , . - , - , ( ).

    , . . - - . - , .

    , . - , : - - . - , , , .

    , ( ).

    . - ( - ). - .

    - . , , - , . - -. - . , - , - , - .

    () - - . - . . -. ( ). - , - .

    , : - , , :

    pos = pos1 * (1 weight2 weight3) + pos2* weight2 + pos3 * weight3.

    - . - SetStreamSource() , . . , - , (, ).

    HHLSL ( )// .float4x4 WorldViewProjection : WORLDVIEWPROJECTION;

    float3 weight; // // weight.x // weight.y // weight.z

    // void vshader(

    float4 vPos0 : POSITION0, //

    float3 vNormal0 : NORMAL0, //

    float4 vPos1 : POSITION1, //

    float3 vNormal1 : NORMAL1, //

    float4 vPos2 : POSITION2, //

    float3 vNormal2 : NORMAL2, //

    out float4 oPosition : POSITION, //

    out float4 oDiffuse : COLOR0 // )

    {// // :float4 cPos = vPos0 * weight.x +

    vPos1 * weight.y + vPos2 * weight.z;

    // :float3 cNor = normalize(

    vNormal0 * weight.x +vNormal1 * weight.y +vNormal2 * weight.z

    );// .oPosition = mul( cPos, WorldViewProjection );

    // float3 lightPos = float3(0, 0, 100); float3 invL = normalize(lightPos cPos);float NdotL = dot(cNor,invL); oDiffuse.xyz = NdotL + 0.2;oDiffuse.w = 0;

    }

    -, - , . . , , - . - , - . , , -

    60 |

  • | 61

  • , , , . , , , |

    . - , . - , - ( ), - .. -

    - ( -, , ) - , - . , ( ) - . ( , - ),

    , . - ( , - - , ). , , , - - .

    62 |

    - , . . - ( - ).

    : , -- , (/). , , . , - , , - , , DSL.

    , - . , . , -. ? - , - ? , - /-

    , D - A. - -, ( ) -, -. , - -, .

    .

    FF11EEXX:: - QUAKE III. -

    . - - , - , ... , -, ( ). !

    CCYYBBEERRMMIINNDD:: STARCRAFT ! -

    98- -, - . STARCRAFT , , , , - . -. , ! , - -: , .

    MMCCDDAAUUNN:: DOOM 2 , .

    SSEERRJJ:: WARCRAFT III TFT. -,

    , -, QUAKE III . -, - -. - -, - , !

    http://forum.xakep.ru/view.asp?topicID=64268

    - -

    GO! forum.xakep.ru

  • . , , - ( - ), - .

    - //, - , . , -

    . -, , - - , , , - , . - , - .

    -. - - . , - , - -? , , : -

    , .

    ! - .

    , ,

    , , . - , - - . , - ...

    | 63

    . , - . - , - , , , - . , , . - , (-, ) B ( -), B -

    - ( ), - ( ). ... , - ( ). ? ! , . -, , - , !

    GGRROOKKIINNNN:: OGAME.RU -, -

    -, - - (, , ). , -, COMBATS.RU( ), -, . , - FLASH, - ( ). - , - -. , .

    SSAAMMIIDD:: COMBATS.RU! ,

    , .

    ]][[EEAALL:: , , -

    . WOW - ( , ), - ( ,) , , QUAKE ( - - , ).

    PPUUPPKKIINN-ZZAADDEE:: - BATTLEFIELD 2. -

    , - . JOIN OPERA-TION, . COUNT-ER-STRIKE .

    GGAACCKKTT:: STARCRAFT. , -

    . LINEAGE2. ,, ( ) , - -. WOW , -

    , . - - :). - UT2004, - :). .

    RRUUSSSSOO__TTUURRIISSTTOO:: -

    . - , . - ,

  • - . - , - , -, , - . - - , -. - , . , - , - :). -,

    , .

    - , - . - , B. ( ) .. , , D, - . - ( ). - : C ,

    B - . B, : B=> A=> C? - !

    64 |

    . , - , , , .

    BBEELLOOZZ:: WOW - !

    WARCRAFT, BLIZARD WOW. , . - - -...

    , .

    QQUUEESSTTOO:: WOLFENSTEIN ENEMYTERRITORY. -

    : http://strimarena.ru/games/et. *NIX' -- DVD , :).

    SSUUGGAARR:: LINE-AGE2

    . . . WOW, . .

    www.l2online.ru, - , . - :). - ...

    HHOO@@XXEERR:: ! . !

    - . -. - !

    KKRREEEEZZZZIISS:: WARCRAFTIII TFT, QIII, CS. -

    , -

    ... - - , STARCRAFT,UT2004, HEROYES M&M 4 - NEED FOR SPEED.

    AANNDDRRUUSSHHAA:: - -- :).

    -, , , - ...

    MMAADD HHAAMMSSTTEERR:: - ! - -

    !

    - -

    , - . , . ... - , ( ) -

    . . , - , , . : , (- ). - -, -, . - , , ! ?

    - - ,

    - , . - -, ! , . , , - - - .

    , - . , - . - -, .

    -

  • ( - ping), - -, .. - , . , ( -) . , - .

    ( ) , , - Pentium. , - , .

    - ,

    ( ) - ( ), - - , - - -, , ., - , , - ( - , - ). - , - , , . ! -, , - .

    , -. -, , . - -, - , , - - . . . $8 Perl, PHP MySQL -. - - , XP ( ), ,

    - .

    , -, , . - - , - !

    ( , -) -, - -. - . - . -, ?

    -. , - . , - , -, - , , , - , . , ! , , - - , - , . , -

    , , ?! , , .

    , , . , - , - , - , - - , , - . -, - . , - : , - , - ( -). , - ...

    . , -. , - , -, !

    | 65

    -

    -

  • 66 |

    , . -, , . - . . - , , . ,, , - .

    - , - . - -, . , , .

    , : , p-. -. , , , .

    -. , (, , ). , - , , - . - , ,

    100% , , !

    , , - ( , ). . , , , , |

  • -. - , -

    , ... , -, , . - ? - , .

    , , - , - , . -! ! - ? ! - - - , , - .

    - -, . -, - - , . - , : , /...

    ASCII- UNICODE-- : - , -/ trial-/ , , -, /. - . , . - ? -, , , . - .

    wrong ss/n , ssub_401000.text:00401016 call sub_401000.text:0040101B add esp, 4.text:0040101E test eax, eax.text:00401020 jz short loc_40102F.text:00401022 push offset aWrongSN ; wrong s/n\n ; .text:00401027 call _printf....data:00406030 aWrongSN db 'wrong s/n',0Ah,0 ; DATA XREF: 00401022h^o

    , - , ( -, ), -

    LoadString - , -. - , , , - . - LoadString uID, lpBuffer, - ... lpBuffer - , , , , . -, - , ( : NO_ACCESS , ).

    - ( , ). ( - , -) , LoadString !

    , - , - . , , Deb-ug Release, , - . , IsRegistered, .

    .text:00405664 cmp _IsRegistered, 0.text:0040566B jz short loc_40567A

    - , - . ++- , , IDA PRO - . ( ), ( ) - . , OO Softwa-re ( ) oorwiz.dll(, OO Regi-stration Wizard), , ...

    | 67

    !

  • 68 |

    ooorwiz.dll OOO SSoftware , 3 0 00001FD0 RegWiz_InitLicMgr1 1 000019D0 RegWiz_InitReadOnly2 2 00001D00 RegWiz_InitTrial

    rtti , - RTTI (Runtime Type Identification) DELPHI/Borland++ Builder, , ! DEDE, Etlin HTTP Proxy Server, TfrmRegister, - fRegister - OK bOKClick, - 48D2DCh. - !

    , -, , , . -, , (. obfusca-tion). -, , NOP, XCHG EAX, EBX/XHG EBX, EAX, - /. -, ,

    , - .

    , . , . XOR EAX, EAX/JNZ trg - ( - IDA PRO). - . , , , . - (, wasm'), - - , , , - , , . !

    , - , . -, .NET Obfuscator http://blogs.msdn.com/obfus-cator/default.aspx. , - - ! , -, ( , -, ), , - . - : - . ,

    ( ) , , - . , , , - - , , - . : - API- , .

    -, . : .

    /- - , -, - . - : -, - .

    - , , . () , - ( , ). - , - - /- .

    , aarmadillo.00434000: 60 pushad.00434001: E800000000 call .000434006 -------- (1).00434006: 5D pop ebp.00434007: 50 push eax.00434008: 51 push ecx.00434009: EB0F jmps .00043401A -------- (2).0043400B: B9EB0FB8EB mov ecx,0EBB80FEB ;e?0e.00434010: 07 pop es.00434011: B9EB0F90EB mov ecx,0EB900FEB ;e?0e.00434016: 08FD or ch,bh.00434018: EB0B jmps .000434025 -------- (3).0043401A: F2 repne.0043401B: EBF5 jmps .000434012 -------- (4).0043401D: EBF6 jmps .000434015 -------- (5).0043401F: F2 repne.00434020: EB08 jmps .00043402A -------- (6).00434022: FD std.00434023: EBE9 jmps .00043400E -------- (7).00434025: F3 repe.00434026: EBE4 jmps .00043400C -------- (8).00434028: FC cld.00434029: E959585051 jmp 051533887.0043402E: EB0F jmps .00043403F -------- (9)

  • . -, .-, , , ( ).-, , - . , , , -. , -. , , , , - , , .. - , - . , - .

    - . - , , .

    pp- p- Visual Basic', - - ( VMWare). - -, , - , ( !) -, . ,

    ( ) . ( ). ?..

    , - , -- , - , . , . - , , ... , p-

    ? ! ! ! p- - , , - . .

    p- - - . p-, - , -.

    , - , , . -! , ? , -, .

    Pascal- Basic- - . p- ( ) . , , , - , - , IF THEN ELSE, ! , -, , - ? -

    | 69

    !

    DEDE - RTTI- - Etlin HTTPProxy ( :fRegister, CtrlCheckCon-trols, FormShow, IRegi-sterURLClick, bOK-Click .)

  • 70 |

    - , ... - crackme -, .

    . : --, p-, -, ---. -, - , . - . -. , - ...

    - ( ssee.exe, IInterrupt LList')seg000:1F29 loc_1F29:; CODE XREF: start+39B9vjseg000:1F29 call sub_1F04seg000:1F2C mov word_A5C, bxseg000:1F30 mov si, dxseg000:1F32 mov bp, [bx+38h]

    seg000:1F35 mov sp, [bx+36h]seg000:1F38 lodswseg000:1F39 mov bx, axseg000:1F3B jmp word ptr [bx]

    - (, , ), . - - , - - .

    - , - (, ), ... - , , (, , ), . . , - , - . , -, , ,

    , - !

    , , , . - . .

    , - - ( - ), - . - ( CD-COPS, Star-For-ce) , - -. - Star-Force - , , - Windows Star-Force. - . - , - ,

    - , - . , - . - - , - . - , - - ( !).

    - , . , - . : , . - , , ? , - , -

    RTTI - - !

    , - armadillo

  • . , - .

    , ? - ! - , . . - . (- , ). , - : InternetGetConnectedState , , , ( ). Macro Express , . - , InternetGet-ConnectedState , - . , , , , , - ... InternetGet-ConnectedState ! , - WININET.DLL, - InternetGetConnectedState, - , .

    - , Microsoft . ! - -,

    . , , - hiew' , . - - !

    ( ) - , ! , - . , .

    - , - -, . -, . VM Ware , VM Ware. - , .

    , - . - , VMWare, , , - - , - . ( , !) - VM Ware , - , . (, -). - , . ...

    -. , . , - -, AS-PI ( ) SPTI

    ( NT/XP -). . GetVolu-meInformation -. , , -, . - , Windows- ( ) .

    oonn ddeemmaanndd - , -, . . -, ( ), - , -, , . ?

    -, , , . -, , - ( , , - MAC- ). - , - ( -), -, .

    - -. -, . , - . , ( exe-

    | 71

    . - - -, !

  • 72 |

    ). - -, - . PE--, - , , .

    - , , , .

    , - char *p = 0;// 1DWORD my_icon = MY_ICON_ID;// 2

    if (!p) p = (char*) malloc(MEM_SIZE);my_icon = (DWORD) LoadIcon (hInstance, my_icon);

    , , - . p - - , (!p) (!) , . , ! -, - :(. , - , , , - ? ...

    LoadIcon - my_icon - , . , (, ), -, , . , -. , - :).

    - , -. (- ), ... , .

    ( MMicrosoft VVisual CC++ MMFC).text:00402A82 push ebp.text:00402A83 mov ebp, esp.text:00402A85 push 0FFFFFFFFh

    .text:00402A87 push offset unk_403748

    .text:00402A8C push offset loc_402C06

    .text:00402A91 mov eax, large fs:0

    .text:00402A97 push eax

    .text:00402A98 mov large fs:0, esp

    .text:00402A9F sub esp, 68h

    ...

    .text:00402BAA call ds:GetModuleHandleA

    .text:00402BB0 push eax

    .text:00402BB1 call _WinMain@16 ; WinMain(x,x,x,x)

    GGetModuleHandleA API- GetModuleHandleA . , / start-up-- WinMain ( GetVesion/Get-VersionEx, GetCommandLine, GetStartupInfo ..). , - h API- , , . 8Bh, , -, , (-) 55h. VirtualAlloc, CCh 8Bh . ! , - Windows API- -, .

    - Drx. mov eax,DrX - , , () , - , x86 - . , Drx, , ! , - , . , . SDK API- GetThreadContext, - , , - .

    . SEH, - ( , - ) - . fs:0, SEH-- ( ).

    fs:0. , , SEH-, fs:0 -

    - - , -, -. , , ESP, - (soft-ice ) .

    . , , - - ( , - ). - - , , , - , .

    $$pc . - - . - , - . , - , - ( ), - - . . , . $pc ( x86 eip) , - , -, . !

    - , soft-ice , . . , -- ( p-) soft-ice -. --, , -, , - , , -, .

  • , -, . , 9x, NT, . - Microsoft, Windows. , - , , . - , .

    , IceExt - soft-ice, -. , soft-ice+IceExt, OllyDbg. - -. soft-ice . . . - . , .

    -, rand(), . , , , 69h, -. -, - .

    , , , . - ! , - . , / , - , ! - : - - ( ) - . , , . -! , - , .., . - ...

    () ( -), , -

  • . - . - ! - . , , -. (, ) - ! , - . ( WM_CHAR DDE) ( - , WM_GETTEXT, - ).

    - IDA PRO. - , - . - ( -) , - - . - / -, () - , , -. p- - .

    -, . - - call eax - , , eax . - -, , - IDA, , . , . , , - , ! - , - call eax , . eax - , eax . - !

    , sub_sub_demo(int a, void *p, void *d){

    // printf(sub_sub_demo\n);if (--a) return ((int(*)(int, void*, void*))p)(a, p, d);return 0;

    }

    sub_demo(int a, void *p, void *d){

    // printf(sub_demo\n);if (--a) return ((int(*)(int, void*, void*))d)(a, p, d);return 0;

    }demo(int a, void *p, void *d){

    // printf(demo\n);((int(*)(int, void*, void *))p)(a, p, d);

    }main(){

    demo(0x69,sub_demo, sub_sub_demo);}

    . main - demo, sub_demo sub_demo, - , . , . ! .

    , .text:00401000 loc_401000:; DATA XREF: _maino.text:00401000 mov ecx, [esp+4].text:00401004 dec ecx.text:00401005 jz short loc_401018.text:00401007 mov eax, [esp+0Ch].text:0040100B push eax.text:0040100C mov eax, [esp+0Ch].text:00401010 push eax.text:00401011 push ecx.text:00401012 call eax.text:00401014 add esp, 0Ch.text:00401017 retn.text:00401020.text:00401020 loc_401020:; DATA XREF: _main+5o.text:00401020 mov ecx, [esp+4].text:00401024 dec ecx.text:00401025 jz short loc_401038.text:00401027 mov eax, [esp+0Ch].text:0040102B mov edx, [esp+8].text:0040102F push eax.text:00401030 push edx.text:00401031 push ecx.text:00401032 call eax.text:00401034 add esp, 0Ch.text:00401037 retn.text:00401040.text:00401060 _main proc near; CODE XREF: start+AF p.text:00401060 push offset loc_401000.text:00401065 push offset loc_401020.text:0040106A push 69h.text:0040106C call sub_401040.text:00401071 add esp, 0Ch.text:00401074 retn.text:00401074 _main endp

    IDA Pro , - main ! sub_demo sub_sub_de-mo . - loc_401000. - . ? ! - . - - -, main, , ( - ). , - , , - , , - ...

    , - , - . - , - . , - , - , - . -, IDA PRO.

    - . , , FindWindow , , Window--, . -, ( FindWindow/SetWindowText), - . .

    ? . , - , , -. -/ - , - .

    - -, . , - - !

    74 |

  • 2005 ( 3dgamers.ru):

    1 F.E.A.R.2 NEED FOR SPEED:

    MOST WANTED3 GTA: SAN ANDREAS4 PP 35 CALL OF DUTY 26 PRINCE OF PERSIA 3:

    TWO THRONES7 SPLINTER CELL:

    CHAOS THEORY8 FAHRENHEIT9 QUAKE 41 0 BATTLEFIELD 2

    + SPECIAL FORCES

    Action/FPS 2005 :

    1 F.E.A.R2 SPLINTER CELL:

    CHAOS THEORY3 CALL OF DUTY 24 GTA: SAN ANDREAS5 QUAKE 4

    y p 2005 :

    1 PP 32 Y P: P3 EX MACHINA4 : PPP

    + Y P5 2.

    H

    p 2005 :

    1 CIVILIZATION IV2 AGE OF EMPIRES 33 BLACK & WHITE 24 UFO: AFTERSHOCK

    5 2. H

    Adventure/Quest 2005 :

    1 FAHRENHEIT2 6:

    H P3 KING KONG4 MYST V: END OF AGES5 P.

    RPG 2005 :

    1 FABLE: THE LOST CHAPTERS2 PP 33 GOTHIC 2:

    NIGHT OF THE RAVEN

    Simulation 2005 :

    1 BLACK & WHITE 22 X3: REUNION3 SILENT HUNTER 34 EX MACHINA5 SIMS 2 NIGHTLIFE

    Racing Sim 2005 :

    1 NEED FOR SPEED: MOST WANTED

    2 JUICED3 LADA RACING CLUB

    3dgamers.ru, pp 2005 Pro Evolution Soccer 5

    MMORPG 2005 :

    1 GUILD WARS2 ULTIMA ONLINE:

    MONDAIN'S LEGACY3 P: P P

  • . -, 2D--, , - PopCap Framework (. ). - SDK, 7 . Zuma Dy-nomite. , - Boost (www.boost.org). Pop-Cap SDK . - Boost'. MSVC++ 6.0. , - VC 7 8, - PopCap.

    , - PopCap.

    // GameApp* anApp = new GameApp();// anApp->Init();// anApp->Start();// delete anApp;

    GameApp. SexyAppBase PopCap. - , - , - : , , - , -. Bo-ard, Widget GameApp. -

    : - () , - . Board - (), - : - - ( /), () - ( ). - LeftPanel, Widget ButtonListener, - , - . - Board.

    , . - PlayArea - Board. , ( - ). - ,

    , ! ?! ! ! ! - - ( ): , , TREAS -, , - :) | ([email protected])

    tetris

  • | 77

    . UML--, , - .

    GameDriver. -: , , . , , , - . , - , - GameLogic, GameDriver. - GameView, GameDriver. GameView , () . - 1020 Playfield. - TetrisBlock, - . UML- .

    // SexyAppBase::Init();// ( )LoadResourceManifest();// Initif( !mResourceManager->LoadRe-sources(Init) ){

    ShowResourceError(true);return;

    }if( !ExtractInitResources(mResourceManager) ){ShowResourceError(true);

    return;}// ,

    if( !mResourceManager->LoadResources(TitleScreen) ){

    ShowResourceError(true);return;

    }if( !ExtractTitleScreenResources(mResourceManager) ){

    ShowResourceError(true);return;

    }// m_titleScreen.reset(new TitleScreen(this));m_titleScreen->Resize(0, 0, mWidth, mHeight);m_titleScreen->Init();mWidgetManager->AddWidget(m_titleScreen.get());mNumLoadingThreadTasks = mResourceMana-ger->GetNumResources(Game);// mMusicInterface->LoadMusic(0, Musics/1984-Network.s3m);mMusicInterface->FadeIn(0, 0, 0.002, false);

    , , . - , - . XML--, () -: , . XTreas. Init , - . Tit-tleScreen , - . , Ga-me .

    () PopCap, , - , - : - B. , -

    . , , - .

    // mResourceManager->DeleteResources(TitleScreen);// m_board.reset( new Board(this) );mWidth = IMAGE_LEFT_PANEL->GetWidth() +320 + BORDER_SIZE;m_board->Resize(0, 0, mWidth, mHeight);mWidgetManager->AddWidget( m_board.get() );SetFocusToBoard();

    -, - ( ) . : , . , , , - . () - , , , . - AddedToManager, RemovedFromManager.

    void LeftPanel::AddedToManager(WidgetMana-ger* theWidgetManager){Widget::AddedToManager(theWidgetManager);// int width = IMAGE_BUTTON_AQUA->GetWidth();int height = mHeight IMAGE_BUTTON_AQUA->GetHeight();// m_newGame = CreateButton(BUTTON_NEW_GA-ME, New Game, mWidth/2 width/2, height);// theWidgetManager->AddWidget( m_newGame.get() );}

    --, , But-tonDepress.

    void LeftPanel::ButtonDepress(int theId){switch(theId){case BUTTON_NEW_GAME:m_app->OnNewGame();break;case BUTTON_PAUSE:

    , -

  • 78 |

    m_app->OnPauseGame();break;}}

    . , , .. - - . KeyDown ( - ) - , : -.

    void Board::KeyDown(KeyCode theKey){Widget::KeyDown(theKey);switch(theKey){case KEYCODE_SPACE:m_app->m_gameDriver.Rotate();break;case KEYCODE_LEFT:m_app->m_gameDriver.Left();break;case KEYCODE_RIGHT:m_app->m_gameDriver.Right();break;case KEYCODE_DOWN:m_app->m_gameDriver.Drop();break;}}

    , - New Game, , , -

    , . - Update() GameDriver.

    // , if(!m_isNewGame && !(m_gameState & GAME_OVER) ) return;m_gameView.SetGraphics( g );// if( m_current ){

    // if( elapsed > m_gameLogic.GetSpeed() && !m_isPaused ){// if( m_playfield.CheckBlock(*m_current, m_currentX, m_currentY+1) ){// m_playfield.InsertBlock(*m_current, m_cur-rentX, m_currentY);//, if( IsGameOver() ){GameOver();secStart = secEnd;return;}m_current = 0;//, () m_playfield.GetFullRows(bottom, count);if(!count){// , ThrowNextBlock();// gSexyAppBase->PlaySample(SOUND_BLOCK_DOWN);}else{

    //

    // m_animState = CLEAN_ROWS;// gSexyAppBase->PlaySample(SOUND_FULL_LINE);}}else{++m_currentY;}

    secStart = secEnd;elapsed = 0;}}// if(m_animState == NORMAL){// DrawNormal(elapsed / m_gameLogic.GetSpeed());}// else{

    // if( elapsed > LINE_ANIM_SPEED && !m_isPaused ){

    // m_playfield.Update();secStart = secEnd;elapsed = 0;m_animState = NORMAL;// ThrowNextBlock();// m_gameLogic.UpdateScore(count);bottom=count=0;return;}// ( )DrawSfx(elapsed/LINE_ANIM_SPEED, bottom, count);}

    , , . , , . , - , , . , , . , ( ), . - . - ( -) , . - . .

    void Playfield::Update(){SquareCoord bottom, count;//, GetFullRows(bottom, count);if(count){

    // RemoveRows(bottom, count);}

  • }void Playfield::GetFullRows(SquareCoord & bot-tom, SquareCoord & count) const{count = 0;bottom = -1;// for(int i = m_rows.size()-1; i != 0 &&!m_rows[i].IsEmpty(); --i){

    // if(m_rows[i].IsFull()){

    // if(count == 0){bottom = i;count++;}elsecount++;}else

    // , if(count != 0) break;}}

    void Playfield::RemoveRows(SquareCoord bottom, SquareCoord count){//, assert(bottom>=0 && bottom=1 && count0 && bottom-count bottom-count; --i){// assert( m_rows[i].IsFull() );// m_rows[i].Reset();}// for(i = bottom; i != 4; --i ){m_rows[i] = m_rows[i-count];}}

    , - , GetFul-lRows(). , -

    , , RemoveRows(). - - ThrowNextBlock.

    void GameDriver::ThrowNextBlock(){// if( !m_isPaused ){assert(m_current==0);// m_block = m_nextBlock;// m_nextBlock = TetrisBlock();// for(int i = 0; i < rand()%4; ++i )m_nextBlock.Rotate();

    // m_current = &m_block;m_currentX = 3;m_currentY = -2;// if(m_pushedSpeed>0){m_gameLogic.m_levelInfo.m_spe-ed = m_pushedSpeed;m_pushedSpeed = 0;}}}

    , - . -. - , . , - , , - , , - .

    () . , - . - - , . , - -

    . , ! . , . , 20 000 , , - .

    - - . , - - . -

    , , STL Boost. , , shared_ptr Boost.

    - - : Lua, Python, XML .. , - .

    - - , -. -. - , -, ..

    | 79

    2D- POP-CAP FRAMEWORK BOOST

  • 80 |

    , - , . , - , , , . - , - |TONY ([email protected])

    3D-:

    , . -, , - . , , , . , , -: , , ! - . -

    , , - , PC, . . -, , - face- , , - . -, , PC,, , , , , .

    RenderWare, Unreal Engine, Source . ? ! , - , - . , - , - . , , , - . , . , - , - .

    , . ( In-die team - ) - -. , - , - . Ogre 3D (Opensource graphics engine),

    . , -, Ogre (www.ogre3d.org.ru). : ( 2005) Lesta , . Lesta , - Ogre - - (Win-dows Linux), - ( 1.0.6). - Ogre DirectX

    7.0, DirectX 9.0 openGL 1.5, , , -, - -wpapper'. - : Cg, HLSL, GLSL (, - ). 3D- -, -: Milkshape3D, 3D Studio Max, Ma-ya, Blender Wings3D. -

    ooggrree 33dd

    1 WWW.OGRE3D.ORG2 WWW.NEBULADEVICE.ORG3 IRRLICHT.SOURCEFORGE.NET4 WWW.DEVMASTER.NET/ENGINES

  • Ogre . Ra-don Labs Nebula Engine, - - - , Ogre. , Nebula - . , - C++- . , - Nebula C++. Ogre , Nebula - Windows DirectX. - - .

    (HLSL FX- DirectX), - , , . - Ogre, - - ( -!), - - - - . - 2005 , - 2.0.

    | 81

    nneebbuullaa ddeevviiccee

    iirrrrlliicchhtt eennggiinnee - Irrlicht Engine. -- (Windows Linux) - DirectX (8.1, 9.0), openGL 1.5 - . , (- ), . 3D--, C++ - . - . - , , .. -, - - 2005 , - 0.14.0.

    - Irrlicht Engine

    - . - , , - , - BSP Octree. - - . - . , - - .

    , - Commu-nity.

    - - (), - ( -) - -. , - , - - , - .

    Radon Labs

    , -

  • 82 |

    Criterion ( Electronic Arts), UE3, . PlayStation 2,PlayStation Portable, Xbox, GameCube, PC N-Gage. -, RenderWare Studio 2.0 - - .

    . - RenderWare ( Criterion) - - - EA :). , -, FIFA 2005 FIFA2006?.. , ?!

    , . :). - , Epic Games Unre-al . - Un-real Engine 3, - . DirectX 9.0, Xbox 360 PlayStation 3. - , 64- (HDR), ( - ), ( - ), - . ( ) . -

    , - - . UE3 Novo-deX (, - Ageia, 2006 -). - -, . , - - , , - . , - -, , Rag-Doll. AnimTree .

    - 3D--

    . - . : , NPC, , . - ( , ), ( - ), - . - - , - . - UnrealKismet. - UnrealMatinee. - , 5.1 Dolby Digital. - , . UnrealEd - - .

    , , - Unreal. - UDP, - - 64- , - 16- ., , -. , , Duke Nukem Forever Star Wars: Republic Commando. Unre-al (www.unrealtechnolo-gy.com/html/powered/released.shtml). DTF :www.dtf.ru/articles/read.php?id=1102. UE3 - $750 ., .

    rreennddeerrwwaarree

    uunnrreeaall eennggiinnee 33

    -

  • , . - , - . - : , Doom 3, add-on Doom 3: Resurrection of Evil, Quake 4, Pray,

    Enemy Territory: Quake Wars MegaTexture. - Quake 3 , , - . , -

    Quake. ID , D3 - .

    Unreal Engine 3. , , , - , - Source. - , Mega-Texture - . - Doom 3 -, - , -, .

    | 83

    ssoouurrccee eennggiinnee

    ddoooomm 33 eennggiinnee

    , , Valve Source, - Half-Life 2, Day of Defeat: Source, Coun-ter Strike: Source. Troika Games ( , - ) RPGVampire the Masquerade: Bloodlines, Smi-ling Gator Productions MMORPG Twilight War: Afterthe Fall, Extreme Online Rolepla-ying Game (XORG).

    ,Source Windows- DirectX. - ++. , - , -, -. Unreal Engine 3, - Source , , ..

    Source , - 1999. -, , , . - - Havok 2. -, Half-Life 2 gameplay.

    Valve - . - Source - , - - , , - . - , 5.1. . - . -, Source, - : -

    , , , - 3D-. Source, -, , -. , Valve , - , - -. .

    HDR

  • , . , , . , . - , .

    - , ,. - . - . -, , , , , - -. . - , : - , - , . , . - , ( ++). , Lua Python, - - ( - !). , - . , - , - ? , . , -, - . , Crazy Eddie's GUI. , XML -. , , -

    , .

    - -, . - , , , , , , - . : . (root) - ( -) (), . - - . . - -, : . .

    . - , - - . -, , , , . , , : -, , .

    , -. - . -,

    , -. - (BSP, Octree). - , - , , - . - - .

    ,, . -, , - (), - -. , . - . , ?, , , - . - ( - ), - . - .

    , , ().