39DLL by 39ster. Nettipeli Tutorial by Lauri Paavolainen - 25. heinäkuuta 2006. 1.) Intro :

Samankaltaiset tiedostot
Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

Ohjeita peda.net palvelun Luo uusi osioon

Mukaan.fi on oma verkkopalvelu juuri sinulle, joka olet kiinnostunut erityistä tukea käyttävien lasten, nuorten ja aikuisten elämästä.

Palautuskansio moduuli, ja sen vuorovaikutukset tehtävien annossa!

Kuukauden kuvat kerhon galleriaan lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:

Webinaariin liittyminen Skype for

Osa 7: Hahmojen ohjelmointi ja hienosäätö

Moodle-oppimisympäristö

NÄIN TEET VIDEO-MAILIN (v-mail)

Ohjelmoinnin perusteet Y Python

Johdatus ohjelmointiin

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö


EeNet materiaalit ohje

Alkuun HTML5 peliohjelmoinnissa

K-Lite Codec Pack v2.48 Asennusohje (toimii myös uusissa versioissa)

Valitse aineisto otsikoineen maalaamalla se hiirella ja kopioimalla (Esim. ctrl-c). Vaihtoehtoisesti, Lataa CSV-tiedosto

ASCII-taidetta. Intro: Python

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

Tuplaturvan tilaus ja asennusohje

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Solve laskutus Sivu 1

Opas Logitech Harmony 525 asennusohjelmistoon

KODU. Lumijoen peruskoulu

Useimmin kysytyt kysymykset

INTERBASE 5.0 PÄIVITYS VERSIOON 5.6

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

Sisältö. 3 Yleistä 4 Toimittajaportaalin edut 5-10 Rekisteröinti Laskun teko 23 Lasku JIP. 29/05/2015 Anna-Stina Lindblad

Ohjelmoinnin perusteet Y Python

Webforum. Version 14.3 uudet ominaisuudet. Viimeisin päivitys:

Postitussuunnitelman hyväksyminen

BaseMidlet. KÄYTTÖOHJE v. 1.00

Viestin lähettäminen ja viestien hallinnointi Viestit-lohkon kautta:

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

CSV - XML ohjelman käyttöohje

Suvi Junes/Pauliina Munter Tietohallinto / Opetusteknologiapalvelut 2014

Uuden TwinSpacen yleiskatsaus

SMS -viestien lähettämisen ohjeet CAB Planohjelmassa

oppimispeli esi- ja alkuopetusikäisten lasten matemaattisten taitojen tukemiseen

Ohjelmoinnin perusteet Y Python

Ohjeet. Ohjeita on kahdessa paikassa. Admin-näytön oikeassa ylänurkasta. Seura- sivuilta kohdasta Dokumentit

EDMODO. -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO

Ohjelmoinnin perusteet Y Python

Jypelin käyttöohjeet» Ruutukentän luominen

Zeon PDF Driver Trial

ohjeita kirjautumiseen ja käyttöön

Kipan AC huone on pääsääntöisesti auki ja opiskelijoiden vapaasti käytettävissä.

ActionTrack-sovellus

REITTIHÄRVELIN KÄYTTÖOHJE (ESIM. ILTARASTIEN YHTEYDESSÄ)

Share toiminto ja Seinä

Visma Fivaldi sovelluspalvelu: Laskut sähköpostiin ja tulostuspalveluun. 1 Yleistä

Tallilehti Kavionkopse nro. 1

SQL Buddy JAMK Labranet Wiki

Office ohjelmiston asennusohje

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Yksityiskohtaiset ohjeet. TwinSpacen käyttäminen

Kun mirc on ladattu, suorita asennustiedosto sieltä, minne sen tallensit. Eteesi pitäisi ilmestyä tällainen ikkuna ->

CLOUDBACKUP TSM varmistusohjelmiston asennus

KOTISIVUJEN KÄYTTÖOHJE ULVILAN PESÄ-VEIKOT RY

Opus SMS tekstiviestipalvelu

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

ehops-opastus Sisältö Opintosuunnitelman luominen askeleittain Opintosuunnitelman muokkaus Opintojen aikatauluttaminen

Kahoot! Kirjautuminen palveluun. Sinikka Leivonen

PDF-tiedostojen optimointi hakukoneille

JÄSENKIRJEEN LÄHETTÄMINEN

PELAAJAPROFIILI Mobiilisovellus

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Sidonnaisuuspalvelun käyttöönotto

VIP Softphone. Opas asennukseen ja tärkeimpien toimintojen käyttöön

NÄIN OSALLISTUT KUNNON PUTKEN TEHDÄÄN TILAA KINKULLE -KAMPANJAAN!

Open Badge -osaamismerkit

Unifaun OnlinePrinter

DIIGO TIEDONHALLINNASSA

4. Lausekielinen ohjelmointi 4.1

- Kuvan osoittamalla tavalla klikkaa kohtaa Tallenna Tiedosto. - Esimerkissämme Firefox selaimessa latauspalkki näyttää tältä

Ohjelmoinnin perusteet Y Python

KYMP Webmail -palvelu

Flash ActionScript osa 4

Worldpress ohje. Artikkelin kirjoittaminen, päivittäminen, kuvan, linkin, lomakkeen ja Google-kalenterimerkkinnän lisääminen

VSP webmail palvelun ka yttö öhje

Oma kartta Google Maps -palveluun

75059 Suuri lajittelusarja

Rakennusten elinkaarimittareiden verkkotyökalun käyttöohje.

Siemens Webserver OZW672

MeetNow-palvelun käyttöopas

Kätevästi netissä KÄYTTÖOHJE.

Kahoot - kyselytyökalu

Liigan taulut ja attribuutit

Racket ohjelmointia II. Tiina Partanen 2015

Kuinka aloitat kumppanuusmainonnan sivustollasi

Mikä on Twitter? Rekisteröityminen

Autentikoivan lähtevän postin palvelimen asetukset

Venekilpailu! Esteiden väistely ja hahmon ohjaaminen

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

EK:n palkkatiedustelun SFTP-tiedonsiirron yhteydessä annettavat yhteystiedot

Kodu Ohjeet. Jos päivityksiä ei löydy niin ohjelma alkaa latautumaan normaalisti.

Sense tiedostot Käyttöohje Opastinsilta 8 ae Helsinki

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

Transkriptio:

Nettipeli Tutorial by Lauri Paavolainen - 25. heinäkuuta 2006 39DLL by 39ster Sisältö : 1. Intro 2. Alustaminen 3. Pelin hostaaminen / aloittaminen netissä 4. Peliin liittyminen 5. Viestin lähettäminen ja vastaanottaminen 6. Kysymyksiä ja vastauksia osio 7. Outro 1.) Intro : Nettipelien tekeminen on rasittavaa? Et onnistu vaikka kuinka kokeilet ja testailet? Lue tämä tutorial läpikotaisin ja uskon että osaat edes tehdä yksinkertaisen 2:n pelaajan nettipelin helposti ilman mitään rasituksia. (Jos ei ota huomioon pelinteosta aiheutuvia rasituksia, virheitä ja niin edelleen.) Jätämme Markin Game Makeriin suoraan tekemät Mplay_ toiminnot sikseen ja aloitamme 39DLL:n käytön. Tämä paljon nopeampi ja helpompi DLL on ainakin minun valintani nettipelien tekoon Game Makerilla. Lataa ensin koko 39DLL paketti täältä ennen kun aloitetaan : Linkki (*klik klik*) (http://host-a.net/getfile.php?usern=39ster&file=39dllv2.zip) 2.) Alustaminen : Avaa ensin peli mihin teet nettipeliä tai sitten aloita ihan uusi tiedosto ja paina Merge nappia pelissäsi. Yhdistä tuosta.zip kansiosta DllScripts.gm6. Tuo tiedosto antaa sinulle 39DLL:n scriptit ja täyden nettipeli teko tuen. Ensimmäiseksi DLL pitää alustaa, tee uusi huone ilman mitään objecteja. Settings kohdasta --> Creation Code : dllinit(0, true, true); Tuo koodi alustaa 39DLL:n sinun käyttöösi. Ensimmäinen argument on nimeä varten, jos olet uudelleen nimennyt dll:n niin kirjoita siihen sen nimi. Toinen ja kolmas argument käsittelevät encryption ja decryption asioita joihin ei kannata puuttua vielä. (Ei ole varmaa, en jaksanut tarkistaa). Yhdistämiseen siis. Tarvitset menun kaltaisen huoneen jossa on 2 objectia. Se millä pelaaja voi hostata, ja se millä siihen hostattuun peliin voi liittyä. Hostaamiset ja liittymiset tehdään näin. (seuraavassa kappaleessa)

3.) Pelin hostaaminen / aloittaminen netissä Tämä hostaaminen on 2:lle pelaajalle, tietenkin on olemassa toinen keino jolla voi tehdä serverin nettiin ja muut pelaajat voisivat liittyä siihen suoraan ilman IP häsläystä, mutta tämä keino tarvitsee todella monimutkaista koodia ja servertietokoneen. Noh, eiköhän mennä takaisin asiaan? =) Tee uusi objecti ja nimeä se jotenkin näin; obj_host_nappula. Tee objectille mouse_left press event ja laita sinne odotushuoneeseen meno koodi ( room_goto(odotushuone ) koska tässä vaiheessa ei vielä yhdistetä mihinkään, vaan mennään odottamaan toista pelaajaa. Odotushuoneeseenkin tarvitsee uuden objectin joka odottaa toista pelaajaa ja menee pelihuoneeseen kun hän on saapunut. Teen tämän osion vain event osissa joten tämä voi olla sekava osio : Create : listen = tcplisten(14804, 2, 1); //Kuunteluportin haku global.host = true; //Olen host. Destroy : room_goto(pelihuone); //Mennään pelihuoneeseen. Step : sock = tcpaccept(listen, 1); //Socketin luku if(sock) //Jos sockettista kuuluu jotain closesocket(listen); //Suljetaan kuunteluportti global.otherplayer = sock; //Toinen pelaaja on siellä. instance_destroy(); //Tuhotaan objectimme. Draw : draw_text(300, 300, "Odotetaan toista pelaajaa =)"); //Odotustekstin piirto. Nyt olet valmis siihen asti kunnes peli alkaa. Toisen pelaajan pitää vielä kylläkin osata liittyä peliin, mutta seuraava kappale on suoraan sitä varten. Anteeksi muuten noista väreistä, minun GM:ssäni nuo värit ovat noin....vaikkakin ovat vähän sekavat, en aio vielä vaihtaa niitä.

4.) Peliin liittyminen Uusi objecti jonka nimeät jotenkin näin; obj_join_nappula. Tämän nappulan tarkoitus on toimia yhdistysnappulana joka yhdistää pelaajan hostaajaan ja antaa pelin alkaa. Left Released : ip = get_string("ip johon yhdistetään?", "127.0.0.1"); //Kysyy IP:tä mihin yhdistetään global.otherplayer = tcpconnect(ip, 14804, 1); //Koitetaan yhdistää... if(!global.otherplayer) //Jos ei saada kiinni... show_message("serveriin ei saada yhteyttä"); //Näytetään viesti.. exit; //Ei mennä eteenpäin global.host = false; //Jos onnistutaan.. Olen liittyjä room_goto(pelihuone); //Peli huoneeseen Näin, nyt sinulla on hostaaja objecti ja liittymis objecti. Tarvitset enää pelaajien välisen yhteyden ja olet valmis tekemään nettipelin loppuun. =) On enää 2 viimeista osiota jotka käsittelevät viestien lähetystä. Ylempi koodi yhdistää itsensä IP:hen jota Host kuuntelee. Näin host saa pienen viestin että toinen pelaaja on liittynyt peliin. Ja koska 2:ta objectia ei pitäisikään ohjata nettipelissä, global.host on laitettu 0:ksi.

5.) Viestin lähettäminen ja vastaanottaminen Tarvitsemme 2 pelaaja objectia, toisen ensimmäiselle pelaajalla, ja toisen toiselle pelaajalle. Näitten keskellä on viestien lähetyspäällä ja ne vastaanottavat toistensa X:n Y:n ja muut. Viestien lähettäminen ja vastaanottaminen on helppoa ja siihen ei tarvitse kuin 2 osaa; Tässä ensin lähetys : User Event 0 tjsp. (Pelaajan 1 lähetys. Sama toiselle pelaajalle) clearbuffer(); //Bufferi tyhjäksi writebyte(0); //Viestin ID numero writeshort(x); //Kirjoittaa X:n writeshort(y); //Kirjoittaa Y:n bufferencrypt(global.encryptionpass); //Suojaa sendmessage(global.otherplayer); //Lähettää writeshort on vain yksi niistä monista käskyistä mitä on olemassa (writestring, writelong jne.) Writebyte kirjoittaa viestin ID numeron mikä seuraavassa koodissa katsotaan ja tehdään sopivat toimenpiteet : Pelaaja 2:sen vastaanottokoodi (Step) (Sama ensimmäiselle pelaajalla, hieman muokattuna) if(global.host)exit; //Kun et ole host (muuta tätä ensimmäiselle pelaajalle) while(1) size = receivemessage(global.otherplayer); //Vastaanottaa tietoa/viestejä if(size < 0) //Jos koko on pienempi kuin 0, lopeta if(size == 0) //Jos se on tasan 0... show_message("other player left the game"); //Toinen lähti pelistä instance_destroy(); //Tuhoa itsesi. (minun mielestäni tämä ei toimi =/ ) bufferdecrypt(global.encryptionpass); //Encryptoi password mid = readbyte(); //Lue byte (ID) switch(mid) //Verrataan byteä... case 0: //Kun viestin ID on 0, päivitetään toisen pelaajan X ja Y objensimmainenpelaaja.x = readshort(); objensimmainenpelaaja.y = readshort(); case 1: //Kun yksi.. //Tähän mitä tahansa haluat siinä olevan =) //Muista lähettää se oikeaseen byteen jos haluat //tämän toimivan. Plus readshort pitää muuttaa //Oikeaan muotoon, readstring jne. Ensimmäinen rivi katsoo että jos olet host, niin et suorita seuraavaa koodia. Tämän tilalle pitää laittaa if not global.host pelaaja ykköselle. Seuraavat rivit lukevat viestin ja katsovat millä bytellä viesti on lähettetty. Päivitetään pelaaja 1:sen X ja Y jos se on 0, kuten ylemmässä koodissa se lähetetäänkin. Tämä esimerkki käyttää helppoa X:n ja Y:n lähetyskeinoa, mutta jos haluat lähettää stringejä (tekstiä) sinun tarvitsee muokata toimintoja pikkaisen, esim. writestring(''moi'); ei toimi vaan toiminnon perään pitää lisätä true että se toimisi. writeshort('moi', true); on oikea lauseke =)

Kysymyksiä ja vastauksia osio : Q: Miten sitten teen valmiista pelistäni suoraan nettipelin kahdelle pelaajalle? A: Se voi olla vaikeaa.. Ja saattaa onnistua, mutta jos peli on ihan valmis vaikeuksia tulee. Q: MMORPG? Miten tehdä semmoinen? Haluaisin todella aloittaa tekemisen... Huomenna? A: Heh, sen tekeminen on todella hankalaa. Ensinnäkin tarvitset servertietokoneen jossa on kaikki pelaajien tiedot, X:t Y:t, nimet ja sun muut. Kaikkien tietojen pitää välittyä pelaajalta pelaajalle ja servertietokoneen pitääkin olla päällä kokoajan (24/7). Haluatko vielä yrittää tehdä sitä? =P Q: Mistä olet saanut kokemusta kirjoittaa tämmöisen tutorialin? Tai mistä into kirjoittaa? A: Kokemusta sain lukemalla 39DLL:n normaalia tutorialia, examplejä ja nettiaihetta. Into tuli tämän kirjoituksen Game Maker Suomi foorumeilta, käyttäjien toivomuksesta. Toivottavasti tämä tutorial kelpaa heille =P Heh. Uskon että mitään mukinoita ei tule. =) Q: Game Maker? Mikä se semmoinen on? A: Game Maker on Mark Overmars:in tekemän todella yksinkertainen pelinteko-ohjelma. Sen avulla voit tehdä pelejä ilman yhtään koodaustaitoa, ja helppo käyttöinen Drag And Drop systeemi auttaa myös. Tässä tutoriaalissa kuitenkin käytin vähän monimutkaisempaa puolta Game Makerista ja tämä tarvitsee rekisteröidyn version. Rekisteröityminen maksaa 15 nykyisellä versiolla, joka ei ole kovin paljon näin laajasta ohjelmasta. Loppukiitokset Fire Dragonille siitä että keksi tämän tutoriaalin aiheen, 39ster:ille tästä todella upeasta 39DLL:stä ja auttavista omista tutoriaaleista. Mark Overmarsille mahtavasta Game Maker ohjelmasta joka auttoi minuakin ohjelmointiin. Kaikille kavereille Game Maker Suomessa, +sen käyttäjille kasvavasta suosiosta sitä kohtaan. -LauriP