Hace poco lei un articulo que me pasaron a través de facebook, se llamaba de 0 a 60 FPS en 14 dias un articulo en ingles del foro de gamasutra, sin embargo decían algunos tips basado en un juego del mismo equipo creador de un juego de ninjas, pero me pareció curioso que da los tips pero no explica las razones o el porqué tomar una decisión para determinada plataforma, así que he decidido por aportar a este tema para aclarar mejor algunos puntos.
En primer lugar quiero aclarar que este tema va enfocado para aquellos que aún no tienen noción alguna de optimización, ya que el mismo foro de gamasutra va enfocado a programadores expertos que entre ellos deben ser como los sabios de sión, por lo que después de ver este blog debes continuar tu búsqueda. de igual modo pienso tratar cada tema por separado y profundizar en ellos con el tiempo y si algunos no son tan relevantes pues los juntaré en un solo blog, según vaya viendo la necesidad.
Qué es optimización
En resumen es como hacer algo maravilloso usando muy pocos recursos, en nuestros caso hacer que nuestros gráficos en los videojuegos se vean increíbles sin que convirtamos nuestra gráfica en una barbacoa y para hacer esto hay que hacer algunos trucos no se diferencia casi de ver una obra de teatro, donde de cara al público vés la función, pero detrás del telón ocurre los trucos interesantes.
Veamos primero la diferencia entre lo que tiene que ver con GPU, y CPU, luego ver los trucos para distintas áreas como los gráficos, el sonido, físicas, mandos, uso de red, memoria y scripting.
Entendiendo la diferencia entre un GPU y un CPU.
Algo que no se explica es la relación que hay entre el procesador, la gráfica, las memorias y el disco duro (Ver mi blog de porque necesitamos tantas memorias). Tanto la gráfica como el procesador hacen lo mismo, procesar datos, pero tienen enfoques diferentes, mientras un procesador puede tener 2, 4,6,8 núcleos, las gráficas tienen un montón de pequeños núcleos con menos transistores, memorias internas más cortas y vienen soldadas en la mismo PCB.
Por contra los procesadores tienen hasta la fecha hasta 16 núcleos y 32 hilos, usa las memorias caché internas de distintos tamaños que puede ir hasta 3 niveles, y puede acceder a la placa base para acceder a las memorias externas o al disco duro.
Nuestro objetivo es poder enviar los datos que encajen en cada una de esas memorias, para que la CPU o la GPU no vayan a buscar esos datos lejos. Debemos aprovechar las ventajas de las instrucciones o las tareas que nos pueda aportar los SOCs, para evitar que se calculen en bruto, con el tiempo aprenderemos a cuando enfocarse en uno o en otro, por ejemplo un procesador es bueno renderizando videos, mientras una gráfica demora mas, por ser una sola tarea que está hecha por capas una tras otra que usa mas el rendimiento mononucleo, en cambio los procesadores no son buenos para renderizar juegos, debido a que un juego tiene muchas tareas simultáneas que copan todos los núcleos rápidamente. En fin a groso modo esta es la diferencia.
Quizás más adelante en otro blog explique las diferencias con mayor detalle, pero por ahora solo bastará con decir que las CPU se usan para tareas largas y duraderas, pero pocas tareas, mientras que las gráficas pueden hacer muchas tareas simultáneas de corta duración.
Comments