Genre: Adventure
About cadaverLocation: Oulu, Finland Home Region: Age:30 Website: http://cadaver.homeftp.net/loorni Favorite writers: Clive Cussler, Stephen King, H.P.Lovecraft, Robert Ludlum, Eric Van Lustbader, Matthew Reilly, Andy Remic Favorite music: Metal in various forms Non-noveling interests: Playing guitar/bass/throat, game programming |
Joined: October 24, 2007 This Year: Official Participant NaNoWriMo History: NaNoWriMo posts: 54 NaNoWriMo buddies: 11
|
|
|
|
Synopsis: Agents of Metal Pt.1 / Kyräilevien ohjelmoijien kerho
Agents of Metal Pt. 1:
A young thrash metal guitarist, working by day the gruelling post of a junior systems administrator, begins to suspect that the memories of his past are not real and the people he knows are not exactly what they seem to be. Not before long, he is tangled from head to toe in a web of dangerous occult conspiracy and is forced to become ... an Agent of Metal.
Kyräilevien ohjelmoijien kerho:
Reaaliaikaista kolmiulotteista sovellusta kuumeisesti työstävän ohjelmoijan todellisuudentaju alkaa vähitellen muuttua.
Excerpt: Agents of Metal Pt.1 / Kyräilevien ohjelmoijien kerho
Agents of Metal Pt. 1:
Replacing a server motherboard in a zombie-like state between sleep and reality was not exactly Ian's idea of entertainment.
In fact, it was only his body that felt half-asleep. His mind was still on a hyperactive overdrive, racing in circles around the mystery of the documents.
He kicked the computer case hard: the machine showed just a black screen when powered up.
“You piece of shit, boot yourself!” he raged.
“That's not the way to treat hardware,” Gwen remarked, having just arrived from her rounds back into the server room.
Ian knew it was not usual for him to be this excitable. His mind had not had the chance to rest properly, leading to uncharacteristic anger. Gwen would suspect something.
However, she said nothing.
Ian tried to control himself and checked the wiring and the CPU being properly seated one more time. Then he said a prayer to the dark gods of server hardware.
Finished, he pressed the power button again.
Now the self-test display appeared properly. He could get on with the rest of the work.
After getting the motherboard replaced, more work awaited: because of an obscure exploit possibility, all hardware and software firewalls in the building would have to be updated.
It would be a moderately long day.
***
The day was unusual in the sense that Ian and Gwen left at the same time. Usually Gwen would always be immersed in something when he left. She would stay long into the evening even if there was no pressing work remaining, apparently delighted by the company the servers kept her.
They walked, in silence, across the company parking lot.
By now, 7 PM, it was already as dark as it was going to be. There were a few cars left: some analysts and consultants were working a longer day than the IT department, which was a miracle in itself.
Apparently to cut electricity costs, not all the lamps were lit. This left several dark areas on the ground.
As they passed one of the cars, Ian heard a sound – just at the threshold of his hearing – probably the rustling of nearby bushes at the edge of the lot.
Without advance warning, Gwen pushed him forcefully down to the ground next to the car.
The next thing Ian registered was a muted spit, and a split-second later one of the car windows shattered.
Silenced gunfire!
Ian was still rather uncomfortably pinned down by Gwen's mass. She motioned for him to keep quiet. But making a sound was the last thing on his mind. Rather, his mind was already racing.
Where was the attacker? Or attackers?
He watched in amazement as seemingly from nowhere, a large handgun appeared in Gwen's right hand. It glinted a silvery colour under the parking lot lights.
It was a Desert Eagle. Ian could read the engraved text on its side – it was the heaviest .50 calibre model.
Right at that moment Ian realized how little he actually knew of his workmate. Of course, he was glad of her hidden skills – had it not been for her, he would surely have got himself shot. He would now be lying on the cold concrete of the parking lot, lifeblood oozing out of him.
Gwen rose into a kneeling position and fired once. The noise was deafening and the muzzle flash was much longer than Ian could have imagined. Due to its mass, the pistol recoiled in an unusual long, soft motion.
But unless she could see perfectly in the dark it had to have been a blind shot.
Out of the darkness came a stifled cry of pain.
Perplexed, Ian took a closer look at Gwen and understood now that the sight of the large gun had been so awesome that he had not paid attention fully.
He had not paid attention to the light amplification goggles that had appeared on her face.
In the very next second, several muted shots rained on the car in revenge. Gwen was forced to duck into cover.
How many attackers?
Though the events and revelations before had been some kind of preparation, Ian could still not fully believe this was actually happening.
But as Gwen came out of cover again to loosen a few more deafening shots, he did not have any other option than to start believing.
“I got lucky with the first shot. But now I can't see the bastards any more. It's just green noise,” she hissed.
That was very reassuring.
She then took a smaller firearm from inside her jacket and handed it to Ian, who was still sprawled on the ground.
“You know how to use one? Distract them and force them to move.”
Ian was surprised by Gwen's commanding tone. She practically assumed he could use the weapon. He did not want to disappoint, but –
A quick look at the pistol made some hidden, blocked knowledge come back to him. Unlike the Desert Eagle, which was widely known thanks to movies and games, this weapon was much less glorious.
But not at all less usable. In fact, it was much easier to handle, and it would definitely kill.
It was a Heckler & Koch USP .45 with a threaded barrel to accept a suppressor.
To his surprise and horror, Ian knew precisely how to operate one.
He racked the slide and flicked the safety off. As if guided by an outside force, he rolled so that he could extend his hands past the car's front bumper, still keeping low to the ground.
Then he fired several times in succession, blindly.
In the direction of fire, beyond the parking lot, there was a park. Ian knew it was very irresponsible to shoot, for bullets could travel far and innocent people could get hurt.
However, the same force that had just taken control of him told that it did not matter. Only his own survival mattered.
More muted shots came in response. Ian could hear bullets whistling as they flew close by, some impacting with the ground.
The last one made an uglier sound. It was very brief, like tearing something. Ian felt a hot sensation across the length of his right arm, which had been topmost when he fired.
He rolled back to the safety of the car.
Had he been hit?
Safe from immediate danger, Ian inspected his right arm. The leather of his jacket had torn from the entire length of the sleeve, but there appeared to be no wound.
He had got lucky.
Two metres away, Gwen's weapon boomed twice.
No more shots came. There was just a heavy silence that hung in the air along with smell of gunpowder. Was that the end of it?
“Got them,” Gwen said at last. “There were two. Now we must go, we don't want to be here when the cops arrive.”
“Do you want the gun back?” Ian asked, not sure what else to say. He had risen to his feet and put the weapon's safety back on, mechanically: his conscious mind had not yet fully processed what had just happened.
“No. It's now yours.”
To further support her words, Gwen gave him three spare magazines.
Seeing the extra ammunition jerked Ian fully back to reality. He felt weak. Gwen had just shot two attackers dead, who in turn had been trying to –
Kill him? Gwen? Or both?
And he had helped her, by handling a semi-automatic firearm quite expertly on his own as well. He had no conscious memory of ever practising with one.
It was unbelievable, but there just was no way out of it. This was his reality now, and he had to live with it.
Gwen removed the goggles from her eyes and they started a semi-jog out of the parking lot, keeping to the darkness. After a few minutes, Ian could hear the wail of sirens coming from the distance and getting closer.
Unanswered questions circled in his mind. Gwen had said there had been two attackers, but there had been no time to check the corpses. Were they the same as in the club? Had Lucas thus been avenged already? Somehow Ian doubted it would be that easy. Somehow he was sure that the real questions, the real mysteries only lay ahead. He had now all the more reason to be puzzled of himself as well.
They had been on the move for maybe five minutes now. Gwen turned to him.
“We should find some place to have a chat,” she said, not at all out of breath despite her round and un-athletic appearance.
***
They sat in a quiet corner of an all-night café. Gwen had explained that she chose the place specifically for not having a metal detector at the entrance.
The interior and lighting were a pleasant, atmospheric red. Or so Ian at least thought a normal person would evaluate the place. To him it was very unsure whether anything would be “pleasant” ever again. However, the coffee was welcome, if for nothing else than refreshing his mind and raising his alertness. While they had jogged away from the scene, he had pondered whether he would have survived if thrust into the same situation again, but this time alone.
Probably not.
Gwen spoke in a low, unremarkable voice that would blend into the background noise.
“First of all, you have to understand that what I'm about to tell you may leave you unable to ever function normally again.”
That sounded like a great start.
“I believe I'm already in that jam,” Ian replied.
As far as he was concerned, nothing had been normal since the first flashback or hallucination. Paranoia, possible false memories, a symbol that caused extreme nausea, skill of handling firearms that should not have been there. It was far from normal.
As Ian considered further, he came to the conclusion that the abnormal things had started even earlier. Why, for example, the strong desire to infiltrate the Axis industrial block? A normal BOFH or PFY would have made a counter-attack through the network.
He had wanted to test his physical stealth skills. There was no other explanation.
In fact, learning to be a systems administrator from zero so quickly, or learning the band's all songs at an unusually fast pace could be taken as an abnormal sign as well.
Something was definitely not right with him.
He just hoped Gwen would shed some light on that, no matter what the consequences.
“Let's start with simple things first. What happened tonight. That, was an attempt on your life by the SCEPTRE. I just happened to be in the line of fire, too.”
Though he understood they sat here to discuss utterly, deathly serious things, Ian could not help a slight grin as Gwen recited the letters – obviously an acronym – one by one. Was that not the organization James Bond fought against?
“It is probably not their actual name. But we nevertheless call them by that title. Sectarian Chosen Elite Privileged To Rule And Exterminate. A ruthless secret organization.”
One word caught Ian's attention. Who we? But then he focused on the acronym again, and the impression it made on him. The ruthless elite who wielded a sceptre of power, killing people as they saw fit. Though he was not completely sure of the connection, the symbol in the documents – the sphere inside the circle inside the pyramid – probably represented the organization.
“Did they kill Lucas too?” Ian asked. “I found some documents from his place...”
Gwen remained silent and took a sip of her coffee. Ian thought this to mean that the question was too obvious to be answered. Or then the nod of her head as she leaned forwards to drink was the “yes.”
“Now that you know who we're dealing with, we can move on to the not so simple things,” she continued. “But remember my warning.”
Ian was puzzled. He had almost been shot today. How could mere words be as harmful, or even more?
“You are a survivor of the SCEPTRE's assassin training program. You never finished the training, you were extracted before that.”
The words took some seconds sink in fully.
When they did, Ian felt as it the floor had been pulled from under him. The symbol returned to haunt him, the café spun and wobbled before his eyes and and he thought he would black out. There was an intense feeling of constriction in his neck, and the rush of blood in his ears.
He felt he was going to be very sick. To vomit right in his coffee cup.
It was the truth he had in a way expected all along, but still nothing in the world could have prepared him to actually hear it. The confirmation of his worst nightmares. The confirmation of the most extreme conspiracy theories.
He had been trained to kill, and then made to forget about his training?
Ian now had no doubt that the training had happened during the period he remembered as being incarcerated in the juvenile facility.
But had there been more?
Which part of his life was real and which was not?
Ian wanted to sink through the floor. To simply cease to exist. He hated this SCEPTRE from the bottom of his heart. From the bottom of his subliminally trained and programmed mind. For if a hacker could erase computer records or even destroy hardware with the press of a button, they were doing the same thing with human minds.
It was unbelievable. Unforgivable.
But his hate was mixed with heavy despair; he knew it was ultimately powerless. What could he or even Gwen with her Desert Eagle do against such force? Such organization had to be vast, probably going all the way to government level or even beyond, controlling governments from behind the scenes...
There was no limit for his paranoia. The room still spun around. Gwen had probably been very right when she said he might not be able to ever function again.
But there was one word he latched onto after the most intense shock had faded.
Extracted.
Who had extracted him?
As if sensing the question on Ian's mind, Gwen continued.
“There exists a rather small group that opposes the SCEPTRE. We call ourselves the Agency, or simply Agents. Several years ago, a team raided the training facility you were held in. Practically burned it down to the ground. Most of the training subjects died or went missing. They got lost in the surrounding woods or attacked the Agent team, who were forced to defend themselves. But you were one of the few who was successfully extracted.”
Ian was not sure whether he should feel lucky or not.
“There was of course, the matter of your training, or should I say programming. I don't have the full details, but I understand that some kind of counter-programming was used to free you from SCEPTRE's grip. If you have felt irrational effects like hallucinations or nausea when coming into contact with triggering material, it's because of these two kinds of programming fighting in your mind.”
Things had just become a bit clearer.
“So, you are an Agent?” Ian asked.
“Guilty as charged.”
Kyräilevien ohjelmoijien kerho:
1.
Koko maailmani täytti keskustelu vertekseistä. Ilmeisesti verteksit ja niiden välimatka olivat juuri tällä hetkellä maailman tärkeimmät asiat. Tämä pelotti ja ahdisti minua, koska verteksejä ei voinut luoda uusia tai tuhota käymättä läpi kohtuuttoman hankalia toimenpiteitä, kuten puskureiden lukitsemisia, jotka olivat suurin synti, jonka jokainen tiimistämme saattoi kuvitella. Ohjelmistomme oli tarkoitus toimia ilman geometry shader-tukea.
Eikä tässä vielä kaikki, debug-buildissa oli taas jotain vikaa. Hahmot saattoivat täysin yllättäen kaatua nurin, alkaa liukumaan eteenpäin vailla järkeä, tai silpoutua verteksimössöksi. Tämä saattoi olla oire jostain vakavammasta ongelmasta, joka ehkä heijastuisi julkaisuversioonkin.
- Floating point-laskennan tarkkuus muuttuu yllättäen. Pistä sinne muutama FLDCW ja katso tapahtuuko jotain, Kaarlo sanoi.
Kaarlo oli ilmiömäinen, lähes nero. Hän osasi lähes aina ennustaa mistä ongelmat johtuivat, paljon ennen kuin minulla oli aavistustakaan.
Minun täytyi myöntää, etten ollut koskaan pitänyt hänestä. En voinut osoittaa tarkkaa syytä miksi, mutta kaikki hänen olemuksessaan tuntui lievästi epämiellyttävältä, limaiselta.
Muistin kuinka lapsena olin pelannut Amigalla Shadow of the Beast-peliä, jossa kohti lopputaistelua juostessa hautausmaalta nousi limaisia sikaa muistuttavia olentoja. Kaipasin takaisin tuohon aikaan, jolloin artisti loi limaisuuden suoraan bittikarttaan, ja jokainen hahmo oli vain kaksiulotteinen levy näytöllä. Tällöin kenenkään ei tarvinnut välittää vertekseistä, paitsi niiden, jotka ohjelmoivat lentosimulaattoreita tai kolmiulotteisia avaruuspelejä. Se oli ollut parempi aika, mutta se ei koskaan tulisi palaamaan.
Nyt kaikki huusivat kurkku suorana verteksejä, enemmän ja enemmän ja enemmän, vaikka samaan aikaan kirosivat niiden ongelmia: kuinka esimerkiksi hahmon polven ei voinut taata käyttäytyvän animaatiossa oikein ilman kohtuuttoman monimutkaisia laskutoimituksia. Ilman keskusyksiköllä tehtävää laskentaa ja puskureiden lukitsemisia. Vaikka nykykäsityksen mukaan kaikki pitikin tehdä suoraan näytönohjaimella.
- Saatana.
Tajusin vasta sekuntia myöhemmin, että se oli minun ääneni. En ollut tarkoittanut kirota ääneen.
Näytönohjaimet! Minulla oli niihin viha-rakkaus-suhde. Tosin siitä yhdeksänkymmentä prosenttia oli vihaa ja kymmenen rakkautta, hyvänä päivänä. Näytönohjainten vihaaminen itsessään oli oikeastaan järjetöntä. Totta kai ne toisinaan ylikuumenivat, jolloin ne alkoivat vinkua, piirsivät näytölle sattumanvaraista kohinaa, tai kaatoivat koko koneen, mutta ongelma ei varsinaisesti ollut niiden.
Ei, vaan ajuriohjelmoijien, joiden sattumanvaraisen huolimattomuuden tai suoranaisen sabotaasin vuoksi minäkin olin istunut toimistolla lukuisia pitkiä iltoja. Rajapintamääritys oli lähes hyödytön, jos koskaan ei voinut tietää, mitkä ominaisuudet tulisivat toimimaan kaikkien valmistajien ohjainten ja kaikkien ajuriversioiden kanssa.
Onneksi me sentään käytimme Direct3D-rajapintaa. Olin nauranut pitkään ja vahingoniloisesti luettuani, kuinka säälittäväksi pelleilyksi OpenGL 3.0 -määritys osoittautui, kun se viimein julkaistiin vuoden lisäodottelun ja mediapimennon jälkeen. Se oli mielestäni todellinen multifail, johon verrattuna tapahtuma, josta termi alunperin lanseerattiin verkkohörhöjen sanavarastoon, eli Sampo-pankin verkkopankkiongelma, oli pelkkä kärpäsen pieru.
Muistin vieläkin, kuinka nyreissään Markku oli ollut vahingonilostani. Hän oli aina vannonut hartaasti alustariippumattomuuden nimen, ja oli uskonut viimeiseen asti, että OpenGL 3.0 toteuttaisi luvatun oliomallin, joka yksinkertaistaisi ja järkevöittäisi rajapinnan viimein tämän vuosituhannen tasolle.
Markun perustavanlaatuinen virhe oli, että hän aina odotti jotain hyvää tapahtuvan. Minä tiesin, että paljon mieluummin kannatti odottaa pahaa. Silloin ei pettyisi.
Grafiikkarajapintojen suhteen minulla oli yksinkertainen sääntö: ellei ollut Carmack, OpenGL kannatti kiertää kaukaa.
2.
Kahvitauolla ollessani se tapahtui ensimmäisen kerran. Tiesin, että jokainen ohjelmoija leikitteli toisinaan ajatuksella, että ympäröivä maailma koostui hänen työssään käsittelemistään konstrukteista, jotka minun tapauksessani olivat muunmuassa verteksejä, kolmioita, ja vertex- ja pixel shader-ohjelmia. Tämä oli täysin normaalia, jopa suositeltavaa.
Mutta hetken ajan minulla oli absoluuttinen varmuus siitä, että kahvikuppi kädessäni koostui vertekseistä ja kolmioista, samoin kuin käteni itse. Vain luustostani lasketut matriisit, ja se, että niiden numeerinen tarkkuus pysyi hyväksyttävissä rajoissa, pitivät kättäni koossa ja estivät sen silpoutumisen miljoonaksi erilliseksi kolmioksi.
Tämä oli samaan aikaan sekä tavattoman ahdistavaa, että vapauttavaa. Koska kaikki oli lopulta laskutoimitusten käsissä, kaikki oli täysin ennalta määrättyä.
Olettaen, etteivät laskutoimitukset menisi pieleen esimerkiksi prosessorin ylikuumenemisen takia, tai siksi, että jokin prosessi päätti yhtäkkiä muuttaa laskentatarkkuutta. Tällöin determinismi joutaisi roskiin, ja olisin kaaoksen armoilla.
En tiennyt kumpi olisi kauheampi ajatus, tai kumman kaaos mieluummin tekisi ensitöikseen: että kaikki verteksini kasautuisivat yhteen paikkaan, tai että ne leviäisivät ympäriinsä kaikissa kolmessa ulottuvuudessa, IEEE 754-standardin mukaisesti esitettävissä olevan lukualueen äärirajoille.
Mutta kun räpytin silmiäni, tunne oli kadonnut ja todellisuus oli taas mitäänsanomaton, ennustettava itsensä. Pian en enää muistanut, mitä olin tarkalleen ajatellut. Olin pettynyt. Palautin kahvikupin astioiden palautuspisteeseen ja valmistauduin henkisesti kohtaamaan taas työrutiinin ja aukinaisen debuggeri-ikkunan, jossa tutkin Microsoftin assemblykielistä koodia.
Oli raivostuttavaa joutua tutkimaan Direct3D:n syövereitä, hukkaamaan aikaa, jota olisin voinut käyttää oman ja työtovereideni ohjelmakoodin tarkasteluun. Tunnit kuluivat, koodijäädytysjakso jatkui ja jatkui – mutta kohta oli pakko julkaista.
Jos käyttöjärjestelmään kuuluviin komponentteihin ei voinut luottaa, oli melkein sama kirjoittaa käyttöjärjestelmä alusta asti itse. Hyvinä aikoina niin oli tehtykin: peli käytti omaa uralatausjärjestelmäänsä, eikä alkukäynnistyksen jälkeen suorittanut enää käskyäkään käyttöjärjestelmän koodia.
Kun kävelin käytävää pitkin kohti työpistettäni, huomasin isot ruskeat pahvilaatikot seinän vieressä. Mitähän tänne oli taas tilattu, ja miksi? Joskus en yksinkertaisesti voinut käsittää. Emmekö pärjänneet varsin hyvin sillä, mitä meillä jo oli? Teoriassa olisimme voineet istua tyhjän varastohallin lattialla koneidemme ääressä: spartalainen ympäristö olisi ehkä kirvoittanut meidät moninverroin parempaan työsuoritukseen.
Virvoitusjuoma-automaatti ja Guitar Hero, pyh! Ne kielivät heikkoudesta. Juuri tällä hetkellä vihasin heikkoutta, vaikka toisinaan myönsinkin sen itsessäni ja jopa nautin siitä täysin siemauksin.
Oli kuitenkin heikkouden asteita, jotka olivat täysin anteeksiantamattomia. En mitenkään voinut osallistua spontaaneihin filosofisiin keskusteluihin, joissa työtoverini tilittivät työn, elämän ja universumin surkeutta muka syvästi tiedostaen. Tilanteiden äkkiarvaamattomuus juuri teki niistä hankalia välttää, ja muutaman kerran olin ollut lähellä avata suuni ja liittyä keskusteluun.
Heikkouden käsite muistutti minua myös eräästä ex-työntekijästä, jota en halua mainita nimeltä. Tällä oli tapana käyttää renderöintialgoritmien testiobjektina laatikkoa, jonka joka kyljessä oli sydän. Laatikolla oli myös nimi, joka ei mitenkään jäänyt päähäni, enkä olisi halunnutkaan sen jäävän. Työntekijän jouduttua auton alle – rattijuopon yliajamana – havainnot laatikosta loppuivat: onneksi se ei ollut jäänyt työpaikkakulttuurimme pysyväksi osaksi, ei edes kyseisen työntekijän muistona.
Auringonvalo lankesi käytävälle huoneeni avoimesta ovesta: talvipäivä oli kirpeän kylmä, ja siksi pilviä ei ollut. Pilvinen ilma olisi tosin sopinut moninverroin paremmin projektin tämänhetkiseen tilaan: sekavaan ja painajaismaiseen.
Yhtäkkiä se tapahtui uudestaan.
Täysin varoituksetta havaitsin miettiväni, miten oli mahdollista, ettei varjotekstuurissa ollut havaittavissa minkäänlaista pikselöitymistä. Yritin kääntää päätäni saadakseni aikaan auringonvalosta reaaliaikaisesti laskettavien varjojen sahalaitojen “uimista”, mutta se ei tietenkään onnistunut, jos sahalaitoja ei ollut ensinkään havaittavissa.
Tämä järkytti vakavasti maailmankatsomustani, koska se tarkoitti, että täytyisi olla olemassa äärettömän tarkkoja tekstuureja. Mutta ei sellaisia voinut olla! Paitsi että se vaatisi äärettömän määrän muistia, täytyisi pixel shaderin käsitellä ääretön määrä tietoa, mikä taas tiputtaisi kuvanpiirtonopeuden nollaan.
Kuitenkaan, en ollut kertaakaan havainnut piirtonopeuden kärsivän. Itseasiassa sen olisi pitänyt lisääntyä, jos katsoisin suoraan ylös tai alas, mutten ollut huomannut tätä päinvastaistakaan ilmiötä. Asia ei kertakaikkiaan tuntunut luonnolliselta, mutta nyt minun oli vain pakko hyväksyä se. Palaisin siihen myöhemmin.
Varjoihin liittyvä toinen, miellyttävämpi vaihtoehto oli, että varjotekstuurien rajat, joiden kohdalla siirryttiin tarkempaan resoluutioon, oli valittu niin äärettömän hyvin, että huijaus oli täydellinen. Saatoin hyväksyä tämän selityksen ainakin hetkellisesti.
Yllättäen en jälleen muistanut, mitä olin miettinyt: tiesin vain, että se oli ollut jotain ihanaa, parempaa kuin edessäni ankeana levittäytyvä todellisuus.
Ihanaa, ohjelmoijat, ihanaa!
Nyt muistin miksi ihanaa-sana oli minulla henkilökohtaisessa pannassa. Halusin kuristaa kyseisen idioottimaisen renkutuksen laatijan tai laatijat: olin joutunut kärsimään siitä riittämiin niin töissä kuin töiden ulkopuolellakin.
Henkilöt, jotka olivat soittaneet minulle tätä kappaletta, eivät kuuluneet enää kaveripiiriini.
3.
Viimeinen kriittinen bugi saatiin lopulta yliviivattua fläppitaululta. Kello oli yhdeksän illalla. Lopulta kyseessä ei ollutkaan Direct3D:n omituinen käytös, vaan osoittaminen jo vapautettuun muistiin, jo vapautettuun tietorakenteeseen, joka aiheutti sattumanvaraisesti sattumanvaraisia seurauksia.
Kirosin hiljaa, sillä bugi oli kiistämättä omaa käsialaani. Olisin halunnut kunnon haukkujen ryöpyn osakseni, mutta jouduin pettymään tässäkin asiassa.
Lähes täydellinen ympäristön reaktion puute raivostutti minua, ja ymmärsin taas hieman paremmin, mitkä kaikki asiat saattoivat olla laukaisevia tekijöitä ns. naksahtamiseen. Tosin yhdessä suhteessa olin tyytyväinen: bugilla ei lopulta ollut mitään tekemistä liukulukulaskentatarkkuuden kanssa, joten Kaarlo oli erehtynyt tällä kertaa.
Tiesin varsin hyvin, että vain hölmö kehtaisi syyttää työkalujaan. Osaavissa käsissä C++ oli kuin pettämätön sähköveitsi. Mutta varomaton tai hölmö viiltäisi sillä itseään uudestaan ja uudestaan. En tiennyt olinko itse varomaton vai hölmö, tai kumpi haluaisin olla. Mietin vain sopivaa tapaa ruoskia itseäni yhä uudelleen, jotten toistaisi samaa virhettä.
Jostain syystä bugilistan tyhjäksi saaminen ahdisti minua. Ei, se ei ollut varsinaisesti sitä, että joutuisimme kohtaamaan kysymysten ja tukipyyntöjen ryöpyn uuden version julkaisun myötä. Itseasiassa se oli jotain aivan muuta.
Olin varma, että juuri projektin unenomainen ja pysähtynyt tila oli auttanut minua kurkottamaan maagiseen todellisuuteen, todellisuuteen sellaisena kuin se todella oli (en vain muistanut enää, mitä se merkitsi). Mutta nyt, kun tekisimme julkaisun ja kehitystyö jatkuisi edelleen reippaalla mutta yllätyksettömällä tahdilla, pelkäsin etten saisi kyseisestä mielentilasta enää kiinni. Olisin tuomittu loputtomaan ankeuteen, tyytymään osaani kyräilevien ohjelmoijien kerhossa.
Kävelin ulos pimeään iltaan, sillä minua ei todellakaan huvittanut jäädä katsomaan, kuinka Valtteri ja Kaarlo jäivät bugin korjaamisen kunniaksi yrittämään uutta expert-tason kaksinpeliennätystä Through the Fire and Flames-kappaleessa. Koko kappale oli järjetön: sen alun soittaminen vaati Valtteriltakin kuminauhan virittämistä kitaraohjaimen ensimmäisen napin ympärille. Uskoin, että sormissa oli tietty, rajattu määrä koukistuksia tai ojennuksia ihmisen koko elinajaksi: en ymmärtänyt, miksi tuhlata niitä johonkin näin luotaantyöntävään.
- Pelkkää hypernopeusmeteliä, olin joskus tuhahtanut.
Kävellessäni pakkasessa tajusin äkkiä, että jokin oli muuttunut.
Kun katsoin eteeni, kuvanpiirtonopeus todellakin putosi siihen verrattuna, jos katsoin maahan. Tottakai se oli ymmärrettävää, ja täysin hyväksyttävää, sillä edessäni oli rakennuksia, joiden ikkunat edellyttivät reaaliaikaisten heijastusten laskemista. En havainnut mainittavaa epätarkkuutta heijastuksessa, joten rendertargetin täytyi olla iso.
Mutta ääretön se ei ollut, ei todellakaan. Kävelin lähemmäksi ikkunoita ja saatoin olla varma asiasta: edessäni todellakin oli trilineaarisen suodatuksen rajallisuudesta johtuva artefakti.
Halusin huutaa onnesta. Olin viimein löytänyt maailman suorituskyvyn rajat.
Katsoin kohti taivasta, ja kyllä: frameraten kasvusta ei ollut pienintäkään epäilystä. Jos se olisi pysynyt samana, olisin tosin voinut selittää sen rakennusten väärin säädetyillä rajauslaatikoilla, minkä vuoksi ne piirrettäisiin silloinkin, kun ne eivät enää olleet suoraan näkökentässä.
Muistin nyt, miten edellisillä kerroilla olin aina pian havahtunut väärään todellisuuteen, miten jokin katala salajuoni oli saanut minut irroittautumaan. Yritin muistella, missä olosuhteissa se oli tapahtunut.
Räpytin silmiäni ja yritin tahallaan uskotella itselleni, että verteksejä tai luustomatriiseja tai tekstuureja ei ollut oikeasti olemassa, että ne olivat vain konstrukteja, jotka ihminen oli rakentanut, ja vain yksi, suhteellisen mielivaltaisesti valittu tapa kuvata kolmiulotteista maailmaa laskennallisesti.
Mutta ei. Vaikka yritin, en pystynyt uskomaan naurettavaan valheeseeni ja siirtymään takaisin valetodellisuuteen. Koostuin vertekseistä, niinkuin olin aina koostunut. Kaikki koostui. Minut piirrettiin osissa, koska vertex shader-rekistereihin ei mahtunut kaikkia luustomatriisejani kerralla, ja keskusyksiköllä toteutettu skinning taas olisi ollut mitä suurin synti ja myrkky.
Tiesin nyt myös, että bugin korjaaminen oli ollut taitavasti asetettu sivutehtävä, jossa oli ollut juuri oikea määrä toistoa ja turhautumista, mutta päätehtäväni odotti vielä jossain.
cadaver's Writing Buddies
|
|


add as buddy
send NaNoMail
visit website