PutkaRTS on C++:lla harjoitusmielessä tehtävä strategiapeli. Projektin lähdekoodi on GitHubissa, ja projektista keskustellaan irkissä. Projektia hallinnoin minä (Metabolix). Keskeisiä tavoitteita ovat selvä ja virheetön koodi, suunnittelun ja yhteistyön harjoittelu sekä tietenkin kaikenlainen ohjelmoinnin oppiminen; pelin eteneminen on tavallaan sivuseikka mutta toki toivottavaa.
IRC: #putkarts@IRCnet
Kotisivu: http://putkarts.dy.fi/
GitHub: https://github.com/Metabolix/PutkaRTS
(Tämä on alkuperäinen aloitusviesti. Keskustelun otsikko oli Yhteinen peliprojekti C++:lla.)
"Aattelin tehdä CS pelin C++, nyt tarvittais tiimiin enää pari koodaria ja ehkä joku graafikko yms. Ja mä oon sit projecti päälikö."
Onko tuttu kuvio? Tällä kertaa on kuitenkin hieman toisenlainen projekti kyseessä: tarkoitus ei ole valloittaa maailmaa eikä edes tehdä uutta menestyspeliä. Tarkoitus on tarjota pelinteosta kiinnostuneille C++-koodareille mahdollisuus toteuttaa porukalla pieni peli ja opetella samalla suunnittelua, versionhallintaa, ryhmätyötä ja hyviä ohjelmointitapoja.
Projektiin osallistuminen ei edellytä aiempaa kokemusta "kunnollisista" projekteista, päinvastoin. Kuitenkin kohtuullinen kielitaito (suomi, englanti ja C++), ohjelmointitaito, matemaattinen tietämys ja tietokoneenkäyttötaito ovat välttämättömiä, samoin halu ja kyky oppia ja opetella.
Tarkemmin vaatimukset voisi määritellä näin: Ohjelmointiputkan C++-oppaiden tulee olla jokseenkin hanskassa (ei täydellisesti mutta hyvin), samoin matematiikkaoppaiden (ei ulkoa mutta niin, että oppaissa kuvaillut laskut onnistuvat pääasiassa neuvoa kysymättä). Pelin grafiikoihin ja ääniin käytetään kirjastoa nimeltä SFML (tällä hetkellä versio 1.6), ja se pitäisi kyetä mielellään itsenäisesti asentamaan, samoin versionhallintaohjelmisto, joka tullee olemaan Subversion (SVN). Annan ehkä jonkin pienen ohjelmointitehtävän tarkistaakseni taidot.
Pelistä tulisi lähtökohtaisesti melko yksinkertainen (2D, ei ihmeellisiä efektejä) mutta kuitenkin ehjä ja tyylikäs kokonaisuus: toimivat valikot, kohtuulliset grafiikat, mielellään myös ääniefektejä. Peli tulisi toimimaan vähintään Linuxilla ja Windowsilla sekä Macilla (jos löytyy Mac-taitoisia). Lajiltaan peli voisi olla räiskintäpeli, rallipeli tai hyvin yksinkertainen roolipeli. Animoinnista on melkoisesti vaivaa (sekä koodin puolella että graafikolle), joten olisi eduksi, jos peli olisi toteutettavissa staattisilla hahmoilla (kuten ralli tai tankkiräiskintä).
Projektiin mukaan haluavien täytyy asenteensa puolesta sitoutua sekä opettelemaan uutta että viemään projektia edes jotenkuten eteenpäin, jotta siitä tulisi kohtuullisessa ajassa (mielellään vielä tänä vuonna) alfa- tai betatestaukseen kelpaava kokonaisuus.
Ilmoittakaa kiinnostuksestanne tähän. Jos taitotasoltaan sopivia koodareita löytyy tarpeeksi ja pelin luonteesta päästään kohtalaiseen yhteisymmärrykseen, projekti voi alkaa. Mitä enemmän väkeä on, sitä pienempi on yhden henkilön vastuu ja sitä isompi peli voidaan tehdä. (Toisaalta suurella joukolla suunnittelu voi olla hankalampaa, joten kaikkien täytyy osata joustaa.)
Ai niin, ja mikä olisi oma roolini projektissa? No se projektipäällikkö. :) Suunnittelen, delegoin, neuvon, testaan, osoitan virheitä, debuggaan, korjailen, viilailen, yritän pitää projektin jotenkin kasassa ja ylläpidän versionhallintaa. Luultavasti päädyn koodaamaan itsekin.
Lebe80 tykkää tästä.
Oikeasti, ensimmäistä kertaa todella hyvin rajattu ja ennen kaikkea realistinen pohjaidea peliprojektille. Eli lähdetään lähtökohdasta, ettei toteutettvan pelin kuulukaan olla seuraava GTA IV + Modern Warfare 2, vaan että osallistujien ainoa tavoite on päästä kokeilemaan ryhmässä toimimista.
Vaadin lisäksi ehdottomasti, että projektista pidetään jonkin sortin viikottaista päiväkirjaa (vaikka vain minimissään yhden lauseen "statuspäivityksiä" osallistujilta), jotta me kiinnostuneet sivustaseuraajat pysymme perässä.
Ai niin...
"Paljo maksetaa palkkaa?"
Erinomainen idea!
Harmi vain etten (juurikaan) osaa C++:aa. Mikäli taidot riittäisi niin osallistuisin, mutta ehkä joku toinen kerta (ja kieli) jos sellainen tulee ja siihen taidot riittää.
Sattuipa hyvin, olen jo jonkin aikaa yrittänyt keksiä hyvää projektia C++-harjoitukseksi. :) Olen ainakin alustavasti kiinnostunut, mutta riippuu vähän pelilajista minkä verran aikaa ja intoa riittää.
Itsekin olen kiinnostunut.
Että jos nyt vain suinkin mukaan mahdun/kelpaan niin motivaatiota ainakin löytyy ;)
Ja tällä kertaa ainakin luulisi projektipäällikön osaavan asiansa :)
Kuulosta erittäin hienolta idealta. Mielelläni osallistun sen mitä koulukiireiltä ehdin.
Kyllä kiinnostusta aina löytyy jonkun sortin tiimi koodaamiseen ja kun siitä ei ennestään hirveesti kokemusta ole...
eli kokemusta löytyy oliopohjaisen c++ osalta hyvinkin, tiimitoiminta onnistuu myös vallan mainosti, ja aikaakin on kun ei työt tai opinnot tällä hetkellä paina päälle.
Koodaajia tulee kuin sieniä sateella.
Kuulostaa oikein mukavalta projektilta. Osallistuisin oikein mielelläni projektiin.
Minä odotan, kun peli ilmestyy :)
Mizou kirjoitti:
Harmi vain etten (juurikaan) osaa C++:aa. Mikäli taidot riittäisi niin osallistuisin, mutta ehkä joku toinen kerta (ja kieli) jos sellainen tulee ja siihen taidot riittää.
Jos osaat jo jonkun toisen kielen, niin C++:ssan oppii yhdessä päivässä. Lukee nuo Metabolixin oppaat, niin osaa jo lähes kaiken pohjan.
Ensimmäistä kertaa järkevä pelintekoehdotus. Ei ainakaan voi moittia "Itq vinq parq koodatkaa mulle peli":ksi.
No ei C++:aa kyllä kunnolla opi yhdessä päivässä. Jos osaa ennestään vaikka PHP:tä, niin päivässä kyllä oppii tekemään PHP-henkistä koodia C++-syntaksilla.
Itse olen koodannut monta pienehköä ohjelmaa C++:lla enkä silti mielestäni osaa ohjelmoida C++:lla. Sanoisin ehkä, että hallitsen C++:n alkeet.
Tosin tässä kai nimenomaan haetaankin sellaisia, jotka osaavat niin kielen kuin monen muunkin asian alkeet ja haluavat kehittyä.
Jokotai kirjoitti:
Jos osaat jo jonkun toisen kielen, niin C++:ssan oppii yhdessä päivässä. Lukee nuo Metabolixin oppaat, niin osaa jo lähes kaiken pohjan.
Ensimmäistä kertaa järkevä pelintekoehdotus. Ei ainakaan voi moittia "Itq vinq parq koodatkaa mulle peli":ksi.
Aloitinkin oppaiden selaamisen, jos vaikka ymmärtäisin tarpeeksi. Perus asiat uskoisin osaavani juuri noiden muiden kielien pohjalta (python, hieman c:tä), mutta en välttämättä erikoispiirteitä. Noh katsotaan nyt...
jlaire, ByteMan, Lahha, petrinm ja Teuro, mainiota! Tällä joukolla uskaltaakin varmaan jo aloitella projektia, mutta toki muutkin pääsevät vielä mukaan (mahdollisuuksien mukaan myös kesken projektin). Seuraava vaihe voisi olla kokoontuminen irkkiin (#peliprojekti@IRCnet (edit: ei vaan #putkarts@IRCnet)) vähän kartoittamaan tilannetta ja suunnittelemaan projektia.
Mizou, voit joka tapauksessa seurata projektia sivusta, tutkia koodia, testailla ja mahdollisesti ehdottaa korjauksia.
Lebe80, palkaksi tulee jokaiselle oman työpanoksen mukainen osuus projektin myyntituotosta. ;)
Mites työpanos lasketaan?
Kiinnostusta löytyy tältä suunnalta osallistua projektin helpohkoihin osioihin ja varsinkin siinä sivussa oppia hyviä ohjelmointitapoja. Cpp:n alkeita tullut opeteltua juuri kyseisen SFML-kirjaston kanssa.
Tuo "pieni ohjelmointitehtävä" olisi hyvä, että näkisi oikeasti omaa tasoaan.
Vau!
Tämä vaikuttaa sellaiselta projektilta, jonka voi ihan vakavissaan uskoa onnistuvan. Kyseessä taitaa olla "once in life" -tapaus, joten olen todella halukas lähtemään mukaan.
Grez kirjoitti:
Mites työpanos lasketaan?
Veikkaan, että palkkana on runsaasti kokemusta ja sitä kertyy automaattisesti ja oikeudenmukaisesti jokaiselle oman työpanoksen mukaan :)
Grez, työpanoksen laskusta voidaan neuvotella sitten, kun tuotto ylittää maagisen nollan euron rajan, mutta alustavasti mittarina voidaan käyttää vaikka kirjoitettua toimivaa koodimäärää.
Gaxx, hieno juttu, voit kyllä tulla mukaan. Taidat kuitenkin olla aika kova kaveri koodaamaan, joten muista jättää muillekin tekemistä. ;)
Othnos, eiköhän sinullekin hommia löydy. Yksi hyvä alue ovat kohdat, jotka joku muu on tehnyt karkeasti tai jättänyt puolitiehen ja joita pitää siksi jälkikäteen parannella. (Tämä ei ole mitenkään harvinaista, usein on fiksuakin jättää asioita viimeistelemättä, jos on vielä epävarmaa, onko ratkaisu ollenkaan oikeilla jäljillä.)
Othnos kirjoitti:
Cpp:n alkeita tullut opeteltua juuri kyseisen SFML-kirjaston kanssa.
Hyvä, sittenhän meillä olisi joukossa joku, joka on edes käyttänyt kirjastoa. ;) (No ei sentään, olen minäkin sitä kokeillut, mutta ainakin 90 % tiedoistani perustuu vain dokumentaation selailuun.)
Othnos kirjoitti:
Tuo "pieni ohjelmointitehtävä" olisi hyvä, että näkisi oikeasti omaa tasoaan.
Ok, no heitänpä jotain pientä. Älä viitsi kopioida mistään valmiista koodeista. :) Ota suunnilleen aikaa ratkaisusta (esim. 1, 2, 5, 10 vai 30 minuuttia vai esim. tuntikausia). Ratkaisun jälkeen lisää vastauskoodiin kommentit, joissa kerrot, miksi mikäkin käytetty rakenne on tarpeen (ei nyt mitään sulkuja ja puolipisteitä mutta vähintäänkin kaikki ne, joita jouduit miettimään tai korjailemaan). Lisäksi kerro, mitä tiesit ja mitä jouduit selvittämään, mikä oli hankalaa vai oliko ehkä koko tehtävä ihan naurettavan helppo. Voit lähettää vastauksen sähköpostitse, niin ei viedä muilta ratkaisuiloa.
Olennaista ei ole ratkaista tehtävää nopeasti vaan saada se ratkaistua ja ymmärtää, mitä tuli tehtyä.
Tehtävä
Toteuta luokka vec3, joka kuvaa kolmen komponentin vektoria. Käytä komponenteille double-tyyppiä. Toteuta luokkaan ainakin summaoperaattori (+) ja ristitulo-operaattori (%). Toteuta lisäksi istream- ja ostream-virtojen kanssa toimivat luku- ja tulostusoperaattorit; vektorin esitysmuoto olkoon kolme välilyönnein eroteltua lukua. Testaa luokan toiminta liittämällä se seuraavaan koodiin:
#include <iostream> #include <string> #include <sstream> void tarkista(vec3 const& v, std::string const& s) { std::ostringstream output; output << v; std::cout << v << (output.str() == s ? " OK" : " VIRHE") << std::endl; } int main() { const std::string as = "1.2 3.4 5.6", bs = "2.3 4.5 6.7"; std::istringstream input(as + "\n" + bs); vec3 a, b; input >> a >> b; tarkista(a, as); tarkista(b, bs); const vec3 c = a + b; tarkista(c, "3.5 7.9 12.3"); const vec3 d = c + b; tarkista(d, "5.8 12.4 19"); a = c % d; tarkista(a, "-2.42 4.84 -2.42"); }
Metabolix kirjoitti:
mutta alustavasti mittarina voidaan käyttää vaikka kirjoitettua toimivaa koodimäärää.
No tämän takia oikeastaan kysyinkin, kun mielestäni tuottavuuden mittaaminen on oikeasti todella vaikeaa.
Itse olen mielestäni ollut joskus tuottavimmillani kun päivän SVN-loki näyttää -10000 riviä (eli siis koodin määrä on vähentynyt 10 000 rivillä :D )
Metabolix kirjoitti:
ristitulo-operaattori (%)
Eikös tämä aiheuta turhaan sekaannusta jakojäännöksen kanssa? Itselle tulisi mieleen käyttää ristitulolle * ja pistetulolle .
Työpanoksen laskeminen on tosiaan hankala juttu, mutta pointti tietenkin oli, että projektin ei ole tarkoitus tuottaa rajaa, joten työpanoksesta riippumatta käteen jää pyöreä nolla. Palkankorotusta voi sitten pyytää työnantajalta, kun pystyy rehellisesti sanomaan, että on ennenkin koodannut edes jotain ryhmässä ja käyttänyt jotain versionhallintaa.
Operaattoreista: Pistettä ei voi käyttää, koska tästä tulisi kieleen epäselvyys, tarkoittaako a.b näiden välistä laskutoimitusta vai a-olion b-jäsentä. Pitää siis tehdä jokin kompromissi. Vaihtoehtoja ovat mm. *, %, /, |, &, ^, << ja >>, ja näistä * muistuttaa eniten pistettä. Rististä voi olla monta mieltä, enkä ole erityisen vahvasti valintani kannalla, joten eipä turhaan väitellä siitä. Parinkymmenen rivin harjoituksessa yhdellä merkillä ei liene niin kauheasti väliä, ja oikeassa projektissa varmaan funktiot olisivat selkeämpiä.
Tämä peliprojekti on erittäin mielenkiintoinen idea.
Kiinnostusta olisi, mutta en itse taida tälläkertaa osallistua, kun seuraavan kolmen kuukauden aikana ei ole käytännössä yhtään ylimääräistä aikaa. Mielenkiinnolla silti seuraan tämän edistymistä ja onnistumista.
En ajatellut osallistua, mutta kysymys: miksi SVN, eikä jotakin hajautettua versiohallintaa tilalle? Käyttäjillehän se on täysin sama, kumpaa käyttää. Ja hajautetut hallinnat mahdollistavat omaa kehittelyä sun muuta. Asiahan tuntuu olevan joskus tulenarka, koska git-käyttäjät mielletään automaattisesti elitisteiksi, jos tulevat ehdottamaan subversion korvaamista. Mutta siellä kun on oikeasti epäkohtia, jotka korjautuisivat pienellä vaihdoksella.
http://stackoverflow.com/questions/871/why-is-git-better-than-subversion/875#875
Ai niin, ja heittäkää vaikka alkeellinen yksikkötestaus mukaan. Ehkä useampi itseoppinut kotikoodari alkaisi arvostaa sitäkin puolta.
Grez kirjoitti:
Metabolix kirjoitti:
ristitulo-operaattori (%)
Eikös tämä aiheuta turhaan sekaannusta jakojäännöksen kanssa? Itselle tulisi mieleen käyttää ristitulolle * ja pistetulolle .
Piste-operaattoria ei voi ylikuormittaa C++:ssa. Itse teen vektoriluokissa aina nimetyt funktiot piste- ja ristituloille, sekä aliaksen operator* - pistetulolle. Itse en nimeäisi mitään operaattoria ristitulolle - ihan siitä syystä, ettei minkään suhteen olla yksimielisiä (no, ei toki pistetulokaan suhteen :). Modulo-operaattorin puolesta puhuisi ehkäpä eniten se, että se on *- ja /-operaattorien kanssa samalla tasolla "suoritus"-järjestyksessä.
Mielenkiinnolla odotan mitä teette. Pitkää pinnaa ja antoisia hetkiä projektin parissa T:jtha
Lebe80:n toiveen mukaan tilannepäivitys ensimmäisen vuorokauden päätteeksi: Tekijöitä ja yleisöä kokoontui irkkiin jo kohtalainen joukko, mutta toki lisääkin mahtuu. Keskusteltiin pelin tyypistä, valittiin RTS eli reaaliaikainen strategiapeli. Pohdittiin hieman pelin perusominaisuuksia ja koottiin niistäkin pieni kysely. Lisäksi kartoitettiin alustavasti läsnäolijoiden työnjakotoiveita. Myös versionhallinnasta juteltiin vähän, ja näillä näkymin käyttöön otetaan Git. (SVN-heitto johtui siitä, etten oikein tiennyt tulevan tiimin tasoa ja lähdin helpommasta päästä.)
Seuraavaksi pitää koodata pelille karkea runko ja laittaa se versionhallintaan, jotta eri osa-alueiden taitajat pääsisivät aloittamaan työnsä. Samalla täytyy vielä tarkentaa suunnitelmia pelin luonteesta: mihin peli sijoittuu, miten kerättävät resurssit käyttäytyvät pelissä, miten yksiköitä ohjataan.
Kehitystä päässee seuraamaan GitHubista? ;)
Nyt projekti on päässyt GitHubiin asti. Työnimeksi päätyi PutkaRTS, ja tämän kunniaksi myös irkissä muutettiin kanavalle #putkarts@IRCnet. Päähaaran koodi löytyy osoitteesta https://github.com/Metabolix/PutkaRTS, ja nyt muiden pitäisi forkata tästä oma projekti, kääntää ja testata ohjelma ja harjoituksena lisätä oma nimensä AUTHORS-tiedostoon. Harjoituksessa olikin jo jonkin verran mutkia ja GitHubiin saatiin hetkeksi hyvin kiinnostavia fork-merge-kaavioita. :P
Metabolix kirjoitti:
Nyt projekti on päässyt GitHubiin asti. Työnimeksi päätyi PutkaRTS, ja tämän kunniaksi myös irkissä muutettiin kanavalle #putkarts@IRCnet. - -
Aluksi ymmärisin että teette kartting peliä PutKARTS
Itsekin luulin että kyseessä on Kart-peli ala Slicks'n'Slide -tyylinen peli. :)
Itse puolestani ajattelin, että kyseessä olisi väännös sanoista Putka Arts.
No tässähän on selvästi nimet jo parille seuraavallekin projektille. Kyllä aiheuttaa hämmennystä yleisön keskuuteen kun löytyy kolme täysin eri softaa:
PutkaRTS - strategiapeli
PutKarts - autopeli
PutkArts - piirustusohjelma
Nimen selventämiseksi ehdottaisin väliviivaa ihan luettavuuden kannalta :)
Nimi on nyt näin.
Siirsin juuri GitHubiin karkean rungon, jossa alkaa olla työsarkaa vähintäänkin valikkojen ja pelinäkymän tekijöille sekä sille urhealle, joka uskaltaa lähteä luomaan pelilogiikkaa – alkaen esimerkiksi pelikentän lataamisesta tai luomisesta. Myös verkkotoimintoja on teoriassa mahdollista ruveta työstämään, vaikkei niille vielä olekaan käyttöä. Nyt projekti saadaan toivottavasti toden teolla käyntiin.
Alku näyttää hyvältä. GitHubista saa hyvän yleiskäsityksen missä projekti menee, esim. network-näkymästä.
Koodikäytännöistä sen verran, että sisennyksenä näyttää olevan tab, rivinvaihtona \n ja koodin ja pelin kielenä englanti. Joskus mm. nuo on mainittuna projektin yhteydessä jossain tiedostossa, mutta äkkiä sen näkee valmista koodia vilkaisemalla. Diffeistä voisi tulla ikävää seurattavaa, jos vaikka sisennysmerkit vaihtuisivat committien välillä.
Chiman, ei kaikkea heti ehdi. :) Nyt nuo koodin muotoon liittyvät asiat kerrotaan GitHubissa olevassa projektiwikissä. Sinne tulee ehkä jossain vaiheessa myös suunnitelmia koodin rakenteesta. Projektilla on lisäksi nyt "kotisivu", kurjan värinen tosin, mutta ei sitä ole mainokseksi tarkoitettukaan vaan linkkilistaksi. Hienompi tulee sitten, kun on projektistakin jotain näytettävää.
Pitkän tiedotustauon jälkeen minulla on ilo ilmoittaa, että suuri osa koodareista katosi jo hyvän aikaa sitten kukin taholleen ja lopuillakin on ollut ilmeisen paljon muita kiireitä. Mutta vielä tästä peli tehdään, eikö vain? Nyt vain kaikki kynnelle kykenevät takaisin koodaamaan! Uudetkin tekijät ovat luonnollisesti tervetulleita.
Projektin tilanne on kaikesta huolimatta edistynyt sen verran, että valikkojen toteutusta varten on jonkinlainen kokoelma graafisia komponentteja ja pelissä on alkeellinen mallikartta ja pari objektia, jotka liikkuvat ympäriinsä käyttäjän klikkauksen mukaan (toistaiseksi kaikki kerralla) tai käskyjen puutteessa satunnaisesti.
Alla on lyhykäinen lista asioista, joihin halukkaat voivat tarttua. Toki aiheet menevät jonkin verran päällekkäin.
Tulisin jos hallitsisin C++, mutta innolla odotan projektin etenemistä. Ei muutakuin onnea projektiin.. :-)
Saatan ilmoittautua viikonloppuna vaikka irkissä, jos päätän että minulla on tarpeeksi aikaa.
Metabolix kirjoitti:
Yksiköiden reitinhaku ja törmäystarkistukset
Miten tuo yksiköiden reitinhaku on ajateltu toteuttaa? Käyttämällä potentiaalikartttaa vai A*:ä?
jalski kirjoitti:
Miten tuo yksiköiden reitinhaku on ajateltu toteuttaa?
En aio valita algoritmeja valmiiksi. Kaikille tekee varmasti hyvää miettiä itse erilaisia vaihtoehtoja, ja sitä paitsi kaiken suunnittelemiseen kuluisi kohtuuttomasti aikaa. Tekijä saa siis itse ehdottaa hyväksi katsomaansa ratkaisua, ja jos se vaikuttaa hyvältä, se kelpaa. (Vinkki: kannattaa ensin keskustella ideoista ja vasta sitten koodata tuhat riviä.)
Näin RTS-pelin kyseessä ollessa reitinhaussa täytyy huomioida toisaalta yksiköiden mahdollisesti suurehko määrä (eli tarvitaan tehokas algoritmi) ja toisaalta staattisen maaston lisäksi pelin liikkuvat osat (eli pelkkä esilaskenta ei riitä).
Tämä projekti vaikuttaa erittäin mielenkiintoiselta. Sääli etten aiemmin ole tänne aikaisemmin eksynyt.
Jos koodareista on vieläkin pulaa, voisin tarjota työntöapua kunhan saan kokeet vain pois alta (huomenna viimeinen). Jos haluat jotain näyttöä siitä, että osaan jotain, voin lähettää erään keskeneräisen räpellyksen (ensimmäinen puolivalmis peli SFML:llä). :) Tuo tehtäväkin vaikuttaa mielenkiintoiselta, teen varmaan senkin tässä kunhan ehdin.
Dimple: Tervetuloa irkkiin sitten vain. Nyt kun käytössä on Git eikä SVN, ei tarvitse etukäteen osoittaa taitojaan, vaan koodin laatu arvioidaan joka kerta erikseen ennen hyväksymistä.
Muutaman kuukauden tauon jälkeen peliin saatiin taas pari riviä lisää: nyt yksiköitä voi valita. Tätä vauhtia pelistä tulee testattava ehkä vielä elinaikanani. :)
Tarvittaisiin joku tarpeeksi kunnianhimoinen suunnittelemaan ja toteuttamaan tuo pari viestiä ylempänä mainittu tiedostoasia. Se varmaan saisi projektin taas kunnolla liikkeelle. Oma aikani on tällä hetkellä valitettavan rajallista.
Itselleni kävi niin, että päädyin siinä heti viikon vai kahden lomailun jälkeen takaisin koulunpenkille suorittamaan kesäkursseja. :) Sen jälkeen jouduinkin töihin. Ehkä aika riittäisi vielä jossain vaiheessa ennen kuin koulu taas alkaa...
Onko projekti sidottu pelkkään C++ ohjelmointiin, vai sopiiko mukaan sotkea esimerkiksi Lua:aa?
Hassua, lisäsin juuri äskettäin projektiin Lua-tulkin. Tarkoitus on, että kartat ja yksiköt kuvataan Lualla, jolloin saadaan helpommin sekaan myös skriptejä (tason alustus ja yksiköiden erikoistoiminnot). Mutta "sotkeminen" ei tässä projektissa käy.
Täällä olis yks koodaaja.
hyrppa95: Koodarin pitäisi aluksi pystyttää kehitysympäristö, kääntää projekti, tutustua vähän tilanteeseen ja mielellään tulla irkkiin, jos oikeasti kiinnostaa koodata. Tekstikentän toteuttaminen voisi olla helppo ja hyödyllinen projekti noin alkuun.
Tilanne: Pelissä on päävalikko, pari asetusta, yksi kartta ja ilman törmäystarkistusta liikkuvia testiyksiköitä. Yksinpelin lisäksi on tuki TCP-yhteyksille, mutta toistaiseksi palvelimen osoite on kovakoodattu (localhost). TCP-palvelimen saa käyntiin komentoriviltä.
Seuraavia tavoitteita:
Kun tämä lyhykäinen luettelo saadaan hoidettua, voidaan testata verkkopeliä porukalla. :)
Lyhyt tilannepäivitys. Ei ole pitkään aikaan paljon tapahtunut, koska muista koodareista ei ole kuulunut sitten syyskuun. Toteutin kuitenkin itse joskus syksyllä metaserveripuolen, eli moninpeliin nyt teknisesti pääsee. UDP-ideasta luovuin toistaiseksi, koska testaukseen voidaan käyttää TCP:tä IPv6-verkossa. Hienon verkkorajapinnan ansiosta chatin toteutuksen pitäisi olla lasten leikkiä, tarvitaan vain käyttöliittymä. Äsken päästin hitusen yksiköiden Lua-puoleen liittyvää koodia julki. Kunnolliset toiminnot vaativat vielä päätöksiä ja työtä, mutta nyt omia yksiköitä voi deletellä tuhota, joten pelin päättymiseen liittyvät asiat on mahdollista koodata.
Äsken yksi innokas ilmoittautui irkissä ja suunnitteli koodaavansa reitinhakua. Katsotaan, millä aikataululla homma nyt etenee; olisihan tätä kiva joskus päästä testaamaan.
Vähän tilannepäivitystä projektista vaikka se vaikuttaakin kuolleelta :D Päivittelin tuossa PutkaRTS:n käyttämään sfml2.1 versiota sekä uusinta luaa. Lisäksi yritin parhaani mukaan poistaa boostia käytöstä korvaamalla ne uudella standardilla.
Lisäksi olen tehnyt pieniä muutoksia.
-Lisäillyt fog of warin, joka toimii peliruudussa, mutta pitää vielä miettiä toteutusta minimappia varten.
-Tehnyt mapin piirrosta erittäin nopean joskikin se ei vielä lue mappia lua tiedostosta. Tällä systeemillä ei kovin helposti saa tehtyä tilemapista animoitua, mutta se tuskin onkaan tarkoitus.
Lisäksi olin tehnyt edelliseen versioon toimivan chatin, mutta en ole sitä vielä jaksanut portata ja otin käyttöön Riston tekemän TextField classin johon chat pitää suunnitella uudelleen.
Sfml2.1 porttauksessa tuli paljon bugeja mitä en ole vielä korjannut ja edes viitsinyt alkamaan selvittää, mutta kaikki toimii suurinpiirtein niinkuin ennenkin.
Lisäksi päässä on paljon asiaa mitä pitäisi toteuttaa kunhan ehtii. Itsehän en ole mikään kovan luokan koodari ja paljon on bugeja nykyisessä versiossa, mutta kerta kukaan ei kehitä niin ajattelin vähän lisätä tämän projektin kautta taitojani. En ollut ennen tutustunut versiohallintajärjestelmiin, mutta nyt on jo pieni ymmärrys. Kyllähän gitin käytössä on varmaan paljon mitä pitäisi oppia esim koska tehdä committi ja miten tehdä järkevästi eri ominaisuuksia ja koota ne yhteen eri brancheista.
Suosittelen projektia kaikille alottelijoille, koska mitään ei voi mennä rikki vaikka teette minkälaisia git mokia ja ohjelmointi hazardeja. Lisäksi peli on juuri sellaisessa vaiheessa, että ominaisuuksia voi laittaa lisää niin nopeasti kuin vain ehtii koodia vääntämään. Harmittaa tietenkin kun tästä projektista lähti kaikki jo ajat kun olisi varmasti tullut enemmän oppia käteen jos joitakin henkilöitä olisi vielä mukana joilta kysyä, että onko järkevää.
Kiitän tietenkin kaikkia mukana jo olleita kun olette tehneet hienon pohjan. Erityisesti Metabolixia, joka yritti pitää projektia hengissä vielä erittäin kauan vaikka porukka oli hävinnyt.
Tälläinen pikku päivitys tähän väliin toivottaen
Kari Argillander
Hienoa, että on taas joku tekijä! Projektia voidaan kyllä jatkaa, ja irkissä voi keskustella ideoista. Otan mielelläni täsmällisesti laadittuja muutoksia puuhuni, ja ehkäpä itsekin jaksan taas koodailla, kun on seuraa.
Kommenttina nykyisiin muutoksiisi: Monessa kohdassa teet nyt yhdellä commitilla useita erillisiä muutoksia. Lisäksi rikot koodin tyyliä (melko tarkat ohjeet GitHubissa) ja teet joitain aivan turhia muutoksia (esim. cli/main.cpp:ssä listeners-muuttujan vaihto bool-tyyppiseksi, kun int-tyyppisestä voi olla hyötyä jatkossa ja esim. debuggauksessa). Kommenttisi gitissä ovat osin suomeksi ja osin englanniksi ja aika sekavia.
Siis huolellisuutta, sitähän tässä projektissa oli tarkoitus opetella! Jos jaksat, voisit kirjoittaa noita muutoksiasi osittain uudestaan hieman huolellisemmin ja tarpeeksi pienissä erissä, esim. yhtenä itsenäisenä muutoksena pelkästään kaikkien shared_ptr-kohtien päivitys. Samalla voit tutkia, mikä on gitin kanssa helpoin tapa tällaiseen korjailuun; hyviä hakusanoja ovat ainakin rebase ja fixup.
Idean tasolla en nyt ehdi itse peliin tekemiäsi muutoksiasi tutkia. Palataan tähän (irkissä?).
Lisäys: Viimeistelin ja julkaisin nyt oman SFML 2.1 -muunnokseni, jonka olen näinä hiljaisina vuosina tehnyt. Myös Lua 5.2 on nyt käytössä, samoin Makefilen puolesta C++11. Voisit päivittää muutoksesi tämän version päälle ja korjata samalla tyyli- ja kieliongelmat ja ryhmitellä muutokset aiempaa selvemmin. Irkissä voidaan keskustella toteutustavoista.
Tässä on maistiainen teksturin kehitysversiosta: http://pasteboard.co/lkqAUun.jpg. Peikko on lainattu.
Miten tuohon pystyy osallistumaan?
Projekti vaatii sen verran omatoimisuutta, että yritäpä selvittää osallistumiskeinoja itse. Keskustelun alkupuolelta löydät ehkä tietoa projektin nettisivusta, GitHub-sivusta ja IRC-kanavasta.
Tämä ei ole tainnut hirveästi edetä? Githubissa viimeisimmät päivitykset on ainakin vuoden takaa. Sääli sinänsä, vaikuttaa mielenkiintoiselta projektilta.
Voisin yrittää kotona pystytellä ympäristön ja jos saisi vaikka käännettyä tuon koodin alkuun. Opiskelen alaa, mutta en voi kyllä C++ taidoillani mitenkään kehuskella. Vaikuttaisi kuitenkin hyvältä tavalta oppia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.