Închis. Această întrebare este
off-topic . În prezent, nu acceptă răspunsuri.
Comentarii
Răspuns
Da, verifică această listă pentru o dovadă. Acestea sunt câteva jocuri realizate cu Java folosind Biblioteca de jocuri ușoare Java (LWJGL). Este un cadru de nivel scăzut, care oferă OpenGL pentru grafică de înaltă calitate și OpenAL pentru sunete. De asemenea, oferă API de intrare. Cu acestea puteți începe cu ușurință dezvoltarea serioasă a jocurilor în Java.
În prezent scriu al doilea joc 3D ca proiect de hobby în Java și îmi place foarte mult. În trecut, obișnuiam să îmi scriu jocurile cu C ++, dar după ce am trecut la Java nu mai există nicio întoarcere. Susținerea mai multor sisteme de operare cu Java poate fi foarte ușoară, de exemplu, jocul meu anterior Java, pe care l-am dezvoltat în Windows timp de un an, a funcționat imediat în Linux și în OS X cu o singură eroare fără a fi nevoie să compilați nimic pe acele platforme.
Pe de altă parte, cu Java aveți câteva probleme.
- Colector de gunoi. După cum au afirmat alții, gestionarea nedeterministă a memoriei este o problemă și trebuie să codificați acest lucru în minte.
- Lipsa bibliotecilor terțe. Majoritatea bibliotecilor disponibile nu acceptă Java. Pe de altă parte, aveți întotdeauna opțiunea de a apela aceste biblioteci native și de la Java, dar este mai mult să faceți acest lucru. Există, de asemenea, porturi Java sau împachetări gata disponibile pentru bibliotecile populare, de exemplu folosesc JBullet – portul Java al bibliotecii Bullet Physics . Pe de altă parte, Java are o bibliotecă de clasă imensă încorporată, ceea ce reduce nevoia de biblioteci terțe, care nu sunt legate de jocuri. Lipsa bibliotecilor nu a fost o problemă pentru mine, dar îmi pot imagina că poate fi și pentru alții.
- Java nu este acceptat de consolele de joc populare și nu există o trecere ușoară la cele de la Java din cate stiu. Pe de altă parte, Android, care este o platformă mobilă populară, folosește o anumită formă de Java. Aceasta este și o opțiune, dar nu faceți excepția aceluiași cod Java pentru a funcționa atât pe un computer, cât și pe un dispozitiv Android.
- Comunitate mai mică. Majoritatea programatorilor de jocuri folosesc C ++ și, din experiența mea, nu le place Java. Nu mă aștept să primesc la fel de mult ajutor de la alții. Nu vă așteptați să obțineți un loc de muncă în dezvoltarea jocului fără abilități C ++.
Răspundeți
Nu chiar. Aici „este problema – în primul rând, există foarte puțin în ceea ce privește bibliotecile existente pentru Java în comparație cu practic tot care este pentru C ++.
În al doilea rând, Java ca limbaj pur și simplu nu se pretează bine dezvoltării jocului – vreau să spun, de exemplu, dacă aveți de-a face cu buffere GPU, atunci Java nu oferă o caracteristică de limbaj care vă va ajuta să vă asigurați că sunt corect blocate, deblocate sau eliminate, ceea ce C ++ În plus, există problema de performanță – iar GC este nedeterminist, ceea ce este foarte rău pentru un joc.
Nu am observat niciodată un joc non-independent care să petreacă timp semnificativ într-un joc. limbajul care nu a fost compilat în codul nativ înainte de execuție și chiar jocurile independente care fac acest lucru sunt o raritate.Deci, convingerea mea este că pur și simplu nu se poate face.
De asemenea, dacă continuu să învăț și să îmbunătățesc Java acum, se dovedește că mai târziu Mi se cere să învăț C ++, va fi dificilă schimbarea?
Da, absolut va fi. Java și C ++ sunt extrem de diferite, în ciuda similitudinilor sintactice superficiale. Experiența Java nu contează aproape nimic atunci când înveți C ++.
Jocul peste grafică este o alegere viabilă și o poți vedea în succesul unor jocuri precum Terarria și Minecraft. Dar dacă intenționați să creați grafică srs, atunci nu va fi realizabil în Java.
Comentarii
Răspuns
Deci, sunt foarte serios dezvoltarea jocului, Java este încă o alegere viabilă? Am încercat de mai multe ori să învăț C ++, dar nu prea îmi place limba. Nu știu cu adevărat de ce, dar, de obicei, ori de câte ori încerc să învăț, nu pot înțelege niciodată subiectele.
Dacă motivul pentru care alegeți Java este că nu ați putut înțelege C ++, programele dvs. Java nu vor fi suficient de rapide pentru o grafică de înaltă calitate. Folosirea unui limbaj de nivel superior ar trebui să fie pentru că te face mai productiv, nu pentru că nu poți „înțelege limbajul de nivel inferior.
Nu cred că este o idee complet proastă să scrii un joc în Java, mai ales dacă jocul este simplu, dar veți întâmpina imediat probleme de performanță în Java dacă îl folosiți ca o cârjă.
Deci, pe scurt, Java poate fi luat în serios, pentru o dezvoltare serioasă a jocului. Aceasta include grafică grea, joc rapid fără întârziere și, eventual, și trecerea ușoară la console?
-
Grafică grea: Posibil, dar veți face același lucru în Java / LWJGL ca și în C ++ / GL: scrierea octeților în bufferele GPU și / sau utilizarea liste de afișare depreciate, așa cum face Minecraft. Dacă nu înțelegeți gestionarea memoriei, nici nu veți face acest lucru corect.
-
Joc rapid fără întârziere: nu este o sarcină ușoară în nici o limbă și este mai probabil să vă împușcați în picior în orice mod, fără să vă gândiți la asta.
-
Nu, Java nu va fi disponibil pe console.
Comentarii
Răspuns
O experiență Programatorul inițiat va cunoaște, în general, multe limbaje de programare – învățarea limbajelor de programare suplimentare nu este prea grea după ce o cunoașteți bine. Cu toate acestea, aș recomanda cu tărie ca C ++ să nu fie prima limbă, și probabil nici a doua.
Asta pentru că C ++ obține o mare parte din eficiența sa de a nu face nici o verificare semnificativă a erorilor de rulare. De exemplu, accesarea unui element de la sfârșitul unui tablou în Java va arunca întotdeauna o excepție care îi spune programatorului exact ce nu este în regulă.În C ++ s-ar putea să ai noroc și se va prăbuși imediat, dar foarte frecvent va arunca în tăcere alte date și eroarea câștigată nu va apărea până mult mai târziu .
Vă sugerez să rămâneți cu Java pentru moment (sau să treceți la C # dacă preferați asta). Acest lucru vă va permite să faceți lucrurile mai repede decât utilizarea C ++, iar performanța pe un computer nu ar trebui să fie o problemă.
Gândiți-vă la învățarea C ++ după ce ați finalizat câteva proiecte în limbi mai sigure. C ++ este ceea ce veți avea nevoie pentru majoritatea locurilor de muncă profesionale de dezvoltare a jocurilor.
Rețineți că, cu excepția C # / XNA, obținerea unui joc pe care ați scris-o pe o consolă la minimum necesită înființarea unei companii, cu un birou și au un buget mare disponibil pentru hardware de dezvoltare și alte cheltuieli.
Comentarii
Răspuns
Declinare de responsabilitate: Acest lucru nu răspunde exact la întrebarea dvs. Cu toate acestea, am încercat să menționez (pe scurt) câteva puncte care vă pot interesa.
Motivul pentru care vedeți atât de multe despre C ++ este că C ++ este încă standardul din industrie – cel mai comun limbaj pentru console etc.
Java nu este folosit frecvent. Minecraft este un joc destul de popular care l-a făcut mare cu Java; dar nu este atât de grozav din punct de vedere grafic. Spiral Knights nu este rău – realizat și în Java, cu o grafică semnificativă.
Dacă vă place Java, C # este foarte asemănător în sintaxă, cu avantajul că poate interop cu C ++ – deci lucrurile de nivel scăzut pot fi făcute în C ++ dacă este necesar. Unity poate folosi C # pentru scripturi, iar XNA este o alegere excelentă.
Din nou, Java nu este utilizat pe scară largă. Dacă vă place stilul și sintaxa, cred că veți găsi că C # este o experiență de codare foarte asemănătoare, foarte plăcută.
Sper că visele voastre o vor face, este „foarte distractiv pe parcurs :)) / p>
Comentarii
Răspuns
Uite omule, răspunsul simplu la „Is Java viabil pentru joc dev „este un da evident. Puteți utiliza orice limbaj de programare pentru a crea jocuri. Asta nu înseamnă că ar trebui să .
Probabil chiar lucrurile care te opresc din C ++ ( management de memorie la nivel scăzut, fără colector de gunoi, trebuie să fii atent la pointeri, structuri ca tablouri etc.) sunt lucrurile pe care ar trebui să le înveți dacă vrei să exploatezi un computer resurse cel mai eficient .Jocurile dvs. vor funcționa cel mai bine dacă utilizați resursele computerului cel mai eficient.
Java face unele lucruri (cum ar fi verificarea limitelor matricei) care îl fac să ruleze mai lent. În acest cod de exemplu de zgomot Java Perlin optimizat, autorul a comentat „(accesul la matrice este mult mai lent decât accesul membrilor)”. Acest gen de lucruri este destul de contra-intuitiv provenind dintr-un fundal C ++. Dar în Java, astfel de lucruri sunt.
Spun să nu mai eviți glonțul, să înveți C ++ și să îl folosești.
Răspunde
Acest lucru nu vă răspunde la întrebare; problemele legate de grafică și consolă par a fi ceva de care trebuie foarte mult să luați în considerare. De asemenea, GC afectează performanța. Dar despre ce scriu:
Dacă scrieți programe mari, complexe, OO, le veți scrie de 5 ori mai repede în Java decât C ++. De asemenea, întreținerea va fi mult mai ușoară. Am schimbat, (desigur, pentru software-ul non-joc), iar productivitatea mea a crescut. C #, o altă alternativă bună, este mai greu de învățat decât Java, deoarece există „mult mai mult din el. Când îl știi, poți scrie cod chiar mai repede decât în Java; îți oferă o mulțime de trucuri. Cu toate acestea, găsesc acele trucuri poate face dificilă întreținerea. Apoi, există documentul Java, care vă ajută cu bibliotecile Sun și cu propriul cod vechi. C # nu are nimic asemănător.
Am făcut un mare joc păros în Java și am găsit limbajul perfect, dar grafica mea era elementară și nu era un shooter unde o zecime de secundă era o eternitate pentru jucători. De asemenea, mă aștept să adaug multe lucruri mai târziu, în timp ce cred că majoritatea oamenilor merg și scriu un joc nou.
Răspunde
Ar trebui să o faceți în limba pe care o cunoașteți cel mai bine până când vă puteți permite o educație formală (licență în științe?) în informatică, subliniind designul jocurilor . Puteți folosi jocul pentru a obține o bursă, mai ales dacă puteți spune „Am făcut asta fără nicio pregătire formală în Java”
JVM-uri moderne, chiar și cel de la Oracle, are multe, multe caracteristici pentru a răspunde preocupărilor pe care oamenii le-au adus aici. Puteți utiliza diferite colectoare de gunoi pentru a obține un comportament mai determinist al colectorului de gunoi. Nu am o experiență extinsă cu bibliotecile 3D – doar puțin cu Java3D – dar nimeni nu pare să se fi plâns de ele. Analiza Escape permite acum elisiunea blocării și alocarea mult mai rapidă / neglijabilă a obiectelor cu durată scurtă de viață.
Problema este că, indiferent dacă alegeți Java din C ++, va trebui să învățați cum să utilizați în mod corespunzător concurența și să înțelegeți bine gestionarea memoriei. La urma urmei, vă puteți înșela la fel de ușor cu malloc
ca și cu new
. Nu știu cum sunt instrumentele pentru C ++, dar instrumentele de profilare pentru Java sunt destul de ușor de utilizat, gratuite și integrate cu IDE. Puteți să le utilizați pentru a depista problemele de performanță și învăța .
Comentarii