Lukket. Dette spørgsmål er uden for emnet . Det accepteres i øjeblikket ikke svar.

Kommentarer

  • Er ikke ' t minecraft bygget med java? Eller hovedsagelig OpenGL? Åh og tjek C #, hvis du ikke er 100% indstillet på java, da det er fantastisk.
  • Hvorfor don ' t du kommer til Stack Overflow C ++ Chat ? Vi elsker C ++, vi tror, det kan absolut bruges rigtigt, og vi ved, hvordan man gør det, og vi ' ville være helt glade for at dele.
  • Minecraft er java + LWJGL + hak ' s kodefærdigheder, så ydeevne er det FORFÆRDELIGT.
  • Uanset om dine kodningsspil eller noget andet, låser dig ind i en enkelt sprog vil ikke hjælpe dig i fremtiden. Forgren lidt, enten C ++ eller noget andet som Python. Det tager tid, men det gør dig til en bedre dev.
  • Du ' vil få en masse misinformation, fordi Java / C ++ -krigene brænder stærkt, vær parat til at bede om specifikke eksempler inden jeg accepterer en mening og også undersøge mere på egen hånd =) Når det er sagt, er jeg enig med @loganfsmyth, at du bliver nødt til at kende mange sprog, for kun da kan du vælge det rigtige værktøj til enhver opgave . I den nærmeste fremtid, hvis du bare vil lære " spilstilprogrammering " så brug det, du ' er fortrolig med (Java) og lær derefter C ++ senere. Heck, senere udfører du muligvis indholdsrørledninger i C # og spil i Java ME, svært at forudsige =)

Svar

Ja, det er, tjek denne liste for et bevis. Dette er nogle spil lavet med Java ved hjælp af The Lightweight Java Game Library (LWJGL). Det er en ramme på lavt niveau, der giver OpenGL til grafik i høj kvalitet og OpenAL til lyde. Det giver også input API. Med disse kan du let komme i gang med seriøs spiludvikling i Java.

Jeg skriver i øjeblikket mit andet 3D-spil som et hobbyprojekt i Java, og jeg elsker det bare. Tidligere skrev jeg mine spil med C ++, men efter at have skiftet til Java er der ingen vej tilbage. Understøttelse af flere operativsystemer med Java kan være meget let, for eksempel har mit tidligere Java-spil, som jeg udviklede i Windows i et år, arbejdet i Linux med det samme og i OS X med kun en fejl uden behov for at kompilere noget på disse platforme.

På den anden side har du et par problemer med Java.

  1. Affaldssamler. Som andre har sagt, er ikke-deterministisk hukommelsesadministration et problem, og du skal kode det i tankerne.
  2. Mangel på tredjepartsbiblioteker. De fleste af de tilgængelige biblioteker understøtter ikke Java. På den anden side har du altid mulighed for at kalde disse native biblioteker også fra Java, men det er mere arbejde at gøre det. Der er også Java-porte eller færdige indpakninger tilgængelige for populære biblioteker, for eksempel bruger jeg JBullet – Java-port i Bullet Physics Library . På den anden side har Java et enormt klassebibliotek indbygget, hvilket reducerer behovet for tredjepartsbiblioteker, der ikke er spilrelaterede. Manglen på biblioteker har ikke været et problem for mig, men jeg kan forestille mig, at det kan være for andre.
  3. Java understøttes ikke af populære spilkonsoller, og der er ingen nem skift til dem fra Java så langt som jeg ved. På den anden side bruger Android, som er en populær mobilplatform, en eller anden form for Java. Dette er også en mulighed, men ikke bortset fra den samme Java-kode for at arbejde både på en pc og Android-enhed.
  4. Mindre samfund. De fleste spilprogrammerere bruger C ++ og kan efter min erfaring ofte ikke lide Java. Don ” t forventer at få så meget hjælp fra andre. Forvent ikke at få et job inden for spiludvikling uden C ++ – færdigheder.

Svar

Ikke rigtig. Her “s ting – for det første er der meget lidt med hensyn til eksisterende biblioteker til Java sammenlignet med stort set alt der er til C ++.

For det andet Java som sprog simpelthen egner sig ikke godt til spiludvikling – jeg mener for eksempel, hvis du har at gøre med GPU-buffere, så giver Java ikke en sprogfunktion, der hjælper dig med at sikre, at de er korrekt låst og låst op eller bortskaffet, hvilket C ++ gør. Plus, der er ydeevneproblemet – og GC er ikke-deterministisk, hvilket er superdårligt for et spil.

Jeg har aldrig observeret noget ikke-indiespil, der brugte betydelig tid i et sprog, der ikke blev kompileret til oprindelig kode før udførelse, og selv de indiespil, der gør det, er en sjældenhed.Så min overbevisning lige nu er, at det simpelthen ikke kan gøres.

Også hvis jeg fortsætter med at lære og forbedre Java nu, og det viser sig senere Det kræves, at jeg lærer C ++, bliver det vanskeligt at skifte switch?

Ja, det vil det absolut. Java og C ++ er meget forskellige på trods af deres overfladiske syntaktiske ligheder. Java-oplevelse tæller næsten intet, når man lærer C ++.

Gameplay over grafik er et levedygtigt valg, og du kan se det i succesen med spil som Terarria og Minecraft. Men hvis du har til hensigt at oprette srs-grafik, kan det ikke gøres i Java.

Kommentarer

  • +1, da han angav tunge grafik, hurtigt spil uden forsinkelse.
  • Java ' mangel på usignerede datatyper står også imod det. Ja, du kan omgå det, men det ' er ikke ideel, og du ' bruger kode, der ikke ' ikke virkelig afspejler underliggende data korrekt.
  • @deadmg Er tilfældet med låst og ulåst , henviser du til nogle DirectX api-funktioner? & Kan du fortæl mig, hvad ' er så slemt ved at have ikke-deterministisk GC.
  • Ikke-deterministisk GC kan svare til at droppe rammer, hvis du får et dårligt stop, verden pause, og det låser tingene op i længere tid, end det tager at gengive rammen. I praksis sker dette ikke ' ikke ofte / nogensinde, hvis du planlægger din hukommelse brug, JVM ' s samlere kan konfigureres til lav pause (godt inden for sikre grænser for billedfald). Alligevel er det ' ikke en sjov ting at skulle håndtere. Du ender med at skulle aflevere betydelige mængder af den produktivitet, du opnåede, da du forlod C ++.
  • En start, du ' skal helt omskrive.

Svar

Så jeg er virkelig seriøs med spiludvikling, er Java stadig et levedygtigt valg? Jeg har prøvet flere gange for at lære C ++, men jeg kan ikke godt lide sproget. Jeg ved ikke rigtig hvorfor, men normalt, når jeg prøver at lære, kan jeg aldrig forstå emnerne.

Hvis din grund til at vælge Java er, at du ikke kunne forstå C ++, vil dine Java-programmer ikke være hurtige nok til grafik af høj kvalitet. Brug af et sprog på højere niveau burde være, fordi det gør dig mere produktiv, ikke fordi du ikke kunne underordne det lavere niveau sprog.

Jeg synes ikke det er en helt dårlig idé at skrive et spil på Java, især hvis spillet er simpelt, men du løber straks ind i ydeevneproblemer i Java, hvis du bruger det som en krykke.

Kan kort sagt Java tages seriøst for seriøs spiludvikling. Dette inkluderer tung grafik, hurtigt spil uden forsinkelse og muligvis og let skift til konsoller?

  1. Tung grafik: Mulig, men du vil gøre det samme i Java / LWJGL som du er i C ++ / GL: skrive bytes til GPU-buffere og / eller bruge forældede displaylister som Minecraft gør. Hvis du ikke forstår hukommelsesadministrationen, vil du heller ikke gøre dette korrekt.

  2. Hurtigt spil uden forsinkelse: Ikke en let opgave på ethvert sprog, og det er mere sandsynligt, at du skyder dig selv i foden på begge måder uden at tænke over det.

  3. Nej, Java vil ikke være tilgængelig på konsoller.

Kommentarer

  • Som et sidespørgsmål, hvad erstattede displaylisterne, da de blev udfaset?
  • @Suds: Programmerbar pipeline, tror jeg.
  • ha! allerede dækket det. VBOer : gamedev.stackexchange.com/questions/22170/…
  • Mobile platforme kan være betragtes som konsoller. Jeg er klar over, at han sandsynligvis talte om de tre store, men Android bruger Java, og der er oprettet masser af spil til det.
  • @ Amplify91 ja et par spil er skrevet i java til android. Men mest godt spil og sandsynligvis alle grafikintensive eller multiplatformspil er skrevet i C ++ ved hjælp af Android NDK.

Svar

En eksper enced programmerer kender generelt mange programmeringssprog – at lære ekstra programmeringssprog er ikke for svært, når du først kender et sprog. Jeg vil dog stærkt anbefale, at C ++ ikke skal være dit første sprog og sandsynligvis heller ikke det andet.

Det skyldes, at C ++ får meget af sin effektivitet ved ikke at foretage nogen signifikant kontrol af runtime-fejl. For eksempel får adgang til et element fra slutningen af et array i Java altid en undtagelse, der fortæller programmøren nøjagtigt, hvad der er galt.I C ++ får du muligvis held og det går ned med det samme, men meget ofte stille papirkurven nogle andre data, og fejlen vil ikke dukke op indtil meget senere .

Jeg foreslår, at du holder fast ved Java indtil videre (eller skifter til C #, hvis du foretrækker det). Det giver dig mulighed for at få tingene gjort hurtigere end at bruge C ++, og ydeevne på en pc burde ikke være et problem.

Tænk på at lære C ++, når du har gennemført et par projekter på mere sikre sprog. C ++ er det, du har brug for til de fleste professionelle spiludviklingsjob.

Bemærk, at med undtagelse af at C # / XNA får et spil, som du skrev til en konsol, kræves det, at du opretter et firma med et kontor og har et stort budget til rådighed for udviklingshardware og andre udgifter.

Kommentarer

  • Dette gælder også undtagelsesvis, fordi andre sprog ud over C ++ vil giver dig en følelse af præstation. C ++ kan tage hundreder af timer, for hvad der kan føles som ingenting. At lære andre sprog først giver dig mulighed for at få dine fødder våde.
  • Dine kommentarer om manglende fejlhåndtering er virkelig om C (og såkaldt C ++ – kode, der virkelig er C). C ++ har standardbiblioteker (og standardskabelonbiblioteker), der har meget bedre fejlhåndtering end hvad du beskriver. C ++ har også leverandørbaserede biblioteker (såsom MFC), der leverer anstændig fejlhåndtering.

Svar

Ansvarsfraskrivelse: Dette svarer ikke nøjagtigt på dit spørgsmål. Jeg har dog forsøgt (kort) at nævne nogle punkter, der kan være af interesse for dig.

Årsagen til, at du ser så meget om C ++, er, at C ++ stadig er industristandarden – det mest almindelige sprog for konsoller osv.

Java bruges ikke ofte. Minecraft er et ret populært spil, der gjorde det stort med Java; men det er ikke så godt grafisk. Spiral Knights er ikke dårligt – også lavet i Java med betydelig grafik.

Hvis du kan lide Java, er C # meget ens i syntaks med den fordel, at det kan interop med C ++ – så lavt niveau kan gøres i C ++, hvis det er nødvendigt. Enhed kan bruge C # til scripting, og XNA er et fremragende valg.

Igen er Java ikke meget brugt. Hvis du kan lide stilen og syntaksen, jeg tror, du finder C # til at være en meget lignende, meget behagelig kodningsoplevelse.

Jeg håber, at dine drømme gør det, det er meget sjovt undervejs:)

Kommentarer

  • Masser af mange unøjagtigheder i dette indlæg. Minecraft " dårlig " grafik er ikke (stærkt) relateret til sproget. MC dårlig ydeevne er direkte relateret til Java, der er et dårligt sprog til spil, fordi ENORME problemer med ydeevne, og LWJGL er et uegnet bibliotek til store kodningsprojekter af samme grund Men den største faktor var Notch

    er dårlig kodning og implementering, som løses … langsomt. C # giver dig alle ups af administreret hukommelse uden de fleste Java-ydelsesproblemer. Ulempen er, at C # er stærkt Microsoft-centreret til både spil og applikationer.

  • @EfEs: Jeg hader at bryde det til dig, men administreret hukommelse er frygtelig for spil, og folk, der koder spil i XNA, skal bruge mere tid på at administrere hukommelse end folk, der koder i C ++. GCs ikke-deterministiske natur betyder, at du er nødt til at samle praktisk talt alt og undgå tildeling som pesten – ikke den måde, som sproget skulle bruges på.
  • Dette svar skulle ikke være 100% nøjagtigt ; Jeg citerede kun eksempler, jeg kender svagt til. Du er velkommen til at DV.
  • @DeadMG Jeg ved, at C ++ er vejen at gå, jeg prøvede bare at forklare, at C # er bedre end Java til spil.
  • At være lang tid C # udvikler (ikke spiludvikler troede) Jeg mener, at pooling og hukommelsesadministration er store problemer for ethvert dårligt designet system. Mennesker med C / C ++ tankegang og måder at udvikle sig på, kender jeg næppe ind i den administrerede hukommelse, design og arkitektur mønstre, der skal bruges, og drage fordel af dem på et sprog som Java / C #. Hvad jeg prøver at sige, er ikke, at C / C ++ teknikker eller produkter er dårlige, men at selvom du bruger enklere sprog med hensyn til syntaks (som Java og C #), har du stadig brug for masser af erfaring for at designe dit spil det rigtige måde.

Svar

Se fyr, det enkle svar på “Er Java levedygtig for game dev “er et indlysende ja. Du kan bruge ethvert programmeringssprog til at lave spil. Det betyder ikke, at du skal .

Sandsynligvis de meget ting, der slukker dig fra C ++ ( lavt niveau hukommelsesadministration, ingen affaldssamler, der skal være opmærksom på pegepinde, strukturer som arrays osv.) er de ting, du skal lære, hvis du vil udnytte en computers ressourcer mest effektivt .Dine spil kører bedst, hvis du udnytter computerens ressourcer mest effektivt.

Java gør nogle ting (såsom kontrol af array-grænser), der bare får den til at køre langsommere. I denne optimerede Java Perlin-støjeksempelkode, kommenterede forfatteren “(arrayadgang er meget langsommere end medlemsadgang)”. Denne slags ting er ret kontraintuitive fra en C ++ baggrund. Men i Java, sådanne ting er.

Jeg siger, stop med at undvige kuglen, lær C ++, og brug den.

Svar

Dette svarer ikke på dit spørgsmål; grafik- og konsolproblemerne ser ud til at være noget, du meget skal overveje. Også GC påvirker ydeevnen. Men hvad jeg skriver om:

Hvis du skriver store, komplekse OO-programmer, skriver du dem 5 gange hurtigere i Java end C ++. Også vedligeholdelse vil være meget lettere. Jeg skiftede (ganske vist for software, der ikke er spil), og min produktivitet steg. C #, et andet godt alternativ, er sværere at lære end Java, fordi der er meget mere af det. Når du ved det, kan du skrive kode endnu hurtigere end i Java; det giver dig mange tricks. Dog finder jeg disse tricks kan gøre vedligeholdelse vanskelig. Og så er der Java-doc, som hjælper med Sun-bibliotekerne og din egen gamle kode. C # har intet som det.

Jeg lavede et stort behåret spil i Java og fandt sproget perfekt, men min grafik var elementær, og det var ikke et skydespil, hvor en tiendedels sekund var en evighed til spillere. Jeg forventer også at tilføje meget til det senere, mens jeg tror, de fleste bare går og skriver et helt nyt spil.

Svar

Du skal gøre det på det sprog, du kender bedst, indtil du har råd til en formel uddannelse (Bachelor of Science?) inden for datalogi med vægt på spildesign . Du kan muligvis bruge dit spil til at få et stipendium, især hvis du kan sige “Jeg gjorde dette uden nogen formel træning i Java”

Moderne JVMer, selv den fra Oracle har mange, mange funktioner til at imødegå de bekymringer, folk har rejst her. Du kan bruge forskellige affaldssamlere for at få mere deterministisk affaldssamleradfærd. Jeg har ikke omfattende erfaring med 3D-bibliotekerne – kun lidt med Java3D – men ingen her ser ud til at have klaget over dem. Escape-analyse tillader nu låselision og meget hurtigere / ubetydelig allokering af meget kortvarige objekter.

Problemet er, uanset om du vælger Java af C ++, bliver du nødt til at lære at bruge samtidighed korrekt og have en god forståelse af hukommelsesadministration. Når alt kommer til alt kan du lige så let skrue op med malloc som du kan med new. Jeg ved ikke, hvordan værktøjerne er til C ++, men profilværktøjerne til Java er ret nemme at bruge, gratis og integreret med IDE. Du kan bruge dem til at spore ydeevneproblemer og lære .

Kommentarer

  • Formel uddannelse i CS er værd at lort for faktiske programmeringsevner i enhver disciplin. Jeg ville vide, jeg ' m i mit tredje år.
  • Helt uenig med DeadMG. Efter at have dimitteret og valgt kurser, som jeg kunne lide, tog CS mine spiludviklingskræfter fra 10% til 100%. Det gjorde det ikke ' t lære mig brugergrænseflade, ikonografi osv. men faktisk, ægte kodning.
  • @ ashes999: Så blev du heldig. Mit kursus er værdiløst, og jeg ved, at der er mange andre, der føler det samme.
  • @DeadMG det ' er svært at se, når du ' studerer Når du først har arbejdet et par år F / T og har lært andre gratis færdigheder, vil du ' se. Det gjorde jeg. Men måske Jeg har lige været meget opmærksom og forsøgt at anvende alt på min game dev hobby.
  • Jeg ' siger, at det afhænger af skolen og professoren. Jeg havde et par gode programmeringskurser, hvor jeg lærte et ton; og jeg havde nogle få, hvor jeg faktisk følte, at jeg mistede viden ved at deltage. Det ' handler alt om at have en god professor eller ej. IMO.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *