miércoles, 27 de junio de 2012

Programación: Características de la Programación Orientada a Objetos.

Como ya dije hace unos dias hay algunas cosillas que tenia que explicar de POO que, si entendemos nos van a ayudar a hacer nuestros programas más eficientes y a picar código de forma más rápida.

Abstracción, Encapsulamiento, Modularidad, Herencia y Polimorfismo.

Son estas las características que voy a tratar de explicar (lo mejor que pueda).

Abstracción

Cuando vamos a aplicar la POO, intentamos usar la norma de "Divide y Vencerás". Es decir, lo que hacemos es dividir nuestro código en grupos más pequeños que, al unirlos, realizarán la tarea más compleja que buscabamos desde el principio. Básicamente es esto: la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma más simple.

Encapsulamiento

El hecho de tener una clase nave, con un código en el que hay definidos unos atributos y unos métodos y poder pasarsela a otro programador para que pueda usarla sin saber como esta hecho ese código es el Encapsulamiento. No nos interesa como se ha hecho, si no que ya esta la clase lista y puede usarse sin conocer su funcionamiento interno. Es como si encerraramos todo en una cajita y no viesemos lo que contiene pero, a pesar de esto, pudiesemos hacerlo funcionar.

Herencia

Para mí la más importante y, se trata de la capacidad que tienen las clases y objetos de tener descendencia. ¿Y que es esto de la descendencia? Pues que si nuestra clase tiene unos atributos y metodos, la clase hija de esta podrá heredar estos mismos e incorporar también los suyos propios, evitando tener que escribir varias veces el mismo código. Además esta clase hija podrá tener descendientes creandose una jerarquia de hijos, nietos, etc.

Por ejemplo: Tenemos la clase nave que tiene un atributo que le da el color y la podemos usar para crear una clase nave_protagonista, que ya tendrá el atributo color de la clase padre y podemos añadirle otras caracteristicas como podrían ser velocidad (que no tendría la clase nave pero si la nave_protagonista).

Modularidad

Se trata de la capacidad de organizar el código para no tener que repetir mil veces las mismas acciones. Si nuestra clase tiene una acción para hacer que la nave dispare, podemos usar ese mismo código llamandolo desde distintas partes de nuestro programa para que se dispare sin tener que escribir varias veces el código que indica como se dispara.

Polimormismo

Se trata de que comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre. Esto se suele conseguir con métodos que tienen el mismo nombre pero reciben distintos parámetros cuando son llamados (y que se denominan métodos sobrecargados).


¿Un poco complicado verdad? Pero cuando te vas encontrando con las diferentes situaciones según aprendes a programar, se entiende un poquito mejor cada cosa, o al menos la idea de su funcionalidad. Con el tiempo, el programador se estará beneficiando de todas estas características para hacer más rápido y eficiente su trabajo. Poco a poco, que uno se explica lo mejor que puede y no es facil :P

sábado, 23 de junio de 2012

Alargando la vida de nuestro juego

Recupero un artículo que escribí hace años sobre añadidos que podemos incluir en nuestros juegos para que los usuarios sientan que la compra ha merecido la pena. Debemos evitar que piensen que ha sido demasiado el dinero pagado para el poco tiempo que les ha entretenido el producto. Dejemoslos por lo tanto impresionados, pero también encantados de volver a comprar algo que pertenezca a nuestra marca.

Si alguna vez has preguntado a algún amigo que es lo que, según su opinión, hace que un juego sea bueno, seguramente la única respuesta que hayas obtenido por su parte sea encogimiento de hombros y cara de duda. Quizá tu mismo/a hayas pensado en los gráficos o la jugabilidad. Como desarrollador te preguntaras como conseguir que tu juego sea de los mejores. Pues bien, he aquí algunos consejos que te ayudaran a escoger algunos elementos que puedes incluir en tu producto para convertirlo en algo atractivo para el usuario.

Durabilidad

Este es uno de los aspectos más importantes a tener en cuenta, ya que, si alguien gasta un pastón (que vendrá muy bien en nuestros bolsillos) en nuestro juego, este esperará que le entretenga el suficiente tiempo hasta amortizar su compra. Si como jugador acabas un juego a los dos días lo mas probable es que lo guardes en tu bonita estantería y no vuelvas a jugar con el hasta que te entre la nostalgia de los viejos tiempos (o que te vayas a una tienda y lo vendas para ampliar su catalogo de segunda mano). Sin embargo, conseguir esa durabilidad resulta más fácil de lo que parece a simple vista, pues basta con incorporar un buen modo multijugador o al menos un modo para dos jugadores. Seguramente tu mismo como jugador lo sepas bien. No importa lo genial que pueda ser la Inteligencia Artificial de los enemigos, lo que más nos emociona es enfrentarnos a alguien de nuestra misma especie, ya sea nuestro vecino, nuestro amigo, nuestra pareja o nuestro hermano. ¡Jodete que te gano siempre!

Lo que marcan las modas

Ya os habréis dado cuenta de la propensión que tenemos los diseñadores y desarrolladores de apuntarnos a las modas y copiarnos unos a otros descaradamente. Hacer Remakes de juegos del pasado o tomar la jugabilidad o estilo de otros productos que salieron anteriormente al mercado. En realidad, esto no es malo, en cierto modo es lo que hay que hacer, utilizar lo que conocemos para conseguir un buen juego. Sin embargo, lo que hará que nuestro juego marque la diferencia con respecto a los otros es que sea capaz de mejorar espectacularmente lo utilizado, o aun mejor, cambiarlo por completo y crear algo nuevo y desconocido. Crear incluso un nuevo genero que no exista en el mercado actual sería sin duda lo mejor que podríamos conseguir.

La parte gráfica

La parte gráfica de un juego es actualmente muuuuuuuuuuuy importante pues es el primer contacto que tiene el usuario con el juego. Los estímulos le llegan a través de la pantalla gracias a los gráficos y son estos los que le hacen responder. Por eso, contra más atractivos resulten, más conseguirán meter al usuario dentro del juego. Sin embargo, deberiamos distinguir entre la calidad artística y la calidad gráfica. Un título con gráficos realistas y genialmente conseguidos siempre va a perder ante uno artísticamente original e imaginativo, sencillamente por que es más facil copiar la realidad que inventar nuestro propio mundo. Podemos ser todo lo realistas que queramos, pero sumemos un poco de nuestra imaginación para conseguir un mejor ambiente e inmersión en el juego. Si lo hacemos bien seguro que conseguimos impresionar a nuestro comprador.

Buscar que el jugador se “meta” por completo en la aventura

Una vez le quitaron la consola a mi primo por que mientras jugaba a su 3D subjetivo favorito su madre le vio con cara de asesino y se asustó. Esto es algo muy importante en un juego, el grado de cuelgue que puede producir en el usuario, es decir, ser capaz de introducirle dentro de él y hacerle olvidar que esta jugando. Lo que ocurre en la pantalla nos absorbe por completo cuando un juego es realmente bueno, y nos levantamos de la silla aturdidos después de haber estado jugando durante horas. El juego ha conseguido su objetivo, entretenernos y hacernos olvidar lo que nos rodea.





¿Entonces como hago que mi juego sea bueno?

Pues sabiendo tomar en su justa proporción una serie de elementos que son:

A) Gráficos

Son el medio de comunicación entre el juego y el jugador. Son lo más importante de nuestra creación, pero solo si van acompañados del buen manejo del resto de elementos que componen el juego resultaran útiles. Estos animan al jugador a cumplir sus objetivos en el juego y al mismo tiempo a probar cosas nuevas.

Hacer lo que me venga en gana

No podemos conseguir un espacio de juego infinito ni convertir al jugador en un Dios capaz de hacer cualquier acción que desee dentro del mismo, pero nuestra misión será darle cuantas mas acciones mejor dentro de nuestro limitado escenario. Esto se consigue permitiendo al usuario interactuar con la mayor parte posible de elementos del juego (nunca viene mal por ejemplo en un 3D subjetivo las típicas estatuas que reventar a cañonazos). La mayoría de los juegos del mercado tienen un trayecto preestablecido (como los de carreras de coches) o una historia que se sigue de forma lineal, pero contra más consigan hacer olvidar al jugador que tiene limitaciones mejores son.

Es que ahora lo que se llevan son los gráficos en 3D

Pues eso no es tan cierto como parece, el que los remakes y los emuladores de antiguas maquinas de entretenimiento tengan tanto éxito nos hace ver que las 2D todavía agradan bastante a los usuarios, si bien es cierto que en muchisimas ocasiones los gráficos 2D suelen ser gráficos prerenderizados, algunos jugadores prefieren las 2D para cierto genero de videojuegos como los de naves, aventura gráfica o plataformas.

Algunos detalles más

Espero que quede clara la importancia de los gráficos en un videojuego y por supuesto no hace falta comentar la importancia de que estos se muevan de forma fluida. En mi opinión la clave para crear un juego atractivo radica en los detalles y el saber utilizar la simpatía o realismo en los gráficos según el tipo de juego lo requiera.



B) Sonido

La importancia de una buena banda sonora y de unos efectos de sonido impactantes no ha de ser menospreciada, pues estos pueden conseguir que un escenario pobre y sin vida mejore o por el contrario empeore un gran escenario lleno de detalles.

¿Que aporta el sonido a tu juego para que sea tan importante?

Atmósfera, ambientación, y todavía más en la actualidad. El sonido y la música acompañan a los gráficos y tienen que ir en armonía con el juego y cambiar con este. En un título, para que parezca que realmente nuestro personaje esta pisando hierva el sonido debe ser el de alguien que pisa sobre hierva. Al mismo tiempo la música bien hecha da un pequeño empujón al jugador para que se meta dentro del juego, esta le avisa de que algo va a suceder, le indica que todo esta en calma, que se encuentra en otro mundo, volando o buceando, y por ello es realmente importante que sea buena y adecuada (sobre todo adecuada).

Otra cosa que puede hacer la música por el usuario es hacer más cortas las esperas de carga del juego

C) Tecnología

Actualmente la originalidad que ponemos los desarrolladores para crear un juego es poca y por eso siempre será bienvenida por el usuario. Habitualmente todos nos centramos en crear un juego a partir de un género que ya existe y que nació con un primer juego que no entraba en ninguno de los que ya existían. Lo ideal sería crear un nuevo género, pero todos sabemos que eso es bastante complicado por lo que no es malo que nos apuntemos a las modas. Sin embargo, en nuestro juego debemos intentar aportar un toque original para que no sea lo mismo de siempre e impresione al jugador. Un buen modo de conseguir esto es mezclando géneros enfrentandonos al reto de hacerlos compatibles (ya que no todos lo son).

¿Y respecto al aprovechamiento del hardware?

Pues me parece que no hace falta comentar esto. El aprovechamiento del hardware debe ser el mejor que se pueda conseguir y actualmente tenemos bastantes herramientas que facilitan esta tarea dentro de los motores que usaremos para nuestros desarrollos. Tratemos de mantener el framerate constante y, si estamos haciendo algo polígonal, y nos queda un poco más “cuadrado”, es preferible a que quede perfecto pero la imagen pegue tirones o vaya demasiado lenta.

D) Durabilidad

Ya comente al principio lo importante que es la durabilidad pero no me he metido mucho en cuales son las formas para conseguir esa durabilidad. Solo he dicho hasta ahora que un buen modo multijugador o al menos un modo para dos jugadores puede conseguir que aumente la vida de nuestro proyecto, pero hay otras maneras de conseguir esa “extensión en la vida del juego” como pueden ser los premios. Cuando el jugador termina el juego puede querer seguir jugando si le damos cosas nuevas con las que jugar, como en el caso de un juego de carreras de coches pueden ser nuevos circuitos o nuevos coches que estaban ocultos.

Otra forma de conseguir que nuestro juego divierta al usuario durante más tiempo es crear en el varios objetivos que se puedan realizar en el orden que elija. Por ejemplo: podemos crear un plataformas 3D en el que haya que recoger unas velitas para acabar el juego, pero que al mismo tiempo se pueda terminar este pasando las pantallas de forma habitual, acabándolas. De este modo, cuando el jugador acabe el juego puede entretenerse en empezar de nuevo y ponerse a buscar las velitas que se había dejado para ver un nuevo final. (Lo de las velitas es solo un ejemplo, puede ser cualquier cosa).

Y bueno, creo que ya esta todo lo que debía decir. Seguramente me habré dejado muchas cosas pero ahora no recuerdo cuales son. Espero que esta mini-guía os sirva de ayuda para crear un gran juego.

Que os vaya bien y mucha suerte con vuestros trabajos.

miércoles, 20 de junio de 2012

Indie Games: The Movie (y algunas reflexiones)

Por fin pude hacerme con la película y verla después de tanto tiempo esperando y temiendome que, tal vez, se iba a quedar sin pasar por el continente Europeo (y menos por España). Gracias a Steam, Itunes y la propia Web del film, sin embargo, se puede conseguir.


Indie Games: The Movie se centra sobretodo en lo lacrimogeno y dificil de ser desarrollador Independiente, dejando una parte muy pequeña de la historia a lo “tecnico”, y es que empezamos viendo como funcionan las ventas a través de descarga digital, prototipos, bocetos y diseños de juegos como Braid, Super Meat Boy y FEZ (En los que se centra la película), pero pronto vemos que, para que pueda ser entendida por todos los públicos y no solo diseñadores de juegos, se habla mucho de soledad, sacrificios, falta de dinero, problemas… y las lágrimas invaden a menudo los ojos de cada uno de los protagonistas.

Se cuenta la infancia de los desarrolladores, quedando esta parte bastante graciosa y entretenida y consiguiendo que muchos nos sintamos identificados, (en mi caso con eso y practicamente todo lo demás), y es que hablamos de personas que sienten que el videojuego es una forma de expresión a un nivel superior gracias a su interactividad. Desarrolla tu historia y deja que otros se introduzcan y vivan en ella y conozcan a sus personajes, refleja tu propio ser interior en tu proyecto y, al mismo tiempo, consigue que se diviertan. No se piensa en competir con las empresas enormes o hacerse rico, solo en crear lo que a uno le apetece y conseguir suficiente dinero para vivir cómodamente el tiempo necesario para crear otro título que te permita seguir haciendo nuevos proyectos. Esa es, y ha sido siempre mi propía forma de pensar, aunque no descarte trabajar en una empresa grande siendo parte de un equipo enorme o, en una pequeña empresa de unos 30 trabajadores, situación esta última que me apetece bastante más que la primera.

(Como curiosidad os aconsejo ver los juegos que aparecen durante los créditos del final).





Reflexiones después de ver la peli

Hay que invertir tiempo en preproducción y hacer prototipos para comprobar que todo funciona y es divertido.

Los protas lo hacen y les ha funcionado y, además se han divertido jugando a un proyecto que se parece al final en mecánicas de juego, pero tiene muñecos feos en lugar de los gráficos definitivos. Todo se planea, se cuida al detalle y se prueba mil veces.

Todos los creadores de la peli han hecho cosillas en Flash.

Puede que no vaya por mal camino después de todo, por que una buena forma de aprender es haciendo muchos juegos pequeños para desarrollar las habilidades ténicas que necesitaras para proyectos mucho mayores. Además, terminar un juego, aunque sea pequeño, es satisfactorio y una pequeña meta hacia el camino final.

Esperar el momento adecuado para hacer tu gran juego. 

Ese proyecto que todos guardamos en un cajón para desarrollarlo cuando seamos lo suficientemente sabios. Cuando estemos preparados. En mi caso también me ha hecho plantearme cual debería ser ese proyecto si pienso como usuario que va a disfrutarlo. Mis referencias son juegos como Paper Mario, Zelda, Metroid Prime o Monkey Island, que tienen en común el ser del tipo “Relajate y huele las flores”, con momentos de batalla o de tensión, pero dejando las suficientes pausas para descubrir, explorar y disfrutar del mundo y de sus habitantes. Dejame en paz si quiero invertir 300 horas en pasarme un juego de 30. Quiero ver cada detalle y descubrir todos los secretos, leer o escuchar toda la historia y reflexionar sobre ella, enfrentarme al malo cuando esté listo e incluso seguir jugando cuando se haya resuelto la trama y haya paz. Por todo esto, creo que me encantaría FEZ si lo jugara y considero que tal vez este debería ser el tipo de proyecto que deba hacer algún día, aunque me lleve 4 o 5 años.

Si lo sigues intentando tal vez consigas el éxito.

Por eso debo seguir con los proyectos y el Blog. Con el tiempo quizá pueda dedicarme a esto o sacar a la venta a un juego que interese a un buen número de personas.

(Relacionado con lo anterior) Algunos preferimos ser anónimos y que se nos reconozca por nuestro trabajo y no por nuestro nombre.

Lo viví una vez cuando, chateando me encontré con un tipo que no conocía mi nombre ni le interesaba, pero que si conocía Nowadays, aquel juego que me publicaron en la revista Divmanía y además le gustaba. Fue una sensación muy agradable que alguien disfrute del trabajo que te costó tanto crear. (Aunque siempre hay críticas y hay que aceptarlas si son útiles y constructivas).

Si a un juego le quitas la interactividad pierde la mágia que lo diferencia del cine o la literatura.

Y no digo que sean mejores o peores los videojuegos que el cine o los libros, pero me mantengo cuando digo que son formas de expresión muy diferentes y que la interactividad no debería perderse nunca por que es lo especial de este medio. El avance hacia más videos, mejores gráficos y menos control para el jugador no beneficia a la industría y debe frenar en algún momento.

No se venderme y hace falta comer para seguir con vida…

Me encantaría (como a muchos desarrolladores) poder dedicarme a crear y olvidarme de ventas. Sería genial poder hacer un juego, subirlo a Internet y que muchisima gente pueda jugarlo gratis y que a mi me llegara dinero mágicamente (a través de publicidad o algo así) con el que poder vivir de esto haciendo más y más títulos. Pero hay que vivir en el mundo real, así que tarde o temprano tendre que enfrentarme a la parte économica, que viviendo debajo de un puente no tendré donde enchufar el ordenador. u_u

Es emocionante ver a la gente jugar con tu juego

Envidia sana he sentido al ver a la gente sonreir al jugar a alguno de los desarrollos Indie de la película, enfadarse por su dificultad o emocionarse con su gameplay, por que son esas caras las que quiero ver en los usuarios que jueguen con lo que pretendo crear en el futuro.

Es emotivo recordar tus creaciones por pequeñas, simples o estúpidas que sean.

Por eso quiero tenerlas en el Blog o bien guardadas, aunque a veces el código lo saque de un libro y solo haya cambiado 4 cositas o la parte gráfica; o haya sido un juego con muchos bugs o muy corto. ¡A mi me entretiene y me emociona verlo! Por que es mi creación y he invertido mi ilusión en ella.

Muchas personas no entenderan lo que se siente.

Se ve en la película y en la vida diaria. Muchas personas consideran los videojuegos un juguete o piensan que desarrollarlos es pan comido y basta con ser un friky que dedica su vida al mando de la consola. Otros sabemos que es muy distinto a eso y que se trata de crear algo que “esta vivo”, que es un mundo completo diseñado por tí y que van a disfrutar (muchas, si se puede) otras personas.

Hay que invertir mucho tiempo y esfuerzo.

Cuesta años de trabajo intenso y de jugar siempre a lo mismo que además conocemos hasta a un nivel muy interno. Podemos cansarnos, pero hay que seguir adelante y centrarnos en nuestro actual proyecto sin perder las ganas hasta terminarlo.

(Hay gente que habla incluso del vacio que se siente cuando estas acostumbrado a estar pillado con un proyecto durante años y verse sin nada que hacer cuando se acaba)

Cuando todo esta terminado, esperar los resultados de tu trabajo debe dar mucho miedo.

Solo imaginarse a una persona pulsando el botón start por primera vez para empezar a jugar con tu producto y estar ahí delante esperando su reacción pensando en todo lo que querías haber incluido y no te ha dado tiempo o lo que crees que podía ser mejorable pero no pudiste solucionar… Esperar que todo eso no afecte y que a pesar de todo guste y entretenga por que te lo has currado para ello… ¡Da mucho miedo!

En mi país aun no se valora lo suficiente esta forma de cultura.

No hay estudios oficiales (ni planes para hacerlos), no hay ayudas, crear una empresa dedicada a esta industría es dificil y se necesita dinero para entrar en el negocio (por que estar varios años sin ingresar nada, trabajando en un juego, requiere un gran esfuerzo ecónomico), no se reconoce el merito de creadores, los salarios no son comparables a los de otros paises… En fin, hay muchas cosas que necesitan ser corregidas, aunque poco a poco parece que van cambiando.

lunes, 18 de junio de 2012

Jugando Online: MartianChase

Estoy recopilando todos los “proyectos” que tengo hechos que se puedan jugar online, primero para tenerlos en algún sitio donde se puedan mostrar, y segundo para echarme unas partiditas rápidas si estoy fuera de casa y me aburro. Así, gracias a un libro bastante antiguo sobre Flash Mx en el que se programaba con ActionScript 2, hice un pequeño juego de esos de escapar de la fase antes de que te atrapen los monstruos, cuyo secreto está en atraparlos contra los muros para poder avanzar sin que se muevan, y aquí lo pongo para que se pueda jugar online mientras sigo avanzando otros proyectos algo más elaborados y complicados.

Tener juegos Flash para mostrarlos a través de una página Web es una forma interesante de promocionarse y demostrar que haces trábajos. No muestras imágenes o videos, si no pequeños juegos donde demuestras tu interés por la industría.

Ahora hay que tener paciencia que pronto iré poniendo más juegos cuando los tenga terminados al 100%.

sábado, 16 de junio de 2012

Técnicas de guión aplicadas a videojuegos: El Catalizador.

Un catalizador es un elemento que accelera una acción o una reacción y consigue en muchos casos que, cuando nuestra historia empiece a hacerse muy larga y aburrida, se “desatasque”. Puede ser un objeto, un personaje, una situación…

En las historias videojueguiles que, admitamoslo, durante mucho tiempo practicamente se olvidaron de la figura de la mujer, eran estas las que se usaban casi siempre como catalizadores: Un ejemplo sería esa aventura de la princesa y su salvador, que no se resuelve hasta que ella empieza a estar realmente en peligro y el protagonista tiene que darse prisa. Hay un punto en el que el personaje debe actuar o será tarde, tiene que poner todo su empeño, resolver el misterio como sea y llegar hasta su amada o morirá. ¡Es ahora o nunca!

Algo que también es habitual usar como catalizador es la venganza. Pongamos un ejemplo: Un detective se enfrenta a la resolución de un caso en el que un asesino en serie le reta a detenerle. Parece que se está saliendo con la suya y los crímenes se suceden uno tras otros sin que el detective pueda acercarse a la verdad más que un poquito cada vez. De pronto, el asesino lleva el juego del gato y el ratón con su perseguidor demasiado lejos y acaba con su compañero y amigo de toda la vida. El deseo de venganza  hace que el protagonista busque huellas en cada milímetro de la escena del crimen, analice cada rastro de ADN y su adrenalina le cargue las pilas al máximo para acabar con el asesino… ¡lo antes posible! Tiene que encontrarlo ya y acabar con el sufrimiento que le invade, por eso, toda la historía es ahora más rápida, más intensa y se encamina hacia el final.

 

¿Cómo usamos esto en videojuegos?

Es facil pensar en catalizadores en el mundo de los videojuegos, incluso aunque estén relacionados con el gameplay en lugar de con la historia, pero debemos tener en cuenta la curva de dificultad, por que si hacemos que el juego se vuelva rápido, intenso y dificil cuando el usuario aun está aprendiendo a jugar, le frustraremos, ya que no podrá seguir el ritmo. Debemos respetar los tiempos y medir bien cuando acelerar la acción. ¡El primer combate con un enemigo de final de fase no puede ser tan intenso como el combate con el Final Boss!

Un ejemplo de catalizador en lo referido al gameplay puede ser una cuenta atrás. Hay una bomba y el edificio va a explotar, asi que el jugador debe derrotar a todos los enemigos y salir cuanto antes de allí. Su corazón se acelera y mide cada golpe que deba ejecutar para acabar pronto con los malos… por que si no, le tocará volver a empezar desde el principio del nivel.

Como siempre uso ejemplos muy típicos. No os voy a dar las mejores ideas, tendreis que pensar vosotros mismos lo mejor para el guión de vuestro proyecto. Así que adelante, ¡a mejorar vuestras historias!

martes, 12 de junio de 2012

Programando XI – Conceptos de POO

Antes de continuar programando, ya sea en Unity o ActionScript (aun no lo he decidido) tenemos que dejar claras unas cuantas cosas en forma de teoria que tienen que ver con la Programación Orientada a Objetos (POO). 

En la POO hay clases y objetos. Una clase es como un molde que usaremos para crear los objetos. Pensar por ejemplo en el molde de un pastel, con el cual podeis hacer muuuuchos pasteles, que serían los objetos. Así, nuestro “molde” o clase, tiene unas caracteristicas (en forma de variables o atributos) y en el caso de programación puede realizar unas acciones (a través de metodos). Veamos un ejemplo:

Tenemos una clase Nave, cuyos atributos son: color, velocidad, posicionX y posicionY (variables que pertenecerán a la clase) y cuyas acciones son: disparar y cargarMagia (métodos que también pertenecen a la clase). Con esto tenemos el molde y gracias esto podemos crear un monton de naves u “objetos” indicandole tan solo los valores que debe tener cada atributo (distinto para cada nave que creemos) y cada una podrá ejecutar las acciones disparar o cargarMagia cuando le sea necesario sin afectar a las demás.

Por lo tanto vemos que un objeto, en el caso de los videojuegos, son prácticamente todos los elementos de la pantalla. Una nave es un objeto, el protagonista también, el tablero de juego, etc.

Veamos una definición más elaborada:

Una clase representa una entidad que tiene un estado interno y un comportamiento característico, mientras que un objeto es cualquier individuo de una ocurrencia de esa clase. El estado de un objeto es un conjunto de parámetros con los valores concretos que lo caracterizan y que reciben el nombre de atributos. Por otro lado las acciones son funciones dentro del objeto y serán conocidas como métodos (o acciones).

Características de la POO

Abstracción, Encapsulamiento, Modularidad, Herencia y Polimorfismo.

 Es un poco dificil explicar cada una, por eso lo haré más adelante cuando me lo prepare un poco (espero saber explicarlo más o menos), pero digamos que hay muchas ventajas en esta forma de programación, sobretodo para videojuegos y para trabajar en equipos de programación con varias personas al mismo tiempo.

domingo, 10 de junio de 2012

Despues del E3 2012

Ya ha pasado el E3 y lo he seguido como cada año, aunque no lo haya comentado en el Blog, también como hacía cada año. El caso es que además de los problemillas que nos dan las malas noticias en los periodicos de mi país (a los que también hay que prestar atención) también estan los estudios y visitas familiares a las que tiene que atender uno.

Después de ver las 3 conferencias de Nintendo de este año (una antes del E3, otra durante, y otra después), la de Microsoft, Sony, Ubisoft, EA y Konami (también pre-E3), he estado reflexionando sobre lo que nos interesa a los que desarrollaremos juegos en los próximos años, los puestos de trabajo que van a aparecer en la industría con los nuevos avances.


Las conferencias nos dejaron ver pocas cosas interesantes: casi todo fueron nuevos juegos con la misma jugabilidad de siempre, aunque destacaría en la conferencia de Ubisoft el videojuego Watch Dogs que pareció darle una vuelta al genero de las historias con mundo abierto, aunque sin salirse de las modas actuales de meter Cut Scenes cada 5 minutos. Por otro lado cualquier juego tendrá más jugabilidad que lo que suele desarrollar Quantic Dream o que el nuevo Tomb Raider, alias “quiero ser Uncharted pero con mejores gráficos”. Destacaría también el buen trabajo que estan haciendo los españoles de MercurySteam para Konami con la saga de Castlevania, por que es un placer tener una compañía como esta por estas tierras y gente con tanto talento trabajando en ella.

 


Hablemos también de los nuevos juguetes, y es que Wii U se ha presentado de forma oficial, ya con juegos desarrollados para ella, como Zombie U, al contrario de lo visto el año pasado donde se nos mostró la consola pero nada que funcionara para ella. Microsoft se ha apuntado a la moda de Nintendo y Sony de los juegos a dos pantallas (Sony lo logra con la combinación PS Vita+PS3), para ello han inventado Smartglass, o dicho de otra forma, la capacidad de usar cualquier Smartphone o tablet que tengas por casa para obtener información del juego que tienes en tu Xbox (mapas, información de armas, etc.)

¿Qué conclusiones saca un desarrollador como yo del E3 2012?


Van a hacer falta muchos diseñadores de interfaces. Por que tanto en Wii U, PS3, como en Xbox, se van a usar segundas pantallas para dar información extra del juego y así añadir contenido. Realmente la gran N, bajo mi punto de vista, ha vuelto a marcar el camino, le salga mejor o peor la jugada. Es lo que van a hacer todas, parecerse a Wii U. De momento esta máquina tiene las de ganar por que además, tiene nuevas funcionalidades. Sin embargo, tiene en su contra que no esta recibiendo de momento el apoyo que esperabamos todos de las compañías creadoras de juegos y además, habrá que ver que ocurre cuando salgan las nuevas y megapotentes consolas de la competencia.


Harán falta también grafistas 3D especializados en el ya clásico workflow de que todo parezca High Poly, así que Zbrush a saco y, por supuesto, mejor saber mucho de cómo falsear mundos enormes que luego no lo son tanto, metiendo muchisimos detalles y haciendo que todo parezca real, muy muy real.

Programadores, pero no de motores, por que ya sabemos que motores van a triunfar. Esa Crytek, esa Epic y por supuesto Id Software con sus motores de última tecnología gráfica que se usarán sobretodo para hacer First Person Shooters.

Jugadores dispuestos a jugar lo justo y ver muchos videos. (Me temo).


Muchisimo dinero para hacer los juegos y equipos enormes para generar grán cantidad de contenido. Es tiempo para las empresas enormes, y pronto se van a meter también por completo en la “segunda división” o los juegos de descarga digital. Pero tranquilos, que si no encontrais trabajo en una de estas empresas o pretendeis hacerles la competencia siempre quedará alguna forma de seguir haciendo juegos, aunque sea para movil, Internet o que se yo. El caso es seguir dejandonos llevar por nuestra pasión sea como sea.

viernes, 1 de junio de 2012

Resultados del curso Desarrollo de Aplicaciones Web

Ya va llegando a su fin. Quedan solo algunos examenes y ha pasado el tiempo suficiente como para poder mirar atrás y reflexionar sobre lo que he aprendido. Lo que se puede adaptar al mundo de los videojuegos y lo que no (que también me enriquece si tengo que trabajar en otra cosa). Cosas que se puedan ver y no sean un montón de ejercicios de clase o de lineas de código no hay muchas, por que en este primer curso del Ciclo formativo es como si nos dieran las bases para que el año próximo podamos con todo lo que implique resultados “graficos”.

Programación Orientada a Objetos en Java, Lenguajes para internet, bases de datos, inglés… y para mostrar, algún comic que me permití el lujo de dibujar en una asignatura (y en colaboración con una compañera), alguna web y diagramas de planificación, de los de antes de programar.




Con todo esto me voy preparando para participar en proyectos durante el veranito, o acabar cosillas que se quedaron paradas y, por supuesto, para ver el E3 2012 que esta apunto de empezar, con esas 3 conferencias de las principales compañías (Sony, Nintendo y Microsoft) que me gusta ver cada año para estar al tanto de cómo va a estar la industría y que novedades hay que aprender como desarrollador.

Seguramente se hablaran de nuevas consolas, nuevos juegos y nuevos motores para crearlos. (Y nueva tecnología para hacer gráficos muy bestias).