Space Bricks, otro juego en PowerBuilder

Después de experimentar con el juego de la serpiente, he querido llevar la idea un paso más allá: implementar física en tiempo real en PowerBuilder. El resultado es Space Bricks, un pequeño tributo a Arkanoid con un enfoque interesante: incluye dos motores de renderizado completamente distintos que se pueden elegir desde la ventana principal.

Dos formas de ejecutar el mismo juego

  • Modo nativo (PowerBuilder)
    Todo el juego se renderiza en un único DataWindow con un solo detail band de 1870 PBU. Los elementos (ladrillos, pala y bola) se crean dinámicamente con Modify() y se mueven en coordenadas PBU.
    La detección de colisiones utiliza AABB (Axis-Aligned Bounding Box), una técnica habitual en motores de videojuegos.
  • Modo HTML5
    El mismo juego está implementado en JavaScript y se carga en un control WebBrowser mediante NavigateToString().
    Renderizado con Canvas 2D a 60 FPS y física basada en delta time, ofreciendo una experiencia mucho más fluida.

Un launcher (w_main) permite elegir el modo mediante una interfaz HTML, usando RegisterEvent para comunicar JavaScript con PowerBuilder de forma directa y limpia.

Aspectos técnicos destacados

  • DataWindow como canvas
    En lugar de usar múltiples filas, toda la rejilla (21×34) se almacena en una única columna char(800) dentro de una sola fila. Esto permite tratar el DataWindow como un espacio de coordenadas continuo y mover la bola libremente sin cambiar filas ni visibilidades.
  • Colisiones con AABB y rebote por mínima penetración
    Al detectar impacto, se calcula la penetración en los cuatro lados del objeto. El menor solapamiento determina el eje de rebote. Este mismo algoritmo se usa tanto en la versión PB como en la HTML.
  • Comunicación JS ↔ PB
    El menú HTML invoca métodos PowerBuilder (window.webBrowser.ue_nativo()) mediante RegisterEvent, demostrando una integración sencilla sin soluciones complejas.
  • Comparativa realista
    La versión nativa alcanza ~25 FPS con algunos artefactos de repintado del DataWindow. La versión HTML funciona a 60 FPS con renderizado suave. Ambas son jugables, pero juntas muestran claramente las fortalezas de cada tecnología.

El proyecto

Todo está contenido en una única PBL con 4 objetos (aplicación,  lanzador, juego nativo + DataWindow y versión HTML). No requiere base de datos ni archivos externos: abrir, compilar y jugar.

Descarga

Teneis el ejemplo publicado en modo solución de PowerBuilder 2025 en:

github.com/rasanfe/Pb_SpaceBricks

¡Nos vemos en el próximo artículo! Y recuerda: en PowerBuilder, los límites solo están en nuestra imaginación. 🚀

Comentarios

  1. Tiene errores la solución, y no compila

    ResponderEliminar
    Respuestas
    1. Acaabo de descargarlo en otro ordenador y compila perfectamente, sin errores. Es una solución PowerBuilder 2025 build 3726. Dime que errores encuentras y en que versión estás. Saludos

      Eliminar

Publicar un comentario