(19-05-2014 13:46)Alastor83 link escribió:Yo diría que antes se quedan cortas en GPU y CPU.
Exacto. Incluso en PCs a tope, antes se ve limitado un juego por CPU/GPU que por memoria.
Antes de empezar la generación actual de consolas, Epic quería mucha RAM porque querían utilizar iluminación por vóxels. La idea es interesante, pero pronto se dieron cuenta que eso requiere demasiada potencia.
Hay varias cosas que multiplican el uso de memoria:
- Los billboards. Son matrices de objetos repetidos sobre las caras de los polígonos. Se utiliza para rellenar el escenario de objetos con cierta aleatoriedad, en el suelo o en la lejanía. Es la técnica más sencilla, y acostumbran a ser objetos planos con una textura (a veces son objetos 3D). Ejemplos: la hierba, los árboles en la lejanía. Muchas veces estos objetos se eliminan de la memoria, cuando no están en el campo de visión. Es el ejemplo más sencillo de objetos que crea el juego. A pesar de eso, muchas veces se generan miles de objetos, y eso ocupa mucha memoria. La potencia necesaria no es tan elevada; pero siempre llegas antes al límite de potencia que de la memoria.
- Las partículas. Es más o menos como los billboards. De hecho es el mismo fundamento, pero con acción/reacción, movimiento y ciclo de vida. No se utiliza tanto como los billboards normales, pero actumbran a generarse más objetos en menos tiempo, además que requiere mucho poder de cálculo. El uso de memoria es más dinámico, sube y baja constantemente. No requiere tanta memoria como los billboards (estos acostumbran a estar más tiempo en el escenario), pero el factor potencia acostumbra a ser más incisivo.
- Vóxels. Un vóxel es una unidad en una matriz tridimensional. Cuanto más grande sea la matriz, mucho mayor es el uso de memoria. Imagináos un sistema de partículas, pero sin mvimiento, y todas apiladas en perfecto orden cúbico. El ejemplo más famoso es Minecraft. Las unidades no tienen movimiento ni requieren cálculos, aparte de los necesarios para mostrar sus texturas y shaders. Minecraft no se puede tomar de ejemplo, ya que utiliza Java (un lenguaje de programación de alto nivel, sin mucha optimización). Podemos tomar como ejemplo FortressCraft (juego muy similar en concepto a Minecraft), con un engine más optimizado y ejecutable en 64 bits(permite gestionar más vóxels); en el caso de este juego, se necesita más memoria, pero también se llega al límite de la potencia.
Hay muchos más factores que requieren el uso de memoria, a pesar de que no se vea el resultado en pantalla: precargas, buffers, entidades localizadas en un mundo sandbox, y cosas que ni me imagino. A pesar de todo esto, los que vi que utilizaban la memoria con más ingenio, son los de Naugthy Dog, eliminando objetos de memoria para poder cargar nuevos elementos; así, sus escenarios parecían más ricos y variados a cada paso. Eso es saber programar, y no quejarse por quejarse.