Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Pelin tekeminen

Sivun loppuun

TapaniS [21.03.2020 11:49:26]

#

Nyt on alkamassa uusi kilpailu, pitäisi tehdä peli. Aikaisemmin Java-appleteilla tuo sujui mukavasti, mutta nyt ne eivät enää toimi oikein missään :(

Osaisiko joku neuvoa, miten nyt voisi toteuttaa pelin, jota voisi ajaa esim. www-sivulla? Tai miten tämä oikein hoidetaan? Hanskassa lähinnä Java, PHP ja HTML.

Grez [21.03.2020 12:09:55]

#

Yleisesti ottaen olennaisimmat teknologiat jotka ovat relevantteja selaimella toimivien ohjelmien (kuten pelien) tekemiseen, ovat javascript, html ja css.

Erilaiset kehittämistä helpottavat työkalut sitten tyypillisesti rakentuvat noiden päälle. Pelinhän voi tehdä toki jollain muullakin kielellä, joka sitten käännetään noille.

Sitten jos on tarkoitus tehdä moninpeli, niin myös palvelinpään teknologiat on pelin kannalta relevantteja. Niissä valinnanvaraa on sitten pilvin pimein.

The Alchemist [21.03.2020 12:37:29]

#

Pelithän piirretään oikeastaan canvas-elementin sisään ilman mitään HTML-rakennetta, joten HTML:llä tai CSS:lläkään ei tee käytännössä yhtään mitään.

TapaniS [21.03.2020 13:12:46]

#

No joo, nyt löytyi googlettamalla:
Game Example

Metabolix [21.03.2020 13:12:47]

#

Canvas mahdollistaa JavaScriptilla nopean piirtämisen. Toisaalta kyllä grafiikat voi toteuttaa myös HTML:n ja CSS:n voimin, jos yksinkertaiset muodot ja kuvat riittävät eikä tarvita jatkuvaa animaatiota. Esimerkiksi vuoropohjaisessa pelissä tämä usein riittää.

Perinteisille kielille löytyy myös kääntäjiä: esimerkiksi JSweet kääntää Java-koodia ja Emscripten kääntää C++-koodia JavaScriptiksi.

TapaniS [26.03.2020 10:34:58]

#

Ryhdyin rakentelemaan Tasteroids -peliä html+canvas+javascript -ympäristöön. Törmäsin kuitenkin pariin ongelmaan:
1) Koodi on täysin kaikkien näkyvillä eli kuka vaan voi sen kopioida. Onkohan tähän mitään ratkaisua?
2) Asteroids -pelistä löytyy valmista koodia (myös putkan koodivinkki eilen). Eli voiko kilpailuun kuitenkin osallistua, jos hyödyntää näitä open suorce -lähteitä?

Grez [26.03.2020 11:14:13]

#

TapaniS kirjoitti:

1) Koodi on täysin kaikkien näkyvillä eli kuka vaan voi sen kopioida. Onkohan tähän mitään ratkaisua?

Esim. http://lisperator.net/uglifyjs/

Tiukempiakin obfuskointityökaluja löytyy, mutta jos tuolla uglifyjs:llä poistat muuttujien ja funktioiden nimet niin eipä ketään enää siinä vaiheessa kiinnosta kopioida koodiasi, ellei siellä jotain aivan mullistavaa ole.

Tilannehan ei sinänsä eroa esim. Java appleteista, joista myös saa oletuksena lähdekoodin palautettua näkyville.

Metabolix [26.03.2020 11:33:26]

#

1) Grezin mainitseman lisäksi hakusanoilla JS minifier löytyy useampia työkaluja JavaScript-koodin tiivistämiseen, minkä jälkeen koodi on käytännössä lukukelvotonta. HTML-koodia ei voi piilottaa, mutta toisaalta HTML:n kopiointi tuskin on ongelma muutenkaan. Kannustan kuitenkin avoimeen lähdekoodiin: usein aivan riittävä keino kopioinnin estoon on se, että koodi on julkaistu näkyvästi jossain palvelussa, jolloin hakukoneella helposti selviää alkuperäinen tekijä. Koodia voi kehittää vaikka GitHubissa versioinnin kera, jolloin jää selvä jälki omista teoista.

2) Ajankohtaista kilpailua koskien: Kyllä lähteitä voi hyödyntää. Luotan osallistujien omaan arvostelukykyyn tässä. Aikaisemmissa kisoissa ei ole ollut ongelmaa kopioinnin kanssa. Tietenkin kisasta voidaan hylätä tekeleet, joissa on selvästi otettu jonkun muun tekemä peli ja vaihdettu vain pari riviä. Toisaalta aivan hyvin sopii, jos kopioi pelinteko-oppaasta rungon ja tekee siihen ihan oman pelin.

TapaniS [26.03.2020 21:40:32]

#

Kiitos kommenteista! En nyt ainakaan vielä näe mielekkäänä koodin sotkemista. Ihan mielenkiintoinen toteutus javascriptin avulla. Ehkä tästä joku toinenkin voi saada työkaluja erilaisten pelien tms. toteutukseen.

Tasteroids 3.0 keskeneräisenä täällä.

------ Edit ------

Tulipa vielä mieleen, että onko mahdollista kirjoittaa PHP:llä funktioita, joita sitten kutsutaan JavaScript -koodista? No - testaamalla tuo varmaan selviää. :)

Metabolix [28.03.2020 19:44:50]

#

Et voi varsinaisesti kutsua PHP-funktioita JS-koodista, koska PHP ajetaan palvelimella ja JS selaimessa. Tietysti voit tehdä JS:llä uusia pyyntöjä palvelimelle.

Lebe80 [28.03.2020 22:31:42]

#

Metabolix kirjoitti:

Et voi varsinaisesti kutsua PHP-funktioita JS-koodista, koska PHP ajetaan palvelimella ja JS selaimessa. Tietysti voit tehdä JS:llä uusia pyyntöjä palvelimelle.

Tai vastaavasti tehdä (syystä tai toisesta) tulostaa php:lla javascript-funktion, jota vaikkapa kutsutaan sivun latautuessa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta