-
Notifications
You must be signed in to change notification settings - Fork 7
Wollok Game
[TODO]
A diferencia de la versión eclipse de wollok, la cual ejecuta un juego en una ventana independiente, en wollok-ts la interfaz de juegos es un navegador web:
-
El "motor" del juego reside en el backend
-
El rol del frontend es recibir las actualizaciones del frontend y dibujarlas en pantalla
Es la interfaz html de wollok game
En este momento se carga la pagina, los scripts y se realiza la conexion con el backend
este metodo prepara todos los eventos que va a recibir del backend y luego emite un "ready" al backend
Recibe la imagen de fondo y la dibuja
Recibe todas las imagenes que se utilizaran en el juego
Es el "backend" del juego
Es el punto de entrada de las conexiones a wollok game desde el frontend
Envia las imagenes y datos iniciales del tablero al frontend
Es un bucle setInterval
que ejecuta cada 100ms, enviando el comando flushEvent
al intérprete wollok
Notas:
- al ejecutarse cada 100ms implica que el juego puede correr a un máximo de 10fps
- este tiempo podría bajarse hasta 17ms (60fps), siempre y cuando la ejecución del
flushEvent
demore menos del tiempo establecido (17ms), de lo contrario el juego en general se ve afectado
Este closure se ejecuta mediante un evento onTick especial llamado renderizar
.
Este blóque de código typescript se encarga de obtener y enviar al frontend los visuales y los sonidos del juego
Obtiene y procesa los visuales del juego antes de enviarlos al frontend
Nota: este método está definido dentro de wollok, si se transforma en "nativo" podría lograrse una mejora en la performance del juego
Método wollok que se encarga de procesar las siguientes colas de eventos:
eventQueue
es la lista de eventos encolados con queueEvent
, por ejemplo, eventos de teclado
todos los eventos de tiempo programados para el tiempo time
recorre y obtiene todos los visuales presentes en el juego. Algunos de los métodos llamados por este código es "nativo" (typescrypt) y otros son métodos de wollok
A medida que la cantidad de elementos visuales, colliders y eventos onTick aumentan, el juego puede volverse lento.
Con algunas mejoras realizadas en el bucle flushEvents y en get("visuals")
se logró mejorar la performance del juego y llevarlo de unos 3fps a 10fps para un juego con varias decenas de elementos visuales.