Avatar billede mickni33 Nybegynder
10. november 2004 - 16:08 Der er 17 kommentarer og
5 løsninger

Matematiske teorier i spil

Hvilke matematiske teorier bruges der hvis man skal lave 3-d spil ?

Sidder man og programmerer dissse teorier i C/C++ ?

eller findes der værktøjer som kan oprette f.eks, 3-d personer der skyder på hinanden hvorefter man så bestemmer deres bevægelse via C/C++ ?
Avatar billede arne_v Ekspert
10. november 2004 - 16:13 #1
Jeg mener at firmaer der udvikler 3D spil ansætter en del PhD'ere i matematik,
så et eller andet må det nok kræve !

:-)

Jeg kender ikke nogen detaljer.

Jeg formoder at det meste af den kode bliver lagt ind i genbrugelige
biblioteker. Alt andet ville da være fjollet.

Men om det er tilgængelige biblioteker eller om det er spil firmaernes egne
som de betragter som top hemmelige forretnings hemligheder aner jeg ikke.
Avatar billede bufferzone Praktikant
10. november 2004 - 18:02 #2
Man bruger mange forskellige teorier i spil. jeg nævner i flæng:

Spilteori (der er der faktisk en matematisk teori der hedder, bruges bl.a. i freds og konflikt spild)
Shannons informations teori
Shortest path og operations analyse

Mange af disse teorier danner grundlaget for de resultats algoritmer spildene bygger på. Ekspemlevis vil et spild som CS anvende dele af operationsanalyse teorierne til at beregne skaden på figurene efter beskydning eller eksplotioner.

Shortest path anvendes til AI (kunstig inteligens) for virtuelle enheder og spildere
Avatar billede bromer Nybegynder
10. november 2004 - 18:19 #3
bufferzone: Hvorfor mener du at operationsanalyse bliver brugt til sådanne beregninger. De implementationer jeg har lavet af operationsanalyseteori har været rimelig tungt. Jeg tror det er hurtigere med en eller anden passende heuristik til hver type eksplotion.
Avatar billede arne_v Ekspert
10. november 2004 - 19:51 #4
Spil teori er vel primært en økonomisk eller ihvertfald samdundsvidenskabelig disciplin.

Og ret irrelevant i "3-d personer der skyder på hinanden" spil.

Jeg tror heller ikke på operations analysen.

Så vidt jeg ved bruges matematikken primært til at få bevægelser og lys effekter
til at virke realistiske.
Avatar billede bufferzone Praktikant
10. november 2004 - 20:08 #5
Jeg arbejder bl.a. med simulation af militære operationer (jeg er på hærens officersskole) og grundlaget er altid operationsanalyse. Når det er sagt, så bliver de færdige modeller ofte noget andet, enten fordi de meget tunge algoritmer simpelthend kræver formange ressourcer eller fordi resultatet bliver overrealistisk i forhold til det pædagogiske mål man har med simulationen. De praktiske implementationer er normalt meget mere simple, men de låner deres slægtsskab og den teoretiske baggrund i operationsanalysen.

Giver det mening???
Avatar billede mickni33 Nybegynder
10. november 2004 - 21:03 #6
hmmmmm lyder meget interessant.
Men ang. matematikken så arbejdes der med Matrix og vektor har jeg da fundet ud af :-)
Avatar billede bufferzone Praktikant
10. november 2004 - 21:13 #7
Jeg tror problemet ligger i at vi taler lidt forbi hinanden. Et er den matematik der ligger i at skabe grafiken, den interessere ikke mig så meget, det jeg taler om er spillets intilligens om du vil, de algoritmer der afgør resultatet, men  dybest set er det hele jo matematik
Avatar billede sovsekoder Nybegynder
10. november 2004 - 22:58 #8
jeg er ikke spil-programmør, så ta' mit svar som en guideline :)

>Hvilke matematiske teorier bruges der hvis man skal lave 3-d spil ?
der er rigtigt meget matematik, og der er meget teori...google kan anbefales f.eks sider som gamedev.net, bliver diverse teorier diskutteret livligt. Det kan være teorier på lavt niveau som pixel-precise-collision, eller på højere niveau f.eks. computer AI.

>Sidder man og programmerer dissse teorier i C/C++ ?
mjaaaeee, det gør man. Men hvilke teorier afhænger af dit arbejdsområde:
udvikler man et spil, udvikler man en game-engine, udvikler man et framework til behandlingaf grafik/grafik engine.

men kan nok sige at jo længere "ned" mod grafik engine, og grafik framework - jo mere "basale" (men stadig svær matematik :D) ting udregner man. Jo højere op mod programmering af selve spillet jo mere overodnet er det, det man arbejder med.. hmm, det var nok lidt vrøvlet! det jeg nok prøver er at sige, at hvis du skal lave et spil så køber man funktionaliteten til at lave en flot "stjerne himmel" ell. et flot terrain, og så er det algoritmer/teorier der vedrører dit spil som du implementerer...


>eller findes der værktøjer som kan oprette f.eks, 3-d personer der skyder på >hinanden hvorefter man så bestemmer deres bevægelse via C/C++ ?

ja der er "værktøjer", hvis man vil lave spil er det en rigtig god ide at finde sig en gameengine (det er værktøjet!).

En gameengine tager sig af de mere baseale ting som:
vise figurer, beregne bevægelse/animationer af sine 3d figurer, finde ud af om figurerne støder sammen. fysik/partikel-engine med tyngedekraft og eksplotioner osvosv.

Det kan ta' rigtigt lang tid at lave en gameengine. Derfor køber man ofte denne del og bygger sit spil ovenpå.
Avatar billede sovsekoder Nybegynder
10. november 2004 - 23:03 #9
på garagegames.com kan du se et eksempel på en "game-engine" torque hedder den. Jeg har købt den, men ikke fået taget hul på den endnu (man ka' også  købe en bog som giver lidt tips til den, og hvordan den bruges).

når man køber en game-engine får man source-coden med (torque er f.eks. skrevet i c++). så man kan "rette" den ind, til dine specifikke behov, hvis det er nødvendigt.

men! der findes også "gratis" game-engines, jeg kender bare ikke nogen der har erfaringer med dem, så jeg ved ikke hvor "god" stand de er i. Men prøv evt. google: "game engine" free.

...det her med spil, og spilprogrammering - det er et kæmpe område! (men sjovt og lærerigt :D)
Avatar billede sovsekoder Nybegynder
10. november 2004 - 23:09 #10
nåe ja, der er også blitz  basic - når nu jeg har forvildet mig ind i noget med at lave spil. Blitz basic er et script sprog til en game-engine. Og når man sidder med den slags, så skal du "kun" koncentrere dig om spillet og de algoritmer der nu skal bruges her
Avatar billede sovsekoder Nybegynder
10. november 2004 - 23:09 #11
tror deres hjemmeside er blitzbasic.com
Avatar billede mickni33 Nybegynder
11. november 2004 - 08:44 #12
Det er nogle gode svar i alle er kommet med så det kigger jeg lige igennem.
Der skal nok blive lidt point til jer alle.

Husk at lave svar
Avatar billede sovsekoder Nybegynder
11. november 2004 - 09:38 #13
svar - held & lykke :)
Avatar billede arne_v Ekspert
11. november 2004 - 09:47 #14
svar fra mig
Avatar billede kamikaze Nybegynder
11. november 2004 - 13:53 #15
Jeg har brugt det meste af min fritid de seneste 2 år på at studere dette. Og tror mig, der er MEGET matematik i at lave et 3d spil. Som mickni33 er inde på tager det meste grafik-relaterede matematik udgangspunkt i linær algebra, nemlig matrix og vector matematik.

Grundlæggende kan man vælge at licensere en game-engine hvor det meste matematik er implementeret (og forhåbentlig testet) i forvejen, eller man kan lave det hele fra bunden selv (ikke noget man bare lige gør).

Hvis du har interesse for spiludvikling bør du kigge på gamedev.net - der er masser af tutorials/artikler til at komme igang på. Men lad være med at tro at du kan lave HalfLife2 eller Doom3 som noob. De fleste der går igang med at lave spil (har læst 97% et sted) får aldrig færdiggjort noget spilbart, simpelthen fordi deres mål er for urealistiske. Det bedste råd er at starte med at lave simple 2D kloner (fx. tetris, pac-man, shot-em-up arcade spil etc.) og hvis du ikke kører sur i det er der måske en spiludvikler gemt i dig :o)
Avatar billede mickni33 Nybegynder
11. november 2004 - 14:58 #16
Jeg er datamatiker samt ingeniør studerende så nu synes jeg at jeg ville prøve noget af det teori man har lært indtil nu bla matematik og programmering..
Så når jeg snakker om spil er det ikke et færdig udviklet spil men måske bare lave en figur som kan gå hen ad en vej men med så realistiske bevægelser som muligt... når det er gjort er mit projekt færdigt :-)
Avatar billede bromer Nybegynder
11. november 2004 - 15:22 #17
Emner som "Bazier flader", "Hermite flader" (og for begge de tilsvarende kurver, "Zbuffering", "Phong Shading" etc er noget du kan undersøge.. det er forholdsvist simpelt...
Avatar billede kamikaze Nybegynder
11. november 2004 - 15:34 #18
mickni33 >> Ja, 'bare' lave en figur der kan gå henad en vej....Det er altså ikke 'bare'. Det kan bla. laves vha. en teknik der kaldes skinning eller skinned meshes. Du opbygger en bone-struktur (et skelet) og hver vertex i mesh'en tildels en weight pr. bone, dvs. hvor meget et bone påvirker verticerne. Men det er stadig et stort arbejde at lave, og også at forstå alle detaljerne.

Hvis du downloader DirectX SDK'en fra microsoft er der en række samples med, bl.a skinned mesh'es. Hvis du tager udgangspunkt i denne kode kan du nå ret langt på kort tid. Hvis du ikke har arbejdet med 3D før vil jeg anbefale at tage nogle af de samples/tutorials der er under 'beginner' først.

bromer >> jeg mener nu at der er mere elementære ting at tage fat på (og forstå) i første omgang. Først og fremmest hvordan man laver et vindue med et grafisk device (DirectX og/ellerOpenGL) organiserer sin geometri i vertex- og index buffere, hvordan man bevæger dem, culling etc. etc.
Avatar billede kamikaze Nybegynder
11. november 2004 - 15:42 #19
mickni33 >> Der er reelt 2 muligheder for valg af 3D api: Direct3D (en del af DirectX), og OpenGL. Nedenstående er links til gode tutorials til begge:

OpenGL: http://nehe.gamedev.net/ (både begynder og lidt mere avanceret)

Direct3D: http://www.andypike.com/tutorials/directx8/ (begynder)
          Direct3D SDK'ens samples (begynder, øvet og avanceret)
Avatar billede mickni33 Nybegynder
11. november 2004 - 18:39 #20
kamikaze >>

:-) det er vel 'bare', i forhold til at lave et helt spil :-)

Downloadede SDK'en i går, og er netop ved at installerer den.

Har også fået installeret min 'gamle' VC++ 6.0, var ellers ikke meget for det da jeg nu bedst kan lide Builder'en :-)

kigger lige på dine tutorials senere i aften.
Avatar billede mickni33 Nybegynder
12. november 2004 - 10:28 #21
<< kamikaze
husk lige at lave svar.

Jeg læste et sted om et spil der var opbygget ved hjælp af polygener, men det lød som om at det var en dårlig løsning. Hvorfor det ?
Avatar billede kamikaze Nybegynder
12. november 2004 - 13:02 #22
hmmm....det giver ikke mening at sige at et spil er opbygget af polygoner, men grafikken i ethvert 3d spil er grundlæggende opbygget af trekanter (også kaldet primitiver eller faces eller polys). Jo mindre trekanterne er, jo finere er modellen. Fx. er en kugle opbygget af mange trekanter (gerne over 100), og jo flere der er, jo mere glat ser overfladen ud (groft sagt - det kommer i virkeligheden også an på den shading model man anvender m.m.), mens en kasse kun består af 12 trekanter (2 pr. side). Det der så er målet med en renderingsengine er at vise så mange trekanter som muligt pr. sec.

Du kan downloade et 3d modelleringsprogram der hedder milkshape3d i 30-dages trial for at få et indtryk af hvordan det fungerer: http://www.swissquake.ch/chumbalum-soft/ms3d/download.html
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester