Satunnaista, älyvapaata ja eritoten sekalaista, ilmeisen vuolassanaista tekstiä pienoismallien, 'mechien ja pelailun seasta. Mitä ja mistä milloinkin.
12.2.2014
5.2.2014
Maalia ohjaamotiloihin
Sanoista tekoihin
Kun malli odottaa maalia pintaansa, sen on sitä saatava. Sudin siis pohjamaalia ohjaamon täyteen niin, ettei mitään hassunhauskoja yllätyksiä pitäisi tulla myöhemmin. Mukamas.![]() |
Harmaa pohjamaali |
Ohjeen mukaan sisätilat tuli maalata mustanharmaalla. Mikäpä siinä, minulla oli vielä Model Air -sarjasta tuota jäljellä (pitäisi muistaa, että lisää tarvitaan). Tuon kuivuttua kuivaharjailin sekä kk:n että kutakuinkin kaiken muunkin enemmän ja vähemmän kevyesti gunmetalilla.
Kuvat ovat karmeat, ripeästi huonossa valossa napatut, sori vaan.
![]() |
Mustanharmaa |
![]() |
Ankara gunmetalointi |
Jatkokehitysmietteitä
Mietin, että jotain noita radiopalikoita, mittareita ja säätimiä voisin vähän korostaa. Samoin ohjaussauva voi olla valkoinen tai niin kuvahaku ainakin väitti.Omituisten perinteitteni mukaan minä en ajatellut käyttää tälläkään kertaa siirtokuvia, joten mittaritaulun meinasin räveltää kuntoon myöskin. Mittarien pohjat mustalla ja kenties jotain viisarinkaltaisia valkeita viivoja joihinkin suuntiin. Kuulostaa ehkä hasardilta, mutta sitä se on.
Samoin ennen rungon kasaanlyöntiä ja ohjaamon sinetöintiä koetan taas askarrella jonkunlaiset vyöt noille istuimille. Mitään "himmel!"-efektiä en tavoittele tälläkään kertaa vaan "ka, siinä on vyötkin"-tyyppistä reaktiota ennemmin. Kaikenkaikkiaan: mitättömän pieniä parannuksia pienellä vaivalla, mutta sellaisia, joiden uupuminen saattaisi häiritä itseäni syvästi. Projektimutinoitten parhaitten perinteiden mukaisesti.
30.1.2014
Haistan jälleen varustelukierteen vienon tuoksun
Eihän tuosta minun korjausyrityksestäni sitten tullut mitään. Kompura pöhisi ja ruiskutin suhisi, mutta maali ei liikkunut säiliöstään mihinkään, kun tuossa loppuiltapäivästä kokeilin.
Jos miettii, että tuo vekotin oli kuulemma joku ~15 euron halpamalli ja minä olen väkertänyt sen kanssa innolla jo muutaman vuoden, ei kyseessä ole ollut lainkaan huono vempain! Tämä ei silti tarkoita sitä, ettei mopo saattaisi lähteä lapasesta, kun seuraajaa haetaan...
Syypää
Tuossapa se. Korvikeletku ei pidä tai vedä tai mitään muutakaan. Uutta siis tilalle!Jos miettii, että tuo vekotin oli kuulemma joku ~15 euron halpamalli ja minä olen väkertänyt sen kanssa innolla jo muutaman vuoden, ei kyseessä ole ollut lainkaan huono vempain! Tämä ei silti tarkoita sitä, ettei mopo saattaisi lähteä lapasesta, kun seuraajaa haetaan...
29.1.2014
Ohjaamolaitos
Työtilat ensin
Lentokonerakentelun kunniakkaiden perinteiden mukaan aloitin tykkilinnun kasaamisen ohjaamotiloista. Suureksi hämmennyksekseni sain huomata, että mietin jo vöiden väkertämistä teipinpaloista, koska "vyöt pitää olla" eli hulluksihan minä olen tullut.Mitään kauhean ihmeellistä tässä osastossa ei ollut, penkit, joku selkänojaviritelmä ja oletettavasti radiolaitteisto. Niin ja kyytiläisen konekiväärin minä tietenkin unohdin liimata paikalleen, vaikka miten koetin muistuttaa siitä itseäni. Pistän sen paikalleen tänään ennen muuta askartelua.
Jännityksensekainen odotus
Olen lykännyt kaikkea tätä aikalailla, kun en ole ollut lainkaan varma siitä, toimisiko taannoinen kynäruiskun korjausyritykseni. Jos tuo uusi maalisäiliön sisäletku ei pidä, ruikkimisesta ei tule mitään ja se ei olisi lainkaan optimaalista harrastukseni kannalta. Joten, jonkinlaisella jännityksen ja kauhun yhdistelmällä mennään.Pyytäisin pitämään peukkuja, jos uskoisin moiseen humpuukiin :p
23.1.2014
Projekti I/14
Aski auki
Tammikuu on ollut häkellyttävän kiireinen. Täten julistan Stuka-projektin aloitetuksi lähinnä sillä perusteella, että laatikko on avattu, palat tarkistettu ja ohjetta silmäilty. Samoin työjärjestystä on mietitty.Vanha viisaushan sanoo, että hyvin suunniteltu on puoliksi tehty. Toinen viisaus taas sanoo kevyesti tilanteeseen muokattuna, että suunnitelmat eivät kestä kontaktia todellisuuden kanssa. Lopputulos? Se selviää sitten, kun projekti on valmis, kuten aina.
Materiaali
Tämmöisen kaman kanssa tulee siis vietettyä aikaa. Luulen, että kasaan ensin ohjaamotilat ainakin osittain, sitten maalaan ne. Sitten kasaan lopun koneen ja maalaan sitten valmiiksi muutamalla iteraatiolla.
14.1.2014
Ykkösprioriteetin yliajo työjonossa
Mutisen aina työjonollani ja sen FIFO-mallilla (first in, first out). Nyt tähän tehdään perin saksalaishenkinen poikkeus!
Tämän enempää en joutune selittelemään. Stuka on rumuudessaan ehkä kaunein lentokone, joka on planeettamme taivailla koskaan lentänyt. Siksi siis.
Ennen aloitusta joudun tosin varmaan katselemaan, saanko tuon kynäruiskuni toimimaan varaosaletkulla vai en. Tietysti voin aloittaa kasauksen ilmankin, mutta ainakin ohjaamo tulee vaatimaan maalipintaa aika pian.
edit: Korvasin hajonneen kumiletkunpätkän uudella. Uusi rööri on hippasen kookkaampi kuin entinen, saas nähdä, auttoiko tuo pään liekillä lämmittely pitämään tuon paikoillaan käytössä vai ei. Jollei toimi niin onpahan itselleni uusi (teko)syy investoida uuteen leluun.
Uusi ykkönen
Joulun ja vuoden vaihteen lomalla sain lahjuksena uuden pienoismallin. Askissa on Academyn tunnukset ja lentävä potkurikone. Ja otsikon lukeneet arvannevat, että kyseessä on jotain todella kaunista, kun se kerran liihottaa röyhkeästi OmniMechien ja kahden panssarivaunun eteen ja nauraa mennessään.Ju-87 G-1 "Kanonenvogel"
Tämän enempää en joutune selittelemään. Stuka on rumuudessaan ehkä kaunein lentokone, joka on planeettamme taivailla koskaan lentänyt. Siksi siis.
Ennen aloitusta joudun tosin varmaan katselemaan, saanko tuon kynäruiskuni toimimaan varaosaletkulla vai en. Tietysti voin aloittaa kasauksen ilmankin, mutta ainakin ohjaamo tulee vaatimaan maalipintaa aika pian.
edit: Korvasin hajonneen kumiletkunpätkän uudella. Uusi rööri on hippasen kookkaampi kuin entinen, saas nähdä, auttoiko tuo pään liekillä lämmittely pitämään tuon paikoillaan käytössä vai ei. Jollei toimi niin onpahan itselleni uusi (teko)syy investoida uuteen leluun.
8.1.2014
Oma koodailuprojekti, osa IX
Elämää etsimässä
Pelkät asteroidit ja alukset eivät olisi kovin viihdyttäviä pelialueen sisällön kannalta. Tässä vaiheessa näppäilyä päätin, että yksi planeetta per sektori olisi ihan riittävä. Varsinkin, kun sektori on nyt vain 1024x1024 pikselin kokoinen, ei sinne kovin montaa planeettaa mahtuisi. Todennäköisesti jatkossa skaala on isompi, katsellaan.Peliprojektini ykkösiteraatiossa planeetta piirrettiin pygamen circlenä, mutta se näytti jotenkin ahdistavalta, kun kaikki muut olivat antialiasoituja polygoneja. Päätin siis sangen ennakoitavasti, että minun planeettani ovat (ainakin tässä vaiheessa) 16-kulmaisia. Planeetat ovat muuten kuin asteroidit, mutta ne pysyvät paikallaan, eivätkä pyöri.
Epämääräisen muistikuvani mukaan Lasse kyseli aiemmin kommenteissa jotain planeettatyyppeihin liittyen, joten vetäisin olemattomasta hatustani muutaman tyypin niille (industrial, farming näin esimerkiksi) testailua varten. Jatkossa näille tulee tietysti lisää attribuutteja, pelkkä tyyppi, massa ja väestö ei vielä riitä mihinkään. Niin ja niiden kobolttikuoristen pommien vaikutusten takia joku (tausta)säteilykin pitäisi varmaan pistää talteen... kiäh kiäh kiäh.
Mitä seuraavaksi?
Fysiikkaa
Kaipa siirryn seuraavaksi takaisin QuadTreen ja ainakin yksinkertaisen törmäystarkistelun pariin. Törmäysten toteamisen jälkeen pitää viritellä kimpoamisia niin, että ne toimisivat jotenkin tolkullisesti. Samoin aluksen kiihdytys pitää korjata niin, että lentäminen tuntuisi oikeammalta kuin nykyinen nykiminen.Aseita, tuhoa ja kuolemaa
Kun törmäystarkistelut sun muut on edes aloitettu, voinen siirtyä toteuttamaan ainakin jonkunlaisen asejärjestelmän. Kuolemansäteet eivät ehkä ole se ensimmäinen, vaan taidan testata ensin konetykkejä tai ohjuslavetteja. Saa nyt nähdä, mikä sillä hetkellä huvittaa eniten.Johonkinhan niitä on myös voitava testata joko asteroideihin tai dummy-avaruusaluksiin. Ensin varmasti asteroideihin, koska ne ovat jo lähestulkoon valmiit, tai niin ainakin uskottelen itselleni.
Epämääräisiä ideoita
Miten pelaaja voi telakoitua avaruusasemalle? Tai miten pelaaja voi tehdä yhtään mitään planeetan kanssa? Sain ajatuksen vanhasta, mainiosta Zone 66:sta. Muistin, että jos laskeutumisalustan yli lensi tarpeeksi hitaasti, sille laskeuduttiin, muuten yli vain lennettiin. Samalla idealla tarpeeksi matalanopeuksinen avaruusaseman kohdalle lentäminen siirtäisi pelin telakointimoodiin. Tai planeetan päällä (ei, planeettaan ei voi törmätä aluksella, ne sijaitsevat z-akselilla eri tasoilla) hidastellessaan siirrytään kiertoratatilaan, jossa voi sitten tehdä omiaan.Tähän mennessä ainoa ehdoton vaatimukseni on tunnettu kiertoratapommituksena. Tietenkin pelaajalla tulee olla mahdollisuus kylvää verivihollisensa kotiplaneetta täyteen vaikkapa terästettyä paiseruttoa, jos siltä kerran tuntuu. Luonnollisesti tämä edellyttää sitä, että planeetoilla pitäisi olla jonkunsorttinen tapa puolustaa itseään kaikenmaailman psykopaatteja vastaan. Ohjussiiloja kuin piikkejä siilissä, ionikanuunat tulivalmiudessa, hävittäjäparvet laukaisualustoillaan ja kiertoradat aseistettuja tiesmitä täynnä. Näistä on hyvä lähteä.
Kaikki (minä ainakin) inhoavat telepaattisia osapuolia peleissä. Nämä kaikille tutut hulluthan tietävät oitis, jos olet vaikkapa ryöstänyt heidän veljensä toisella puolella universumia ilman, että kukaan on nähnyt tai kuullut mitään ja suuttuvat silmittömästi. Tämän kun saisin vältettyä, olisin ultraonnellinen.
Turha haave?
Ajatusleikkiesimerkkinä: hyökkäät rahtialuksen kimppuun ja nirhaat sen yksittäisen saattajan ripeällä yllätyshyökkäyksellä. Murhaat miehistön, rosmoat rahdin ja kaikkoat paikalta. Kukaan ei todistanut tapahtumaa, hätälähetyksiä ei joko ehditty edes lähettää tai häirintälaitteesi jyräsi halvan radiolaitteen signaalin. Aiempi loistava maineesi on edelleen tahraantumaton ja miksei olisi? Galaksin silmissä olet edelleen nuhteeton pyhimys.
Ainakin siihen asti, kunnes lähdet tekemään kauppaa mahdollisesti tunnistettavalla rahdilla...
Tällaisia minä olen miettinyt sairaassa mielessäni.
1.1.2014
Oma koodailuprojekti, osa VIII
Liikettä!
Kun ruudulle oli saatu jotain satunnaista möllöttämään, jatkoin lentelytoimintojen parissa. Pienen pyörittelyn jälkeen päätin pysyä entisessä nopeusvektorilähestymistavassani ja käyttää sen kaverina heading-tietoa, josta aluksen nokan osoittaman suunnan saisi irti suoraan. Koska näytettävä pelialue oli sidottu alukseen, aluksen liikkuminen vieritti automaattisesti näkymää ympäri sektoria.Aluksen pyörittely akselinsa ympäri oli hyvin yksinkertaista, eikä siitä ja sen rotate-metodeista sen enempää. Nopeuden muutos oli iso osaprojekti aiemmallakin kerralla, joten ei siitä nytkään päästy helpolla. Tätä kirjoittaessani kaasuttelu oli vieläkin keskeneräinen, joten siihen on palattava myöhemmin. Nyt riitti, että sain sen kulkemaan ympäri sektoria edes puoliymmärrettävästi, joskaan en elegantisti.
Ensin lasketaan aluksen nokan (heading) ja kiihdytyksen perusteella dx ja dy -arvot. Sitten katsotaan, mihin suuntaan nokka osoittaa ja asetetaan sen perusteella dx:lle ja dy:lle etumerkki. Mikäli uusi nopeus olisi ylittämässä aluksen maksiminopeuden, kiihdyttäminen estetään. Kuten sanoin, nykytoteutuksessani on jotain omituista.
Sektorilta toiselle
Tässä vaiheessa esiin nousi seuraava kysymys: mitäs sitten, kun sektorin rajat ylitetään? Jatketaan seuraavaan tietenkin. Koska en ollut aiemmin asettanut ektoreille naapuriviittauksia, jouduin palaamaan pelimaailman inittiin. Samoin, koska sektorit luodaan vain yksinkertaisessa silmukassa, naapurien selvittäminen vaati vähän lisätöitä.Loppujen lopuksi tähän meni muutama tunti muutamana iltana ja refaktorointia siellä sun täällä (ainakin luokissa Player, Sector, World ja Game). Maailmanluonti oli hidastumassa huomattavasti: kun sektorit on ensin luotu, ne käydään sitten uudelleen läpi ja kunkin sektorin pohjoinen, eteläinen, itäinen ja läntinen naapuri käydään kaivamassa ja asettamassa "koordinaattiensa" perusteella.
Sektorinvaihdon yhteydessä pelaajalle on asetettava uusi sektoritieto, alus on heitettävä uuden sektorin vastakkaiseen päähän (ylöspäin mennessä siirrytään siis pohjoisen naapurin eteläpäähän), irrotettava entisen sektorin rakenteista ja heitettävä uuden sektorin vastaavaan ja vielä ladattava maailman nelipuuhun uuden sektorin peliobjektit.
Olin taas kovin ylpeä tekeleestäni tässä vaiheessa. Kaiken muun lisäksi virittelin maailman inittiä nätimmäksi. Tässä vaiheessa sektoreille luotiin vain satunnaisia määriä asteroideja, vihannesviholliset kommentoin mäkeen perustoimintojen kanssa puljaamisen selventämiseksi.
25.12.2013
Oma koodailuprojekti, osa VII
Pitkän tauon jälkeen
Pygame-projektini on edennyt enemmän kuin mitä postaustahdista voisi olettaa. Pääasiassa olen räveltänyt taustapalikoiden kanssa, mitään kovin näkyvää tai käyttäjälle suoraan (ainakaan vielä) näkyvää en niinkään.Toisaalta, jos edellispostausta aiheen tiimoilta katsoo, aikalaillahan tässä on muuttunut.
Viimeksi siis pelimaailma sektoreineen luotiin ja sen perusteella käyttäjälle (tässä vaiheessa ei ole mitään pelattavaa, joten en saata kutsua sitä "pelaajaksi") näytettiin kartta. Kartan sai avata/sulkea ja pelin pystyi pistämään tauolle. Perustoimintoja, muttei mitään kovin hienoa tai ihmeellistä.
Jatkoaskeleet
Ensimmäisen iteraation pelinäkymä oli kiinteä ja alus lensi siinä vapaasti. Ensimmäinen asia oli siis aluksen kiinnittäminen näytettävän alueen (viewport) keskelle ja sen vierittäminen eestaas ympäri pelialuetta (sektoria). Koska sektorin koko olisi aina näyttöaluetta laajempi, ei olisi myöskään mitään tolkkua piirrättää sellaisia objekteja, jotka eivät ole näyttöalueen sisällä. Sektorilla olisi siis oltava jonkunlainen tietorakenne peliobjektejaan varten, josta tuonkin tiedon saisi kaivettua esiin.QuadTree
QuadTreen idea on, että jos sen yksittäisen solun kapasiteetti ylitetään, se jakautuu neljään alisoluun, johon kaikki sen sisältämät objektit jaetaan edelleen alisolujen sisään. Ja niin edelleen, kunnes puun maksimisyvyys on saavutettu. Mikään selitykseni ei voi olla parempi kuin jo olemassaolevat, joten vaikkapa wikipediasta voi lukea lisää.Oleellista on se, että toteutin oman (tai tässä vaiheessa osan siitä) versioni tuosta. Alkuvaiheessa, kun sen pelkkä olemassaolo riittää hyvin, kaikki sektoriin kuuluva romu lisätään puuhun. Yllämainittu tarve näyttöalueella olevien peliobjektien hakemisesta taas oli ensimmäinen oikea käyttötapaus. Koska sektorit ovat neliöitä, kaikki peliobjektini toimivat ainakin tässä vaiheessa neliöinä ja nelipuun kaikki solut ovat luonnollisesti neliöitä, pygamen colliderect-metodit ratkaisevat kaiken.
def get_contained_objects(self, rectangle):
contained_objects = []
if self.gameobjects:
for gameobject in self.gameobjects:
if rectangle.colliderect(gameobject.get_rect()):
contained_objects.append(gameobject)
if self.top_left:
contained_objects.extend(self.top_left.get_contained_objects(rectangle))
contained_objects.extend(self.top_right.get_contained_objects(rectangle))
contained_objects.extend(self.bottom_right.get_contained_objects(rectangle))
contained_objects.extend(self.bottom_left.get_contained_objects(rectangle))
return contained_objects
Oleellista ylläolevassa on välitetty rectangle, joka on siis pelinäkymä (viewport). Pelinäkymän pinta-ala taas kaivetaan pelaajan aluksen keskipisteen ympäriltä. Samalla vaivalla lasketaan aluksen keskipisteen ja kuvapinta-alan 0,0-pisteen välinen poikkeama, jota taas käytetään palautettujen peliobjektien renderöintiin. Kaikkien peliobjektien sijainti kartalla (sektorissa) on suhteessa sen vasempaan yläkulmaan ja siksi tuota poikkeamaa tarvitaan, jotta ko. peliobjekti voidaan piirtää oikeaan paikkaan suhteessa pelaajan alukseen.
Ehkä selitin tämänkin taas turhan oudosti, mutta minkäs teet. Koko ongelman selvittämiseen meni muutamakin istunto ja tuokio. Olin siis hyvin ylpeä, kun sain asiat vihdoin toimimaan oikein.
Peliobjektien paluu
Tietysti minulla piti olla jotain piirrettävää, jotta sain nelipuuni toiminnan testattua edes alkeellisesti. Alkuvaiheessa minulla oli nuo viimeksikin mainitut kolme aliavaruuspiraattien alusta heitettynä vakiopisteisiin sektorissa. Niiden lisäksi halusin tietysti palauttaa Asteroidit mukaan kuvaan, mutta tälläkin kerralla vähän paremmin. Samalla vaivalla puun insert- ja jakautumismetodeja voisi testata satunnaismäärällä sisältöä.Asteroidikoodi siirtyi lähes sellaisenaan uuteen projektiin. Inittiin tuli lähinnä lisää satunnaisuutta. 2d6-heiton tuloksella 9-12 syntyy jääasteroidi, muuten kivinen murikka. Samoin 2d6-heitolla määritellään murkulan kokoluokka vanhoilla tutuilla pieni / keskikokoinen / iso / suunnaton -vaihtoehdoilla. Materiaali vaikuttaa sekä väriin, satunnaisarvottuun massaan että pyörimisnopeuteen. Kiviset ovat sekä raskaampia että hitaampia kuin jäiset asteroidit.
19.12.2013
Naamiokuvion uusintaa
Sudin eilisiltana tummemmalla harmaalla uudet kuviot Turkinan pintaan. Lopputulos on edelleen epäoptimaalinen, mutta se johtuu aikalailla siitä, että jouduin varomaan jo olemassaolevia koristeita. Täysin puhtaalta pöydältä aloittaessa tekele olisi ollut (toivottavasti) parempi.
Seuraavaksi taidan vetää pintaan ruskean litkun niin kuin edellisen OmniMech-nelikon kanssa. Jos maali ei lopu kesken. Mutta raportointi siitä tulee hoitumaan ensi vuoden puolella, minä kun lähden viettämään lomanpätkää ilman nappuloita, maaleja ja sen sellaista.
Seuraavaksi taidan vetää pintaan ruskean litkun niin kuin edellisen OmniMech-nelikon kanssa. Jos maali ei lopu kesken. Mutta raportointi siitä tulee hoitumaan ensi vuoden puolella, minä kun lähden viettämään lomanpätkää ilman nappuloita, maaleja ja sen sellaista.
Tilaa:
Blogitekstit (Atom)