Suljettu. Tämä kysymys on aiheen ulkopuolella . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

  • Eikö ' t ole Java-järjestelmällä rakennettu minecraft? Tai lähinnä OpenGL? Voi ja tarkista C #, jos et ole sataprosenttisesti java, koska se on mahtavaa.
  • Miksi et tule ' t tulet Stack Overflow C ++ -keskusteluun ? Rakastamme C ++: ta, luulemme, että sitä voidaan ehdottomasti käyttää oikein, ja tiedämme kuinka se tehdään, ja ' voimme olla täysin iloisia jakamisesta.
  • Minecraft on java + LWJGL + Notch ' -koodaustaidot, joten suorituskyvyn kannalta se on KAIKEA.
  • Lukitse itsesi yhdeksi koodauspeleistäsi tai muusta. kieli ei auta sinua tulevaisuudessa. Haaraa hieman, joko C ++ tai jotain muuta, kuten Python. Se vie aikaa, mutta se tekee sinusta paremman kehittäjän.
  • Saat ' paljon väärää tietoa, koska Java / C ++ -sodat palavat kirkkaasti. valmis pyytämään erityisiä esimerkkejä ennen lausunnon hyväksymistä ja myös tutkimaan enemmän itse =) Tästä huolimatta olen @loganfsmythin kanssa samaa mieltä siitä, että sinun on tiedettävä monia kieliä, koska vasta sitten voit valita oikean työkalun mihin tahansa tehtävään . Jos haluat lähitulevaisuudessa vain oppia " pelityylin ohjelmoinnin ", käytä sitten mitä ' viihtyy (Java) kanssa ja opi sitten C ++ myöhemmin. Hitto, myöhemmin saatat tehdä sisältöputkistoja C #: ssä ja pelejä Java ME: ssä, vaikea ennustaa =)

Vastaa

Kyllä on, tarkista tämä luettelo todisteen saamiseksi. Nämä ovat joitain pelejä, jotka on tehty Java-sovelluksella The Lightweight Java Game Library (LWJGL) -tekniikalla. Se on matalan tason kehys, joka tarjoaa OpenGL: n korkealaatuiselle grafiikalle ja OpenAL: n äänille. Se tarjoaa myös syöttösovellusliittymän. Näiden avulla voit helposti aloittaa vakavan pelikehityksen Java-käyttöjärjestelmässä.

Kirjoitan toista 3D-peliäni harrastusprojektina Javalassa, ja rakastan sitä vain. Aiemmin kirjoitin pelejäni C ++: lla, mutta Java-tilaan siirtymisen jälkeen ei ole paluuta. Useiden käyttöjärjestelmien tukeminen Java-ohjelmalla voi olla erittäin helppoa, esimerkiksi edellinen Java-pelini, jonka kehitin vuoden ajan Windowsissa, toimi heti Linuxissa ja OS X: ssä vain yhdellä virheellä ilman tarvetta koota mitään näille alustoille.

Toisaalta Java: lla on pari ongelmaa.

  1. Roskakeräin. Kuten muut ovat todenneet, ei-deterministinen muistinhallinta on ongelma, ja sinun on koodattava tämä mielessä.
  2. Kolmansien osapuolten kirjastojen puute. Suurin osa käytettävissä olevista kirjastoista ei tue Java-sovellusta. Toisaalta sinulla on aina mahdollisuus kutsua näitä natiivikirjastoja myös Java: sta, mutta se on enemmän työtä tehdä niin. Suosituille kirjastoille on saatavana myös Java-portteja tai valmiita kääreitä, esimerkiksi käytän JBullet – Bullet Physics Libraryn Java-portti . Toisaalta Javalla on sisäänrakennettu valtava luokkakirjasto, mikä vähentää kolmansien osapuolien kirjastojen tarvetta, jotka eivät liity peliin. Kirjastojen puute ei ole ollut minulle ongelma, mutta voin kuvitella, että se voi olla muillekin.
  3. Suositut pelikonsolit eivät tue Java-ohjelmaa, eikä Java-sovelluksiin ole helppo siirtyä toistaiseksi. kuten tiedän. Toisaalta Android, joka on suosittu mobiilialusta, käyttää jonkinlaista Java-muotoa. Tämä on myös vaihtoehto, mutta älä muuta samaa Java-koodia toimiakseen sekä tietokoneella että Android-laitteella.
  4. Pienempi yhteisö. Useimmat pelien ohjelmoijat käyttävät C ++: ta ja kokemukseni mukaan usein eivät pidä Javaista. Don ” En odota saavan niin paljon apua muilta. Älä odota saavasi työtä pelikehityksessä ilman C ++ -taitoja.

Vastaa

Ei oikeastaan. Täällä ”asia on ensinnäkin, olemassa olevien Java-kirjastojen suhteen on hyvin vähän verrattuna käytännöllisesti katsoen kaikkeen , mikä on C ++: lle.

Toiseksi Java kielenä yksinkertaisesti ei sovellu hyvin pelikehitykseen – tarkoitan esimerkiksi, että jos olet tekemisissä GPU-puskurien kanssa, Java ei tarjoa kieliominaisuutta, joka auttaa sinua varmistamaan, että ne on lukittu oikein ja lukittu tai hävitetty, mikä C ++ Lisäksi suorituskykyongelma on – ja GC ei ole deterministinen, mikä on erittäin huono pelille.

En ole koskaan havainnut yhtään muuta kuin indie-peliä, joka vietti merkittävästi aikaa kieli, jota ei ole käännetty alkuperäiskoodiksi ennen suoritusta, ja jopa niin tekevät indie-pelit ovat harvinaisuus.Joten uskon tällä hetkellä, että sitä ei yksinkertaisesti voida tehdä.

Jos jatkan Java-oppimista ja parantamista nyt, ja käy ilmi, että myöhemmin Minun on opittava C ++, onko vaihtamisen tekeminen vaikeaa?

Kyllä, ehdottomasti se tulee. Java ja C ++ ovat huomattavasti erilaiset huolimatta niiden pinnallisesta syntaktisesta samankaltaisuudesta. Java-kokemuksella ei ole käytännössä mitään merkitystä, kun opetetaan C ++ -ohjelmaa.

Grafiikan pelaaminen on toteuttamiskelpoinen valinta, ja voit nähdä sen Terarrian ja Minecraftin kaltaisten pelien menestyksessä. Mutta jos aiot luoda srs-grafiikkaa, sitä ei voida suorittaa Java-ohjelmassa.

Kommentit

  • +1, koska hän määritteli raskas grafiikka, nopea peli ilman viivettä.
  • Java ' allekirjoittamattomien tietotyyppien puute on myös sitä vastaan. Kyllä, voit kiertää sen, mutta se ' eivät ole ihanteellisia, ja sinä ' käytät koodia, joka ' ei todellakaan taustalla olevat tiedot oikein.
  • @deadmg Onko lukittu ja lukittu , viittaatko joihinkin DirectX-api-toimintoihin? & Voitteko kerro minulle, mikä ' on niin huono siitä, että sinulla on ei-deterministinen GC.
  • Ei-deterministinen GC voi rinnastaa kehysten pudottamiseen, jos saat huonon pysähdyksen maailman tauko ja se lukitsee asiat kauemmin kuin mitä kehyksen renderointi vie. Käytännössä tätä ei tapahdu usein / koskaan, jos suunnittelet muistiasi käytä, JVM ' n kerääjät voidaan määrittää matalalle taukolle (hyvin turvallisissa rajoissa kehyksen pudottamista varten). Silti se ' ei ole hauska asia, jonka on käsiteltävä. Sinun on lopulta luovutettava merkittäviä määriä tuottavuutta, jonka saavutit poistuessasi C ++: sta.
  • Aloitus, jonka ' sinun on kirjoitettava kokonaan uudelleen.

vastaus

Joten, olen todella tosissani pelikehitys, onko Java edelleen toteuttamiskelpoinen valinta? Olen yrittänyt useita kertoja oppia C ++: n, mutta en todellakaan pidä kieltä. En tiedä miksi, mutta yleensä aina, kun yritän oppia, en koskaan ymmärrä aiheita.

Jos syy valita Java on se, että et voinut ymmärtää C ++: ta, Java-ohjelmat eivät tule olemaan riittävän nopeita korkealaatuiselle grafiikalle. Korkeamman tason kielen käyttämisen pitäisi johtua siitä, että se tekee sinusta tuottavamman, ei siksi, että et ymmärtäisi alemman tason kieltä.

En usko, että on täysin huono idea kirjoittaa peli Java, varsinkin jos peli on yksinkertainen, mutta sinulla on heti Java-suorituskykyongelmia, jos käytät sitä kainalona.

Lyhyesti sanottuna, voidaanko Java ottaa vakavasti pelien vakavaan kehittämiseen. Tähän sisältyy raskas grafiikka, nopea pelaaminen ilman viivettä ja mahdollisesti helppo siirtyminen konsoleihin?

  1. Raskas grafiikka: Mahdollinen, mutta aiot tehdä samaa Java / LWJGL: ssä kuin C ++ / GL: kirjoitat tavuja GPU-puskureihin ja / tai vanhentuneet näyttölistat kuten Minecraft. Jos et ymmärrä muistinhallintaa, et myöskään tee tätä oikein.

  2. Nopea pelattavuus ilman viivettä: Ei helppo tehtävä millään kielellä, ja olet todennäköisempää ampumaan itsesi kumpaankin suuntaan ajattelematta sitä.

  3. Ei, Java ei ole käytettävissä konsoleissa.

Kommentit

  • Mikä korvasi sivukysymyksenä näyttöluettelot, kun ne poistettiin käytöstä?
  • @Suds: Ohjelmoitava putki, uskon.
  • ha! se jo peitti sen. VBO: t : gamedev.stackexchange.com/questions/22170/…
  • Mobiilialustoja voi olla pidetään konsoleina. Ymmärrän, että hän todennäköisesti puhui kolmesta suuresta, mutta Android käyttää Java-sovellusta ja sille luodaan paljon pelejä.
  • @ Amplify91 kyllä, muutama peli on kirjoitettu Java-sovellukseen androidille. Mutta useimmat hyvät pelit ja luultavasti kaikki grafiikkaintensiiviset tai monitasoiset pelit kirjoitetaan C ++: lla Android NDK: lla.

Vastaa

Kokemus ohjelmoitu ohjelmoija osaa yleensä monia ohjelmointikieliä – ylimääräisten ohjelmointikielien oppiminen ei ole liian kovaa, kun tiedät yhden hyvin. Suosittelen kuitenkin, että C ++ ei ole sinun ensimmäinen kielesi, eikä luultavasti myöskään toinen kielesi.

Tämä johtuu siitä, että C ++ saa paljon hyötysuhteestaan tekemättä merkittäviä ajonaikaisia virheitä. Esimerkiksi Java-taulukon päässä olevan elementin käyttäminen heittää aina poikkeuksen, joka kertoo ohjelmoijalle tarkalleen mitä vikaa.C ++: ssa saatat saada onnekas ja se kaatuu heti, mutta hyvin usein se roskakoriin roskakoriin joitakin muita tietoja, eikä virhe tule näkyviin vasta paljon myöhemmin .

Ehdotan, että pysyt nyt Java-ohjelmassa (tai vaihda C #: een, jos haluat sen). Tämä antaa sinun tehdä asiat nopeammin kuin C ++: n käyttö, ja suorituskyvyn tietokoneella ei pitäisi olla ongelma.

Ajattele C ++: n oppimista, kun olet suorittanut muutaman projektin turvallisemmilla kielillä. C ++ on mitä tarvitset useimmissa ammattimaisissa pelinkehitystöissä.

Huomaa, että lukuun ottamatta sitä, että C # / XNA saa pelin, jonka kirjoitit pelikonsolille, vähintään sinun on perustettava yritys. toimistolla, ja käytettävissä on suuri budjetti laitteistokehitykseen ja muihin kuluihin.

Kommentit

  • Tämä on myös poikkeuksellisen totta, koska muut kielet kuin C ++ antaa sinulle tunteen suorituksesta. C ++: lla voi kestää satoja tunteja, mikä tuntuu olemattomalta. Muiden kielten oppiminen antaa sinulle ensin jalkasi märkä.
  • Kommenttisi virheiden puuttumisesta ovat todella noin C: stä (ja niin sanotusta C ++ -koodista, joka todella on C). C ++: lla on vakiokirjastot (ja vakiomallikirjastot), joilla on paljon parempi virheenkäsittely kuin mitä kuvaat. C ++: lla on myös toimittajien toimittamia kirjastoja (kuten MFC), jotka tarjoavat kunnollinen virheenkäsittely.

Vastaa

Vastuuvapauslauseke: Tämä ei vastaa tarkasti kysymykseesi. Olen kuitenkin yrittänyt mainita (lyhyesti) joitain seikkoja, jotka saattavat kiinnostaa sinua.

Syy siihen, että näet niin paljon C ++: sta, johtuu siitä, että C ++ on edelleen alan standardi – yleisin kieli konsoleille jne.

Java-tiedostoa ei käytetä usein. Minecraft on melko suosittu peli, joka teki siitä suuren Java-sovelluksen kanssa; mutta graafisesti se ei ole kovin hienoa. Spiral Knights ei ole huono – tehty myös Javassa, merkittävällä grafiikalla.

Jos pidät Javaista, C # on hyvin samanlainen syntaksissa, sillä etulla se voi ole vuorovaikutuksessa C ++: n kanssa – joten matalan tason asioita voidaan tehdä tarvittaessa C ++: ssa. Unity voi käyttää komentosarjoja C #: lla, ja XNA on erinomainen valinta.

Javaa ei taaskään käytetä laajalti. Jos haluat tyylin ja syntaksin mukaan luulen, että löydät C #: stä hyvin samanlaisen, erittäin miellyttävän koodauskokemuksen.

Toivon, että unelmiesi tekevät sen, se on hauskaa matkan varrella:)

Kommentit

  • Paljon ja paljon epätarkkuuksia tässä viestissä. Minecraft " huono " grafiikka ei ole (voimakkaasti) sidoksissa kieleen. MC: n huono suorituskyky liittyy suoraan siihen, että Java on huono kieli peleille, koska VALTAVAT suorituskykyongelmat ja LWJGL ei sovi kirjastoon suurille koodausprojekteille samasta syystä Mutta suurin tekijä oli Notch

    huono koodaus ja toteutus, joka korjataan … hitaasti. C # antaa sinulle kaikki hallitun muistin lisäykset ilman suurinta osaa Java-suorituskykyongelmista. Haittapuoli on, että C # on voimakkaasti Microsoft-keskitetty sekä peleille että sovelluksille.

  • @EfEs: Inhoan jakaa sitä sinulle, mutta hallittu muisti on kauheaa peleille, ja ihmisten, jotka koodaavat pelejä XNA: ssa, on käytettävä enemmän aikaa muistin hallintaan kuin ihmisten, jotka koodaavat C ++: ssa. GC: n ei-deterministinen luonne tarkoittaa, että sinun on yhdistettävä käytännössä kaikki ja vältettävä jakamista kuten rutto – ei tapaa, jolla kieltä oli tarkoitus käyttää.
  • Tämän vastauksen ei ollut tarkoitus olla 100% tarkka ; Mainitsin vain esimerkkejä, joista tiedän epämääräisesti. Voit vapaasti käyttää DV: ää.
  • @DeadMG Tiedän, että C ++ on oikea tapa, yritin vain selittää, että C # on parempi kuin Java peleille.
  • Koska olen pitkä aika C # kehittäjä (ei pelikehittäjä-ajattelu) Uskon, että poolointi ja muistinhallinta ovat suuria kysymyksiä huonosti suunnitellulle järjestelmälle. Ihmiset, joilla on C / C ++ -ajattelutapa ja kehitystavat, tunnen tuskin ahkerasti hallittavasta muistista, suunnittelu- ja arkkitehtuurimalleista, joita on käytettävä, ja hyödyntävät niitä sellaisella kielellä kuin Java / C #. Yritän sanoa, ettei C / C ++ -tekniikat tai -tuotteet ole huonoja, mutta että vaikka käytät yksinkertaisempia kieliä syntaksin suhteen (kuten Java ja C #), tarvitset silti paljon kokemusta pelisi oikeaan suunnitteluun tavalla.

Vastaa

Katso kaveri, yksinkertainen vastaus ”Onko Java elinkelpoinen pelin kehittäjälle ”on ilmeinen kyllä. Voit käyttää mitä tahansa ohjelmointikieltä pelien tekemiseen. Tämä ei tarkoita sitä, että pitäisi .

Luultavasti juuri ne asiat, jotka sammuttavat sinut C ++: sta ( alhaisen tason muistin hallinta, ei roskien keräilijää, huomion kiinnittäminen osoittimiin, rakenteisiin matriiseina jne.) ovat asioita, jotka sinun pitäisi oppia, jos haluat käyttää tietokonetta resurssit tehokkaimmin .Pelisi toimivat parhaiten, jos hyödynnät tietokoneen resursseja tehokkaimmin.

Java tekee joitain asioita (kuten taulukon rajojen tarkistus), jotka vain tekevät sen ajamisesta hitaampaa. tämä optimoitu Java Perlin -kohinan esimerkkikoodi, kirjoittaja kommentoi ”(taulukon käyttö on paljon hitaampaa kuin jäsenen pääsy)”. Tällainen asia on melko intuitiivinen C ++ -taustasta. Mutta Java, tällaisia asioita ovat.

Sanon, että lopeta luodin väistäminen, opi C ++ ja käytä sitä.

Vastaa

Tämä ei vastaa kysymykseesi; grafiikka- ja konsoliongelmat näyttävät olevan jotain mitä sinun on todella harkittava. Myös GC vaikuttaa suorituskykyyn. Mutta mitä kirjoitan:

Jos kirjoitat suuria, monimutkaisia OO-ohjelmia, kirjoitat ne viisi kertaa nopeammin Java-ohjelmassa kuin C ++. Lisäksi huolto on huomattavasti helpompaa. Vaihdoin (tosin muiden kuin peliohjelmistojen osalta), ja tuottavuuteni kasvoi. C #, toinen hyvä vaihtoehto, on vaikeampi oppia kuin Java, koska sitä on paljon enemmän. Kun tiedät sen, voit kirjoittaa koodia jopa nopeammin kuin Javassa; se tarjoaa sinulle paljon temppuja. voi tehdä huollosta vaikeaa. Ja sitten siellä on Java-asiakirja, joka auttaa Sun-kirjastojen ja oman vanhan koodisi kanssa. C #: llä ei ole mitään sen kaltaista.

Tein suuren karvaisen pelin Javalassa ja löysin kielen täydelliseksi, mutta grafiikkani oli alkeellista, eikä se ollut ampuja, jossa kymmenes sekunti oli ikuisuus Odotan myös lisäävän siihen paljon myöhemmin, kun taas uskoisin, että useimmat ihmiset vain kirjoittavat upouuden pelin.

Vastaa

Sinun tulee tehdä se parhaalla kielelläsi, kunnes sinulla on varaa tietojenkäsittelytieteen muodolliseen koulutukseen (kandidaatin tutkinto?), painottaen pelisuunnittelua. . Voisit mahdollisesti käyttää peliäsi apurahan saamiseksi, varsinkin jos voit sanoa ”Tein tämän ilman virallista koulutusta Javassa”.

Moderni JVM, jopa Oraclen omalla, on monia, monia piirteitä ihmisten täällä esiin tuomiin huolenaiheisiin. Voit käyttää erilaisia roskien keräilijöitä saadaksesi deterministisemmän jätteiden keräilijän käyttäytymisen. Minulla ei ole laajaa kokemusta 3D-kirjastoista – vain vähän Java3D: stä – mutta kukaan täällä ei näytä valittaneen niistä. Escape-analyysi sallii nyt lukituksen ja huomattavasti nopeamman / merkityksettömämmän hyvin lyhytaikaisen kohteen jakamisen.

Ongelmana on, valitsetko C ++: n Java-version, sinun on opittava samanaikaisuuden oikea käyttö ja ymmärrettävä muistin hallinta. Loppujen lopuksi voit tehdä yhtä helposti ruuvin malloc: llä kuin new. En tiedä millaiset työkalut ovat C ++: lle, mutta Java-profilointityökalut ovat melko helppokäyttöisiä, ilmaisia ja integroituja IDE: hen. Niiden avulla voit seurata suorituskykyongelmia ja oppia .

Kommentit

  • CS: n muodollinen koulutus on arvokasta, koska hänellä on todelliset ohjelmointitaidot kaikilla aloilla. Tiedän, minä ' m kolmannella vuodellani.
  • Ehdottomasti eri mieltä DeadMG: n kanssa. Valmistuttuani ja valitsemani kurssit pidin CS: stä pelikehitysvoimani 10%: sta 100%: iin. div id = ”457f10ef6a”>

t opeta minulle käyttöliittymää, ikonografiaa jne., mutta todellinen, todellinen koodaus.

  • @ ashes999: Sinulla on onnekas. Kurssini on arvoton ja tiedän, että siellä ovat monet muut, jotka kokevat saman.
  • @DeadMG se ' on vaikea nähdä, kun ' opiskelet uudelleen Kun olet työskennellyt pari vuotta F / T: tä ja oppinut muita ilmaisia taitoja, ' näen. Minä näin. Mutta ehkä Kiinnitin vain paljon huomiota ja yritin soveltaa kaikkea peliharrastukseeni.
  • Sanon, että se riippuu koulusta ja professorista. Minulla oli muutama loistava ohjelmointikurssi, joissa opin paljon; ja minulla oli muutama, jossa tunsin itse menettäni tietoni osallistumalla. ' on kaikki, onko sinulla hyvä professori vai ei. IMO.
  • Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *