Spiludvikling

Begreber

Game Engine

En Game Engine repræsenterer en bestemt måde at organisere sin kode på, hvor de mere generelle opgaver i f.eks. en Windows applikation separeres fra de mere specifikke opgaver i relation til selve spillet. Et vigtigt design princip er i denne forbindelse mønsteret Separation Of Concern. De specielle opgaver i applikationen kan samles i en Model klasse og en UI klasse. I applikationen associeres objekter af Model og UI klasserne med et objekt af Engine klassen.

Fordelen ved denne opbygning er, at man kan opbygge sin Game Engine med faciliteter, som man kan genbruge i alle fremtidige spil af samme type. Desuden gør det udviklingen af spillet enklere, således at man som udvikler kan fokusere på det vigtigste: konstruktion af koden til selve spillet.

De fleste kommercielle spiludviklere anvender en Game Engine, som de ofte selv har udviklet og forfinet gennem flere år - herved får man skabt en Engine, som man gradvist har lært at kende, og som passer perfekt til den type spil, man udvikler.

I andre tilfælde anvender man en Game Engine, som andre har udviklet, og som indeholder et sæt faciliteter, som man ønsker at bruge til en bestemt type spil. Dette er f.eks. tilfældet med flere kendte spil af FPS-typen (First Person Shooter).

Der er også adskillege gratis Game Engines i Tutorials og Samples rundt om på internettet. Disse kan anvendes som eksempler på, hvordan Game Engines opbygges, og hvilke funktioner de typisk indeholder.

Skemaet herunder giver en oversigt over den vigtigste funktionalitet i en Game Engine:

Metode Vigtigste indhold
Constructor Opsætning af skærmbilledets dimensioner og caption
InitializeGraphics Opsætning af device
Opsætning af view matrix - kameraets placering og synsretning
Kald af RestoreDevice
Initiering af de involverede modellers objekter
RestoreDevice Opsætning af parametre til håndtering af dybdebuffer og lys
Opsætning af lyskilder
Opsætning af projektionsmatrix
Render Blankstilling af Backbuffer og dybdebuffer med ønskede baggrundsfarve
Tegning af modellens grafik og tekst - sker ofte ved kald af Render metoder for hvert af modellens objekter
UpdateModel Opdatering af scenen
Keydown Indlæsning af tastetryk fra tastaturet
Mousedown Indlæsning af knaptryk fra tastaturet

Managed code

Managed code is code written in one of over twenty high-level programming languages that are available for use with the Microsoft .NET Framework, including C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, and C++. All of these languages share a unified set of class libraries and can be encoded into an Intermediate Language (IL). A runtime-aware compiler compiles the IL into native executable code within a managed execution environment that ensures type safety, array bound and index checking, exception handling, and garbage collection.

By using managed code and compiling in this managed execution environment, you can avoid many typical programming mistakes that lead to security holes and unstable applications. Also, many unproductive programming tasks are automatically taken care of, such as type safety checking, memory management, and destruction of unneeded objects. You can therefore focus on the business logic of your applications and write them using fewer lines of code. The result is shorter development time and more secure and stable applications (Help - DirectX 9.0 for Managed code).

Material

Beskrivelse af det materiale en overflade består af.

Mesh

Maske, net, garn, gitter, (indgreb)

"You might find yourself wondering, what exactly is a mesh? When rendering 3D graphics, everything that is rendered onscreen consists of one to many triangles. A triangle is the smallest closed polygon that will always be coplanar. (Rendering primitives that are not coplanar isn't very efficient.) You can build virtually any object by using a large number of triangles. A mesh is simply a data store for this triangle (or geometry) data." Tom Miller, kap. 4.

Et Mesh er en struktureret liste med punkter (vertices), som definerer et antal flader (trekanter), som udgør overfladen på en figur.

Anvendes f.eks. i Flight Simulator SDK, hvor mesh betegner det gitter eller netværk, som bliver placeret ud over jordens overflade - indenfor hvert felt i gitteret placeres en texture, som kan være en standardgrafik (f.eks. ørken eller skov) eller et rigtigt billede baseret på et luftfoto.

I forbindelse med DirectX anvendt om det gitter bestående af trekanter (eller andre polygoner?), som man bruger til modellering af 3D objekter (f.eks. en tepotte).

Man kan selv fremstille sine Meshes; men det forudsætter, at man har adgang til et særligt grafisk konstruktionsprogram, som kan udføre denne funktion - f.eks. MeshX.

Projektion

Der kan vælges mellem to grundlæggende forskellige former for projektion

Texture

Sammensætning, struktur, overflade, materiale (Material).

Texture kan indlæses fra en fil (jpg-format, png-format, bmp-format eller lignende).

Render

Gengive, oversætte. Rendering: gengivelse

.X files

Beskrivelse af en model opbygget af et Mesh gemmes typisk i en .X fil. En beskrivelse af dette filformet findes her.


Oprettet: 21. februar 2007
Sidst opdateret: 27. april 2007

Index