Source: https://www.slideshare.net/l2radamanthys/intro-pygame-capitulo-1
Timestamp: 2017-06-23 04:50:18+00:00

Document:
División de un segmento por otro
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Programación de Juegos con PyGameCapitulo 1: Nociones Básicas1 2.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comIntroducion La mayoría de las personas que han pasado por áreas relacionados con laprogramación, se han preguntado alguna vez: ¿Cómo se hace un video juego?, ¿Qué tienenque saber? ¿Por donde empezar? y muchas preguntas más. Muchos han intentado hacerlosin resultado alguno, otros en cambio han podido crear sus primeros juegos con un poco deesfuerzo, pero aun así siempre quedan preguntas pendientes por responder y bastante poraprender. En este tutorial pretendemos ayudarlos a resolver varias de sus dudas sobre eldesarrollo de juegos. Para comenzar en el desarrollo de video juegos es preferible hacerlocon proyectos pequeños, con el fin de ser capaces de cumplir las metas que nos fijamos,nunca pensar en proyectos extremadamente grandes que se nos escapen de las manos, yaque lo mas probable es que nunca los terminemos, lo cual nos llevará a la frustración. Escomún que las personas que comienzan en el área de desarrollo de juegos comiencenprogramando algunos remakes como tetriz, space invader, etc. Aunque muchos querrían empesar armando algunos juegos 3D tipo Need For Speed,Doon, PES, Diablo, LineageII, etc. A quien se le allá ocurrido esa idea les aviso de antemanoque intentar hacer algo así es una tarea Titanica y solo los llevaría a la frustración Es masestos juegos son realizados por grandes equipos de programadores, sonidistas, grafistas,etc. Aquí les doy algunos números: Se invierte el doble de dinero en desarrollo de juegos con realización al Cine, eldesarrollo de un juego en 3D es un negocio serio, Puede tomar de 2 a 3 años completar unjuego como los anteriormente mencionados lo que supone un costo de 8 a 10 millones deUS$ lo que supone que se devén vender + de 200.000 solo para pagar los costos y un datoimportante pocos juegos logran vender mas de 100.000 aun así a no desesperar. Hay varias Razones por la cual este curso esta basado en el desarrollo de juegos en2D y no así en 3D aunque la moda en estos días sea la de desarrollarlos en 3D en seguidapasare a listar las razones por las cuales este curso esta dedicado al desarrollo de juegos en2D.Diferencias entre 3D y 2D Muchos se preguntaran por que este tema, bueno la razón es sencilla, este curso soloabarcara la parte de programación de juegos en 2D, esto no es por cuestiones de queprefiera los juegos en 2D, lo que pasa es que es mas sencillo aprender primero a manejarseen un entorno 2D y luego recién pasar a una Api 3D, la mayoría de los conceptos sonsimilares en cuanto a cuestiones de coliciones, IA, etc. bien comencemos: En primer lugar las API 3D se basan en polígonos, Estos polígonos están formados porvértices con coordenadas en 3D. Lo que hacemos (o lo que hace la API), es “proyectar” estospolígonos sobre un plano (la pantalla, o más concretamente, un trozo de la pantalla al que sellama “viewport”). Cuando esos polígonos los dibujamos en pantalla, además tenemos la opción derellenarlos con una imagen, a la que llamamos “textura”. Este proceso se llama“rasterización”. Entonces, para hacer una aplicación 2D en una librería 3D, bastaría con usaruna proyección ortogonal.2 3.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Eso es completamente correcto para las librerías 3D, que se basan en el proceso de“proyección + rasterización”. Sin embargo, al usar una librería 2D como SDL, esos conceptossencillamente no existen.Nota: digo SDL ya que pygame es una implementacion elegante al estilo Python de laslibrerías de SDL ya que existen otras implementaciones de SDL en Python pero terminanobligando a los programadores a escribir código al estilo C/C++ y por ende la programaciónde juegos termina siendo algo engorrosa. Para entender cómo es la filosofía de la programación clásica 2D, hay que pensarcómo eran los ordenadores de hace 15 años. En esa época las tarjetas aceleradoras noexistían (o costaban una pasta (demasiado diría para esos pequeños procesadores)), y todoeste proceso de “proyección + rasterización” tenía que hacerse mediante software. Y enaquella época, los procesadores no eran especialmente rápidos, especialmente enoperaciones en punto flotante. Así que es lógico que al programar una aplicación en 2D, se hiciese mediante unsistema en el que las proyecciones y rasterizaciones no existan, y todos los cálculos seanúnicamente operaciones enteras, que los procesadores pueden realizar mucho más rápido.Herramientas Necesarias Para poder crear un juego en 2D ademas de tener la idea de cómo funcionara elmismo se necesitan algunas herramientas para su desarrollo:Lenguaje de Programación Se puede programar juegos en casi cualquier lenguaje, aunque El lenguaje porexcelencia en la programación de juegos siempre ha sido C/C++ pero C/C++ plantea unagran dificultad de ser aprendido por los programadores, ademas de que la mayoría de lascosas las tendríamos que hacer a mano de ahí viene a nuestra Ayuda Python quien ademasde ser fácil de aprender nos solucionara una gran cantidad de problemas que con C/C++hubiéramos querido tirar todo por la ventana. Por ejemplo aprender lo necesario de Pythonpara programar si no sabemos nada acerca de programación nos tomaría a lo sumo 2semana, en cambio aprender C/C++ de primera fácilmente nos tomaría como mmínimo 3meses....Editor de Texto Sera donde escribiremos nuestro código fuente por ejemplo en windows tenemos pordefecto nuestro aburrido Notepad, aunque podemos bajarnos algunos mas avansados comoel Notepad++, Scite, en Linux tenemos varios VIN, Nano, gedit, yo recomendaría Geany oEric.3 4.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com (Vista del Editor Notepad++) (Vista del Editor Geany)API Gráfica4 5.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Esta es un conjunto de Bibliotecas (librerías) que nos permiten manipular imágenes,las mas conocidas Son: • OpenGL (Multiplataforma) • SDL (Multiplataforma) • Allegro (Multiplataforma) • DirectX, Direct3D (windows) DirectX es un API desarrollada por MS el uso de esta api es un poco engorroso,ademas de la falta de documentación sobre la misma, otro inconveniente es que todo lo queprogramemos solo podrá correr en MS windows OpenGL es una API desarrollada especialmente para el desarrollo de aplicaciones 3Daunque se la podría usar para desarrollo de juegos 2D pero a mi opinión eso seria usar uncañón para matar una mosca (por si les interesen usen COCOS que hace eso),Multiplataforma por lo que nuestro código podrá ser importado a cualquier SO como Linux,Mac OS, windows SDL (Simple Direct-Medial Layer) Es una Api para realizar operaciones de dibujo 2D,en este Curso usaremos una adaptacion de SDL a Python PyGame. Al igual que OpenGL SDLes MultiplataformaConceptos Básicos de Programación 2D Una librería gráfica 2D se basa en el concepto de SUPERFICIES, y de operacionesentre superficies. Una superficie no es más que un espacio en memoria donde guardar unaimagen, y las operaciones que se realizan entre superficies, son copias de trozos de unasuperficie origen sobre una superficie destino. Un ejemplo que los usuarios de windowsConocerán es: el Paint. Al cargar el paint, el lienzo representaría una superficie. Puede tener una imagencargada desde un archivo, puede estar en blanco, etc... Ahora imaginad que ejecutamos 2paints. Cada uno con su lienzo. Eso representa 2 superficies en memoria. Podemos tener unasuperficie vacía (blanca), y otra con una imagen cargada del archivo. La operación básica entre superficies, sería hacer un “Copy-Paste”. Seleccionar unaregión en la superficie A, y copiarla sobre algún lugar en la superficie B. Esta operación es ala que se llama “Blit”, y es la más importante en cualquier librería 2D.5 6.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Al igual que en Paint (los usuarios de MS Windows lo devén conocer muy bien), alhacer un Blit, lo que había en la superficie destino en la región que sobrescribimos se pierdepara siempre. Al copiar sobre esa posición machacamos los datos anteriores. Esto esimportante si tenemos, por ejemplo, un personaje moviéndose sobre un escenario. Al dibujar el personaje destruimos esa región del escenario, así que si el personaje semueve, tendremos que volver a dibujar de nuevo el escenario por cada fotograma. Tambiénde esto sacamos que el orden en que hagamos los blits importa, y mucho. Si algo tiene quequedar por encima, tiene que ser lo último que bliteemos. No interesa si manchamos la superficie destino ya que tenemos intacto el original.Pero bien solo hemos estado bliteando imágenes sobre otras ahora como mostramos estosobre pantalla.Flipping Vale, ahora tenemos una imagen que hemos compuesto sobre el Buffer Primario(nuestra famosa superficie destino en la imagen). Ya tenemos todo listo para que se muestreen el monitor. ¿Como hacemos para “actualizar” el monitor?Tenemos 3 formas de hacerlo paso a explicarlas:Dibujar Directamente Sobre Pantalla La primera forma es ir dibujando todos los elementos sobre pantalla pero con ellotenemos un problema el cual es que al ejecutar nuestro juegos veremos un molestoparpadeo esto sucede ya que mientras intentamos dibujar sobre pantalla esta se re-dibujaproduciendo retraso en el refresco vertical mejor conocido como VSINC.Doble Buffer El segundo método es copiar todas la imágenes sobre una superficie y recién dibujarsobre la tarjeta gráfica así evitando ese molesto parpadeo, este metodo se denomina Doble6 7.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comBuffer y produce un efecto suavizando la imagen. Por suerte SDL (Nosotros usaremosPyGame que es una librería que trabaja con SDL) nos resuelve este problema.Dirty Rectangles (Rectángulos Sucios) Esta técnica es una forma de optimizar la técnica de Double Buffering constantementeestamos volcando el contenido completo de una zona de memoria a otra, pero puede haberocasiones donde no este sucediendo ningún cambio en pantalla, o tal vez solo hayacambiado una pequeña parte de esta. Es aquí donde aparece la técnica, Dirty Rectangles(rectángulos sucios) y su funcionamiento es bastante simple. Copiaremos a la Video RAMsolo las áreas de la pantalla que han cambiado, por lo tanto, cada vez que algún spritecambie su posición, copiaremos a la memoria de video el área de un rectángulo que rodee alsprite (incluyendo el área donde se encontraba antes) y la colocaremos justo en las mismascoordenadas en la Video RAM. Pero no siempre es recomendable utilizar esta técnica, ya quepodemos tener demasiados sprites moviéndose por la pantalla, y ya no sería óptimo estarcopiando cada rectángulo a la Video RAM, ya que sería lo mismo que copiar la pantallacompleta, en un caso así conviene solo usar la técnica Double Buffering.Estructura básica que deveria tener un JuegoInicializacionCiclo de juego: Entradas (teclado, mouse, joistick) Procesamiento de eventos Salidas (gráficos, sonidos)Finalizacion7 8.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comPixel El elemento mas básico en la programación gráfica es el pixel, es decir un elementode una imagen que representa la unidad mínima que esta puede contener, básicamente lopodríamos definir como un simple punto que forma parte de una imagen definida que tieneasociado un color. La imagen que aquí vemos esta formada por un arreglo de pixel en forma de matriz,grilla o cuadricula la cual se conoce como mapa de bits.8 9.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comBITMAP (Mapa de Bits) Un Bitmap básicamente es una cuadricula de pixeles que tiene atributos como anchoy alto (la cual se mide en numero de pixeles) y tiene asociado algún formato ya sea bmp,png, jpg, gif, etc. La diferencia entre los formatos se da por algunos parámetros tales comocalidad y tamaño de archivo, por ejemplo si queremos mantener tamaño/calidad, los formatoque se ajustan son png y jpg, pero acarrean un problema, ya que usan algoritmos deconprecion trabajar directamente con ellos consume mucho recursos por lo que se debehacer una conversión a un formato mas simple da el caso del bmp, tif, etc.BPP (Bits por Pixel) Otra características de las imágenes es la profundidad de colores. (números de bitsque se usan para representar un color en particular), el numero de bits que podemos utilizares de 1, 8, 16, 24, 32 siendo 32 bits la mas alta resolución posible.El numero de combinaciones posibles se calcula de la siguiente forma:CANTIDAD DE COLORES = 2BPP Cuando utilizamos 8 bits para mostrar un pixel tenemos 256 colores posibles pero nose representa usando las intensidades RGB (ver mas abajo) sino mediante una paleta decolores (un arreglo que contiene 256 colores ), aunque ya no se use esto casi uno de losusos mas comunes era el de aplicar distintas paletas a una sola imagen obteníamos distintasimágenes ejemplo: si poníamos rojo para el jugador 1 y azul para el jugador 2 tenias dossprites diferentes sin tener que almacenar 2 veses la misma imagen.9 10.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Actualmente los formatos que mas se usan son el de 16 y 32 bits , El color serepresenta normalmente en el formato RGB = (Red, Green, Blue) aunque algunos formatosimágenes tienen un parámetro extra el caso de los png RGBA = (Red, Green, Blue, Alpha)(véase Color-Key), todas las componentes que forman un color se empaquetan en un entero,el orden depende de la arquitectura que estemos usando RGB (Big Endian) o BGR (LittleEndian).Resolución de Pantalla Anteriormente mencionamos que las imágenes tienen un ancho y un alto dado enpixel a esto se llama resolución, la resolución no se aplica a la imagen solamente sinotambién a la pantalla, las resoluciones mas estándares son:• 320x200• 320x240• 640x480• 800*600• 1024*768• 1152x864• etc. La resolución de pantalla en un juego es de gran importancia y depende del tamañode sprites que estemos usando, el escenario, y ademas una cosa importante a mayorresolución y ,mayor cantidad de bits por pixel nuestra maquina necesitara mas recursos paratrabajar ademas tendremos que ver que la resolución sea soportada por nuestro monitor,etc.Algunos modos conocidos:Ancho x Alto x BPP320x200x8 (nuestro tan querido modo 13h (si alguno jugo con un family game (consola de 8 bits, osi son mas retro un Atari :P) alguna ves debe conocerlo))320x240x8 (modo x)640x480x16 (la configuración de la SNES y GENESIS (otro lindo recuerdo)800x600x32 (800 pixeles de ancho x 600 pixeles de alto a 32 bits por pixel)etc. Por ejemplo supongamos que estamos trabajando con el siguiente modo de video,800x600x32 y queremos conocer cuando memoria ocupa una imagen con las mismasdimensiones que la resolución seleccionada, entonces el tamaño que ocupará será de:Tamaño = 800 x 600 x 4(1 byte = 8 bits) = 1.920.000 bytes = 1.83 Mb En los primeros juegos que aparecieron para PC, se utilizaban resoluciones muy bajascomo 320x200 (también conocido como modo 13h) o 320x240 (modo x) y a 8 bits por pixel,o sea como ya sabemos disponíamos de un máximo de 256 colores. A medida que pasaron los años se empezaron a utilizar resoluciones de 640x480 o800x600 y a profundidades de color más altas, de 16 o 32 bits, todo esto gracias a queaumentaron las capacidades de las tarjetas de video.10 11.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Hoy en día, en la mayoría de los juegos tenemos la posibilidad de elegir el modo devideo que mejor se adapte a nuestro equipo. Existen algunos casos típicos, como cuandoqueremos tener el mejor rendimiento en nuestro video juego, bajamos la resolución almínimo o a una resolución intermedia. Al contrario, cuando disponemos de un buen equipo yuna buena tarjeta de video, lo más probable es que seleccionemos un modo de video másalto, para disfrutar de unos gráficos de mejor calidad.Sprite Un sprite (no me gusta usar su posible traducion Duende) es cualquier objecto queaparece en nuestro juego aunque normalmente nos referimos a las imágenes de lospersonajes, los sprites pueden ser estaticos (los tiles del mapa) o dinámicos (un personajede nuestro juego). Normalmente un sprite trae consigo un conjunto de atributos los mascomunes, imagen y posición en pantalla.Transparencia: Color-Key Cuando mostramos una imagen en pantalla sabemos que siempre se vera como unarectángulo pero sabemos que tiene dentro representado un objecto o personaje, al dibujaresta imagen queremos ver solamente la forma representada, para ello debemos elegir algúncolor transparente, pintar con ese color las zonas que no queremos que se dibujen enpantalla y luego dibujar la imagen ignorando dicho color. Normalmente utilizamos el color magenta, (su valor en RGB es (255, 0, 255)) comocolor de transparencia ya que es muy poco probable que se encuentre en nuestra imagen. Pero no solo usar un color como el magenta es la solución para no ver una imagen ensu forma original, también podemos hacer uso de las propiedades del formato gráfico PNG(Portable Network Graphics), ya que este formato guarda un canal alpha con las partestransparentes de la imagen.Transparencias: Máscara Existe otro método para ignorar un color en una imagen, el uso de una máscara quese antepone al Bitmap original, es decir, debemos tener otro Bitmap que indica cuales son lospixeles transparentes. El color que indica la transparencia es el negro, y el color blanco lafigura que queremos mostrar. Por lo tanto, al dibujar la imagen, recorreremos cada pixel dela máscara, y si este color es blanco, mostraremos el pixel del Bitmap original que se11 12.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comencuentra en esa posición.Transformaciones Cuando dibujamos un sprite en pantalla, tenemos la posibilidad de aplicar algunastransformaciones, las más usadas son las siguientes:Transformaciones: Translacion Esta es la transformación más simple, corresponde a cambiar la posición del spritepara luego dibujarla en otro lugar de la pantalla, dando el efecto de movimiento, sin duda lomás usado en cualquier video juego Y se resume en asignar una nueva posición a lascoordenadas (x, y) del sprite. Por ejemplo si las variables x e y son las coordenadas de la esquina superior izquierdadel sprite, y vx, vy las velocidades en cada eje, con una simple suma en cada componentecambiaremos la posición del sprite.x = x + dxy = y + dyTransformaciones: Rotación Otra transformación típica, que consiste en girar el sprite un número determinado degrados. Se usa para mostrar objetos vistos desde otro ángulo, por ejemplo en el video juegoMicro Machines, cuando doblamos cambiamos el ángulo del auto y luego este cambio lovemos reflejado en la pantalla gracias a la rotación.Transformaciones: Scaling Otra transformación muy usada en algunos video juegos, consiste en escalar unaimagen, es decir, cambiar su tamaño, normalmente proporcional.12 13.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com En la imagen anterior nos damos cuenta que al aumentar su tamaño, se produce un efecto no deseado en los bordes de la imagen, conocido como aliasing, es decir, las líneas ocurvas que forman los bordes de la imagen se ven discontinuas (en forma de escalera). Paraesto existe una solución, el antialiasing, una técnica que permite suavizar todos los bordes yasí disminuir el efecto de escalera. En toda API gráfica encontraremos una función querealice esta tarea.Transformaciones: Flipping El flipping es un tipo de transformación especial para realizar algunos efectos.Básicamente existen dos tipos, Vertical Flip que corresponde al efecto que se produce cuandose refleja un objeto en el agua y Horizontal Flip que corresponde al reflejo de un objeto enun espejo. Con la siguiente imagen quedará mucho más claro.Alpha blending Es una técnica para crear transparencia en la imagen, para ello se agrega un cuartocanal (Alpha) esta técnica se puede aplicar a un Bitmap completo o solo a un grupo depixeles.13 14.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comSistema de coordenadas 2D Es importante saber que cuando dibujamos algo en pantalla, siempre tendremos queinformar la posición en la cual dibujaremos el objeto. Por defecto la posición de un objeto seencuentra en la esquina superior izquierda, pero algunos prefieren usar como punto deanclaje el centro, y en general puede ser cualquier otro punto. Calcular el centro del punto es tan simple como sumar a la posición x, la mitad delancho del objeto y a la posición y, la mitad de la altura del objeto. Nosotros estamos acostumbrados a trabajar en el cuadrante I del plano cartesiano,donde las coordenadas del eje "x" crecen hacia la derecha y las coordenadas del eje "y"crecen hacia arriba, pero al trabajar con gráficos en el computador, esto es relativamentedistinto, ya que el eje y se invierte, es decir, ahora el mundo está al revés, las coordenadasen el eje "y" crecerán hacia abajo. En la siguiente imagen podemos ver el plano cartesiano en su forma normal versus elplano cartesiano utilizado en la programación gráfica. Sistema de coordenadas Cartesianas14 15.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Sistema de coordenadas utilizado en la Programación Gráfica Como vemos las api gráficas solo muestra el primer cuadrante solo que rotado 180grado, ademas algo importante a tener en cuenta es que para las coordenadas de losobjectos solo se puede utilizar valores enteros.Sincronización en los video juegos Lo ideal en cualquier video juego, es que todos los objetos se muevan a la mismavelocidad, independiente de la velocidad del computador donde se ejecute. Si no nospreocupamos por esto, y ejecutamos nuestro video juego en un computador antiguo, porejemplo, en un Pentium de 200 Mhz, probablemente el video juego se vea muy lento, encambio si lo ejecutamos en un computador con un procesador de última generación se verátan rápido que será imposible jugar.Para solucionar este problema, disponemos de dos métodos.Sincronización por Framerate El primer método, consiste en sincronizar el framerate, también conocido como FPS oFrames per Second (Cuadros por segundo). Al hablar de FPS, nos referimos a la frecuenciacon que se ejecuta el ciclo principal de un video juego en un segundo. A mayor cantidad deFPS obtendremos una mayor fluidez en las animaciones. En el cine se considera que una velocidad de 24 FPS es suficiente para que el ojohumano perciba una animación fluida, pero en los video juegos esta cantidad es demasiadobaja. Valores adecuados son sobre 60 o 100 FPS.15 16.
Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com El método es bastante sencillo, y lo primero que debemos hacer cuando comienza elciclo del video juego, es obtener el tiempo transcurrido hasta ese momento, quenormalmente se mide en milisegundos. Luego procesamos lo relacionado al video juego, yasea entrada, IA, lógica del juego, detección de colisiones, dibujo de gráficos, etc. y antes determinar el ciclo, creamos otro loop en el cual vamos obteniendo el tiempo transcurrido hastaese momento, calculamos la diferencia de tiempo y verificamos si es menor a los FPS quebuscamos. De esta forma cada vez que ejecutemos el programa en una máquina diferente,el programa esperará el tiempo adecuado para obtener los FPS. Utilizando este método, en computadores más rápidos se verá más fluido, pero si loejecutamos en una máquina con un procesador mucho más antiguo del que usamos paradesarrollarlo, lo más probable es que se vea bastante lento. Claro, no todo podía ser perfecto, pero es por eso que los video juegos piden algunosrequerimientos mínimos.Sincronización por Tiempo El segundo método consiste en sincronizar en base al tiempo. En este método noimporta el framerate que posea el video juego, pero aun así los objetos se moverán a lamisma velocidad en todas las máquinas. Este método se usa bastante en video juegos 3D, ya que el framerate varía mucho encada ciclo, dependiendo de la cantidad de objetos que se deban renderizar. Pero este métodotambién tiene su desventaja, a pesar de que los objetos se mueven siempre a la mismavelocidad, en un computador más lento, el desplazamiento no se verá fluidamente. Esto seaprecia en el ejemplo que ya vimos, en el caso extremo de demorarse 1 segundo cada ciclo,cada vez que se deba mover un objeto, este aparecerá 5 pixeles más a la derecha,produciéndose un salto muy notorio. En computadores aun más lentos, se comenzará a ver un parpadeo en eldesplazamiento de los objetos. Pero como ya dijimos nuestro video juego siempre tendráunos requerimientos mínimos y tendremos que seleccionar el método que más nos acomode.Pero claramente el primer método, Sincronización por framerate, es el más simple y el másextendido.Resumen Hemos aprendido varios conceptos, que nos ayudarán a comprender mejor laprogramación gráfica que se usa en los video juegos 2D. Todos estos conceptos se pueden aplicar a cualquier biblioteca gráfica, muchas de lascosas que vimos ya vienen implementadas, como por ejemplo setear un modo de video,obtener un color, realizar operaciones de blitting, efectos de alpha blending, usartransparencias por color keys, transformaciones como rotación, escalado, traslación, pageflipping, etc., por lo tanto no será necesario que escribamos código para esto, pero convieneconocer su funcionamiento.16 Recommended

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución