Arquitectura ECS: Sistemas físico e input en ensamblador Z80 [ 4.7 ]
Channel: Profesor Retroman
Date: 03/02/2022

[ Curso GameDevZ80-21 ]: https://bit.ly/Z80GameDev-2021-Curso 
[ Desafío ]: https://bit.ly/DCombatSchool-21
[ Más ]: https://profesorretroman.com

==== Sesión 4.6. || 4/oct/2021 ====
Creamos un sistema físico básico y movemos nuestras entidades. Vemos cómo usar los registros HL e IX y qué ventajas tienen. Aprendemos cómo diferenciar entidades que reaccionan a la física. Asignamos componentes en las máscaras de bits y vemos cómo funcionan. 

Después, para controlar nuestro Player por teclado, aprendemos cómo leer el teclado y comprobar si una tecla está pulsada. Reaccionamos a la pulsación de una tecla moviendo nuestro Player. 

Analizamos cómo podemos detectar cuándo hemos impactado en una diana: utilizando un sistema de detección de colisiones. Comprobaríamos parejas de entidades para ver si sus Bounding Boxes se solapan, detectando estas colisiones. 

Finalmente analizamos una solución posible en nuestro motor Entidad Componente Sistema para crear grupos de entidades (grupos de dianas). Proponemos diseñar una entidad invisible que represente al grupo de dianas y se ocupe de crear las dianas y comprobar si todas siguen vivas. Esta entidad se destruiría si no quedan dianas vivas o si se pasa un tiempo.

==== Contenidos ====
00:00 Movemos entidades: el sistema físico
02:09 Ventajas de los registros HL e IX
03:47 Entidades que reaccionan a la física: asignando componentes
07:52 Controlamos por teclado. 'cpct_scanKeyboard_asm'
09:22 ¿Está pulsada esta tecla?'cpct_isKeyPressed_asm'
12:30 ¿Cuándo hemos impactado? Introducción al sistema de colisiones
13:50 Detalle técnico: ¿Cómo agrupamos entidades?

Agradecimientos especiales a Iván Fernández (@spdizzy) por postprocesar y editar los vídeos de este año.

========
Clase de Razonamiento Automático, 2021/22
Grado en Ingeniería en Informática
Universidad de Alicante

#GameDev #ASM #Z80 #DesarrolloDeVideojuegos #Videojuegos #Ensamblador #Amstrad #CPC #ECS #Entity-Component-System