dimarts, 31 de març de 2009

Per fi!!!

Ale, ja està el motor basic acavat. Després d'un montó de proves no he trobat cap poll. Segur que acavarà eixint-ne algún, pero al menys la base es robusta i prou confiable.

Al final no hi ha forces ni resistències. El que si que pasa es que un objecte, quan espenta a altre, va la meitat de apresa. Si espenta a dos seguits, encara més lento. Queda prou be. De totes formes te un xicotet efecte raro, heretat del Batman de Jon Ritman (ja que ho he implementat like ho va fer ell): si espentes cap a fora de la pantalla tot es veu be, pero si espentes cap a dins se veu un xicotet bot entre els dos últims objectes de la cua. Es algo amb el que puc viure tranquilament. Tinc un video gravat amb el Fraps, pero al pujarlo me diu que no sap convertir-lo. ¿Algú me sap dir un format amb el que pujar les coses a YouTube i llocs similars?

Ara el sistema el que fa es el següent:
Quan un objecte es mou cap a un costat primer comprova si colisiona amb algú. Si no hi ha colisió es mou, i a més comprova si te algún objecte damunt d'ell. En cas afirmatiu els espenta en el mateix sentit en que s'ha menejat (no espera a vore si es mouen o no).

Si sí que hi ha colisió, no es mourà, i li pegarà una espenta al objecte o objectes contra els que ha colisionat, en el mateix sentit en que pretenia moures. Un objecte, al rebre una espenta, comprovarà si ha de respondre a una espenta per eixe costat. Si no ha de respondre, no farà res. Pero si sí que ha de respondre, li tornarà la "espenta de retorn" que tinga definida.

Normalment un objecte no te espenta de retorn, pero hi ha algúns que sí que la tenen. Per exemple, els malos tenen una espenta de retorn que el que fa es matar al espentador (en el cas que siga Patman); altres, al rebre una espenta per dalt, tornen una espenta cap a un costat, convertint-se en cintes transportadores; i els marcs de les portes tornen una espenta cap a la porta (al igual que pasava en el Batman), fent que siga més facil entrar en les portes. A més, si el objecte es movible intentarà moures en el sentit indicat, fent el mateix que abans.

A part, si el objecte te definit el flag de gravetat, tendirà a caure (espenta cap a baix) fins trobar altre objecte per baix, o el piso.

Quan s'espenta a un objecte, en realitat el que es fà es fixar un flag en el byte de espenta. Al haver 6 direccions, s'usen els bits 0-5. A més, el bit 6 es el flag de matar (el 7 no s'usa per ara).

Per a determinar per quins costats es sensible el objecte a que li espenten (per quins costat el objecte farà algo si l'espenten) cada objecte te un byte de màscara contra el que es compararà el byte de espenta amb un AND. Si se li ha espentat per un costat sensible, tornarà el byte de retorn, que es un byte amb la mateix estructura que el de espenta i determina per quins costats se li espenta al objecte que havía iniciat l'espenta (mmm, igual ha quedat molt lios).

Si un objecte es mou o no al ser espentat es defineix amb altre flag. Altres flags disponibles son: gravetat, desapareix, invisible, animat, orientable i actiu. Crec que son prou descriptius per si mateix, i crec que ja he parlat abans de quasi tots ells.

A part, cada objecte pot ser d'un tipus especific, o tindre una movilitat inherent, dels quals ja he parlat abans.

Demà intentarè implementar les portes, i a vore si puc releasar algo.

1 comentari:

  1. jaa jaa he trobat un wifi obert al curro!
    A la nit et passe uns good-old settongs pa muntar el video a youtube en hd. Perp si vols anar fussant. Baixa el mediacoder. En audio faac, lc a 128 (te audio?) i video mp4 x264 a 1000kbs (sobra) high profile 4.1 mismo (aixi val pa la 360) i resizat a 640x480

    ResponElimina