dilluns, 16 de març de 2009

Disenyant el Patman

Com ja vaig dir, este Patman va a ser un clon del Batman de Jon Ritman, així que vaig a intentar que el saboret que done al jugarlo siga similar al del joc. No obstant, tindrà les seues similituds i diferències. El gràfics, por suposat, seràn 100% JailGame Style. Respecte a la jugabilitat, vull que siga més facil i, sobre tot, menys frustrant de jugar. Ja vorem com ajustar la jugabilitat durant la fase beta.

Respecte a la implementació, es pareixerà prou a com era el Batman. No hi haurà tiles isomètrics com en el Patman que començarem JailDesigner i jo. L'única part tilejada i, a més, estàtica, serà la pared del fondo i el piso.


Serà una graella de 8x8x4 blocs, sent el bloc unitari el que podeu vore en roig pel mig de la captura de dalt. Aquesta graella es podrà reduïr a menys de 8x8 (4x6 per exemple) en tamanys sempre parells, ja que cada porta ocupa 2 tiles i sempre ha de estar centrada (lo qual vol dir que redueix les posibilitats de portes a una per pared i sempre al mig, igual que el Batman).

A més, cada bloc unitari (que al final, internament, no valdrà per a res) es subdivideix en 4x4x2 divisions, el que fa un total de 32x32x8 unitats mínimes.

Tota la resta de coses que es vegen seràn, per dir-ho d'alguna forma, objectes. Els objectes, segons les seues propietats, podràn ser inamovibles, arrastrables, mòvils, "matadors", etc...

La forma d'implementar el pintat en ordre dels objectes serà mantenint una llista enllaçada del objecte que està més al fondo al objecte que està mes prop. Aquest ordre realment serà primer ordenarlos per l'eix NS (nord-sud), després per l'eix EW (est-oest) i per últim per l'eix UD (dalt-baix). Per a ser sincers, el que realment importa es el UD, els altres dos podría mirar un primer o l'altre, pero tenía que decidir.


Per a reaordenarlos, no usaré quicksort ni algorismes d'eixe tipus, ja que son poc optims per a llistes quasi ordenades, com es el cas. El que faré serà vore si estic fent un moviment que em faria anar cap amunt o cap avall en la llista ordenada, i començar a comparar posicions amb els objectes en el sentit que toque. Així, el cost en el pitjor cas es n, i en el promedi n/2. En realitat, el cost normalment es molt baix, ja que en cada moviment lo normal es que li guanyes la posició als mes propers, no al mens llunyà. La reordenació es farà cada vegada que un objecte es menetje (es reordena eixe objecte nomes).

Aquesta implementació es similar a la que usà Jon Ritman en el seu Batman, amb l'optimització de nomes mirar els objectes del costat de la llista que m'afecten, en compte de tots.

Respecte a la interacció entre objectes, també usaré la tècnica del senyor Ritman, pero amb alguns refinaments. Quan un objecte colisione amb altre, l'"espenta". Un objete, al ser espentant, comprova si la força de l'espenta es major que la seua resistencia a moures involuntariament. Si ho es, comprova si eixe moviment li causarà una colisió amb altre objecte i, en cas afirmatiu, també l'espenta, pero amb una força d'espenta igual a la original menys la seua resistència.

Açò junt amb una força d'espenta "universal" per a tots els objectes en sentit cap avall (la gravetat) conforma un sistema de físiques símple pero efectiu.

Jugant amb el sistema d'espentes i resistencies puc crear objectes inamovibles (alta resistència), objectes que pots arrastrar de un en un pero no varios (resistencia = força de patman), ascensors (objectes amb una resistència major que la força de la gravetat, i amb una força major que la resistencia dels demes objectes), i objectes que maten, com per exemple enemics (amb una força altísima, que s'interpretarà internament com la mort).

Cap comentari:

Publica un comentari a l'entrada