Gå til innhold

Bruke java til å lage 3d-onlinespill


Anbefalte innlegg

Videoannonse
Annonse

Wurm online er skrevet i Java (JOGL). Veldig lite av de store spillene som er skrevet i Java. Jeg ser ikke noe grunn til hvorfor ikke det kan gjøres.

 

http://www.wurmonline.com/

 

 

Sjekk ut http://www.javagaming.org forumene hvis du er interessert i spillutvikling i Java.

 

Forresten, Sun har sluppet sin MMOG spillserver som open-source. Den kan du lese om på https://games-darkstar.dev.java.net/

 

Fra Darkstar siden:

Project Darkstar is the game industry’s first open source, enterprise grade, highly scalable, online game server. From Massively Multiplayer Online Games to Casual Games, Project Darkstar can accommodate the varying needs of the online game developer through a single solution. Providing easy to use, simple API interfaces, Project Darkstar will have you up and running in a fraction of the time that it used to take in standing up online game solutions.
Endret av krigun
Lenke til kommentar
  • 2 uker senere...

Spill man spiller i nettleseren som runescape er laget stort sett i java eller flash med actionscript.

 

Spill som installeres eller legges på maskinen og kjøres derfra (typisk .exe filer) er stort sett ikke java.

 

Java er designet til å kunne kjøres på alle platformer (operativsystem). Dette krever et mellomledd (java virtual machine) som er ulik for hver plattform. Dette mellomprogrammet gjør at koden ikke er like effektiv som maskinspesifikk/os-spesifikk kode. Derfor egnes ikke java så bra til tunge applikasjoner som krever mye av datamaskinen (f.eks world of warcraft).

 

edit: forøvrig tror jeg c/c++ blir mest brukt til å lage de større spillene.

Endret av grimjoey
Lenke til kommentar
jeg er helt enig med grimjoey, JOGL er helt sjanseløst! Ta turen innom http://nehe.gamedev.net/ og sjekk OpenGL tutorialene deres!

8387708[/snapback]

 

Håpløst innlegg. JOGL er sjanseløst? LWJGL er vel sjanseløst også da (siden de begge speiler OpenGL)?!? Hadde du sett litt nøyere på nehe tutorial siden, så hadde du sett at samtlige er blitt portet til JOGL kode. Enig at hvis du kaller glVertexf en trillion ganger i hver frame, så gir JNI deg litt vond smak i munnen, men hvis du skriver dårlig kode så hjelper det lite at C/C++ er så sinnsykt mye raskere enn Java (som dere påstår).

Lenke til kommentar
  • 1 måned senere...
jeg er helt enig med grimjoey, JOGL er helt sjanseløst! Ta turen innom http://nehe.gamedev.net/ og sjekk OpenGL tutorialene deres!

8387708[/snapback]

 

Håpløst innlegg. JOGL er sjanseløst? LWJGL er vel sjanseløst også da (siden de begge speiler OpenGL)?!? Hadde du sett litt nøyere på nehe tutorial siden, så hadde du sett at samtlige er blitt portet til JOGL kode. Enig at hvis du kaller glVertexf en trillion ganger i hver frame, så gir JNI deg litt vond smak i munnen, men hvis du skriver dårlig kode så hjelper det lite at C/C++ er så sinnsykt mye raskere enn Java (som dere påstår).

8401873[/snapback]

 

Hvis JOGL og LWJGL er så håpløst hvordan har det seg at spill som f.eks Tribal Trouble eksisterer? Ser ikke ut som det er store begrensninger der akkurat. Grafikken kunne sikkert sett råere ut men tror det har mest med tid og penger å gjøre og ikke hva jogl/lwjgl klarer.

 

Tribal Trouble

 

puppygames

Lenke til kommentar
  • 3 uker senere...

Java kan brukes til å lage fantastisk 3d grafikk. Uten store performance problemer for tidens norm av datakraft. Men spill som pusher grensene (eller gjorde det da de kom ut) tar seg bedre ut i c/c++ en hva noe liknende ville gjort i java. (oblivion, wow, hl2:src, +++)

Lenke til kommentar
Syns forøvrig denne viser forskjellene mellom språkene rimelig greit:

 

http://shootout.alioth.debian.org/debian/b...=gpp&lang2=java

8778942[/snapback]

 

Sa ikke meg stort. Java versjon? OS? Greit nok at native kode kjører raskere under enkelte omstendigheter, men JVM-en optimaliserer en god del algoritmer under kjøring, slik at kryssplatform kode vil ofte kjøre raskere.

 

En heller bedre test i samme context er http://bytonic.de/html/benchmarks.html , hvor Quake 2 motoren har blitt portet til Java, og C løper akkurat ikke i sirkler rundt Java. Uansett er det viktigere for meg å skrive bra kode som fungerer på samtlige operativsystem på en rask og enkel måte, enn å trimme inn på FPS på Windows XP. Til dette fungerer Java utmerket. Gjør du samtidig en hel del rendering med shadere (skeletal animation, vann osv), så blir forskjellene minimale. GPU-ene er jo lagd for nettopp slike operasjoner, det er ikke CPU-en.

Lenke til kommentar
En heller bedre test i samme context er http://bytonic.de/html/benchmarks.html , hvor Quake 2 motoren har blitt portet til Java, og C løper akkurat ikke i sirkler rundt Java. Uansett er det viktigere for meg å skrive bra kode som fungerer på samtlige operativsystem på en rask og enkel måte, enn å trimme inn på FPS på Windows XP. Til dette fungerer Java utmerket. Gjør du samtidig en hel del rendering med shadere (skeletal animation, vann osv), så blir forskjellene minimale. GPU-ene er jo lagd for nettopp slike operasjoner, det er ikke CPU-en.

8779771[/snapback]

 

Selv i den testen kom C-koden bedre ut. Den beste indikasjonen på at C++ er bedre egnet til store kommersielle spill enn java: De fleste spill som gis ut lages i C++. Ikke java.

Det kan selvfølgelig bety at C++-kodere i snitt er flinkere til å optimalisere enn tilsvarende java-programmerere, ikke vet jeg, men så lenge man har begrenset maskinkraft vil optimalisering fortsatt stå høyt i kurs hos de aller fleste spillprodusenter med selvrespekt.

 

Men selvfølgelig går det fint å lage spill i Java, det burde da ingen si imot :)

 

Edit: Var ikke den / de maskinene som ble brukt rimelig mye kraftigere enn "minimum requirements" ? Ser for meg at forskjellen er større på svakere maskiner.

Endret av jurg
Lenke til kommentar

krigun> "Uansett er det viktigere for meg å skrive bra kode som fungerer på samtlige operativsystem på en rask og enkel måte, enn å trimme inn på FPS på Windows XP."

 

Det finnes kryss plattform bibliotek til c/c++ som gjør koden enkelt portabel. For eksempel QT av norske TrollTech AS. De jobber forresten også med et bibliotek til java for å gjøre ting enklere for folk som er vant med QT. De klager på at java api'et er litt "rotete" (om jeg husker rett). Jeg har ikke så mye erfaring at jeg skal si noe om det selv, men syns ikke java er det enkleste språket å bruke som nybegynner vertfall. Mange tutorials og kodesnutter hvor det er inkludert kode som ikke gir noe logisk mening. Kan man alle bibliotekene utenatt er det nok ikke noe problem, men det gjør ikke jeg.

Lenke til kommentar

C++ er laget med tanke på ytelse. Java er laget med tanke på funksjonalitet og stabilitet. Funksjonaliteten til java har som sagt endel overhead, og gjør antagelig mye mer sjekk av ting enn det C++ gjør. Er en grunn til at mye c++ programvare er hjemsøkt av buffer overflow, minnelekasjer etc etc ... men det går fort da.

 

Han dansken som oppfant c++ har jo også sagt at målet var å lage et språk som er raskest som mulig.

Lenke til kommentar

Tror du missforsto. Hele setningen er som følger: "... Mange tutorials og kodesnutter hvor det er inkludert kode som ikke gir noe logisk mening."

 

Med det mener jeg at jeg, i et par tutorials laget av sun, har sett kode som ikke ville falle meg inn dersom jeg skulle skrevet noe liknende. (edit: ikke avansert kode. bare noen kall og tilordninger) Skal prøve å finne et konkret eksempel å komme tilbake med. Jeg har ikke noe negativt å si om selve språket/syntaksen.

 

Etter egen erfaring er programmer som er skrevet i java treige til å loade, og mer resurskrevende i forhold til andre. Vertfall de jeg har testet på min maskin (bla.a. Aptana/Eclipse, Azureuz, ...). Maskinen er en Intel Core 2 Duo E6300 @ 2.33 Ghz på Asus P5B med 2GB ram. SATA grensesnitt til disker. Liknende erfaringer fra tidligere maskinvare.

Endret av grimjoey
Lenke til kommentar
  • 1 måned senere...
  • 1 måned senere...
Hvordan lager man slike spill med grafikk ellers?

 

For det første burde man lære seg hvordan man jobber med 3D i programmering. Jeg har i det siste faktisk prøvd akkurat det i det siste, og det var ikke så vanskelig som jeg trodde. Lagde et program som viser tre objekter med hver over tre hundre tusen punkter (xyz), som vises hver for seg i pixelform. Optimaliserte koden litt, og da endte jeg opp med en kjempeflott FPS på over 100! Så Java kan hvertfall takle 3D og thus store mengder med data. :thumbup:

Lenke til kommentar
Enig at hvis du kaller glVertexf en trillion ganger i hver frame, så gir JNI deg litt vond smak i munnen, men hvis du skriver dårlig kode så hjelper det lite at C/C++ er så sinnsykt mye raskere enn Java (som dere påstår).

8401873[/snapback]

 

Det er mer enn bare hastigheten som forhindrer at spill blir utviklet i java.

OpenGL er orginalt skrevet for C, og bare det i seg selv er et kjempeproblem for java. Er nok en eller flere veldig gode grunner til at java ikke er en akseptert spillutviklingsplatform, at bedrifter heller vil bruke tusenvis av ekstra timer for å skrive det i c++ isteden har nok sine grunner...

 

Java har heller ikke noen direkte måter å kjøre operativsystemkall, noe som kan være kjekt å ha...

 

Når det gjelder spillutvikling i 4. generasjonsspråk, har jeg mye mer tro på C# enn Java (MS XNA Game Studio er faktisk veldig brukendes). De eneste Javaspillene jeg har sett er av laber kvalitet og lav fps (med unntak av en Raycaster, men det er litt for oldschool til at det er noe imponerende)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...