Tölvumál - 01.11.2005, Side 34
Tölvuleikir
34 Tölvumál
Í EVE er áherslan á
að teikna vel afmark-
aða hluti mjög vel:
geimskip, plánetur,
stjörnuþokur o.s.frv.
menn að góðum EVE spilurum er greind,
útsjónarsemi og þekking á leikjaheimin-
um. Ef mönnum tekst að auka eitthvað af
þessu þrennu með því að nýta sér tölvu-
tæknina, þá óskum við þeim bara til ham-
ingju með það.
Forskriftarmálið nefnt eftir Monty
Python-grínhópnum
Til gerðar EVE hefur CCP valið að nota
forskriftarmál sem ber nafnið Python
(nefnt eftir Monty Python-grínhópnum).
Útgáfan af Python sem CCP notar er sér-
stök útgáfa sem kallast Stackless Python.
Það sem gerir þessa útgáfu frábrugðna
hinni hefðbundnu Python-dreifingu, er að
í Stackless notar Python-túlkurinn ekki C-
hlaðann til þess að halda utan um köll á
föll. Þessi eiginleiki Stackless Python hef-
ur gert það kleift að útfæra svokallaðar
framfaldanir (e. continuations). Þær hafa
síðan verið notaðar til þess að útfærar ör-
þræði á mjög ódýran hátt.
Það að hafa valið Stackless Python hef-
ur gert CCP kleift að útfæra EVE í meira
hefðbundnum „Procedural Synchronous“-
stíl, heldur en „Callback Driven
Asynchronous“-stíl.
EVE nýtir sér eiginleika Stackless
Python og örþráða einkum til þess að
halda utan um samskipti miðlaraforskrifta
við biðlaraforskriftir og aðgang miðlara-
forskrifta að gagnagrunni. Miðlarafor-
skriftir sem þurfa að biðja um gögn úr
gagnagrunni, geta gert það án þess að hafa
áhyggjur af því að allt kerfið muni frjósa á
meðan á fyrirspurn stendur. Á bak við
tjöldin er örþráðurinn sem framkvæmdi
spurninguna lagður á hilluna og honum
svo haldið áfram eftir að gögnunum hefur
verið safnað saman.
Svipað má segja um netsamskipti þar
sem forskriftirnar sem keyra á miðlaran-
um þurfa ekki að hafa áhyggjur af því að
trufla keyrslu annarra forskrifta, þegar
senda þarf stórar uppfærslur á stöðu til
biðlarans, eða biðlarinn er spurður um
hvaða möguleiki hafi verið valinn. Miðl-
araforskriftin sendir fyrirspurnina niður í
netlagið. Netlagið stoppar örþráðinn sem
spurði og setur hann svo aftur af stað eftir
að biðlarinn hefur svarað til um hvað valið
var.
Með þessu er búið að færa flækjuna
sem fylgir því að stýra samkeyrslu margra
lítilla hluta niður á neðri lög, sem fyrir
vikið verða flóknari. Þau eru yfirleitt
skrifuð í C++ og með því að takast á við
flækjurnar þar, geta þeir sem skrifa for-
skriftirnar strokið sér frjálst um höfuð og
einbeitt sér að því að útfæra skemmtilega
leikjahegðun í stað þess að berjast við
kerfið.
Forskriftarmál
CCP kaus að nota blöndu af forskriftar-
máli og C++ í stað þess að nota t.d. Java.
Þó svo að Python sé 10 sinnum hægara í
keyrslu en C++ og örugglega nokkrum
sinnum hægara en Java, er hægt að ná
fram mjög góðri blöndu með því að skipta
útfærslunni á milli C++ og Python. Miða
þá við regluna að 20% af forritinu keyrir
80% af tímanum. Sem sagt skrifa; 20% í
C++ og vanda sig við það. Skemmta sér
svo við að útfæra 80% í Python, vitandi að
búið er að leysa flest erfiðu undirliggjandi
vandamálin í C++. Með því að nota forrit-
unarmál sem er mitt á milli (e.g. Java) nær
maður ekki þessari blöndu. Nema hugsan-
lega að blanda saman C++ og Java eða
Python og Java (Python útfært í Java nefn-
ist Jython). Það er mun þyngra í vöfum og
býður ekki upp á sama sveigjanleika.
Þrívíddarvél
CCP kaus að skrifa sína eigin þrívíddarvél
í stað þess að kaupa þrívíddarvélapakka af
öðrum. Þetta var einkum gert vegna þess
að EVE er geimleikur og þar eru aðrar
áherslur en í flestum þeim þrívíddarvélum
sem til eru. Þær eru oft á tíðum hannaðar
fyrir leiki sem að byggjast á að skríða um
ganga í fyrstu persónu. Í EVE er áherslan
á að teikna vel afmarkaða hluti mjög vel:
geimskip, plánetur, stjörnuþokur o.s.frv.
Einnig var það ákveðið að allir hlutir í
EVE skyldu vera fastir (e. rigid). Það þýð-
ir að lögun hlutanna breytist ekki þegar að
þeir hreyfast. Þessu má líkja við muninn á
armi á vélmenni og handlegg á manni.
Þegar maður beygir höndina, hnyklast
vöðvar undir húðinni sem breyta ásýnd
handleggsins. Þetta gerist ekki þegar að
armur á vélmenni er beygður, afstaða hlut-
anna sem mynda arminn breytis einungis
en form þeirra helst það sama.
Það að setja sér þetta skilyrði gerir það