Prueba Scroll Triple Parallax

Página 3/3
1 | 2 |

Por Paulbrk

Hero (611)

Imagen del Paulbrk

07-08-2011, 09:27

Warchild, hay un problema con lo que dices, porque el usa dos colores y no se pueden mover al pixel, porque habria momentos en que habria 3 colores o mas en la misma linea, sabes que screen2 no admite eso...

Un juego que tiene sprites por software que se mueven suave y tienen un color por altura es Livinstone Supongo en MSX1, mira la granada por ejemplo.

Por assembler

Champion (404)

Imagen del assembler

07-08-2011, 10:45

Ya hice una prueba con la nave del space mambow con esa idea, y como dice Paulbrk, eso limita a un color por línea (para mezclarlo con el color de fondo que le pille debajo).

Como bien dices, eso incrementa el número de caracteres necesarios para conseguir el efecto. Para la nave del Space Mambow, que era de 16x16, hacían falta 9 caracteres, y si se usa doble buffer (que hay que usarlo), 18.

De todas formas, lo probaré a ver que tal queda, pero antes tengo que optimizar la rutina de scroll.

La idea del scroll es muy sencilla. Otra cosa es que sea óptima:

La pantalla está guardada como Y líneas de X caracteres (para 10 pantallas completas horizontales, tendríamos 320 caracteres*24 líneas
Cada vez que queremos mover la pantalla, incrementamos o decrementamos el índice. (En caso de scroll vertical o incluso diagonal, se suma o resta 320 en este caso),
Le sumamos la posición donde se encuentra la pantalla y empezamos a dibujar en un buffer de memoria
Pasamos 32 bytes contando desde donde estamos incrementando el índice de origen y el de destino
Al terminar la línea, incrementamos el índice origen 320-32=288 caracteres, y el índice de destino ni lo tocamos, ya que el buffer va todo seguido.
Eso lo repetimos para cada línea, y al terminar, preferentemente en la interrupción, volcamos el buffer en VRAM

Para no ir tan apurado, se puede usar el hueco que hay en los 7K de VRAM y volcar el buffer alternativamente en 6144 y 7168, y en cada interrupción, activar una "página" u otra.

Para el parallax, "solo" hay que comparar cada byte. Si es transparente, coger el del plano siguiente.

Si alguien sabe un método más optimo, que me lo cuente, por favor.

Aquí teneis otro video de la criatura: www.youtube.com/watch?v=51eBGRhhnak

Por Paulbrk

Hero (611)

Imagen del Paulbrk

07-08-2011, 12:36

Assembler, he pensado, para otro juego, ¿Es posible usar las primeras dos franjas de 256 caracteres para la zona en la que se mueven los personajes(habria fondo pero mas sencillo, a velocidad 1) y la ultima franja para el suelo(los personajes nunca pasan a esta zona ya que chocan contra el suelo, este iria a velocidad 2) y marcador?

Quizas si ves que te queda grande, puedes poner las nubes mas arriba, fuera de las montañas, en una zona predefinida, asi te ahorras un plano de scroll, no se si asi aliviarias el pintado.

Mientras mas cosas predefinidas tengas, mas veloz podra ir el juego.

Por Paulbrk

Hero (611)

Imagen del Paulbrk

07-08-2011, 12:37

Me encanta lo que veo en el segundo video, esta muy chulo Smile

Por assembler

Champion (404)

Imagen del assembler

08-08-2011, 11:26

Si trabajas en SC2 puedes hacer lo que quieras: trabajar con los tres bloques definidos con los mismos caracteres, los tres diferentes, dos bloques con un set y el otro (no necesariamente el de abajo) con uno distinto.

En cuanto a moverlo, tampoco debe haber problema, basta con hacer un scroll para los dos primeros bloques y otro para el de abajo

Ahora que he intentado ampliar al mapa me ha dado cuenta que me faltan caracteres: o simplifico el fondo, o separo las definiciones de caracteres de los bloques 1 y 2
oOoO

Por Paulbrk

Hero (611)

Imagen del Paulbrk

08-08-2011, 20:09

Te recomiendo que simplifiques un poco el fondo, seguro que sacas bastantes tiles Smile

Por viejo_archivero

Paragon (1395)

Imagen del viejo_archivero

15-08-2011, 15:13

Muy bien, assembler! Sigue así!

Yo en Invasion of the Zombie Monsters también busque un triple parallax, échale un ojillo. Lo único es que, en lugar de ir todas las capas a 8 por 8 pixeles pero en distintos tiempos, en IOTZM el frente va a 8px, la capa de fondo a 4px y las estrellas de fondo a 2px, así en cada paso de scroll se desplazan todas las capas para evitar más la brusquedad. Con toda la lógica del juego (personaje que se voltea horizontalmente por soft y se redefine en cada frame, enemigos, proyectiles, marcadores y demás) el resultado final es de 15fps en 60Hz (suficiente para ser muy jugable). Lo cierto es que hay frames que tardan mucho menos que otros, pero le puse un contador para que, si dibujaba antes el frame, esperara igualmente.

En fin, que buena pinta, y quetu aproximación es perfectamente factible. Ánimo con el proyecto!

Página 3/3
1 | 2 |