Una de las limitaciones que posee Pygame, una librería para desarrollar juegos con Python, a la hora de dibujar sprites en pantalla es que sólo es posible hacerlo en coordenadas enteras. Esto, para algunos sprites pequeños, ej. partículas, es un salto demasiado grande y se ve feo en la pantalla. Will McGugan, de Where there is a Will, escribió un pequeño paquete que toma una superficie (un Surface) de Python y lo transforma en una superficie capaz de dibujar objetos con coordenadas fraccionales, justo como lo harías con OpenGL u otra librería 3D. Al hacer este procedimiento con el código de Will, el objeto mismo hace el cálculo de los subpíxeles, y combinado con la animación que le des al objeto el resultado es un movimiento muy suave, como lo demuestra un GIF de ejemplo a continuación:





Las pelotas de encima están dibujadas mediante sub-pixeles, y las pelotas de abajo con coordenadas enteras. La diferencia en la suavidad de movimiento es notable. Requiere el módulo Numpy para poder funcionar. También tiene la desventaja que el precálculo hecho a cada superficie requiere una buena cantidad de memoria, específicamente 9 veces más que una superficie normal para el nivel por defecto de precisión, por lo que es manejable para superficies relativamente pequeñas.
Si te gustó este artículo, suscríbete a la fuente RSS de este blog. Si así lo prefieres, puedes suscribirte por correo electrónico y recibir los artículos directamente en tu inbox (cero spam).

¡Sigue este blog en Twitter! Porque por aquí también estamos.




