Desarrollo de videojuegos 1: arquitectura del motor de videojuegos (2ª edición)

Page 196

[178]

CAPÍTULO 5. LA BIBLIOTECA STL

que no es necesario reasignar datos. Además, los punteros e iteradores a los elementos se preservan cuando se realizan inserciones y eliminaciones, posibilitando la implementación de distintas clases de algoritmos. Evidentemente, la principal desventaja es que casi cualquier operación implica una nueva asignación de memoria. Este inconveniente se puede solventar utilizando asignadores de memoria personalizados, los cuales pueden usarse incluso para mejorar la penalización que implica tener los datos asociados a los nodos de la lista en distintas partes de la memoria. En el ámbito del desarrollo de videojuegos, especialmente en plataformas con restricciones de memoria, las listas pueden degradar el rendimiento debido a que cada nodo implica una cantidad extra, aunque pequeña, de memoria para llevar a cabo su gestión.

Asignación de memoria El desarrollo de juegos y la gestión de servidores de juego con altas cargas computacionales implica la implementación asignadores de memoria personalizados. Este planteamiento permite mejorar el rendimiento de alternativas clásicas basadas en el uso de stacks y heaps.

¿Cuándo usar listas? Aunque las listas proporcionan un contenedor de uso general y se podrían utilizar como sustitutas de vectores o deques, su bajo rendimiento al iterar sobre elementos y la constante de reserva de memoria hacen que las listas no sean el candidato ideal para aplicaciones de alto rendimiento, como los videojuegos. Por lo tanto, las listas deberían considerarse como una tercera opción tras valores los otros dos contenedores previamente comentados. A continuación se listan algunos de los posibles usos de listas en el ámbito del desarrollo de videojuegos: Lista de entidades del juego, suponiendo un alto número de inserciones y eliminaciones. Lista de mallas a renderizar en un frame en particular, suponiendo una ordenación en base a algún criterio como el material o el estado. En general, se puede evaluar el uso de listas cuando sea necesario aplicar algún criterio de ordenación. Lista dinámica de posibles objetivos a evaluar por un componente de Inteligencia Artificial, suponiendo un alto número de inserciones y eliminaciones.

5.4.

Contenedores asociativos

Mientras las secuencias se basan en la premisa de mantener posiciones relativas respecto a los elementos que contienen, los contenedores asociativos se desmarcan de dicho enfoque y están diseñados con el objetivo de optimizar el acceso a elementos concretos del contenedor de la manera más rápida posible. En el caso de las secuencias, la búsqueda de elementos en el peor de los casos es de complejidad lineal, es decir, O(n), ya que podría ser

Figura 5.8: Los contenedores asociativos se basan en hacer uso de un elemento clave para acceder al contenido.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.