“El joc és superintel·ligent, si estàs sota l’aigua, els cartutxos es mullen i no pots disparar”

22.30, darrer dia d’agost, Frankfurt Vallés, C/Gran de Gràcia, Barcelona. Tio intentant lligar amb tia a la barra. Tio explicant sobre una cosa que li flipava, de cop descobreixo que era un joc d’ordinador o consola, i llavors llança la frase: “El joc és superintel·ligent, si estàs sota l’aigua els cartutxos es mullen i no pots disparar”.

nethack - no return

L’altre dia provava l’Egoboo. Un joc lliure en 3D amb una propaganda que diu quelcom com Dungeon crawling 3D game in the spirit of Nethack. De cop me n’adono de la “intel·ligència” dels qui m’atacaven… bitxos rondant per les habitacions, sense ase ni bèstia, i amb cap més aspiració que perseguir-me per a matar-me o passejar per allà.

Com a la majoria dels jocs, un “bitxo” és diferencia d’un altre en la forma, velocitat, força, ressistència, armadura, màgia i en el millor dels casos: ús d’algun objecte que el caracteritzi, i prou!. Així és molt fàcil, només són uns paràmetres numèrics que són atorgats a cada tipus de bitxo i un o diversos gràfics de la creació.

En aquest moment em torno a recordar del Nethack, un dels “bitxos” és la nimfa (mountain nymph, water nymph, wood nymph), que es mou cap a tu i t’intenta robar un objecte, de fet gairebé sempre ho aconsegueix. Val a dir que no roba de qualsevol manera sinó que primer t’intenta seduir. No roba qualsevol objecte, ni tampoc els més importants o apreciats per a tu, roba els que més l’interessen a ella. La nimfa porta un mirall, doncs és molt coqueta i li agrada mirar-se. Si la tractes de matar a distància amb alguna vareta màgica potser trenquis el mirall i això et donarà mala sort. A més acostuma a portar una poció de detecció d’objectes. I gairebé segur que tindrà entre les seves varetes la de teleportació, que la farà servir quan estigui en perill o quan t’acabi de robar. Fins ara pot seduïr, robar (triant), beure’s pocions i fer servir varetes, però a més a més, com qualsevol altre “bitxo” que tingui mans pot agafar coses del terra seleccionant objectes i canviant-se de roba si ho creu convenient. En moltes ocasions està dormida, i no fa gaire gràcia quan intentes passar a prop d’una que dorm i la teva mascota la desperta.
Per a completar la descripció diré que deixant de banda la seva “armour class”, “magic ressistance”, “alignement”, mida, velocitat, experiència base i velocitat, si et menges una nimfa tens un 30% de possibilitats de contreure teleportitis, que pesa 600gr però el seu valor nutricional és de 300, que és genocidable, que -la water nymph en concret- té bastantes possibilitats de sortir d’una font quan hi fas alguna cosa, i que es pot calmar una nimfa a distància tocant una melodia amb una arpa de fusta si es té prou habilitat.

En el codi (Nethack és lliure) podem veure a makemon.c (arxiu que regula la creació d’un monstre):


/*
* Soldiers get armour & rations - armour approximates their ac.
* Nymphs may get mirror or potion of object detection.
*/

(...)

case S_NYMPH:
if(!rn2(2)) (void) mongets(mtmp, MIRROR);
if(!rn2(2)) (void) mongets(mtmp, POT_OBJECT_DETECTION);

(...)

case S_NYMPH:
if (rn2(5) && !u.uhave.amulet) mtmp->msleeping = 1;
break;

a monst.c podem veure:

/*
* nymphs
*/
MON("wood nymph", S_NYMPH,
LVL(3, 12, 9, 20, 0), (G_GENO|2),
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(600, 300, 0, MS_SEDUCE, MZ_HUMAN), 0, 0,
M1_HUMANOID|M1_TPORT, M2_HOSTILE|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE,
CLR_GREEN),
MON("water nymph", S_NYMPH,
LVL(3, 12, 9, 20, 0), (G_GENO|2),
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(600, 300, 0, MS_SEDUCE, MZ_HUMAN), 0, 0,
M1_HUMANOID|M1_TPORT|M1_SWIM,
M2_HOSTILE|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE, CLR_BLUE),
MON("mountain nymph", S_NYMPH,
LVL(3, 12, 9, 20, 0), (G_GENO|2),
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(600, 300, 0, MS_SEDUCE, MZ_HUMAN), 0, 0,
M1_HUMANOID|M1_TPORT, M2_HOSTILE|M2_FEMALE|M2_COLLECT,
M3_INFRAVISIBLE, CLR_BROWN),

i si voleu podeu fer una mirada al steal.c

La nimfa no és el bitxo, monstre o caràcter més complexe en quant a comportament o possibilitats del joc. El cockatrice és molt més complex. Si ets un personatge femella, si tens alguna manera coneguda de canviar de forma (polymorph), com la vareta, l’anell o una trampa de polymorph, i tens identificat l’anell de polymorph control, què millor que “polymorphejar-te” en una femella de cockatrice per a poder tenir ous i llançar-los als enemics que en la seva majoria quedaran petrificats. I si no ets femella, doncs fes un canvi de sexe previ (si pots).

Si et trobes un cuc gegant i te’l carregues, molt probablement deixi la seva dentadura allà. Faràs bé de polimorphejar-la doncs t’apareixerà el crysknife, que és el ganivet més poderós del joc, però no és ni molt menys l’arma més complexa, valqui per exemple l’staff of Aesculapius:

“The Staff of Aesculapius is the healer quest artifact. It is neutral for wishing purposes. Its base item type is a quarterstaff.

It deals double damage to all monsters without level-drain resistance, drains levels from them, and also gives hungerless regeneration and protection from level drain.

If #invoked, it heals half the HP you would need to return to full health, and cures sickness, blindness, and sliming. It does not cure blindness caused by a cream pie.” Staff of Aesculapius – Wikihack.

El més curiós de tot això és que no és a cap manual oficial, sinó que es va descobrint amb els anys, mirant codi font, i sobretot avui en dia, cercant per la xarxa.

(…)

Llavors el noi li dèia a la noia: “cal pensar molt, és molt difícil”, tot dient-li que “un monstre de la biblioteca podia travessar parets”, i un altre exemple d’intel·ligència del joc a que ell jugava, i que ja no puc recordar per la seva “lamentabilitat”. I és que és un rotllo quan en un joc que vols que suposi un repte, tens als enemics passejant per allà esperant a ser matats. Quasi tots fent d’extra excepte algun “bitxo final” de cada fase que no és molt més complexe, però sí més gros, amb més capacitat d’atac i de resistència (simples paràmetres numèrics).

A la intel·ligència artificial de cada joc se li demana el que se li demana. Si un vol jugar a cotxes, doncs està bé que els altres cotxes sàpiguen agafar una corba. Si un juga a un joc d’estratègia, està bé que la “màquina” pugui guanyar-te per la seva estratègia i no pas perquè té més or de partida (valgui com a exemple de bona IA el Battle for Wesnoth). Si un vol esquivar i disparar amb velocitat entre un mar de naus enemigues, doncs li demanarem a les naus que siguin ràpides i que la seva velocitat sigui creixent. Però un joc com tots aquests First Person Shooters on l’enemic espera a que el matin… quina vergonya!

Després d’aquesta reflexió comentar que he estat uns dies tractant d’acabar-me el Nethack per primer cop i únic a la vida (després de més de 10 anys des de que el vaig conèixer). Havia llegit sobre algunes tàctiques que no coneixia com la protection racket i Dig to victory i les vaig aplicar en un healer gnom que per sort la seva mascota es va polimorphejar en un pit fiend des de ben aviat. La idea era guanyar molt poca experiència, fent que el pit fiend s’ho carregués tot, i així els enemics no serien més perillosos a cada nivell, doncs aquests es creen amb una base exp en relació amb la del jugador (no amb la de la seva mascota). Com el healer era metge abans d’entrar al nethack, té força or, i això li permet comprar protecció divina a un priest a la minetown. A més, és fàcil anar per les mines sent un gnom. La estratègia anava perfecta, només calia anar descansant, vigilar en tot, i tenir la sort de no perdre la mascota. Tenia amulet of reflection, magic cancellation, magic resistance, magic marker, magic wistle, 2 bags of holding, teleport control, 7 candles, ressistances de tot:

nethack - enlightenment

i tota aquesta documentació (i molta altra) “a la mà”:

Em vaig enfrontar als major demons de l’infern sense encara haver fet la quest, doncs tenia lvl12. Vaig fer-la per a guanyar la staff of aesculapius abans mencionada i vaig arribar a fer la invocació (després d’haver matat al Wizard of yendor). Llavors ja tenia els gauntlets of dexterity. El high priest tenia l’anell objectiu del joc. El vaig agafar i el Wizard va ressuscitar fins a 9 cops per a pendre-me’l o intentar pendre-me’l. Per a matar-lo calia fer alguna instant kill (li feia petrifiation o wand of death), doncs com el tinguis dos o tres torns a prop teu ja pots dir adéu a setmanes de partida (la mort és permanent).

killing yendor again

Vaig fer l’ascensió, buf quin patir, fins als planes (terra, aire, foc, aigua i astral), però al moviment 90679 moro al fire plane 🙁

nethack - plane of fire - death

En un descuit m’havia tret l’anell de levitació per a mirar un llibre d’encanteris que estava al terra, i no vaig recordar posar-me’l abans de passar per la lava. Quan tenia la vareta de fred treta de la bag of holding i l’anava a disparar per a poder sortir de la lava, ja estava mort. Estava tant a prop. I no volia tornar a jugar. Només volia acabar el Nethack sense fer trampes un cop a la vida. Però ja era massa tard. Llavors vaig fer cheating, renunciant és clar a enviar l’ascensió a la llista oficial. Com havia guardat la partida regularment (cp -r) doncs provava un client nou “Lizard” que es bloquejava algun cop, vaig fer servir la darrera còpia per a tornar a intentar l’ascensió a partir del punt on tenia l’anell. Quan vaig arribar a l’astral plane em vaig adonar de que era veritat el que havia llegit, és increíblement difícil, encara que m’havia guardat 2 pocions de gain lvl per a nomes entrar. Només sembla fàcil -diuen- si et pots polimorphejar en un Xorn, i tenint-ho tot? previst ho vaig intentar 2 cops sense èxit. Potser m’havia d’haver llegit això: Astral Plane -Wikihack i haver arribat amb un parell d’animals de companyia potents, però el meu Archon va morir miserablement després de mossegar 3 cops una merda de bitxo que estava molt fred.

Nethack - Astral plane

És tant complicat que vaig fer cheat i cheat un munt de vegades fins que vaig ascendir tot fent-me inmortal. La sensació de buit m’invadia el cos. Després de 92223 moviments, carregant-me 2818 creatures (però cap nimfa), m’havia convertit en un semideu… i havia fet trampes. Volia veure el final, encara que només sigui una frase de text. Volia també algun dia poder ensenyar el nethack en alguna jornada d’informàtica, i per això em calia l’ascens. Però tot es va torçar, si hagués caigut a l’aigua -tal i com dèia el noi del frankfurt- els meus llibres i papers d’encanteris se m’haguessin esborrat, les pocions tornades aigua, se m’haguessin rovellat totes les pertenències de ferro que no hagués fet ressistents a la corrossió (doncs no les havia engrassat), i entre d’altres coses que no sé, m’hagués mort a l’instant si no tingués les water walking boots posades o el amulet of magical breathing al coll, tot i que com era força afortunat per la pedra de sort beneïda que portava i per haver llançat diverses gemes identificades i valuoses a unicornis del meu alignement, segur que hagués escapat de la mort, i no, no hagués pogut disparar!, … però vaig caure a la lava.

nethack - offer amulet

Nethack - final attributes

Nethack - demigod

Hamburguesa picant, patates i tònica, ja són davant meu. Després demano un Batonet de Farggi. Agafo el metro. Responc dos correus de Chronojump al centre de la plaça de Putxet. Escales. Arreglo 3 bugs. Intento curar un corall. Estic segur de que estic en aquest món, on la gran majoria de coses que fas demanen menys atenció que les Torres de Hanoi. Escric això. Em trobo més buit a cada ratlla del Vim. Els ulls piquen. Quina sorpresa em deparen els somnis avui? què és la realitat? Per què de vegades el més difícil és anar a dormir? Bona nit.

Estic bé, eh! no s’espanteu!, que de l’ascensio fallida ja en fa uns dies! a veure si demà trec el Chronojump 0.75 😉

Nota: Tots els gràfics són del client per a Nethack Lizard. Espero acabada la tesi poder fer una ascensió amb el client NoeGnu.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>