Tervehdys,
Herättelin taas paremman tekemisen puutteessa vanhaa shakkipeli projektia eloon. Kyseessä on siis verkossa pelattava shakkipeli Infernolle kirjoitettuna Limbo-ohjelmointikielellä.
Jos joku viitsisi kokeilla ja kertoa mielipiteensä pelin toiminnasta. Käyttöliittymän tulen kirjoittamaan uusiksi ja ajattelin lisätä tuohon ainakin siirtohistorian ja mahdollisesti ajalla rajoitetut pikapelit.
Laitoin tuon koodivinkkeihin, vaikka sitä tuskin julkaistaan kommenttien "runsaasta" määrästä johtuen.
Paketissa olevassa lähdekoodissa on pieni virhe. Lähetin korjatun version kaverille ja päivittänee tuon paketin iltaan mennessä. Koodivinkissä oleva versio on kuitenkin korjattu ja tuon paketissa olevan version voi tietysti itsekin korvata sillä.
Ohjeina laitettakoon:
- Lähdekoodin kääntäminen tapahtuu komennolla: limbo -g chess.b
- Kannattaa shellissä suorittaa komennot:
ndb/cs
ndb/dns
Tällöin ip-osoitteen sijaan voidaan yhteydenotossa käyttää hostnamea suoraan.
Kuningas ja Kuningatar!
http://xob.kapsi.fi/~ljl/peli/chess.jpg
Taitavat tuossa kuvassa olla väärillä paikoilla ?
Vaalea kuningatar kuuluu olla vaaleassa d1 ruudussa, ekalla rivillä, kun a1 on tumma ruutu.
Olen itsekkin hiljattain rakentanut shakkipelejä, ja minullakin meni aivot solmuun kun laitoin vaalean yläpuolelle, myös hevosen kuuluu katsella kuningasta ei kuningatarta.
Minulla on tyylitellympää grafiikkaa, mutta, taitaa olla kuitenkin niin että tuon teidän kaltaisen grafiikan kanssa on mukavampi pelata ?
Limbosta en ole kuullutkaan, katselen myöhemmin viikolla, josko se toimisi linuxissani.
---
kpzpt kirjoitti:
Kuningas ja Kuningatar!
http://xob.kapsi.fi/~ljl/peli/chess.jpg
Taitavat tuossa kuvassa olla väärillä paikoilla ?
Vaalea kuningatar kuuluu olla vaaleassa d1 ruudussa, ekalla rivillä, kun a1 on tumma ruutu.
Omalla laudallani valkoinen on ylhäällä, ei alhaalla niinkuin useimmissa toteutuksissa. ;-)
Tuossa on toinenkin mielenkiintoinen seikka. Tällä hetkellä kannattaa kokeilla siten, että ajaa kokeillessa pelejä kahdella eri Infernon emu:lla. Nimittäin nuo käynnissä olevat pelit samalla emu:lla näyttävät jakavan saman globaalin taulukon, mikä kuvaa pelilautaa. Korjailen tuon illan aikana...
Heippa,
Nyt korjattu versio saatavilla ensimmäisessä viestissä mainitsemassani osoitteessa. Päivitetty paketti saatavilla myöhemmin. Korvatkaa nyt paketin kooditiedosto koodivinkin listauksella.
Jos joku viitsisi kokeilla, niin olisi mukava saada palautetta ohjelman toiminnasta.
Ohjeet:
Lataa Inferno tuolta, jos sitä ei ole vielä koneella.
Infernon käynnistämistä varten kannattaa tehdä skripti tai komentotiedosto. Itse käytän Windows alustalla jotakin seuraavan kaltaista:
\inferno\nt\386\bin\emu -pmain=256M -g1280x1024 wm/wm wm/logon -u inferno
pelipaketti kannattaa purkaa: "\inferno\usr\inferno\" hakemistoon.
Infernon shell auki ja komento: "cd $home/chess" vie pelipaketin hakemistoon,
Pelin kääntäminen onnistuu komennolla: "limbo -g chess.b"
Suorita: "ndb/cs" ja "ndb/dns" niin Inferno osaa ottaa yhteyden hostnamen avulla.
Tämän jälkeen pelin voi käynnistää komennolla: "chess"
kpzpt kirjoitti:
Kuningas ja Kuningatar!
http://xob.kapsi.fi/~ljl/peli/chess.jpg
Taitavat tuossa kuvassa olla väärillä paikoilla ?
Vaalea kuningatar kuuluu olla vaaleassa d1 ruudussa, ekalla rivillä, kun a1 on tumma ruutu.
Olen itsekkin hiljattain rakentanut shakkipelejä, ja minullakin meni aivot solmuun kun laitoin vaalean yläpuolelle, myös hevosen kuuluu katsella kuningasta ei kuningatarta.
Tarkemmin katsottuna olet oikeassa! :)
Huomasin tuon äsken, kun tein muutoksen siten, että paikallinen pelaaja on aina alhaalla. Postittelen korjatun ja laajennetun version kohtapuoliin..
Nyt korjattu ja todennäköisesti kokonaan toimiva versio ladattavissa ensimmäisen postauksen linkin takaa.
muutoksia:
Nyt paikallinen pelaaja on aina alempi. Tämän pitäisi helpottaa pelitilanteen hahmottamista. Fyysisesti pelilauta on toki tallennettu edelleen siten, että valkoinen on ylhäällä ja musta alhaalla, mutta koordinaatit sekä tapahtumat kartoitetaan tarvittaessa uudelleen yksinkertaisesti siirroksen avulla.
Nyt peliä ei enää tarvitse sulkea ja käynnistää uudelleen päättyneen pelin jälkeen, vaan valikosta voi suoraan valita uuden pelin pystyyn pistämisen tai peliin liittymisen.
Kokeilkaa nyt joku edes, perkule. Solvauksia ja parannusehdotuksia otetaan vastaan.
jatkan pelin kehittämistä eteenpäin, kunhan illalla saan asennettua Plan 9:n OS/2:n rinnalle. Nyt on ollut hiukan vaikeaa, kun omalla koneella ei ole fyysisesti asennettuna Infernoa ollenkaan ja testaus on yleensä tullut tehtyä veljen tykönä kahvitauolla.
Oman osoitteen voisi yrittää saada otsikkopalkkiin, tosin ulkoista osoitetta varten tarvittaisiin jokin nettisivu, joka sen kertoisi. Yksinkertainen metaserveri (esim. PHP:llä tuonne kaverisi sivuille) ja siis sen kautta lista vastustajaa odottavista pelaajista olisi myös plussaa. Tätä varten pitäisi ehkä käyttäjän pystyä säätämään itselleen nimimerkki. Vakioportti ei tunnu hyvältä idealta, se ei ehkä käy kaikille. (Tietenkin asetus voi olla peruskäyttäjää ajatellen piilossa, tai jos metaserveri toteutuu, portin voi vaikka arpoa.)
Kun suljin toisen ikkunan, jäljellä olevaan tuli aiempaa pidempi statusviesti, joka venytti ikkunaa vähän. Olisi hyvä säätää koko etukäteen riittäväksi tai fontti tarvittaessa pienemmäksi. Tämäkin voi toki olla osallinen ongelmassa:
tk: font not found: /fonts/pelm/unicode.8.font
Ulkoasultaan peli on aika tympeä, tyypillinen koodarin tuotos: särmikäs mutta toimiva. Ei toki minua haittaa. Plussaa siirtoa osoittavasta nuolesta, vaikka nykyaikaisempaa olisi varmaan animoida nappulan siirtyminen.
Lopputulosta voisi pitää hyvänä, jos olisit aloitteleva koodari ja kyseessä olisi esim. ensimmäinen verkkopelikokeilu, mutta kun tilanne kuitenkin on aivan toinen, täytyy hieman ihmetellä, mikä tämänkin projektin tarkoitus on.
Metabolix kirjoitti:
Oman osoitteen voisi yrittää saada otsikkopalkkiin, tosin ulkoista osoitetta varten tarvittaisiin jokin nettisivu, joka sen kertoisi. Yksinkertainen metaserveri (esim. PHP:llä tuonne kaverisi sivuille) ja siis sen kautta lista vastustajaa odottavista pelaajista olisi myös plussaa. Tätä varten pitäisi ehkä käyttäjän pystyä säätämään itselleen nimimerkki. Vakioportti ei tunnu hyvältä idealta, se ei ehkä käy kaikille. (Tietenkin asetus voi olla peruskäyttäjää ajatellen piilossa, tai jos metaserveri toteutuu, portin voi vaikka arpoa.)
Voisihan tuon toteuttaakin kohtuu helposti. Infernolla oman ja vastapuolen osoitteet saa selville yksinkertaisesti näennäisestä tekstitiedostosta lukemalla. Pelaajia parittavan serverin voisin kyllä harjoitusmielessä kirjoittaa suoraan Limbollakin. Sen pohjana voisi käyttää toimivaa chat-serverin runkoa.
Metabolix kirjoitti:
Kun suljin toisen ikkunan, jäljellä olevaan tuli aiempaa pidempi statusviesti, joka venytti ikkunaa vähän. Olisi hyvä säätää koko etukäteen riittäväksi tai fontti tarvittaessa pienemmäksi. Tämäkin voi toki olla osallinen ongelmassa:
tk: font not found: /fonts/pelm/unicode.8.font
Taidat käyttää linux pakettia? Tuosta taitaa muistini mukaan vakiona puuttua Infernon käyttämät Plan 9:n unicode fontit. Nuo kannattaa laittaa, on muuten susiruma ilman.
Metabolix kirjoitti:
Lopputulosta voisi pitää hyvänä, jos olisit aloitteleva koodari ja kyseessä olisi esim. ensimmäinen verkkopelikokeilu, mutta kun tilanne kuitenkin on aivan toinen, täytyy hieman ihmetellä, mikä tämänkin projektin tarkoitus on.
Aivovoimisteluahan tämä on. Toiset täyttää ristikoita ja mä kirjoittelen nopeasti jotain toimivaa. Tarkoitus olisi kyllä toteuttaa vielä jonkunlainen tekoälykin tuohon ja kirjoittaa koko hommeli vielä siistimmin kasaan.
jalski kirjoitti:
Infernolla oman ja vastapuolen osoitteet saa selville yksinkertaisesti näennäisestä tekstitiedostosta lukemalla.
Esimerkiksi minun koneeni ei tälläkään hetkellä tiedä omaa netissä näkyvää osoitettaan, koska olen peräti kahden NATin takana. En usko, että Infernokaan osaisi asialle mitään tehdä. Kyllä se ulos näkyvä osoite pitää kysyä jostain ulkopuolelta, jos on pienikin epäilys, että paikallinen osoite kuuluisi vain sisäverkkoon.
jalski kirjoitti:
Pelaajia parittavan serverin voisin kyllä harjoitusmielessä kirjoittaa suoraan Limbollakin.
Niin, ei se varmasti ole ongelma, mutta silloin tarvitset oman palvelimen, jotta voit ajaa sitä julkisesti. En ainakaan ole kuullut mistään webhotellista, jossa olisi Inferno ja tuki Limbolla tehdyille CGI-ohjelmille. Tietysti jos et aiokaan julkaista peliä, voit koodata millä tahansa.
Metabolix kirjoitti:
Esimerkiksi minun koneeni ei tälläkään hetkellä tiedä omaa netissä näkyvää osoitettaan, koska olen peräti kahden NATin takana. En usko, että Infernokaan osaisi asialle mitään tehdä. Kyllä se ulos näkyvä osoite pitää kysyä jostain ulkopuolelta, jos on pienikin epäilys, että paikallinen osoite kuuluisi vain sisäverkkoon.
Tottahan tuo on. Lisään peliin aluksi mahdollisuuden asettaa nimimerkki käynnistettäessä peliä komentoriviparametrin avulla ja myöhemmin lisään dialogin käyttöliittymän valikkoon.
Vastapuolelle tiedonvälitys onnistuu yksinkertaisesti lähettämällä komento merkkijonona, esim. "NICK jalski". Taustalla oleva prosessi, mikä hoitaa tiedon vastaanoton ja välittämisen eteenpäin peliprosessille tarkastaa vastaanottamansa merkkijonon komentojen varalta ja toimii niiden mukaaan. Lisään samalla myös viesti-ikkunan ja "MSG viesti" tyylisen komennon, millä voi lähettää pelikaverille lyhyen viestin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.