miércoles 20 de julio de 2011

Diseño Iterativo

En el diseño de videojuegos no hay manera de saber si una idea va a ser divertida o no, ya que lo que percibimos como diversión es algo muy particular de cada uno.

Para resolver este problema existe un método llamado Diseño Iterativo que consiste en ir agregando nuevas ideas de manera progresiva y preguntando a los jugadores que les pareció.

El proceso de diseño iterativo

Iteracion 1: Idea -> Prototipo -> Prueba -> Retroalimentación
Iteracion 2: Idea -> Prototipo -> Prueba -> Retroalimentación
Iteracion 3: Idea -> Prototipo -> Prueba -> Retroalimentación
Iteracion 4: Idea -> Prototipo -> Prueba -> Retroalimentación
Iteración ...

Idea: Las ideas por lo general son preguntas como ¿que tal si ahora el personaje salta? o ¿y si le agregamos un laser? Lo importante es ir agregando pequeñas ideas y no atarnos a ellas.

Prototipo:
Existen prototipos físicos y prototipos en software.

Prototipos Físicos
Usando papel, lápiz, legos, piezas de otros juegos existentes. Estos prototipos sirven para aclarar ideas o comunicarlas.

Prototipos de Software
Se pueden crear en herramientas como Unity3D, Gamemaker o haciendo un MOD (modificación) de un juego conocido.

Prueba:
Al principio del proyecto se pueden hacer las pruebas con las mismas personas del equipo de trabajo, pero según el juego toma forma, conviene hacer las pruebas con personas que pertenezcan al público objetivo, es decir, que tengan algunas características del público al cual va enfocado el juego.

Retroalimentación:
En esta etapa se le pregunta a los testers ¿que les pareció el juego hasta ahora?, ¿se divirtieron? ¿se aburrieron?, ¿fué fácil?, ¿difícil?, ¿que les gustó?, ¿que no les gustó?

Este proceso se lleva en la etapa de pre-producción, la cual termina cuando se han encontrado los aspectos más divertidos del nuevo juego.

lunes 22 de febrero de 2010

Entytec busca artista para su nuevo juego.


Estamos en las etapas finales del desarrollo de un juego tipo Breakout y estamos buscando a un artista gráfico que trabaje con nosotros.

Por eso queremos que nos envíes una propuesta original para saber si tu estilo es el adecuado para nuestro proyecto.

En este link verás una imagen con distintos ejemplos de juegos similares. http://www.entytec.com/EntytecGames/Bricks.jpg

Si estás interesado, envía tu propuesta a los correos marco_tmp.no_spam@hotmail.com y joelmejiaganan.no_spam@mac.com

Nota: Cuando copies los emails asegúrate de borrar el texto ".no_spam".

Entytec busca artista para su nuevo juego

sábado 12 de diciembre de 2009

Programación de juegos con componentes

He estado leyendo algunos artículos sobre programación de juegos utilizando componentes y vaya que me he quedado entusiasmado.

Motores de juego como el Unity, TorqueX, Nebula 3 o el Cryengine, permiten crear objetos desde el GUI combinando componentes, lo cual reduce mucho la dependencia a la programación y además se adapta mejor al diseño iterativo de los juegos.

Esto se logra, en vez de utilizando jerarquía de clases, utilizando composición.

En este video se explica con más detalles:



También hay buena explicación en este artículo.
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/

A este tipo de desarrollo se le conoce como data driven, ya que todos los objetos del juego se pueden crear leyendo la información desde archivos.

Por ejemplo, para crear al player:

<Entity name="Player">
<component name="Mesh" file="player.md5"/>
<component name="Position" x="0" y="0" z="0"/>
<component name="Renderer"/>
<component name="PhysicBody"/>
<component name="PlayerController" camera="follow"/>
</Entity>


Luego de ver esto y analizar el código de push button engine se me ocurrió la idea de crear una sencilla libreria para el lenguaje C++ (creanme que la he buscado pero no encuentro ninguna por ahí) que maneje entities. La idea es la siguiente:



Como ven en la imágen anterior, tendríamos las siguientes clases: (pseudocódigo)


class CEntityManager
{
List<CEntity> EntityList;
bool createEntity(char* name);
CEntity getEntityByName(char* name);
}

class CEntity
{
List<CComponent> ComponentList;
bool addComponent(CComponent);
}

class CComponent: public IUpdate
{
//ocurre cuando el componente es agregado al entity
void onAdd()
{
UpdateManager.add(this);
}
void onUpdate(){}
}

class CUpdateManager
{
List<IUpdate> componentList;
void onUpdate()
{
component = componentList.getFirst();
while (component != null)
{
obj.onUpdate();
component = componentList.next();
}
}
}


Estamos hablando de que a esta libraría se le pueden crear componentes de cualquiera de las librerias utilizadas actualmente.

Render3D: Ogre3D / Irrlicht / DirectX / OpenGL
Physic: Physx / Newton GD / Havok / Bullet / etc...
Sound: IrrKlang / FMOD / OpenAL
AI: OpenSteer / FSM
...


Si alguien está interesado en esta libraría o si desea ayudar, puede contactarme a marco_tmp.nospam@hotmail.com. Claro, debes quitarle el .nospam. ;)

viernes 5 de junio de 2009

Proyecto Natal Milo, Persojane 3D Interactivo

Peter Molyneaux nos enseña Milo, el cual usa el proyecto Natal para una interacción sorprendente con un personaje 3D.

lunes 8 de septiembre de 2008

StarUML

Hola amigos, hace un tiempo habia publicado el link a una aplicación muy básica (UML Pad) que te permite crear diagramas UML cuando necesites salir del paso.

Aquí les envio el link a StarUML, que es una aplicación para crear diagramas UML bastante completa. Una de las ventajas de esta aplicación es que luego de crear el diagrama tienes la opción de crear el pseudocódigo.



Link

lunes 9 de junio de 2008

Libro Online: The Cg Tutorial

Los shaders se utilizan para crear los efectos especiales que ves en los juegos modernos. Si quieres iniciarte en el mundo de los Shaders, te recomiendo el libro The Cg Tutorial. Este libro da una introducción a los Shaders utilizando el lenguaje Cg (C for graphics)


Puedes leer el libro aquí