Lista Artículos Lista Editoriales Enlaces Juegos en Línea Noticias Tienda J por Amazon(com)
J de Juegos.com
PC
AYUDA   |   BUSCAR x CLAVE   |   
Buscar con GOOGLE >>>
 
Escríbenos! Galardones. Juegos Recientes.
Preguntas Frecuentes - Galerías - Códigos - Descargas - Enlaces - TOP 10
| ACCIÓN | | AVENTURA | | CARRERAS | | DEPORTES | | ESTRATEGIA | | JUEGOS DE ROL | | SIMULADORES |
El Tamaño del Software
x Webmaster
 
Con la evolución exponencial del hardware resulta difícil percibir como el software también avanza de manera proporcional, no tanto en sus cualidades y capacidades como en su volúmen. Una de las principales características de los programas de estos últimos años es la enorme cantidad de recursos (en términos de código) invertidos en lograr que el programa se vea bien. También estamos llegando al extremo con el concepto aquel de ofrecer aplicaciones que hacen de todo, menos sacar al perro a pasear. Mas bien que algunas compañías andan ofreciendo buenos productos y versiones más útiles y eficientes de sus aplicaciones estrella. Tal vez el sector que mejores cosas ofrece, en todo aspecto, es la de los vídeojuegos, aunque con las infaltables excepciones.

Pero, vayamos paso a paso. Hace no menos de doce años el componente funcional base del MS-DOS (el sistema operativo del momento) entraba sin problemas en un diskette de 1.44MB, tanto así que inclusive uno podía tener un par de programas utilitarios como el format, chkdsk o el mem en el mismo diskette. El Windows 3.1 trabajaba tranquilo en un disco duro de 80MB. Hoy en día el Windows XP requiere de ¡2GB! para una instalación común. Hace doce años era posible incluir en un diskette varios juegos sencillos, aquellos calificados como complejos entraban en más, tal el caso de Prince of Persia que entraba en uno, Dune ocupaba dos, Warcraft también, uno de los primeros juegos de la saga D&D entraba tranquilamente en 2 diskettes. Juegos como CD-MAN, tetris, o Arkanoid entraban de sobra todos en un solo diskette. Hoy Warcraft III requiere de un CD, Emperor: Battle for Dune ocupa 4 CDs, Baldur's Gate 2 ocupa 4 CDs, su demo requiere ¡600MB de espacio!. Y la tendencia parece ir creciendo. ¿Por qué el software crece tanto?

Antes de entra en detalles hay que pensar en los cambios ocurridos en el hardware durante el mismo lapso de tiempo. Un procesador Pentium III es tres generaciones superior a un Pentium o un Pentium MMX pero incluye hasta diez veces más transistores y alcanza velocidades netas una decena de veces superiores. Por otro lado la tecnología utilizada permite ejecutar hasta dos instrucciones por ciclo, lo cual duplicaria el número de instrucciones netas por segundo. Un Pentium IV si bien sólo una generación superior casi duplica el número de instrucciones y la velocidad bruta del procesador, sin contar con la tecnología que permite ejecutar hasta 3 o 4 instrucciones por cíclo (bajo situaciones óptimas), por ende cuatruplicando la cantidad de instrucciones por segundo.

Hace una década una máquina con ¡1MB! de RAM era un súper lujo, hoy en día se está volviendo cosa corriente contar con equipos con 512MB y para fin de año tener 1GB de RAM será lo preferido por la reducción actual en los costos. A parte que las memorias de hoy en día son hasta un buen par de veces más rápidas y utilizan tecnologías especiales que les permiten recibir o enviar información al mismo tiempo, encontrar datos en instantes, etcétera. No hace mucho un disco duro con 100MB era como tener un Ferrari en el garage, hoy uno de 80GB es la Peta parqueda en la calle. Una tarjeta de vídeo con aceleración 3D era algo prohibitivo, ahora es tan común que hasta vienen con 64MB a 256 MB de memoria especial ultra-rápida para vídeo (actualmente la DDR). Un monitor de 17" ya es algo adminisible de tener sin por ello olvidarse de pagar las cuotas de la casa, y un sistema de sonido envolvente ya lo podemos comprar sin dejar de comer un mes. El hardware ha mejorado increíblemente, pero no por ello hay que abusar. ¿Verdad?

Pero, volvamos al tema. ¿Por qué el software es tan voluminoso?. Bien por debajo de la cubierta el software moderno es modular y hace uso del paradigma Orientado a Objetos cuyo código compilado (el ejecutable en binario entendible por la máquina) suele ser muy extenso --y redundante, esto último sobretodo porque los creadores de compiladores no han invertido el tiempo suficiente en optimizarlos. Por otro lado el uso de librerías predefinidas se ha vuelto la norma para "ahorrar tiempo de desarrollo" esto implica que en muchos casos un programa incluye decenas de librerías prefabricadas sólo para utlizar una o dos funciones de cada una, el resto no puede ser aislado ni botado, así que forma parte del paquete final como relleno.

En los tiempos en que mucha memoria era un lujo el equipo de Windows sale con el concepto de las librerías dinámicas (las DLL), modulos funcionales que se cargaban y descargaban de la RAM según sean o no requeridas por la aplicación en uso. Esta idea siempre tuvo una faceta mala, claro que las ventajas otorgadas lograban opacar los pequeños detalles negativos. El primer problema con estas librerías es que fragmentan la memoria, como Windows no tiene un sistema eficiente de recolección de fragmentos (garbage collection) y reorganización llega un momento en que sin importar el monto disponible en hardware para el S.O. la cantidad de recursos es demasiado baja. Sólo queda reiniciar, este problema no es tan notorio en equipos con XP, por lo que podemos asumir que han optimizado la gestión de memoria.

Un otro problema con las DLL es que muchas veces los programas instalan algunos módulos en la carpeta de sistema, mismos que luego son pocos los que desinstalan adecuadamente, dejando así archivos que nunca se utilizan pero que tampoco sabemos cuales son para eliminarlos. Muchas utilidades tratan de cumplir el papel de borradores de liberías inútiles pero todavía no hay una que funcione siempre y bien. Las librerías dinámicas son parte importante de la arriba citada presencia de mucho código redundante en los ejecutables, aún así sin su presencia mucho software podría acabar todavía más voluminoso o, en cualquier caso, ser más difícil de mantener y programar.

Actualmente está de moda incluir todo lo que los demás tienen y más, lo que termina creando un cúmulo de funcionalidad que al final resulta contraproducente, y que además asusta y confunde al usuario. Claro ejemplo de que alguien se dió cuenta de esto es como el Office 2000/Windows XP presenta menús que ocultan el 70% de las funciones y sólo muestran aquellas más utilizadas y, sin ánimo de ofender a nadie, las más simples. Sólo si el usuario quiere se despliegan las restantes opciones disponibles. Por otro lado, en el afan de simplificar las cosas al usuario final se agrega a un Sistema Operativo, o programa, una infinidad de funciones cuya utilidad real es dudosa pero que hacen ver bonito y sencillo al entorno. Seamos sinceros, ¿quién realmente necesita 50, cuando no más, temas de ambientación? ¿100 fondos de escritorio? ¿miles de diferentes sonidos para cada proceso? ¿decenas de salvapantallas para cada día? Jugar con ellos y elegirlos es divertido por 10 minutos, luego sólo ocupan espacio en disco duro que pocos saben como liberar. Personalizar permite dar un toque único a las cosas, pero carece de utilidad práctica.

¿Sabía usted que todos esos lindos fondos y sonidos, e iconos ocupan espacio en su memoria RAM, y en su disco duro? Sin incluir el espacio ocupado por los módulos de ejecución, o las librerías que los manipulan. Con Internet se promueve aún más la posibilidad de que cada usuario descargue temas de escritorio, sonidos y afines para personalizar no sólo el Sistema Operativo si no muchos programas más; desde que el Winamp empezo a ofrecer sus famosos skins, el Internet Explorer, luego el Netscape y hoy por hoy decenas de otros que la verdad, no tienen nada que hacer con ese tipo de oferta.

Ahora bien, entrando más en los juegos. Los sistemas gráficos 3D vinieron para evitar el uso de pesados sprites prerenderizados, entonces ¿por qué cada vez necesitan más y más espacio, memoria y velocidad de procesamiento? Si bien es cierto que en un principio los engines 3D tenían el objetivo de liberar espacio en memoria y disco duro al no usar imágenes predibujadas no hay que olvidar que su uso se ha extendido y evolucionado bastante. Hoy en día su aplicación es para ofrecer mejores imágenes, mayor libertad de movimiento y mejores efectos y renderizados en tiempo real. Una vez que las tarjetas de aceleración 3D se volvieron cosa común las restricciones --auto-- impuestas en el diseño de los engines desapareció rápidamente.

No hay que olvidar que un engine 3D trabaja dibujando polígonos (tríangulos), calculando posiciones en un espacio tridimensional virtual (abstracto) y adaptándolo a una perspectiva 2D totalmente plana (el monitor), la matemática y el cálculo geométrico involucrados en éste proceso, aunque no al nivel del cálculo cuántico, tampoco es cuestión de sumar dos números y listo, por lo que el monto de procesamiento involucrado es inmenso y crece exponencialmente dependiendo el número de efectos a ser aplicados y la cantidad de detalle presente en los polígonos (texturas). De igual manera aún los polígonos que el usuario no llega a ver tienen que ser calculados para otorgar imágenes realistas y nítidas, sombras que estén de acorde a las fuentes de luz, y efectos especiales que cubren o no determinadas áreas de lo que el usuario va ha ver. Existen varias tecnologías, o estrategias, para calcular lo menos posible, pero aún así, hoy en día se están empezando a manejar alrededor de 100.000 a 1'000.000 de polígonos por pantalla, lo cual, créanme, no es cosa de chiste.

Las tarjetas de aceleración modernas suelen trabajar utilizando un buffer, de tal manera que una vez terminada una imágen la mandan a la memoria de vídeo para que la vea el usuario mientras la tarjeta en sí esta trabajando en la siguiente, todo esto a decenas, cuando no centenas, de veces por segundo. Algunas inclusive tienen tecnologías que les permiten tener dos o más imágenes en proceso de renderizado mientra el usuario ve la primera. Desde la resolución de pantalla, hasta la densidad de colores, sin olvidar el número de polígonos, la cantidad y la calidad de las texturas, el número de fuentes de luz y los efectos a ser aplicados afectan la velocidad final de entrega, o renderizado, mejor conocidos como fps, frames per second. Una medida usualmente utilizada para demostrar el poder de la tarjeta cuando, por ejemplo, indican que Unreal Tournament 2003 ejecuta a 100fps a 1024x768 con 32bits de color, todo una proeza.

A medida que las tarjetas de vídeo 3D fueron evolucionando también lo hicieron el número de efectos, y si bien la mayoría se realiza dentro el GPU (Graphics Processing Unit) aún así deben utilizar la memoria RAM y al ALU (Aritmetic-Logic Unit) o al FPU (Floating-Point Processing Unit) del CPU principal como apoyo en varios cálculos. No en vano uno de los grandes avances de estos últimos años fue la implementación del AGP, un bus privado, más rápido y directo entre la memoria RAM del sistema (que es mucho más voluminosa y lenta) y el procesador gráfico de la tarjeta de vídeo, que si bien tiene su propia memoria la misma es de alta velocidad menos voluminosa y más costosa, por lo que su uso es selectivo y/o temporal. No hay que olvidar que acceder a la RAM sigue siendo centanas de veces más rápido que cargar de disco duro.

Pero aún así, ¿por qué crece tanto el espacio necesario por un engine 3D? La clave viene de mano de las nuevas texturas de alta resolución, las cuales se quiera o no son imágenes predibujadas de elevado volúmen que ciertamente ocupan mucho espacio en disco, y en memoria. Es por ellas, también, que muchos juegos requieren harta RAM para cachear todas las texturas y mapas de bits en memoria, para un acceso, o procesado, más rápido. De ahí que contar con mucha RAM sea --en varios casos-- más eficiente que tener un procesador muy rápido, después de todo será la tarjeta de vídeo la que haga gran parte del procesamiento no el CPU principal, el cual ya esta bastante cargado y ocupado con los sistemas de IA --de cada bot o unidad, interfaz de usuario, módulos de razonamiento estratégico y planeación, seguimiento del guión de la historia, voces, sonidos, etcétera.

Otro punto de incremento en el tamaño de los juegos actuales es la propia dimensión de sus niveles y el detalle que presentan. Además que como los discos duros han crecido tanto, los desarrolladores ya no ven mucha necesidad en optimizar sus imágenes, aparte de que llegan a ofrecer grabaciones de sonido de alta fidelidad (44KHz) en vez de los optimizados de antes que eran de baja fidelidad (4KHz a 16KHz), diferencia que, la verdad sea dicha, sólo se percibe con tarjetas de sonido modernas y de calidad, y un juego de parlantes muy fino, en un ambiente libre de interferencias auditivas. En esta misma línea las bandas sonoras ya no son los diminutos archivos instrumentales MIDI sino grabaciones completas que cuando tenemos suerte están en formato MP3 (entre 2 y 5MB) y que en el más de los casos vienen en WAV (entre tres y cinco veces más grande) para evitar uso de cíclos de CPU en la descompresión, y facilitar la inclusión de efectos y/o la sincronización con las animaciones.

Al final pareciera que los desarrolladores de hardware y los productores de software, tienen algún trato o están en una competencia no declarada de siempre consumir, y volver obsoleto, lo que el otro hace lo más rápido posible. Resulta difícil deducir si es que los productores de software complican sus productos más en pos de aprovechar mejor el hardware existente, o estos últimos mejoran todo para poder utilizar mejor lo que los primeros hacen. Vaya uno a saber. Lo seguro es que mientras no pase nada raro en el área de la tecnología o el software ambos seguiran evolucionando a un paso acelerado y cada vez serán más grandes los programas aunque su funcionalidad no aumente mucho. Claro que, en el caso de los juegos, ese incremento de funciones --casi-- siempre existe y se nota en los efectos visuales, el detalle, la calidad visual y de audio, las increíbles peripecias que suelen lograr algunas Inteligencias Artificiales, o la cantidad de cosas que suceden en la pantalla mientras el usuario esta ocupado pensando en como destruir a su oponente. Basta con imaginar a Republic: The Revolution que debere simular un país entero con un ¡millón de habitantes!, o a Xenus que deberá implementar la simulación realista (dicen) de toda una porción de un país. O a Perimeter que ofrecerá no menos de 1'000.000 de polígonos por pantalla.

Queda claro que si bien visualmente los juegos seguirán evolucionando las nuevas áreas para realmente explorar y explotar son las de jugabilidad, la integración a un ambiente real que existe todo el tiempo y se ve afectado por nuestras acciones, y las capacidades de Inteligencia Artificial de los bots que debamos enfrentar. Los bichos de Serious Sam serán muchos y serán tontos, pero no hay que olvidar que ejecuta bastante bien en un Pentium II de las últimas, en máquinas más nuevas no creo que sea problema dotarles un poco de cerebro, aunque, claro, poco probable que sea igual de divertido si en vez de lanzarse a nosotros, sus bichos la pensaran primero en como atacarnos. El asunto del comportamiento grupal y social de los bots, para juegos de estrategia y táctica, es otra área que esta siendo estudiada con lupa. Los juegos del futuro prometen, habrá que ver si nosotros, los jugadores, estaremos a la par, después de todo seguimos teniendo el mismo hardware --cerebral-- que cuando el primer homosapiens piso la tierra.

¿Por qué el software crece tanto? La verdad sea dicha, porque es inevitable. Por suerte el hardware sigue a la par y hasta un poco adelante, así que no hay de que precuparse, todavía. Que un poco de optimización a los compiladores o a las librerías no le haría daño a nadie es cierto, pero, en esta carrera por ganar el mercado y a los clientes, de seguro ninguno de los involucrados se va ha dar tiempo de hacerlo nunca. Lamentable, pero realista.

( - de -) SIGUIENTE >>
Sobre J de Juegos | Información Copyright | Contacto [ 27/Septiembre/2003 ]