Kirjautuminen

Haku

Tehtävät

Keskustelu: Projektit: PutkaRTS

Sivun loppuun

Metabolix [05.02.2011 00:16:00]

#

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

Metabolix [05.02.2011 00:16:01]

#

(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 [05.02.2011 00:38:41]

#

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?"

Mizou [05.02.2011 01:15:47]

#

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ää.

jlaire [05.02.2011 01:16:49]

#

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ää.

ByteMan [05.02.2011 01:24:24]

#

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 :)

Lahha [05.02.2011 01:45:55]

#

Kuulosta erittäin hienolta idealta. Mielelläni osallistun sen mitä koulukiireiltä ehdin.

petrinm [05.02.2011 01:46:13]

#

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.

Teuro [05.02.2011 07:47:39]

#

Kuulostaa oikein mukavalta projektilta. Osallistuisin oikein mielelläni projektiin.

Rickken [05.02.2011 08:58:04]

#

Minä odotan, kun peli ilmestyy :)

Jokotai [05.02.2011 10:21:18]

#

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.

Grez [05.02.2011 10:51:55]

#

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ä.

Mizou [05.02.2011 11:57:46]

#

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...

Metabolix [05.02.2011 13:19:18]

#

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. ;)

Grez [05.02.2011 13:20:34]

#

Mites työpanos lasketaan?

Othnos [05.02.2011 13:25:22]

#

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.

Gaxx [05.02.2011 13:35:34]

#

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 :)

Metabolix [05.02.2011 15:29:29]

#

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");
}

Grez [05.02.2011 16:15:28]

#

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 .

Metabolix [05.02.2011 16:33:23]

#

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ä.

aaämdee [05.02.2011 17:10:13]

#

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.

progo [05.02.2011 18:50:05]

#

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.

eq [05.02.2011 18:50:16]

#

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ä.

jtha [05.02.2011 22:20:16]

#

Mielenkiinnolla odotan mitä teette. Pitkää pinnaa ja antoisia hetkiä projektin parissa T:jtha

Metabolix [06.02.2011 00:48:59]

#

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.

progo [06.02.2011 10:09:05]

#

Kehitystä päässee seuraamaan GitHubista? ;)

Metabolix [07.02.2011 01:18:11]

#

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

tkok [07.02.2011 11:16:24]

#

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

Lebe80 [07.02.2011 13:05:58]

#

Itsekin luulin että kyseessä on Kart-peli ala Slicks'n'Slide -tyylinen peli. :)

tkarkkainen [07.02.2011 17:51:39]

#

Itse puolestani ajattelin, että kyseessä olisi väännös sanoista Putka Arts.

Grez [07.02.2011 20:48:15]

#

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

Lebe80 [07.02.2011 22:18:26]

#

Nimen selventämiseksi ehdottaisin väliviivaa ihan luettavuuden kannalta :)

Metabolix [08.02.2011 00:17:11]

#

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.

Chiman [08.02.2011 10:48:43]

#

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ä.

Metabolix [08.02.2011 21:09:31]

#

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ää.

Metabolix [28.04.2011 21:30:08]

#

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.

Clacier [28.04.2011 21:57:22]

#

Tulisin jos hallitsisin C++, mutta innolla odotan projektin etenemistä. Ei muutakuin onnea projektiin.. :-)

aaämdee [28.04.2011 22:07:12]

#

Saatan ilmoittautua viikonloppuna vaikka irkissä, jos päätän että minulla on tarpeeksi aikaa.

jalski [28.04.2011 22:07:42]

#

Metabolix kirjoitti:

Yksiköiden reitinhaku ja törmäystarkistukset

Miten tuo yksiköiden reitinhaku on ajateltu toteuttaa? Käyttämällä potentiaalikartttaa vai A*:ä?

Metabolix [28.04.2011 22:36:25]

#

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ä).

Dimple [04.05.2011 14:20:43]

#

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.

Metabolix [06.05.2011 16:25:26]

#

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ä.

Metabolix [14.08.2011 17:59:41]

#

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.

Dimple [14.08.2011 19:24:48]

#

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...

jalski [06.09.2011 18:01:04]

#

Onko projekti sidottu pelkkään C++ ohjelmointiin, vai sopiiko mukaan sotkea esimerkiksi Lua:aa?

Metabolix [06.09.2011 21:37:11]

#

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.

hyrppa95 [22.09.2011 21:09:19]

#

Täällä olis yks koodaaja.

Metabolix [22.09.2011 23:02:33]

#

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. :)

Metabolix [07.02.2012 23:52:33]

#

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.

teksturi [13.05.2014 18:05:57]

#

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

Metabolix [13.05.2014 21:25:50]

#

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.

Metabolix [27.05.2014 20:41:58]

#

Tässä on maistiainen teksturin kehitysversiosta: http://pasteboard.co/lkqAUun.jpg. Peikko on lainattu.

Oskuz [27.05.2014 21:26:27]

#

Miten tuohon pystyy osallistumaan?

Metabolix [27.05.2014 21:55:01]

#

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.

Phoenx [19.08.2015 12:48:33]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta