Kirjautuminen

Haku

Tehtävät

Keskustelu: Projektit: Horns of Valhalla

Sivut:

Sivu 1 / 2

Sivun loppuun

Aruviel [28.11.2004 08:00:00]

#

Huomio! Tämä projekti on siirretty automaattisesti vanhasta projektijärjestelmästä. Aloitusviesti on projektin kuvaus sellaisena, kuin se oli 16.10.2005, ja seuraavat viestit siirtoon saakka ovat kommentteja.

Horns of Valhalla on merkkigraafinen tietokoneroolipeli. Tai oikeastaan vähän enginen tyylinen sellainen. Pelin olisi tarkoitus olla helposti muokattavaissa omia seikkailuita silmällä pitäen ilman lisäkoodin tarvetta. Tähän kuitenkin tullaan tarvitsemaan oikeaa editoria, pelkkien tekstitiedostojen editointi tuntunee monesta vaikealta.

Kieli: C++
Kirjastot: Ncurses/PDcurses
Alustat: en tiiä
Uusin versio: ei oo

16.10.2005
Dumppaan koodin. Todennäköisesti lähden puhtaalta pöydältä rakentamaan koko kokonaisuutta uudestaan. Lähden tekemään ohjelmasta oliopohjaista. En osaa yhtään tätä ajattelutapaa (lineaarinen jäänyt aivan jumiin pääkoppaan). Tullee kai siten opittua jotakin. Tammikuun jälkeen ei ole tapahtunut mitään.

14.07.2005
Tilannepäivitys: Kesäkuun ja heinäkuun alun jälkeen olen saanut jotain jo aikaiseksi. Uusi versio ei ole lähelläkään valmista. Karsin luvassa olevia ominaisuuksia listalta. 0.0.6 kohdalla olisi myös tarkoitus yhdistää Windows- ja Linux-lähdekoodit. Pelin sisäinen editori on kohtalaisella mallilla tällä hetkellä.

30.05.2005
Tilannepäivitys. Kunhan saan kouluasiat pois alta, saanen jotain aikaiseksi.

20.03.2005
Editori etenee hieman ja datarakenteisiin on tullut isoja muutoksia. Nämä muutokset mahdollistavat helpomman tehtävien, aktivaattoreiden ja muiden vastaavien asioiden toteuttamisen. Valmista ei tule vielä pitkään aikaan. CVS:ään sen sijaan teen silloin tällöin päivityksiä, kun saan jotain uutta valmiiksi.

26.02.2005
Pientä päivitystä projektin tilanteesta.

18.01.2005
Pitää pistää nyt vielä huomautuksena, että olen julkaissut nyt sekä Windows- että Linux-versiot. Linkit ylempänä. Jos mieleenne tulee jotain rakentavaa kommenttia tai muuta sellaista, niin kirjoitelkaa.

17.01.2005
Upload-palvelin on vielä hiljaisena. Enpä tiedä, viitsinkö edes julkaista noita paketteja enää tämän jälkeen.

KimmoKM [28.11.2004 09:46:24]

#

Toivottavasti edistyy (ihan pakko sanoa jotain, vaikka olen sanonut sanottavani IRC:issä...).

sqwiik [30.11.2004 21:44:10]

#

Erittäin mukavantuntuinen projekti :)

Heikki [01.12.2004 10:37:07]

#

Mukavantuntuihen peli, tuntuu toimivan ihan kivasti.

Aruviel [01.12.2004 15:12:35]

#

Kiitoksia :). Jos teillä olisi jonkinlaisia parannusehdotuksia peliä koskien, tai jos löydätte bugin tai vastaavan, niin olisin hyvin kiinnostunut kuulemaan tästä kaikesta. Tosin eipä tuossa juuri paljoa pääse vielä testailemaan. Ideoita saa heittää ja niitä olisi mukava kuulla, vaikkakaan en voi mitenkään taata niiden tuohon päätyvän sisällöksi.

ZcMander [01.12.2004 20:17:06]

#

Ihan kiva peli, mutta muutamia bugeja löysin: Linnassa oli tyhjiä merkkejä, jotka kuitenkin korvaantui kun talloi päältä.
Lisäksi tuossa ScreeShotissa @ merkkistä on tippunu osa. Ja minusta tuohon casteen meneminen on liian hankalan näppäin yhdistelmän alla. Minulla ei ainakaan linux:ssa ei toiminut nuolinäppäimet (kuten ei koskaan Ncursessissa, mitä olen itse tehnyt). Ja Readme tiedosto kannattee muuttaa luettavaan muotoon (siis rivin vaihdot oikeiksi). Onnneksi WordPad osaa unix rivin vaihdot. Lisäksi Linux:lle kääntässä tuli muutama warnig, mutta ne lienee kuuluu asiaan. Vielä ne virheet:

hov.cpp: In function `void ReadDialogueFile(char*)':
hov.cpp:1649: warning: converting to `int' from `double'
hov.cpp:1713: warning: converting to `int' from `double'
hov.cpp:1732: warning: converting to `int' from `double'
hov.cpp:1752: warning: converting to `int' from `double'
hov.cpp: In function `void ReadObjectMap(Level*, char*)':
hov.cpp:2362: warning: converting to `unsigned int' from `double'
hov.cpp: In function `void ReadItems(Level*, char*)':
hov.cpp:2549: warning: converting to `int' from `double'
hov.cpp: In function `void ReadCreatures(Level*, char*)':
hov.cpp:2743: warning: converting to `unsigned int' from `double'

EDIT: Lisäksi ehodottaisin linux koodaus työkaluja: http://www.flug.fi/ohjeita/linux-ohjelmointi.html tai edes makefile jonka käyttö ilmoitetaan kyseisellä sivulla.

EDIT2: Objectit ei sais näkyä ellei ole ennemmin nähnyt niitä ja sama homma maaston kanssa, että ne jäis näkyviin kun ne on nähnyt.

Aruviel [01.12.2004 20:49:46]

#

* Linna-asiaa pitääkin tutkiskella. Missä päin linnaa tämä tapahtuu? Toistuuko sama jos käynnistät pelin uudestaan ja menet linnaan?

* Screenshotissa ei ole tippunut @-merkeistä mitään pois, se johtuu terminaalin käytössä olevasta fontista :).

* Warningit kuuluvat asiaan, tosin pääsisihän niistä helposti eroon. Asia huomioitu ja tulen korjaamaan sen seuraavaan versioon.

* Makefile tulee seuraavaan versioon.

* Nuolinäppäimet eivät toimi, koska en ole koodannut niitä mukaan. Ainoa tapa liikkua on numpad (ja numpadin on oltava päällä).

* Eli et pitänyt siitä, että esmes. seinät jäävät näkyviin? Tätä tuleekin sitten harkita, josko tekisi mahdolliseksi sen, että "sitten joskus" optionseista voisi valita, haluaako maaston jäävän pelaajan muistiin. Toiset ovat tykänneet ja toiset eivät.

* Readme-homma on huomioitu. Itse huomasin hieman liian myöhään saman asian, etteivät rivit oikein mene kohdilleen windowsissa.

'EDIT2: Objectit ei sais näkyä ellei ole ennemmin nähnyt niitä ja sama homma maaston kanssa, että ne jäis näkyviin kun ne on nähnyt.'

Voisitko hieman selittää tarkemmin, mitä tarkoitat edellisellä :)? Minä en oikein ihan ymmärtänyt, näkyvätkö esineet kartalla sen jälkeenkin kun ne eivät ole sinun näkökentässäsi? Vai näkyykö sinulla koko pelialue heti?

Kiitos paljon palautteesta!

ZcMander [01.12.2004 20:59:16]

#

Objektit, esim seinät,ovet ym. ei sais näkyä. Kun käynnistin pelin uudestaan, samaa probleemaa ei tullut. Tosin se saattoi olla siitä kun suurensin ikkunan. Niin, eli joo että kun esim ruo on nähty mennään talon taakse josta ei muuten nurmikkoa näkis, mutta nyt näkyy kun me ollan se ennemminkin nähty. Lisäksi komeet varjot

Aruviel [01.12.2004 21:08:51]

#

Selvä, yritän saada seuraavaan versioon mahdollisuuden valita, jäävätkö seinät, ovet yms muistiin.

Tuosta tulikin mieleen, jos ikkunaa suureentaa, niin ohjelma menee eteenpäin. Ilmeisesti ncurses tunnistaa tämän 'napinpainallukseksi'. Tämä joutaa korjattavien asioiden listalle ja tulee korjatuksi seuraavaan julkaisuun.

Tumpi [02.12.2004 00:22:13]

#

Hmm, kiinnostava projekti. :)

ZcMander [03.12.2004 13:13:21]

#

Hmm, tulee se bugi uudestaan kun kiertää linnapaikan vastapäivään. Screenshotti: http://shell.nullcore.org/~zcmander/kuvat/hov.png

Lisäksi voisi olla hyvä voida valita, että käytetäänkö seininä merkkejä ¯_| vai #

Aruviel [03.12.2004 13:27:29]

#

Vaikea tarjota mitään selitystä tuolle, CalculateLOS(); funktiossa (tai sitten DrawMap();) se todennäköisesti on. Itse en saanut tuota tuotettua, ehkäpä asiaa ei synny uudessa versiossa. Näkee sitten "piakkoin" senkin.

ZcMander [03.12.2004 14:06:39]

#

Itse kyllä latasin uusimman version mitä oli julkaistu (0.3)

Aruviel [03.12.2004 14:13:41]

#

Juu, tarkoitin tätä kehityksessä olevaa. Vähän epäselvästi taisin ilmaista asian. :)

ZcMander [04.12.2004 16:17:06]

#

Kyseinen ilmiö ei tule esiin windows:sissa. Ja itse koodaat kyllä linux puolella (avaa notepadillä kooditiedostot....)

Aruviel [04.12.2004 16:38:38]

#

Niin koodaan. En kiinnittänyt asiaan (enkä vieläkään ollut) huomiota sen kummemmin, käytin silloin Windowsissa Dev-C++:n editoria, joka ymmärsi hyvin noita rivinvaihtomerkkejä. Yritän saada niihin tiedostoihin jotain tolkkua. Pitäisi varmaan se Windows sitten asentaa.

Ja vielä noista seinistä. Kyllähän se minulle sopii. Tosin tuo yläviiva(?) ei taida kuulua ASCII-merkistöön. Kompromissina laitan mahdollisiksi seinien palasiksi '|' ja '-' merkit.

rndprogy [04.12.2004 22:46:47]

#

Aruviel kirjoitti:

Tosin tuo yläviiva(?) ei taida kuulua ASCII-merkistöön.

Kyllä kuuluu. Sen ascii arvo on 238.

Aruviel [05.12.2004 08:48:28]

#

Juups, minun moka. En tarkistanut asiaa laajennetusta ASCII-merkistöstä. Toisaalta ylä- ja alaviiva näyttävät mielestäni rumilta, ainakin seininä. Jättävät liiaksi tyhjää tilaa ala- tai yläpuolilleen.

KimmoKM [05.12.2004 15:11:33]

#

Yksi mahdollisuus olisi, että käyttäjä saisi itse päättää merkit. Jos ei sellaista tule, tee ne samalla lailla kuin NetHackissä.

Aruviel [05.12.2004 15:31:07]

#

Olen samaa pohtinut, että pitäisi saada itse määritellä nuo "default"-tilet mieleisekseen ilman koodin sorkkimista. Ehkäpä seuraavaan versioon. Nyt minulla on päänsärkyä siitä, miten käännän Windows-version. Tuon voisi nyt kuitenkin jo julkaista testaukseen.

ZcMander [07.12.2004 14:23:54]

#

BUGI, peli kaatu, kun hyökkäsin ekassa paikassa alakulmassa olevassa talossa olevaa ukkoa, eka kysy haluakku jutella sanoin no ja sitten haluakko hyökätä ja peli sammu. Laitan kohta screenshotin. Niin ja syyksi tuli liukulukupoikkeus. Olin tappanut kummastaki kentästä kaikki muut. Niin ja sama bugi jonka ennen ilmoitin, niin sitä ei tapahtunut.
Linna bugia ei varmaan tullut sen takia, koska se siinä tavallaan tulee seinä vastaan ennen kuin tulee tuo "näköalue".

Jep, muokkasin linna tiedosta, bugia ei tule enää.

EDIT: http://shell.nullcore.org/~zcmander/kuvat/hov2.png

Aruviel [07.12.2004 14:28:20]

#

"Jos jonkin olion voima on 0, ja ko. olio joutuu taisteluun, peli kaatuu. (nollaa jaetaan kahdella)."

Tästä johtuu. Siellä objectmap.txt tiedostossa on se a strange man, ja sen otuksen kaikki attribuutit ovat 0.

Täytynee panostaa mahdollisten virhetilanteiden korjaamiseen.

sqwiik [07.12.2004 19:58:33]

#

Ainakin omissa isku/yms tilanteissa teen laskun attribuuttieron pohjalta, joka ainakin omasta mielestäni kuvaa tilannetta paremmin. Sitäpaitsi 0-voiman ei periaatteessa tulisi aiheuttaa mitään virhettä - voihan hahmo olla fyysisesti täysin luuseri :)

ZcMander [07.12.2004 20:34:28]

#

Kyseessähän on vain hyvä virheen käsittely ;)

Aruviel [07.12.2004 20:41:44]

#

Tuo on totta. Virhe onkin siinä, etten ole tuota pahemmin viitsinyt suunnitella. Tuossa 0.0.4:ssä tyydyin lähinnä siihen, että siinä ylipäätään voi lyödä ja vihollinen lyö takaisin, ja että siitä jonkinlaista vahinkoa tapahtuu vastapuolelle. Esimerkiksi pelaajan kuolema aiheuttaa vielä ohjelman kaatumisen.

Tuo 0-voima virhe tulee siitä, että jos oliolla ei ole asetta (eli oletetaan sen käyttävän käsiään), vahinko lasketaan tylsästi jakamalla voimakkuus kahdella. Eli ei mikään toimiva systeemi tämä nykyinen, sattuu nyt vain 'demoamaan' tuota.

Hahmonluonnin teon yhteydessä olisi tarkoitus (ja oikeastaan pakko) vähän tarkemmin miettiä noita attribuuttien ja mahdollisten kykyjen vaikutuksia esim. juuri vahinkoon. En vielä tiedä, mihin skaalaan attribuutteja kannattaisi ängetä, kovasti houkuttelisi jättää se tasolle 1 - 10, tai sitten vain antaa annetulle attribuutille jokin kerroin (3*5 = 15/30). Siitä en sitten tiedä, tuleeko tuota hahmonluontia vielä seuraavaankaan versioon.

Kunhan saisin perustan rakennettua valmiiksi, minkä pohjalta olisi hyvä lähteä kehittämään (toivottavasti) monipuolisempaa ohjelmaa, olisin tyytyväinen.

Taisi tulla paljon tekstiä ja vähän sisältöä.

ZcMander [09.12.2004 15:41:27]

#

Ihan kiva peli, Itse antaisin vaihtoehdot mitä haulaa tehdä? Esim. Hyökätä tai puhua.

Voisin alkaa kääntelemään Widows:sille, kuhan saan PDcursessin toimimaan. Käytän MiniGW (Dev-c++), mutta saatan vaihtaa johonkin muuhun, millä itse kääntelt?

arcatan [09.12.2004 20:29:48]

#

Innostuinpa tässä ryhtymään patchailemaan tätä Windowsilla toimivaksi jotta pääsisin kokeilemaan. Alkuvalikko toimii jo. Kannattaisi ehkä muuten jakaa lähdekoodi useampaan tiedostoon, tuon on yhtenä aika iso jöötti. Samalla uudelleenkääntäminenkin nopeutuisi (siis jos ei välissä tee make cleania)

Aruviel [09.12.2004 21:51:27]

#

Kuulostaa todella hienolta, DSword. Olisinpa pistänyt aikaisemmin parannellun sourcen tänne jakoon, siinä oli muutoksia koodiin niin, että alkuvalikko toimi (tosin nuolinäppäimet/numpadin 8 ja 2 eivät toimineet). Itse peli sitten crashaa jostain hassusta syystä heti nimenannon jälkeen, mitä en ilman omaa Windowsia oikein pysty debuggailemaan.

Pitää yrittää tuota lähdekoodin jakoa tiedostoihin. Pari kertaa olen hiuksia repinyt sen kanssa onnistumatta siinä. Nyt on käyttiksen asennus hieman kesken (Gentoon asennus loppusuoralla), joten minulla ei ole pahemmin ollut aikaa tuota koodailla, saatika innostusta viime viikonlopun rutistuksen jälkeen. Viimeistään sitten joululomalla jatkan. Tuossa ensi vkloppuna voisi hieman jo katsella, kehittelisikö sitä jo tuolloin.

Voi kysyä, jos haluatte jotain tietoa koskien lähdekoodia. Olisi todella hienoa jos saisi ihan toimivan windows-version siitä, joka mahdollisimman pienillä muutoksilla toimisi myös tulevaisuudessa.

arcatan [10.12.2004 14:27:28]

#

Voisit ehkä harkita käyttävsi SourceForgen CVS:ää koodin hallinnoimiseen, saisivat innokkaat ihmiset hakea sieltä uusimman version koodista ^___^

Mutta mutta, 88x26 on hieman kohtuuton vaatimus sikäli, että eihän se edes toimi normaalissa tekstitilassa. En päässyt pelaamaan NetBSD-serverilläni :(

edit: Ai niin, tuo ei muuten suoraan kait käänny gcc 2.95.4 :llä

Aruviel [10.12.2004 14:42:45]

#

Totta, tuo oli yksi niistä asioista, jonka olin korjannut siihen. Eli pitäisi #ifdefittää tuo testaus vain pois Windowsin kohdalla.

Ainakin toistaiseksi kehitysversion lähdekoodin voi ladata täältä: http://koti.mbnet.fi/antsac/devsrc

ZcMander [11.12.2004 15:11:37]

#

Myöhästä varmaan tässä vaiheessa sanoa: Tee luokiksi, esim. Item luokka, Map luokka ym. ja jaottele nuo tiedostoihin, esim. map.cc sisältäis karttaa koskeva (LOS, lataus, ym.) ja main.cc ois nuitten käyttö, joten juonen rakentaminen suoraan koodiin on helpompaa.

Nuo tiedostot käännetään .o tiedostoiksi ja linkitetään sitten käynnistettäväksi ohjelmaksi, ja kaiken tämän roskan tekee make filu. Sitä vartenhan ne melkeimpä on tehty. ja toki helppokäyttöisyyden. Mutta eihän helppokäyttöisyydestä tule paljon hyötyä jos koko koodi on yhdessä tiedostossa.

Lisäksi vois makefilee lisätä install: ohjelma joka suoritetaan make install komennolla ja se asentais pelin /usr/games/hov kansioon (jotenkin nuin)

Tähän omakin ASCII peli kaatukin, kun yritin saada ereihin tiedostoihin sitä, no muutama viikko eteenpäin tuhosin lähdekoodit (en suosittele) ja alotin uudestaan.

Aruviel [11.12.2004 15:27:54]

#

Install on uusimman version makefilessä, tosin ei se taida toimia oikein.

Olen yrittänyt jaoitella tuota eri tiedostoihin. Ongelmaksi on muodostunut se, miten saan esim. jonkin structin määrittelyn mukaan kaikkiin headereihin ja headerien sourcetiedostoihin. Esim. Level-nimistä tietuetta käytetään parametrina monissa funktioissa. Tästä on jo vähän aikaa, kun tuota yritin tehdä. Johonkin se kaatui enkä sittemmin jaksanut yrittää. Pitäisi varmaan katsella jonkin muun ohjelman sourceista mallia.

ZcMander [20.12.2004 15:59:12]

#

Jepjep, ohjelma/peli pitää nimittäin suunnitella valmiiksi, sillain, että se on tiedostoissa, ja kyseinen ongelmahan korjantuu joko linkityksessä tai sitte includella johonkin tiedostoon.

Itse teen sillain jos on esim World luokka ja sitä käytetään monessa paikassa teen siitä headerin. .h tiedostossahan on vain esittelyt. Tosin en ala käymään läpi miten se tehdään.

Ainiin en muistanut käytää komentoa: "make install" siis roottina.

tejeez [30.12.2004 09:16:32]

#

lainaus:

Aruviel kirjoitti:

Tosin tuo yläviiva(?) ei taida kuulua ASCII-merkistöön.

Kyllä kuuluu. Sen ascii arvo on 238.

Ei vaan siis ascii on vain 0-127 ja niistä merkkejä 32-126. Mitään "laajennettua ascii"ta tai "extended ascii"ta ei olekaan vaan niitä on sitten eri merkistöjä.


Ja tosta pelistä, ois aika kiva jos se toimis 80x24-kokoisessa ikkunassa, kaikki kun eivät ehkä saakaan sen isompaa. :)

Aruviel [30.12.2004 14:22:30]

#

Tarkistus koosta joutaa siis hiiteen.

Puhutko Windows-versiosta? Tila varsinkin Windows-konsolin kanssa on aika tiukilla, sitä kun ei ilmeisesti voi oikeasti suurentaa. Ehkä sitä pelialuetta pitäisi ainakin toistaiseksi vain pienentää. Eikä se näköjään toimi X:n ulkopuolella koonsa puolesta.

CVS:ää ei ole vieläkään otettu käyttöön. Pitää ravistella itseäni opettelemaan makefilen tekeminen sekä yms. työkalujen käyttöä.

Aruviel [01.01.2005 12:09:07]

#

Toivoakseni toimiva Makefile on nyt valmis. CVS:n käyttöön ottamisen kanssa on vielä ongelmia. Jos joku sattuu olemaan halukas, niin sitä voi testata tällä uudella paketilla, joka luonnollisesti sisältää kaiken tarvittavan. Ja kyseessähän on siis Linux-versio.

http://koti.mbnet.fi/antsac/devsrc/hov-dev-005.tar

AdeRide [02.01.2005 05:40:45]

#

Millä kielellä tämä peli on koodattu?

Aruviel [02.01.2005 11:21:59]

#

Hmm, eikös se vielä joskus lukenut tuossa sivun yläpäässä... Olen näköjään ottanut sen pois :). C++:aa olen käyttänyt.

E.K.Virtanen [04.01.2005 05:22:46]

#

Ei muuta kuin menestystä projektille. Odotan innolla että pääsee pelaamaan taas jotain tälläistä. Mää ainakin olen niin kyllästynyt noihin ideattomiin kahdenkymmenen cd:n peleihin jotka vaatii vuoden välein koneeseen täyspäivityksen että suostuu pelittämään.

Aruviel [05.01.2005 20:00:00]

#

CVS on nyt käytössä. Sen kanssa oli pieniä ongelmia, mutta SourceForgen support-palvelun avulla siitä selvittiin. CVS-version hankkiaksesi käytä CVS-clienttiä ja lue ohjeita "Anonymous CVS Access"-kappaleesta. Moduulin nimi on valhalla. Näin ollen myös aiemmin viesteissäni ilmenevät "kehityspaketti" ja linkki siihen eivät ole enää olemassa.

ZcMander [06.01.2005 10:16:34]

#

Makefilessä on virhe: "INSTALL_PATH = /usr/locag/games/hov"

Aruviel [06.01.2005 10:58:26]

#

Oli. Päivitin repositoryä tänään. Taitaa tulla pserverille päivän jäljessä.

Edit: Ja CVS-versiossa on nyt muitakin ongelmia, esimerkiksi se kysyy aina, haluatko puhua jollekin (ei vihamieliselle) oliolle. Jos vastaa kyllä ja hirviöllä ei ole dialogi-tiedostoa, se kaatuu.

Edit2: Jaaha, txt:t olivatkin vain tyhjiä. *Painuu nurkkaan ja ottaa CVS-dokumentaation luettavaksi.*

sqwiik [25.01.2005 20:44:32]

#

Miten muuten ajattelit toteuttaa tulevan tallennuksen?

Aruviel [05.02.2005 10:45:03]

#

Kerran kun olen noita "parsereita" (mikä lie oikea sana käyttää noista) niin hanakasti tehnyt, niin ajattelin, että sen voisi tehdä niillä. Ainakin sen pitäisi onnistua kohtuullisen hyvin, eli muutetaan tieto takaisin "samanlaiseen" muotoon kuin se on editointivaiheessa. Tämän toteuttaminen kuitenkin vaatii vielä lisää kohtia hahmoille/esineille. Olenkin aloittanut noiden parsereiden siistimisen ja koodin lyhentämisen. Niissä kun on vain pari erilaista kohtaa, eli copy&pastea olen käyttänyt hanakasti.

Tehtävistä en vielä tiedä, miten ne tallentaisi. Tässä saatetaan turvautua binäärimuotoiseen tallentamiseen. On ollut vähän paussia tässä viime aikoina koko projektista, eikä pelkästään koeviikon takia.

Edit: Ai niin, minulla oli joitain ongelmia niiden LOS-funkkareiden kanssa. Pitää kaivella sorsaa ja katsoa, mikä se oli. Muistaakseni en saanut sitä toimimaan täydellisesti, eli vähän kauempana olevat alueet näkyivät väärin. Lisäksi seinän vieressä oleminen aiheutti ongelmia.

Ja pitää vielä painottaa, että olen varsin lähtökuopissa tämän asian kanssa. Tietämykseni esimerkiksi binääritiedostojen käsittelystä on olematonta.

Aruviel [05.02.2005 20:21:01]

#

Tein pientä säätöä parsereiden kanssa. Ovat nyt paljon paremmin luettavissa. Lisäksi sellaisissa kohdissa, joissa pitää ilmoittaa jokin numeroarvo, ei tarvitse enää pistää nollia eteen. Esimerkiksi ennen väri ilmoitettiin 003, nyt sen voi ilmoittaa 03 tai 3. Sama muiden kanssa, poikkeuksena XY-arvo. Ja jos luku on pitempi kuin olisi soveliasta siinä tietyssä kohtaa, se ilmoittaa asiasta käyttäjälle.

Lisäksi kehittelen tallennussysteemiä. Tällä hetkellä se osaa tallentaa eri tasot samaan tiedostoon kirjoittaen jokaisen Tilen ominaisuudet ylös. Ja ne ovat juuri sellaisessa muodossa, kuin alkutilanteessakin. Eli ne saadaan samoilla parsereilla luettua käyttöön.

Aruviel [06.02.2005 09:37:05]

#

Tässä tallennustyylissä onkin sitten vain se ongelma, että tilaa kuluu paljon. Varmaan pitää jokin "pakkaus" kehittää tuolle. Samanlaisia tilejä kun siellä on niin vietävästi.

Edit: Nyt tallentuvat perusasiat, kuten esineet, hirviöt ja tilet. Vielä pitäisi saada NPC-ukkojen muisti plus muutama muu asia tallennettua ja luettua.

Metabolix [06.02.2005 23:28:21]

#

Aruviel kirjoitti:

Ongelmaksi on muodostunut se, miten saan esim. jonkin structin määrittelyn mukaan kaikkiin headereihin ja headerien sourcetiedostoihin.

Yksi (kömpelö) ratkaisutapa on se, että kirjoitat yleisen headerin, jonka liität jokaisen headerin / kooditiedoston alkuun. sinne laitat kaikkien eri tyyppien nimet:

struct Level;
struct Otus;
struct JokuMuu;
// jne.

Minun projektissani on suunnilleen 20 erilaista structia ja luokkaa, jotka monet käyttävät toisiaan. Toistaiseksi useimpien määrittelyt on vielä tungettu samaan tiedostoon renderöintiluokkia (DX, GL) lukuun ottamatta. Keskinäiset viittaukset vain pitää yrittää a) välttää, b) koota oikein tai c) ratkaista purkalla. Toki hommaa saattaa hankaloittaa ohjelman laajennettavuus ja "irtokäytön" (kuten ERKKI-enginen eri osien) mahdollistaminen.

Kiinnostava projekti sikäli, että vaikka en mikään ASCII-grafiikan ystävä olekaan, tuo vaikuttaa pitkälti samanlaiselta, kuin omat suunnitelmani, ja noudattaa samoja lajennettavuuden periaatteita, kuten nuo tasotiedostoon liitettävät hahmoluokat ja muut. Lisäksi minuun vetoaa tuollainen mutkikas tekoälysysteemi (vihaaminen ja muut), varsinkin, jos siitä tulee oikeasti tekoälymäinen eikä vain tavallinen "if (Tehtava_numero_24.suoritettu) NPC_tyyppi->Hyokkaa(Apinan_raivolla);", kuten monissa roolipeleissä. Toivottavasti se onnistuu hyvin.

Onnea projektiin!

Aruviel [07.02.2005 14:33:03]

#

Tuo hajautus onnistuikin aikaisemmin siten, että structit esitellään yhdessä headerissa, joka kuuluu kaikille .cpp-tiedostoille. Samassa headerissa ovat vakiot. Melkein vakiot, mutta joita täytyy päästä muuttamaan, esitellään main-funktion sisältävässä tiedostossa globaaleina muuttujina. Sanokaa mitä sanotte, mutta "tässä tilanteessa" globaalien muuttujien käyttäminen on varsin mukavan tuntuista.

Tekoälyttömyys on tällä hetkellä yhtä älykäs kuin tuo edessäni oleva 20 sentin kolikko. Osaa häröillä ympäriinsä ja tulla hädintuskin päälle. Esteitä ei osata kiertää kun en ole reitinhakualgoritmia tehnyt.

Satunnaisluolastot ovat must, ja olen tutkinut asiaa. Primin algoritmia (tai jotain sen tapaista) soveltamalla tein omanlaisen, joka tosin tekee aika helvetillisen tylsiä luolastoja jo pelkällä muodollaan:

http://koti.mbnet.fi/antsac/dgen4.png

Ehkäpä pitäisi vähentää sitä satunnaisuutta, ja pistää joka kerta se kulkemaan jokin tietty askelmäärä valittuun suuntaan. Tai sitten vain tehdä oikeasti Parempi.

sqwiik [14.02.2005 18:50:00]

#

ERKKI-enginessä on myös satuunaisen luolaston luomiskoodi (ERKKI_luo_luola()), tiedostossa erkki.c. Käytän siinä itse miettimääni menetelmää, jossa arvotaan satunnaiset sijainnit kentällä (näihin tulevat huoneet). Sitten huoneiden järjestys sekoitetaan, ja tämän jälkeen jokaisesta huoneesta piirretään tunneli seuraavaan. Tällainen koodi tuottaa kaikki Erkki Saaressa-pelin luolastot. Malli:

########################################
########################################
##############.......###.....###########
##############.......###.....###.......#
##############.......###...............#
##############.......####.######.......#
##############.......####.######.......#
##############.......####.######.......#
##############.......####.######.......#
##############.......####.######.......#
##################.######.######.......#
############...........................#
############.#####.###.......###########
###..........#####.###.......###....####
###.........#....#.###.......#......####
###.........#....#.###.......#.#....####
###.........#....#.###.........#....####
###................###.......###....####
###.........#....#####.......###....####
########################################

Aruviel [19.02.2005 08:41:35]

#

Kuulostaa ihan hyvältä idealta tuo oma systeemisi. Jos et pahastu, niin saatan vaikka vähän soveltaa tuota :). Omani taas on vähän outo. Olen kirjoittanut siitä hieman:

* Jokaisella tiilillä on joko arvo IN, OUT, FRONTIER, OLDFRONTIER.
* Aloitetaan haku satunnaisesta paikasta.
* Aloituspaikan tiilille annetaan arvo IN. Kaikki muut ovat OUT.
* Aloituspaikan ympärillä oleville OUT-tyyppisille tiileille arvo FRONTIER.
* Arvotaan seuraava palikka / suunta. Jos se on FRONTIER, siirrytään siihen ja annetaan arvoksi IN.
* Kun ollaan siirrytty uuteen kohtaan, testataan kaikki tiilit uuden IN-tyyppisen tiilin ympäriltä. Jos,
    * Löytyy FRONTIER-tyyppinen tiili, annetaan sen arvoksi OLDFRONTIER.
    * Löytyy OUT, annetaan arvoksi FRONTIER.
    * Löytyy IN, ei tehdä mitään.
* Tämän jälkeen siirrytään satunnaisesti johonkin näistä FRONTIER tiileistä. OLDFRONTIER-tiileen ei voida siirtyä.
* Ja niin edelleen...

Tähän tietysti liittyy myös takaisin päin siirtyminen, uuden haaran aloittaminen ja uuden luolaston aloittaminen, mikä voi törmätä vanhaan muttei mennä sen "yli". Joka kerta kun "luolaston luoja" käy ruudussa, merkitään ruudulle arvo, kuinka monta kertaa siinä on käyty. Kun joudutaan palaamaan takaisin päin ja vastaan tulee haara, valitaa se polku, jossa on käyty pienempi määrä kertoja. Frontier-tiiliä ei myöskään muuteta oldfrontieriksi umpikujasta palattaessa takaisin päin, vain eteenpäin mentäessä.

Edit: Ja kaikki tuosta systeemistä ei ole minun, se perusidea tuli gamedevin artikkelista:

http://www.gamedev.net/reference/articles/article1637.asp


Sivun alkuun

Sivut:

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta