¿En Doom vanilla los enemigos/items deben tener el mismo número de sprites?

Iniciado por REBEL, Agosto 04, 2020, 06:09:33 PM

Tema anterior - Siguiente tema

REBEL

Lo que intento crear es un "enemigo" que remplaze al KEEN pero que no esté estático, osea que tenga movimiento como si respirara.
El sprite lo pillé de TekWar y no tiene muchos frames, cosa que el commander Keen sí. Mi pregunta en resumen es si el sprite nuevo debe tener los mismos
frames que el Keen (que no quede una "x" en el cuadro de Whacked como enseño aquí:

Aquí los frames del sprite de tekwar:


BOT69

Crear un monstruo nuevo en Vainilla-Doom con una cantidad de sprites superior al base suele requerir el sacrificar algo.
Le puedes añadir diferentes angulos a un objeto sin problemas, ya que el renderizado se encarga de leer el sprite XXXXA y no XXXXA0.
Pero nuevas secuencias, tendrás que sustituir algo en el registro de sprites, no necesariamente el sprite.

EDIT
Debería haber un registro de nombres de sprites, me refiero a los 4 primeros caracteres, sin la letra ni el número.
Ahí deberías sustituir el KEEN por HMLS, de otra forma, el juego no sabe lo que le estás metiendo.

REBEL

Es lo que hice, le cambié el nombre "KEEN" por "HMLS" y es más el nuevo tiene menos frames que el original, no más como dijiste tú.

BOT69

No sé, en dehacked 3.1 hay un registro de sprites y otro que es el de secuencias, no sé como funcionará en whacked.
Sobre la secuencia, simplemente debes poner las propiedades correspondientes en las letras adecuadas, si tu monstruo
tiene menos sprites, deberías colocar las propiedades en sprites anteriores.

REBEL

Sobre lo último, te refieres a que los ponga en otros sprites que no vaya a usar?

BOT69

Cita de: REBEL en Agosto 04, 2020, 11:45:26 PM
Sobre lo último, te refieres a que los ponga en otros sprites que no vaya a usar?
Si el monstruo original tiene por ejemplo sprites desde la A hasta la Q y tu monstruo tiene desde la A hasta la K, habría que colocar las propiedades que te
interesan de las letras L,M,N,O,P,Q en tu secuencia de sprites, que abarca hasta la K y quitar los enlaces a los sprites sobrantes, de esta forma el juego no los utiliza
y no debería dar error.

REBEL

Bien... justo al acabar de leer este mensaje de error leo el tuyo.
Yo lo que hice fue intercambiar los sprites que sobraban (los que te aparecen con la "x") con el icono del pecado cambiando el número en "next state"
Pero creo que no era eso a lo que te referias.

BOT69

Supongamos esto, el monstruo original tiene esta secuencia:
ORIGA
ORIGB Scream
ORIGC
ORIGD
ORIGE
ORIGF
ORIGG
ORIGH
ORIGI KeenDie
ORIGJ

Tu monstruo debería estár así:
MODFA
MODFB Scream
MODFC
MODFD
MODFE
MODFF KeenDie
MODFG

La animación debería terminar en la G, ya que fisicamente no existen los posteriores a la G.
El sprite de dolor digamos que no está dentro de la secuencia normal, por lo que no debería darte problemas, ya que pasa de la A a la M y luego vuelve a la A.

REBEL

Wtf, el mio tiene de la letra A-G y luego una letra suelta que es la "M" que corresponde a la animación de "dolor" en el keen

BOT69

Le he añadido una letra más al ejemplo.
Lo que no puedes es añadir sprites que no existen físicamente en una secuencia.

Yo no puedo ayudarte más porque nunca he creado un monstruo con Dehacked, pero si he modificado cosas en los sprites.
Espero que aparezca alguien con más experiencia, concretamente con Whacked.

REBEL

GENTE
Aquí dejo el rar con el archivo DEH y WAD para que el que esté experimentado en este interesante pero dolor de culo de programa de usar que mire a ver en que fallo y me explique que hago mal
http://www.mediafire.com/file/d53d882yhsmnh04/home.rar/file

BOT69

Después de multiples pruebas, esto es lo que he podido encontrar:

1. La entrada SS_START/SS_END lo he tenido que cambiar por S_START/S_END.
2. No paraba de darme el mismo error que a ti, por lo que he renombrado HMLS por KEEN.
3. El mapa está mal compilado y da error en la tabla Things.

Aquí el código final:
CitarPatch File for DeHackEd v3.0
# Created with WhackEd4 1.2.0 BETA
# Note: Use the pound sign ('#') to start comment lines.

Doom version = 19
Patch format = 6

Frame 768
Next frame = 774

Frame 774
Sprite subnumber = 5

Frame 775
Sprite subnumber = 6

Chocolate-Doom es muy quisquilloso con las limitaciones, puede que hasta más que vainilla.
Recuerda que hay que usar el comando -merge y no -file cuando quieres meter sprites/flats nuevos.

REBEL

Vale, no le cambié el nombre al prefijo y lo dejé como KEEN. Ok, ahora. Los frames H-L (el mío va de A-G + M que es la de dolor)
los frames sobrantes, osea H-L los borro o qué hago con ellos?

REBEL

Bueno, hice lo que me dijiste, dejar el nombre KEEN. Ahora el problema es que al morir después aparecen las animaciones restantes de muerte del sprite Commander Keen. Lo que hice fue poner sus animaciones que todas fueran a la muerte del nuevo sprite (KEENG) que es donde termina los frames de muerte del nuevo sprite remplazado. Y aun así ocurre lo mismo.
https://www.youtube.com/watch?v=aOxHbAW02n0

BOT69

Cita de: REBEL en Agosto 05, 2020, 01:16:14 PM
Bueno, hice lo que me dijiste, dejar el nombre KEEN. Ahora el problema es que al morir después aparecen las animaciones restantes de muerte del sprite Commander Keen. Lo que hice fue poner sus animaciones que todas fueran a la muerte del nuevo sprite (KEENG) que es donde termina los frames de muerte del nuevo sprite remplazado. Y aun así ocurre lo mismo.
https://www.youtube.com/watch?v=aOxHbAW02n0
Este es el código del Dehacked:

CitarPatch File for DeHackEd v3.0
# Created with WhackEd4 1.2.0 BETA
# Note: Use the pound sign ('#') to start comment lines.

Doom version = 19
Patch format = 6

Frame 768
Next frame = 774

Frame 774
Sprite subnumber = 5

Frame 775
Sprite subnumber = 6

Sólo tienes que abrir el archivo con un editor de texto normal y pegarlo, pero te lo explico.
El frame 768, que corresponde a KEENE salta al frame 774 (en el apartado "Next"), que corresponde en un principio a KEENK.
El SubFrame (el apartado "Frm") de los sprites K (10) y L (11) son cambiados por los SubFrames F (5) y G (6).
Básicamente haces un puente, omitiendo los frames FGHIJ, saltando directamente al frame K, el cual lo sustituyes por la F y terminando en el frame L, el cual lo sustituyes por la G.

Por otro lado, para que una animación termine, debes poner 0 en la ranura "Next" y -1 en la ranura "Dur".