mboost-dp1

3D Programmering


Gå til bund
Gravatar #1 - milionerking
18. apr. 2010 18:49
Hej alle sammen

Dette lyder nok lidt vildt, men jeg har uden videre besluttede mig for at lave et MORPG(Det skulle jo gerne ende med lidt held som et MMORPG) spil, og det skal skrives fra bunden.
Ja jeg ved godt det tager en evighed at lave det, men jeg har masser af tid og interresse til at lave et stort 3D spil.
Iden er at det skal havde samme princip som spil som WoW, AoE, Runescape, m.m. Bare uden hele krigs delen.
Mit endtil videre problem er at jeg ikke ved hvilket "Sprog" jeg skal skrive det i.
De skal gerne være et sprog hvor tingene køre helt glat, og sjældent har problemer.

Jeg håber der er nogle gode ider.
På forhånd TAK!
Gravatar #2 - arne_v
18. apr. 2010 18:59
#1

3D grafik delen skal laves i C/C++ måske endda med en slat assembler.
Gravatar #3 - dkbooster
18. apr. 2010 19:01
#1 Var det måske en ide at kigge på Unity

Der skal læses og læres - men det er måske knap så uoverskueligt som at starte helt fra bunden...
Gravatar #4 - arne_v
18. apr. 2010 19:07
#1

Diverse logik client og server side kan kodes i hvad som helst.
Gravatar #5 - Mort
18. apr. 2010 19:23
Som #2 skriver kan du godt skrive det i C/C++, men min egen erfaring siger at produktiviteten er langt højere i C#.

Dog synes jeg at du skal kigge på hvilke komponenter der findes i forvejen (Unity er et godt bud til 3D enginen). At skrive et MMORPG alene er et stort job og du bør undgå at lave så mange af komponenterne som du overhovedet kan.

Jeg var selv for en del år siden med i et projekt som skulle blive til et MMORPG. Min opgave var at skrive 3D enginen, hvilket da også gik fint, men det tog flere måneder at få en 3D engine til en tilstand hvor den kunne bruges fornuftigt.

Projektet endte med at jeg var den eneste der rent faktisk kunne kode og da jeg ikke havde flere år til at skrive alting selv så faldt det til jorden. Det skal dog ikke afholde dig fra at prøve selv, bare sørg for ikke at byg alting fra bunden hvis du nogensinde vil have et færdigt resultat.
Gravatar #6 - mazing
18. apr. 2010 23:14
Er det teknologien og teknikken der tiltrækker dig? Eller er det tanken om at lave et spil?

Hvis du vil lave et spil, kan det ikke siges tydeligt nok: START SIMPELT. Pong, Tetris, Pacman. Først efter du har lavet et simpelt spil, kan du begynde at tænke over et MORPG.

#2
C++ er ikke nødvendigt medmindre det er et rigtig AAA spil der skal laves. :) Der er massere af saft i moderne CPU'er til at kunne drive en 3D verden og sende data til GPU'en. De fleste performance "gotcha's" har med GPU'en og dens API'er at gøre, som jo er ens på tværs af sprogene.
Gravatar #7 - Ralc
18. apr. 2010 23:20
#1

Hvad er formålet med at udvikle dit eget spil?

Hvis det er for at lære at programmere eller blot hygge, så ville jeg sige at du skulle holde dig fra at bruge færdige løsninger som Unity (#3) og hvad der ellers er derude. Du får aldrig rigtig mulighed for at finde ud af hvad der virkelig foregår, og mens resultatet måske er sejt, så er det aldrig helt 'dit eget'. Sådan har jeg i hvert fald haft det.

Mht. sprog så er C++ langt det mest udbredte indenfor det felt, og klart anbefalelsesværdigt. Men hvis du er helt ny indenfor programmering, som du intet skriver om, så kan C++ godt være en sæk at lege med. I så fald bør du starte med C#/Java eller andre forholdsvis lette sprog. Til grafikken anvender man normalt DirectX eller OpenGL, alt efter hvad man er til. DirectX er nok mest udbredt, men de kan potentielt set det samme. Begge API'er kan bruges på tværs af de sprog nævnt i tråden, så der er sådan set frit valg.

Hvis du forsøger at skabe et spil for at tjene penge på det, så ville jeg klart vælge en færdiglavet engine. Så er der langt større chance for du rent faktisk ender med et brugbart produkt.

Helt generelt er jeg dog enig med #6. At starte med et MMORPG er et gigantisk projekt, og det er så godt som garanteret at du går i stå på et tidspunkt. Gør som #6 siger, start småt, og gå videre med det hvis du synes det er noget.
Gravatar #8 - arne_v
18. apr. 2010 23:53
#1

Hvordan står det iøvrigt til med matematikken?

Den slags grafik kan kræve en hel del af matematikken.
Gravatar #9 - Windcape
19. apr. 2010 04:08
a) For god sake, find en pre-lavet rendering engine som bruger standard 3D komponenter, fra say, 3D Studio Max eller Blender.

b) Netværksprogrammering er et studie i sig selv, køb nogle bøger, og LÆS dem.

c) Skab et community der kan hjælpe med at lave 3D miljøer til din verden. Lær omkring heightmaps, osv.

Jeg vil f.eks. anbefale at du kigger nærmere på emulators/private-servers til DaOC, Lineage, eller lign. (Hold fingerne fra WoW, for meget politik!).

Men umiddelbart skal du regne med at du har brug for at læse 6-8000 siders tætskrevet tekst på engelsk, før du kan starte seriøst.

Og hvis du ikke er skræmt væk endnu, good luck :p
Gravatar #10 - illishar
19. apr. 2010 11:18
Det "primære" sprog i 3D-modellering er vector og matrix-beregninger.
D.v.s. at det kunne ligne noget i retning af følgende pseudo:

d = det(k*v1 x v2 dot v3)

Når du først har styr på den del, så vil valget af kode-platform eg. C, C++, Java, C# være trivielt ;)

... og lige for at afskrække lidt, så koster et lille standard (ikke-multiplayer) 3D-spil ca. 50M kr. at udvikle. Hvilket vil sige, at selvom du er total 1337 til både matematik, programmering og grafisk design, så vil det tage dig ca. 78 år (200 arbejdsdage per år á 8 t) at opbygget et basalt 3D-spil, klar til salg.
(De 50M kr. kommer fra firmaer som IO og Deadline, så vidt jeg husker.)
Gravatar #11 - illishar
19. apr. 2010 11:25
milionerking (1) skrev:
... Bare uden hele krigs delen.


Hvad er der så tilbage? Sims online?
Gravatar #12 - PowerPatrick
19. apr. 2010 13:53
illishar (10) skrev:
... og lige for at afskrække lidt, så koster et lille standard (ikke-multiplayer) 3D-spil ca. 50M kr. at udvikle. Hvilket vil sige, at selvom du er total 1337 til både matematik, programmering og grafisk design, så vil det tage dig ca. 78 år (200 arbejdsdage per år á 8 t) at opbygget et basalt 3D-spil, klar til salg.
(De 50M kr. kommer fra firmaer som IO og Deadline, så vidt jeg husker.)
Undgå helst at generalisere, for jeg er uenig. Kig for eksempel på denne fyrs fangame, som er lavet helt fra bunden af ham selv med egen engine og grafik, hvor han har opnået de samme kvaliteter som et helt firma. Og desuden, så glemmer du også open source, hvilket kan accelerere udviklingen noget så kraftigt, så længe projektet promoveres ordenligt. Men jeg kender godt Milionerking i virkeligheden. På den matematiske område fejler han ikke noget, men til gengæld mangler han en hel del erfaringer indenfor softwareudvikling og grafisk design generelt, hvilket han så prøver at spørge lidt til råds om, selvom der reelt ikke er nogle nye bud, end dem jeg allerede havde givet ham. Men jeg har selv fortalt ham, at sådan noget kan være noget så tidskrævende. Men jeg er enig i, at han helst skulle bruge en eksisterende 3D engine, og jeg har allerede foreslået noget som CryEngine overfor ham, hvor han kan opbygge de fleste elementer med Sandbox2. Hvis ellers han får lært lidt mere C++, så kunne han bruge alternativer som Ogre3D eller Irrlicht. Hvis der ellers er et bestemt programmeringssprog han vælger, så er der en database over forskellige slags game engines på DevMaster: http://www.devmaster.net/engines/
Gravatar #13 - Windcape
19. apr. 2010 14:00
Ogre3D er rimeligt, men DirectX er nu engang et bedre valg for begynderen, hvis man ejer en Windows maskine.

Sorry, men dokumentation, litteratur, tutorials og udviklingsværktøjer er bare *så* meget bedre til DirectX.

Og så skal man ikke til at bekymre sig om at finde biblioteker til lyd, 2D, osv.
Gravatar #14 - illishar
20. apr. 2010 09:33
Windcape (13) skrev:
Sorry, men dokumentation, litteratur, tutorials og udviklingsværktøjer er bare *så* meget bedre til DirectX.


De er endnu bedre til OpenGL ;p
DirectX er temmelig indspist og hvis man kaster sig ud eks. DirectX.NET er der tæt på ingen dokumentation. (Så man skal som minimum holde sig til C/C++-udgaven som nybegynder i DirectX.)
Gravatar #15 - Mort
20. apr. 2010 10:16
SlimDX er en markant bedre .NET wrapper af DirectX end DirectX.NET er. SlimDX understytter DirectX 9, 10 og 11, hvor DirectX.NET kun er til DirectX 9 og desuden er blevet discontinued.
Gravatar #16 - mazing
20. apr. 2010 10:38
#15 Hørt. SlimDX er mums.
Gravatar #17 - Windcape
20. apr. 2010 12:19
illishar (14) skrev:
DirectX er temmelig indspist og hvis man kaster sig ud eks. DirectX.NET er der tæt på ingen dokumentation.
DirectX.NET er deprecated. Du skal kigge på XNA, som er det best dokumenterede 3D framework til dato.

Og sandsynligvis det med de bedste defacto værktøjer. DirectX har mere legacy, men udover det er XNA en klar vinder på alle punkter.

Jeg vil da også anbefale at installere VS2010 + XNA Game Studio, hvis man vil "hurtigt" i gang med at kode sig eget 3D spil.
Gravatar #18 - Benjamin Krogh
20. apr. 2010 15:22
#17 for gods' sake, underbyg nu dine påstande. (At jeg bitcher over at det ikke er begrundet, gør det ikke nødvendigvis forkert!)

Eks:
Det bedst dokumenterede blabla -- Målt på hvilke parametre? Fyldestgørenhed er ikke videre nemt målbart.

Sandsynligvis det med de bedste defacto værktøjer. Hvad betyder defacto i denne sammenhæng? Hvorfor er det de bedste?

XNA er vinder på alle punkter. Crossplatform venlighed må være et at de punkter. Disproofed!

#1 jeg siger ikke at XNA ikke er det bedste, eller at OpenGL er. Men det er vigtigt for dig at gøre dig klart hvad du vil med spillet, hvilket miljø du vil køre det i etc. Vil du eks. køre det på en iPhone er XNA med rimelig sandsynlighed totalt crap. Hvis du vil køre det på en alm Windows maskine kan man sagtens tænke sig at XNA er win.
Gravatar #19 - Windcape
20. apr. 2010 16:58
Modsat så er det stadigvæk C# man skal lære hvis det er til iPhone ;-)


Benjamin Krogh (18) skrev:
for gods' sake, underbyg nu dine påstande.
to lazy!

Derudover så er mine påstande, påstande. Det er sådan lidt meningen. Det er ikke et forretningsgrundlag til chefen, det er en post på et forum.
Gravatar #20 - onetreehell
20. apr. 2010 17:05
#19
fremsæt det som en påstand uden videre underbygning så vi kan ignorere hvad du skriver :)
Gravatar #21 - arne_v
20. apr. 2010 17:09
Windcape (19) skrev:

Derudover så er mine påstande, påstande. Det er sådan lidt meningen. Det er ikke et forretningsgrundlag til chefen, det er en post på et forum.


A: C# er bedst
B: Java er bedst
C: PHP er bedst

3 påstande.

Værdi ca. 0.

Det er argumenterne og informationerne som giver værdi på et forum.
Gravatar #22 - Windcape
20. apr. 2010 17:15
Benjamin Krogh (18) skrev:
Det bedst dokumenterede blabla -- Målt på hvilke parametre? Fyldestgørenhed er ikke videre nemt målbart.
Du kan da selv forsøge at gøre dig et indtryk af XNA docs på MSDN i forhold til f.eks. OpenGL.

http://www.opengl.org/documentation/
http://msdn.microsoft.com/en-us/library/bb200104.a...

OpenGLs 3.2 dokumentation er ikke færdig endnu, og deres 2.1 dokumentation er bare online udgaver af deres "man" pages.

Benjamin Krogh (18) skrev:
Sandsynligvis det med de bedste defacto værktøjer. Hvad betyder defacto i denne sammenhæng? Hvorfor er det de bedste?
Vi kan jo starte med argumentet om at OpenGL i sig selv bare et et C api, og ikke maintainer værktøjer, IDEs eller noget som helst.

Modsat giver Microsoft dig alle DirectX værktøjer, XNA Game Studio, Visual Studio, debugging, analyseværktøjer osv.

-- alt som en del af en standard pakke. Med defacto mener jeg hvad defacto betyder, altså industristandard. Det kan så ikke dokumenteres direkte, jeg basere det ud fra erfaring og dialoger med professionelle udviklere hos Lionhead, FUNCOM, mm.

Benjamin Krogh (18) skrev:
XNA er vinder på alle punkter. Crossplatform venlighed må være et at de punkter. Disproofed!
Konteksten lagde op til at sammenligne med hvad der virker på Windows. Derudover er crossplatform en illusion som ikke engang OpenGL levere hvis du skal udvikle AAA spil[1]

[1] Se blandt andet diskussionen på http://blog.wolfire.com/2010/01/DirectX-vs-OpenGL-... (Ikke selve artiklen.)
Gravatar #23 - Windcape
20. apr. 2010 17:20
arne_v (21) skrev:
Det er argumenterne og informationerne som giver værdi på et forum.
Jeg lagde op til at:

XNA er bedre end DirectX.NET fordi DirectX.NET er deprecated, og XNA har flere værktøjer (nu bevist med links for de dovne).

XNA / DirectX er bedre end OpenGL pga. dokumentation (nu bevist, med links for de dovne).

Og XNA derfor er det bedste valg (implicit: til Windows).

Det er ikke "XNA er bedst" uden grundlag. Grundlaget er i sig selv en sammenligningen af indholdet på MSDN og OpenGL.org.

Specialt når 9/10 ikke læser ens links og referencer alligevel.

Så igen: Hvis folk stadigvæk ikke fatter at alt der bliver skrevet på nettet er biased, men tror at den akademiske standard om at dokumentere samtlige argumenter og påstande 110%, så tager de altså fejl.

Og så ville der forresten være utrolig stille og kedeligt.
Gravatar #24 - Windcape
20. apr. 2010 17:28
Windcape (17) skrev:
Og sandsynligvis det med de bedste defacto værktøjer. DirectX har mere legacy
Jeg siger at XNA sandsynligvis har bedre værktøjer end DirectX, fordi jeg ved at Microsoft har mere fokus på XNA for tiden. Men jeg skriver også at DirectX har flere gamle værktøjer (åbenlyst: DirectX er ældre).

Windcape (17) skrev:
men udover det er XNA en klar vinder på alle punkter.
Dette her er en følgesætning. XNA er en klar vinder i valget omkring DirectX eller XNA.

Så helt ærligt, hvorfor skyde skarpt når i ikke kan læse? Det er så ærketypisk at folk der er sure over at man kritisere <teknologi> læser (forkert) mellem linjerne.

At konkludere at XNA (end DirectX) er et bedre valg for en begynder fordi at det har bedre dokumentation, og flere værktøjer, er det virkelig et problem?

Jeg havde allerede afskrevet OpenGL tidligere.
Gravatar #25 - røvskæg
20. apr. 2010 17:44
Begynder 3D programering :
http://www.jmonkeyengine.com/wiki/doku.php/tutoria...

- ser faktisk rimeligt cool ud.
Gravatar #26 - røvskæg
20. apr. 2010 17:47
Runescape er vist pure java, så det kan godt lade sig gøre.
Gravatar #27 - Benjamin Krogh
20. apr. 2010 18:00
#24 jeg tror du misforstår mit indlæg en smule. Jeg lægger blot op til at komme med argumenter for hvorfor A er mere passende for #1, end B. I den sammenhæng synes jeg at "XXX er bedst" er en smule useriøst.

Jeg undrede mig lidt over hvad du mente med defacto i den sætning, da jeg mente at det betød noget i retning af industristandard. Hvordan man kan snakke om det bedste værktøj der er industristandard er jeg lidt usikker på. Det kræver vel at der minimum er to værktøjer for at man kan tale om at et er bedst, og standard kræver vel at der kun er en... Derfor var jeg lidt i tvivl om du brugte defacto på en fancy super-duper ny måde. Og jeg vil da også bruge buzzywords. ;)

Windcape (24) skrev:

Så helt ærligt, hvorfor skyde skarpt når i ikke kan læse? Det er så ærketypisk at folk der er sure over at man kritisere <teknologi> læser (forkert) mellem linjerne.
Teknisk set er det dig der læser (forkert) mellem linierne (I forhold til mit tidl. indlæg). I mit indlæg gør jeg en indsats for ikke at fremhæve hverken den ene eller den anden teknologi. Du fremhæver XNA og fordi jeg betvivler dine argumenter herfor, bliver jeg sat i bås med alle Linux fanbois og andet skidt?
Gravatar #28 - mat
20. apr. 2010 20:05
#23

Så igen: Hvis folk stadigvæk ikke fatter at alt der bliver skrevet på nettet er biased, men tror at den akademiske standard om at dokumentere samtlige argumenter og påstande 110%, så tager de altså fejl.


Det kunne jo også tænkes at du skulle lære at moderere dine påstande? Især når man tænker på de utallige gange hvor du opstiller en påstand om at teknologi X ikke understøtter feature Y, og andre må fortælle dig (og personer, der måtte vælge at tage dine påstande for gode varer) at det ikke passer?

Normalt ville man skrive "jeg tror", "jeg har hørt" eller noget andet der illustrerer at man ikke ved det med sikkerhed.

Prøv det.
Gravatar #29 - mazing
20. apr. 2010 21:04
Nu skal det jo siges at XNA er et spil framework, hvor OpenGL er en API og DirectX er en samling APIer, så hvilken der er bedst må afhænge af hvad der er brug for.

IMO: Vil man gerne have jord under neglene, så det (Slim)DX eller OpenGL. Skal det køre på Mac eller linux, så det OpenGL. Skal det køre på Xbox, så det XNA. Skal det være spilbart hurtigst muligt og mest smertefrit, så det XNA, Unity, etc..
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login