Eltutologo
Usuario (República Dominicana)
Programación de videojuegos. Ciencia y arte en armonía Actualmente, la programación se ha convertido en un trabajo de equipo. Lejos de aquellos gurús que, desde el garaje de su casa creaban programas con una creatividad y originalidad impresionantes, ahora manda la organización, el proyecto y, cómo no, el beneficio. Lenguajes y plataformas de los videojuegos Cuando una empresa, un equipo de profesionales, o un particular, deciden emprender la tarea de desarrollar un videojuego, surge una pregunta inmediata: el lenguaje y sistema a usar para su desarrollo. Tanto la plataforma donde se va a ejecutar el juego, normalmente Windows, MAC, Linux, o una videoconsola, como el lenguaje, tienen un importante impacto en la futura creación de cualquier programa de entretenimiento. Vamos a explicar por qué es así, y cuales son las consecuencias de decantarse por una u otra opción. También vamos a comentar los aspectos generales del desarrollo de un videojuego, fundamentales para la consecución exitosa de un proyecto. La plataforma Por plataforma se entiende sobre qué sistema se va a ejecutar el programa, en este caso videojuego. Es primordial tener en cuenta este aspecto, ya que la programación posterior que se vaya a desarrollar dependerá en gran medida de esta decisión. Tal y como se explica más adelante, la arquitectura hardware impone de forma clara el tipo de programación que se va a llevar a cabo. Así, la programación de un videojuego para PC ha sido bastante más compleja que para una videoconsola, ya que existen prácticamente tantas configuraciones PC como usuarios, y el programa ha de funcionar correctamente en todas. Esto obliga a los diseñadores para PC a implementar un conjunto de requisitos mínimos y recomendados que el PC ha de cumplir para poder ejecutar el juego. Así, en muchos casos, de nada vale tener 128 megas de memoria RAM si no se dispone de una tarjeta gráfica aceleradora adecuada. En el caso de desarrollos sobre plataformas basadas en videoconsolas, el técnico puede estar seguro de encontrarse siempre con el mismo hardware, independientemente de quién compre su producto. Esto permite abaratar costes, ya que se ha de realizar un betatesting mucho menor, y se puede asegurar antes el éxito de un producto. De todas formas, las nuevas generaciones de videoconsolas se están convirtiendo en arquitecturas extremadamente complejas, lo cual resta esta facilidad de programación que hasta ahora habían tenido. Tal es el caso de Playstation 2, que ha requerido un gran esfuerzo por parte de los equipos programadores para poder obtener todas las prestaciones de la máquina, que obliga a trabajar a bajo nivel para poder obtener resultados sobresalientes. Por otro lado, en el caso de la inminente Xbox, cuya arquitectura es bastante similar a la de un PC, el programador podrá encontrar un entorno muy similar al de un PC, teniendo en cuenta que se basará en DirectX 8 y el núcleo de Windows 2000, pero ello plantea una duda sobre la estabilidad de dicha plataforma. En cualquier caso, el programador se encuentra siempre una arquitectura que debe aprovechar al cien por cien con el fin de obtener un buen rendimiento y un programa de alta calidad. Los lenguajes de programación para videojuegos Cualquiera que desee crear videojuegos puede usar alguno de los diversos lenguajes que existen en el mercado. Pero es evidente que, dependiendo del usado, tendrá más o menos accesibilidad a crear juegos potentes y llenos de acción. Lenguajes como Visual Basic o Cobol no son para nada adecuados para crear videojuegos, ya que tienen en su finalidad el permitir crear programas de gestión. En último término, tres son los lenguajes que se usan en el 99 por ciento de los desarrollo Assembler: el Assembler (conocido como Ensamblador en castellano) no es un lenguaje como pueda entenderse normalmente. El Assembler es el conjunto de instrucciones que conforman un microprocesador determinado, y que se escriben de una forma concreta dependiendo de dicho microprocesador. Así, no es lo mismo el Assembler del microprocesador Pentium en sus sucesivas series, que el del Zilog Z80 (el que incorpora el antiguo Spectrum o la consola portátil Game Boy Color). Cada uno de estos procesadores dispone de sus propias instrucciones y arquitectura, por lo que el Assembler de cada uno de ellos es muy distinto del resto. El Assembler se usa poco, ya que cada instrucción del programa consiste en una o dos instrucciones de procesador, lo que conlleva un esfuerzo tremendo para la realización de un programa. Antes, muchos programadores usaban este lenguaje debido a que no existía otra posibilidad. La ventaja de este lenguaje es su impresionante velocidad de ejecución. Al estar escrito en código máquina, aunque sea de forma mnemotécnica, su ejecución es la más alta posible. Actualmente, se usa para aquellas rutinas de los programas que requieren una velocidad muy alta de ejecución. C: el C es un lenguaje que podría calificarse de todo terreno, ya que se usa para muchos tipos de desarrollos. Respecto a la creación de videojuegos, se emplea más que ningún otro debido a su alta velocidad de ejecución, y a que la mayoría de motores gráficos están escritos y adaptados a este lenguaje. El C es un lenguaje fiable, robusto, y muy poderoso, que tiene como contrapartida la necesidad de técnicos muy cualificados y con gran experiencia. Actualmente existen herramientas que facilitan mucho la programación en este lenguaje, pero aún así se deben extremar mucho las precauciones, ya que es fácil cometer errores que pasan inadvertidos hasta que se descubren, especialmente en el capítulo de la aritmética de punteros y en problemas de overflow (sobreescritura de áreas de memoria accidentales), técnicas de uso de memoria que conllevan importantes quebraderos de cabeza a los programadores. Muchos bugs de videojuegos están originados en pequeños despistes de los programadores usando este lenguaje, y los famosos pantallazos azules son en muchas ocasiones debidos a estos problemas descritos. Entre miles de líneas de código, es muy fácil que se deslice algún pequeño fallo que originalmente parece funcionar bien, pero que cuando es sometido a un alto rendimiento (como puede ser miles de aficionados ejecutando el juego) puede dar a descubrir imperfecciones. Un ejemplo de programa creado con C es el famoso Quake 3. C++: el C++ es en cierto modo una evolución del C, aunque tiene las suficientes diferencias como para considerarlo un lenguaje distinto. Los dos aspectos más reseñables son, por un lado, la obligatoriedad de describir los tipos de todos los atributos y funciones creados, y especialmente, el que sea un lenguaje orientado a objetos, mientras que el C es un lenguaje estructural. Debido a su mayor complejidad, muchos programadores huyen de él, y prefieren el viejo y veterano C (como ocurre con John Carmack, de ID Software) Otros lenguajes se pueden usar también con un éxito mayor o menor en función de lo que se les exija. Un buen lenguaje es el Delphi, basado en Pascal, que genera un código de muy alta velocidad. Otro muy usado en Internet es, por supuesto, Java, con el que se crean Applets que permiten la ejecución de videojuegos en el entorno de un navegador de Internet con Java. La evolución como norma de perfección Es evidente que los videojuegos actuales muestran un nivel de sofisticación sorprendente, y más cuando se comparan con aquellos realizados hace cinco o diez años. Las necesidades de estos videojuegos en cuanto a consumo de recursos, sea memoria, procesador, disco, etc, son también de un orden de magnitud muy superior a cualquier previsión que se pudiese haber tenido cuando se comenzaron los primeros desarrollos de juegos en PC. Recordemos la famosa frase de Bill Gates "640 Kbytes deberían bastar". Hoy, con 640 Kbytes de memoria no arranca ni el kernel (el núcleo) de la mayoría de sistemas operativos. Los usuarios nos quejamos del aumento imparable en las prestaciones de nuestros PCs para poder satisfacer el ansia de jugar a los últimos títulos, con requerimientos que asustan a muchos, y a otros les hace pensar cómo conseguir esa deseada tarjeta gráfica, o de qué forma cambiar el procesador. La pregunta inmediata que se hacen muchos aficionados es si realmente es lógica esta evolución tan rápida. Para ello, vamos a repasar la evolución de la programación de videojuegos. Aún a riesgo de dejarnos aspectos importantes en el tintero, esto podemos hacerlo dividiendo esta compleja historia en tres etapas principales: 1. La primera etapa: programación directa con instrucciones del microprocesador: estamos en la época del DOS. Muchos de los grandes videojuegos se diseñan por una sola persona. Otros proyectos son llevados por equipos que raramente exceden de los tres o cuatro técnicos. La programación se hace usando lenguajes de muy bajo nivel, normalmente Assembler. El programa está diseñado para una arquitectura de hardware extremadamente concreta, tanto es así que cualquier cambio, por pequeño que sea, conlleva que el programa deje de funcionar. Un ejemplo muy claro es Microsoft Flight Simulator 3. Este programa era tan exigente con un hardware concreto, que cualquier variación en el mismo conllevaba que dejase de funcionar de forma absoluta. De tal modo que se usaba para comprobar si un ordenador era compatible o tenía algún problema. En conclusión: los videojuegos estaban basados y extremadamente orientados a un hardware concreto, dependiendo del mismo de forma absoluta. 2. La segunda etapa: programación en base a un API: un API (Application Program Interface, interfaz de programación de aplicaciones), es un conjunto de funciones que permiten aislar el hardware de las aplicaciones. Este API realiza funciones estándar sin tener que preocuparse de qué hay detrás. Un ejemplo: se desea trazar una línea en una zona determinada de la pantalla. En el sistema de trabajo anterior, se usaba el hardware de la tarjeta gráfica para trazar la línea. Cambiabas la tarjeta, y adiós a la línea. Con el API, se le indica al mismo que se desea trazar una línea, y el API se encarga de ello. Para ello, este API se pone en contacto con un elemento nuevo: el driver. Este driver, basado en el hardware al cual da funcionalidad, no es más que un programa que permite recibir una instrucción y gestionarla. Así, si se cambia la tarjeta, se cambia el driver, y de esta forma, el mismo programa puede dibujar la misma línea independientemente de la tarjeta. Este tipo de programa se puso en marcha con los sistemas MAC y Windows, sobre todo a partir de las versiones de Windows 3.0 y 3.1. Otro estándar para tarjetas gráficas fue el conocido como VESA, que permitía en entornos DOS poder ejecutar programas gráficos para diferentes tarjetas que cumplieran este estándar. Se puede decir en cierto modo que VESA fue un adelanto de lo que luego serían los estándar API Glide, OpenGL y DirectX. Éste último es ahora el más usado. 3. La tercera etapa: programación en base a un motor gráfico: en realidad, los motores gráficos suelen comprender muchos aspectos de la programación, pero sobre todo están basados en tratamiento y generación de imágenes renderizadas en tiempo real y en tres dimensiones. Un motor gráfico es en cierto modo un API especializado, que tiene como finalidad evitar que los programadores tengan que acceder directamente al API del sistema operativo. La importante ventaja del uso de un motor gráfico es que realiza de forma automática el diseño y gestión de los polígonos que conforman las imágenes 3D de los videojuegos. Esto permite que el programador indique al motor cómo debe comportarse un elemento, sin importar de qué forma hacerlo, y es el motor el responsable de llevar a cabo este comportamiento. Esta ventaja conlleva miles de horas de ahorro para un equipo de programación, que puede centrarse en otros aspectos del videojuego, como son la inteligencia artificial o el argumento. Ejemplos de motores gráficos muy usados hoy en día son los motores de Quake en sus versiones 2 y 3, sobre todo esté último, aunque la versión 2 dio lugar a maravillas como Soldier of fortune, lo que demuestra que un motor puede dar mucho de sí si se emplea correctamente y se perfecciona. Otros motores son los de Unreal, LichTech y el motor del videojuego Tribes 2, que por 100 dólares puede ser comprado para que aquel que quiera pueda crear su propio videojuego. Es un precio absolutamente revolucionario, teniendo en cuenta el altísimo coste de otros motores. En cada una de estas etapas, se han ido creando nuevas y sucesivas capas que distancian al hardware del sistema con respecto a las instrucciones del videojuego. Si a esto se suma la mucha mayor complejidad en número de líneas de estos programas, y teniendo en cuenta que una línea del videojuego puede dar lugar a que se ejecuten docenas de instrucciones en la capa inmediatamente inferior, y que a su vez cada instrucción de esta segunda capa ejecute cientos de líneas en la capa inferior, es normal que se requieran procesadores extremadamente potentes con gran cantidad de memoria. Así pues, el axioma de que los ordenadores crecen en potencia sin necesidad real no es cierto; lo cierto es que los miles de sentencias que se ejecutan para crear las maravillas que hoy pueden verse requieren estos sistemas que actualmente son de uso cotidiano. Programar videojuegos: entre el arte y la ciencia Hoy es impensable la realización de un videojuego sin contar con una ingente cantidad de dinero, equipos muy sofisticados y un nutrido grupo de expertos en diferentes áreas. Lejos de aquellos tiempos de genios que realizaban sus juegos a solas, hoy los programas son complejísimas obras que flotan entre el arte y la ciencia. Sin embargo, la programación no es un lugar al que sólo pueden acceder algunos elegidos. Como cualquier otra especialidad, la programación se nutre de las técnicas usadas en la ingeniería para el diseño de aplicaciones y videojuegos. En este contexto, cualquier persona puede introducirse en este mundo y comenzar a realizar sus primeros programas, eso sí, teniendo en cuenta que los resultados no serán al principio tan espectaculares como los actuales productos comerciales. Pero la práctica continuada, y el estudio profundo, pueden hacer de cualquier aficionado un firme candidato a entrar en equipos multidisciplinares, donde comenzar a trabajar de forma profesional. Para ello, es importante seguir algunos pasos. En primer lugar, es muy importante, aunque no fundamental, desarrollar estudios superiores de informática, ya que dan una base sólida y una buena formación teórica. También existe la opción, más rápida y con resultados más concretos y visibles, de acudir a una buena academia de formación en informática. Es sorprendente cómo algunas de estas academias pueden convertir a un novato en un especialista, al que con un par de años de experiencia le pueden convertir en candidato interesante para muchas empresas desarrolladoras. El camino no es fácil, por supuesto. Se requiere muchísima dedicación, programar literalmente miles de líneas de código, revisar y volver a revisar, perfeccionar y volver a perfeccionar, detallar hasta el infinito, y no conformarse nunca con el resultado. La mayor satisfacción se produce entonces cuando se presenta el resultado a un grupo de amigos, satisfacción que queda rápidamente destruida cuando estos amigos empiezan a detectar docenas de errores, "bugs", en el programa. Mucha gente desiste entonces de continuar, lo cual es un grave error. Es en ese momento cuando se ha de prestar atención a todas las imperfecciones detectadas, para continuar adelante. En este desarrollo, los días, meses y años creando un videojuego pueden pasar de una forma extremadamente rápida, con sesiones continuas de diez, doce, o quince horas frente al monitor, comiendo y cenando, e incluso durmiendo, literalmente en la oficina (como ha ocurrido en el desarrollo de Gran Turismo 3 para PS2). Todo con tal de poder construir y terminar ese proyecto que se está llevando a cabo. Es muy duro, y, por ello, cuando un usuario comienza a criticar un videojuego, debe ser tolerante con el producto que tiene en sus manos, ya que muchas veces se tiende a menospreciar un gran videojuego por dos o tres detalles que no le quitan todo el valor y la calidad que contiene. Fases de diseño en un videojuego Cuando se acomete la realización de un videojuego, se requiere seguir unos pasos muy concretos, dentro de un plan maestro. Para ello, se han diseñado un conjunto de normas, conocidas como metodologías. Estas metodologías son de muy diversa índole, y cada una de ellas adecuada a un tipo de aplicación concreta. Aunque es un tema que podría llenar cientos de páginas, vamos a ver un resumen de los elementos necesarios y el orden a establecer para la exitosa consecución del proyecto. Téngase en cuenta que muchos equipos no establecen estas metodologías como principio del trabajo, por lo que se ven abocados a proyectos caóticos, donde no se conoce el estado actual del proyecto, ni cuándo acabará. De forma muy general, cualquier proyecto debe acometer estas etapas: 1. Diseño del proyecto: en muchas ocasiones, los equipos de desarrollo no se preguntan de forma totalmente absoluta qué quieren hacer. Por ejemplo, se desea crear una aventura gráfica. Sí, pero esto es tan ambiguo como si un arquitecto se propusiera diseñar un bloque de apartamentos. Existen multitud de opciones, variantes, que deben ser tenidas en cuenta. Es por ello importante definir el proyecto, sobre todo el concepto de "alcance" es decir, hasta dónde se desea llegar. Esto es fundamental, ya que de lo contrario, la ambición desmedida puede hacer fracasar un proyecto, como ocurre a menudo. Téngase en cuenta que estudios actuales estiman que el 80 por ciento de los proyectos que se acometen acaban en sonados fracasos debido a una mala planificación inicial. 2. Diseño de los aspectos generales del proyecto: una vez el proyecto está definido, éste se descompondrá en elementos, llegando hasta un punto en el que se pueda concretar cada aspecto del juego. Los diferentes elementos que lo conforman tendrán una respuesta en un responsable, que se encargará de dirigir ese aspecto concreto. Así, elementos comunes suelen ser: la música, los gráficos, la inteligencia articificial, el diseño del storyboard, diseño de puzzles, diseño del interface, diseño de pruebas para betatesters, calidad del producto, versiones para cada plataforma donde se lance, y otros. En equipos grandes, una persona se encarga de cada uno de estos aspectos, en otros más reducidos pueden llevarse a cabo diferentes tareas por la misma persona. Se nombra entonces un director del proyecto, que a su vez nombrará a los responsables de cada área del producto. 3. Diseño de los aspectos técnicos: una vez se ha hecho un estudio general del proyecto, respondiendo a la pregunta "qué se desea", se debe llevar a cabo la resolución de otra pregunta: "cómo se va a llevar a cabo". Para ello, se han de responder a preguntas del tipo: plataformas en las que aparecerá, lenguaje de programación a ser usado, herramientas de diseño a ser usadas, motor gráfico que se empleará, y otros. También es importante en este momento que una persona actúe como coordinador del proyecto. Puede ser el mismo director del proyecto u otra persona. Su función es fundamental, ya que coordina que todos los aspectos del videojuego se conjuguen de forma correcta, antes de descubrir que el trabajo de un equipo es incompatible con el trabajo de otro equipo. 4. Pruebas unitarias y conjuntas: este punto está estrechamente relacionado con el anterior. Se requieren un conjunto de pruebas de stress, que permitan al equipo desarrollador conocer y comprobar los bugs que pueda tener el programa, para que éste no falle en ningún momento. Por otro lado, también en este momento se depuran las rutinas críticas del programa, las cuales permiten una ejecución a la máxima velocidad y de forma segura de los puntos clave de la aplicación. El objetivo final debe ser un producto totalmente estable y perfectamente diseñado. Téngase en cuenta que esta fase de pruebas puede llegar a consumir una gran parte del desarrollo de una aplicación. 5. Rediseño de elementos: además de localizar errores y perfeccionar aspectos del programa, es probable que en los puntos 3 y 4 se descubran que existen ciertos elementos que deben ser incluidos, bien porque no los fueron en la parte de diseño, bien porque se desean añadir nuevas funcionalidades, es decir, mejoras. En este momento se pueden llevar a cabo estas mejoras, pero ha de tenerse en cuenta que existe un presupuesto que debe ser mantenido, y estas mejoras provocarán que el ciclo se reinicie de nuevo, desde el punto 2, con lo que se pueden derivar costes que impidan su puesta a punto. Hoy en día, muchos de estos aspectos se dejan aparcados hasta la comercialización del producto, y si éste tiene éxito se añaden posteriormente en un parche. También puede ocurrir que ciertos elementos (como un modo multijugador por ejemplo) no fueran dimensionados de forma correcta, de manera que deban eliminarse del proyecto original, para poder mantener el presupuesto del proyecto, por lo cual, si los ingresos del producto lo permiten, se puedan añadir posteriormente. Estos pasos, seguidos de forma estrecha, pueden ayudar a llevar a cabo un proyecto de desarrollo. Desde luego, estas metodologías no son la panacea ni garantía de éxito seguro, pero es evidente que no usarlas llevan a un estado de caos que puede hacer fracasar el proyecto, o alargarlo hasta que incida en unos costes prohibitivos. Conclusiones Estamos en un momento relativamente bueno en lo que se refiere a equipos de programación de origen nacional. Actualmente desarrollos como Commandos 2, Blade, Torrente el Juego, o toda la saga de juegos que desarrolló Dinamic Multimedia (que lamentablemente acaba de anunciar su cierre) demuestran que en este país la formación no es un handicap, ni mucho menos. La creatividad y calidad de los juegos españoles es en muchos casos de admiración en el resto de Europa, Estados Unidos y Japón. Como siempre, el problema es de tipo económico. Pero, más allá de los costes, que desde luego son altos, hemos de hacer un ejercicio de seriedad, y empezar a crear verdadera competencia con otras empresas europeas y americanas. Actualmente, se ha demostrado que con no demasiado dinero y muchas ganas, se pueden crear joyas de gran calidad. Lejos de creer que la programación es un misterio insondable, la verdad es que es un reto tan complejo como cualquier otro; no se requieren dotes especiales, ni se ha de ser un genio para poder llevar a cabo un proyecto. Eso sí: el trabajo, y sobre todo la constancia, son la clave del éxito. Por no mencionar que no se debe rendir nadie ante el primer fracaso, que a buen seguro llegará si se persevera. Para ello, es importante concienciar a aquellos que desean invertir y pueden actuar como fuentes de capital, que este tipo de negocio puede ser rentable, siempre y cuando no se quieran ver beneficios en un corto plazo, mal endémico en este país, en el que por cada peseta invertida se quiere ver un beneficio al día siguiente, lo cual impide que proyectos a medio y largo plazo puedan ver la luz. De este modo, podrán crearse equipos de trabajo que permitan desarrollos en videojuegos que compitan de tú a tú con cualquier empresa. A veces, se tiene la impresión de una inferioridad totalmente injustificada. Es probable que los edificios de desarrollo no tengan el aspecto de palacios, como ocurre con algunos lugares de desarrollo americanos (véase el edificio de EA Sports en Canadá por ejemplo). Esto no debe importar nada en absoluto. Un garaje puede bastar. Lo importante es saber usar los medios de forma correcta, con ambición, y sabiendo administrar de forma correcta los recursos de los que se dispongan. Añádase un duro trabajo y una cantidad de tiempo razonable, y se obtendrán resultados que harán palidecer a equipos diez veces más grandes. Afortunadamente, este proceso ha comenzado en este país, y ya se comienzan a ver resultados espectaculares.
Hola amigos este es mi primer InfoBlog acerca de los métodos para espiar Whatsapp los métodos que sirven y los que no espero que le sea útil la información Abajo les dejare el vídeo link: https://www.youtube.com/watch?v=j6uubwxDFvw
Hola amigos un saludo a todos!.. Estuve buscando en Internet como aumentar la velocidad de descargar pero no encontré una forma así que decidí ver que pasa haciendo una prueba con el Cheat Engine y funciono mejor de lo que yo esperaba solo sigan los pasos del vídeo y todo saldrá bien. link: https://www.youtube.com/watch?v=TDoCJz28b9c

Un saludo a todas la personas que ven este video, aqui les muestro Como quitarle la contraseña a una pc con Windows 7 a la que no tengan acceso los pasos a seguir son muy faciles, no necesitaran ningun programa , Memoria usb o CD. Cualquier duda comentarla porfavor. Si te funciono no olviden suscribirse!! y apoyarme con un Like.. link: https://www.youtube.com/watch?v=z0mjt7lZx48