ABIERTO EL PLAZO DE ACREDITACIONES PARA MADRID GAMES WEEK

Madrid Games Week que tendrá lugar del 1 al 4 de octubre, en IFEMA  ha abierto el plazo de solicitud de acreditaciones para los medios de comunicación.

Si perteneces a un medio profesional y cumples con los requisitos ya puedes solicitar tu acreditación a través de este enlace, rellenando el siguiente formulario completo:

Para prensa, radio y televisión  (incluido online)

Para bloggers y youtubers

Se atenderán todas las solicitudes que lleguen antes del viernes 25 de septiembre.

La 3ª edición de MGW será la más grande, con casi 30.000 m2, con más stands, más puestos de juego, así como un espacio dedicado a las competiciones de e-sports. Los asistentes podrán visitar los espacios de las compañías más importantes del ocio interactivo, acceder en primicia a títulos exclusivos, probar las consolas de última generación y conocer de primera mano las novedades y lanzamientos que más darán que hablar en el mundo del videojuego.

Publicado en Uncategorized | Deja un comentario

Crear un minijuego con MightyEditor y Phaser

De la mano de Guntis nos llega este post invitado de como hacer un minijuego con MightyEditor y Phaser.

 

00_digger

En este artículo, le daré una introducción básica a MightyEditor y al proceso de desarrollo que lo rodea. El tutorial mostrará cómo hacer un prototipo de un minijuego en una hora.

Requisitos

Última versión del buscador de Google Chrome. Puede probar con otros buscadores, pero nosotros no los hemos probado aún.

¿Qué es MightyEditor?

MightyEditor es una solución basada en la nube de código abierta para crear y alojar juegos HTML5. Es compatible con el marco de desarrollo de juegos Phaser, pero también puede usarlo con otras herramientas. Las características del editor son: administración de assets, edición de mapas, editor de código, exportación de datos.

¿Cómo funciona MightyEditor?

El proceso de diseño de usar el editor funciona con los siguientes pasos:

      1. Cree un proyecto
  • Suba assets
  • Arrastre y suelte assets al mapa
  • Agrupe assets en capas, por ej, fondo, bloques…
  • Agregue colisiones y funcionalidad en el editor de código
  • Abra el juego y exporte datos

¿Por qué debo usar MightyEditor?

Tener una herramienta en basada en navegador con toda la funcionalidad básica de edición de mapa y código que le permite enfocarse en un prototipado rápido de juegos. Tan solo con abrir un enlace en el navegador, ya puede empezar. No hay dificultad al instalar y configurar varias soluciones de software y por lo tanto ganar tiempo valioso.

La cooperación con el diseñador, otro miembro del equipo o un cliente es tan sencillo como compartir el enlace con el proyecto. Realmente puede trabajar en equipo, designar a un ilustrador para lidiar con los assets mientras el diseñador de juegos crea diferentes niveles en el editor de mapas y el desarrollador agrega funcionalidad con el código JavaScript.

MightyEditor no requiere que su proyecto dependa de ello. Todos los assets y el código pueden exportarse de una cualquier momento. Y lo que es aún mejor: el editor es de código abierto y los datos pueden moverse a su máquina con la versión local del editor. El código de fuente puede encontrarse en github  https://github.com/TheMightyFingers/mightyeditor.

Idea de mini juegos

En este tutorial, crearemos un minijuego simple llamado Digger. El juego es acerca de un pequeño minero que cava bloques de tierra en busca de oro y vende varios minerales en la tienda. Los cursores se usarán para navegar y se agregará una física simple y colisión al objeto del minero.

Crear un proyecto

Abra el enlace http://mightyeditor.mightyfingers.com. Ingrese el título del proyecto – en este caso será Digger.

 

En el panel inferior derecho, ingrese las dimensiones del juego: worldWidth, worldHeight 640 x 640. Para simplificar, vamos a asignar el tamaño de 640 x 640 al viewportWidth y viewportHeight.

 

Suba los assets del juego

En la siguiente parte del tutorial usaremos activos que pueda descargar aquí. En el panel superior derecho de la lista de selección use la opción subir archivo/upload file y agregue los archivos. En forma alternativa, puede arrastrar y soltar archivos en el panel y los activos se subirán automáticamente.

Cree un mapa

Haga clic en el ícono “sello” en el panel de herramientas de la izquierda y luego seleccione background_sky.png en el panel de assets y luego haga clic en el mapa para crear el fondo (mantenga apretado el botón Ctrl para cambiar a la rejilla). Puede cambiar la posición del fondo seleccionando la flecha del panel de herramientas izquierdo. Para un posicionamiento más preciso, cambie la posición “x,y” en el panel de configuraciones. Luego repita este paso con los siguientes assets: background_city.png, background_hill1.png, background_hill2.png, background_grass.png. Al final todo debe verse como aparece en la siguiente imagen.

Cree un grupo

Creemos un grupo para los objetos de fondo recientemente creados. En la sección del panel derecho Objects de la lista de selección elija Add Group. Cambie el nombre del grupo a bg arrastre objetos a este grupo. Para arrastrar objetos múltiples mantenga apretada la tecla Shift.

Agregue el resto de los gráficos

Creemos 5 hileras de bloques bajo el fondo. Hay cuatro tipos diferentes: roca, suelo, césped, oro. Los bloques oro son coleccionables y no puede cavar rocas. Los objetos tienen que agregarse en el grupo blocks.

Finalmente necesitamos agregar personajes y objetos de tienda. Respecto del asset personajes, la imagen contiene múltiples marcos. Necesitamos definir el ancho y altura del marco en el panel inferior derecho Settings. El tamaño es 90 x 90. Marcos individuales pueden verse en el panel inferior assetPreview. Además, edite anchorX y anchorY. Configúrelos a to 0.5

También puede definir sus propias variables para el objeto. Abra la pestaña userData en el mismo panel y agregue el parámetro gold con el valor 0;

Seleccione el ícono texto en el panel de herramientas izquierdo y ponga objeto texto en la esquina superior derecha del mapa. Escriba “0” como texto que representará puntos. Cambie el nombre del objeto texto en el panel Objetos en el lado derecho.

Ahora estamos listos para agregar objetos y terminar de trabajar con la edición del mapa. Los personajes y objetos de tienda se agregan como en la imagen que aparece a continuación

Hemos terminado con la parte gráfica del tutorial. Luego, vamos a codificar y agregar funcionalidad como controles de personajes, colisiones, etc.

Editor de fuente

Cambie al editor de fuente en el lado superior izquierdo.

 

En el menú del lado izquierdo, aparecen los archivos de juegos. Tendrá que codificar en su mayoría en archivo state/play.js. Puede encontrar atajos de teclas para el editor aquí.

Estados de juegos

Para codificar vamos a usar el marco de desarrollo Phaser. Los estados en Phaser son partes individuales de la lógica del juego. En forma predeterminada el editor le da una plantilla con cuatro estados boot, load, menu, play. Para cada estado hay algunos métodos predefinidos: preload, create, update, render. A los fines del demo debe saber que el método create se llama justo después de que todos los activos se carguen y el método update se llama mediante el bucle juego 60 veces por segundo. Puede saber más viendo la documentación. By default template calls load state. We need to redirect to play state. For this edit menu.js file under create method.

window.Digger.state.load = {
    preload: function(){
        ...
    },

    create: function() {
        this.game.state.start("play");
    }
}

Abra el juego

Primero abra el juego desde el botón del panel superior Open game. Por el momento solo hay una pantalla negra. Para mostrar los objetos recién hechos tenemos que inicializarlos en el método crear del archivo play.js.

create: function() {
    this.bg = mt.create("bg");
    this.blocks = mt.create("blocks");
    this.shop = mt.create("shop");
    this.character = mt.create("character");
    this.points = mt.create("points");
}

Se termina de inicializar con mt.create function. «bg» y «blocks» representan los nombres del grupo en el panel de objeto en el lado derecho. «shop» y «character» representan nombres de sprites en el mismo panel y finalmente «points» representan el texto. Como ve, todos los grupos de objetos, sprites y texto se inicializan con el mismo método. Abra ahora el juego e inicializar objetos será visible en la pantalla.

Agregar física

En forma predeterminada, física está deshabilitado en Phaser por motivos de mejor rendimiento. Habilitaremos la física más liviana y rápida de todas las disponibles: física Arcade. Abra la pestaña física en la esquina inferior derecha. Cambie el parámetro enable toa 1 y el resto aparecerán a continuación. Configure el width del tamaño del cuerpo del personaje: 60 y height 60. Habilite gravedad y configure y a 1000. Por último configure el parámetro collideWorldBounds a 1.

 

Abrir el juego verá al personaje cayendo al fondo de la pantalla.

Controles de personajes

Inicialice las teclas del cursor en crear método.

this.cursors = this.game.input.keyboard.createCursorKeys();

Esta función nos da un objeto con las cuatro teclas de flecha para jugar: arriba, abajo, derecha e izquierda. En el método actualizar rastrearemos cuando la techa flecha a left/right/up arrow se presiona y daremos una velocidad al personaje o las teclas de parada no están inactivas.

update: function() {
    if (this.cursors.left.isDown) {
        this.character.body.velocity.x = -200;
    } else if (this.cursors.right.isDown) {
        this.character.body.velocity.x = 200;
    } else {
        this.character.body.velocity.x = 0;
    } if (this.cursors.up.isDown) {
        this.character.body.velocity.y = -300;
    }
}

Abra el juego y pruebe las teclas flecha para controlar el personaje.

Colisión entre personaje y bloques

Habilite física para bloques y configúrelos en forma inmóvil en el panel física en la parte inferior derecha Map editor.

 

Luego agregue detección de colisión en el método update. Primero, dos argumentos declaran que verificaremos la colisión entre el objeto sprite y el grupo del objeto. El tercer argumento es una función de 2 argumentos que se llame en la colisión.

this.game.physics.arcade.collide(this.character, this.blocks, function(character, block) {
    console.log('Collision between', character, block);
}, null, this);

Al abrir el juego verá que el personaje no se caerá al final de la pantalla si no que se quedará sobre los bloques.

Animaciones del personaje

Primero debemos definir marcos en la hoja sprite para diferentes tipos de animaciones. Agregue estas líneas en el método create.

this.character.animations.add('stand', [0, 1, 2, 3], 10, true);
this.character.animations.add('fly', [4, 5, 6, 7], 10, true);
this.character.animations.add('run', [8, 9, 10], 10, true);
this.character.animations.add('fall', [12, 13, 14, 15], 10, true);
this.character.animations.add('dig', [16, 17, 18], 10, false);
this.character.animations.add('dig_down', [20, 21, 22], 10, false);
this.character.animations.play('stand');

La última línea del código comienza a reproducir la animación predeterminada stand. Para el resto de las animaciones tenemos que cambiar el método update y agregar reproducir animación específica para cada tecla presionada. Tenga en cuenta que tenemos la misma animación para la ejecución derecha e izquierda. Para cambar sprite horizontalmente usamos la escala -1.

if (this.cursors.left.isDown) {
    this.character.body.velocity.x = -200;
    this.character.animations.play('run');
    this.character.scale.x = -1;
} else if (this.cursors.right.isDown) {
    this.character.body.velocity.x = 200;
    this.character.animations.play('run');
    this.character.scale.x = 1;
} else {
    this.character.body.velocity.x = 0;
    this.character.animations.play('stand');
} if (this.cursors.up.isDown) {
    this.character.body.velocity.y = -300;
    this.character.animations.play('fly');
}

Destruir bloques

Para cavar bloques debemos agregar funcionalidad a nuestra función colisionar:

this.game.physics.arcade.collide(this.character, this.blocks, function(character, block) {
    if (this.cursors.left.isDown) {
        if (block.body.touching.right) {
            this.destroyBlock(block);
        }
    }
    else if (this.cursors.right.isDown) {
        if (block.body.touching.left) {
            this.destroyBlock(block);
        }
    }
    else if (this.cursors.down.isDown) {
        if (block.body.touching.up) {
            this.destroyBlock(block);
        }
    }
}, null, this);

arios bloques deben manipularse de forma diferente. Los bloques césped y suelo simplemente se destruyen, las rocas son indestructibles y podemos recolectar oro y guardarlo en el parámetro oro del personaje. Agregue el método destroyBlock en el estado play.

destroyBlock: function(block) {
    switch (block.key) {
        case '/rock.png':
            break;
        case '/grass.png':
        case '/ground.png':
            block.destroy();
            break;
        case '/gold.png':
            this.character.getData().userData.gold++;
            block.destroy();
            break;
    }
},

Superponer y vender oro

En el próximo paso debemos vender el oro recolectado en la tienda. Primero debe volver al editor de mapa y configurar física para el objeto tienda similar cómo si lo hubiera hecho el personaje. Habilitar Configurar parámetros enable: 1, gravity->allow: 0, immovable: 1. Luego de eso vaya al editor de fuente y cambie el método update con las siguientes líneas:

this.game.physics.arcade.overlap(this.character, this.shop,
    function(character, shop) {
        if (character.getData().userData.gold > 0) {
            var newPoints = parseInt(this.points._text) + character.getData().userData.gold;
            this.points.setText(newPoints);
            character.getData().userData.gold = 0;
        }
    }, null, this
);

Refactorización y agregado de animaciones finales

Agregaremos animaciones de cavar como paso final de este tutorial y el método refactorizar update para satisfacer nuestras necesidades de un juego lindo. A juzgar por las muestras previas, el código que aparece a continuación debe explicarse por si mismo.

"use strict";
window.Digger.state.play = {	
	create: function(){
		this.cursors = this.game.input.keyboard.createCursorKeys();
		
		this.bg = mt.create("bg");
		this.blocks = mt.create("blocks");
		this.shop = mt.create("shop");
		this.character = mt.create("character");
		this.points = mt.create("points");
		
		this.character.animations.add('stand', [0, 1, 2, 3], 10, true);
		this.character.animations.add('fly', [4, 5, 6, 7], 10, true);
		this.character.animations.add('run', [8, 9, 10], 10, true);
		this.character.animations.add('fall', [12, 13, 14, 15], 10, true);
		this.character.animations.add('dig', [16, 17, 18], 10, false);
		this.character.animations.add('dig_down', [20, 21, 22], 10, false);
		this.character.animations.play('stand');
	},
	
	update: function(){
		var collideDown = false;
		this.game.physics.arcade.collide(this.character, this.blocks,
		  function(character, block){
			
			if(this.dig) return;	
				
			if(this.cursors.left.isDown){		
				if(block.body.touching.right){
					this.dig = this.character.animations.play('dig');
					this.dig.onComplete.addOnce(function(){
      					this.destroyBlock(block);
					}, this);							
				} else {
					this.character.animations.play('run');
				}					
			}

			else if(this.cursors.right.isDown){					
				if(block.body.touching.left){
					this.dig = this.character.animations.play('dig');
					this.dig.onComplete.addOnce(function(){
      					this.destroyBlock(block);
					}, this);					
				} else {
					this.character.animations.play('run');
				}

			}

			else if(this.cursors.down.isDown){					
				if(block.body.touching.up){
					this.dig = this.character.animations.play('dig_down');
					this.dig.onComplete.addOnce(function(){
      					this.destroyBlock(block);
					}, this);

				} else {
					this.character.animations.play('stand');
				}
			}		
			
			if(block.body.touching.up){
				collideDown = true;
			}
				
			
			
		}, null, this);
										 
		
		if(this.dig){
			return;	
		}
		

		if(this.cursors.left.isDown){
			this.character.scale.x = -1;
			this.character.body.velocity.x = -200;
		}
		else if(this.cursors.right.isDown){
			this.character.scale.x = 1;
			this.character.body.velocity.x = 200;
		}
		else {
			this.character.body.velocity.x = 0;	
		}
		
		
		if(this.cursors.up.isDown){
			this.character.body.velocity.y = -300;
			this.character.animations.play('fly');
		} else {
			if(!collideDown){
				this.character.animations.play('fall');
			}
			else if(this.character.body.velocity.x === 0){
				this.character.animations.play('stand');
			}
		}
		
		this.game.physics.arcade.overlap(this.character, this.shop,
		 	function(character, shop){
				if(character.getData().userData.gold > 0){
					var newPoints = parseInt(this.points._text) + character.getData().userData.gold;
					this.points.setText(newPoints);
					character.getData().userData.gold = 0;
				}
			}, null, this
		);
	},
	
	destroyBlock: function(block){
		this.dig = false;
		switch(block.key){
			case '/rock.png':
				break;
			case '/grass.png':
			case '/ground.png':
				block.destroy();
				break;
			case '/gold.png':
				this.character.getData().userData.gold++;
				block.destroy();
				break;
		}
	},
	
	stopDig: function(){
		this.dig = false;	
	}
};

El proyecto completo del juego está disponible aquí: http://mightyeditor.mightyfingers.com/#pde5-copy Juego final aquí: http://mightyeditor.mightyfingers.com/data/projects/pde5/phaser/index.html iframe:

Publicado en programacion | Etiquetado | Deja un comentario

Resumen del Freakend 2015

Logo diseñado por Jose Luis Triguero Navarro

Logo diseñado por Jose Luis Triguero Navarro


Post original: http://visualstudioex3.com/blog/gamedev/eventos/resumen-del-freakend-2015/


Un fin de semana encerrado en una casa rural con 50 frikis del mundo del desarrollo de videjuegos, cervezas y mucho que contar. Eso es, muy resumidamente, el Freakend.

Freakend, un evento anual a pequeña escala que intenta reunir, durante un fin de semana completo en una casa rural, a un grupo de frikis amantes de los videojuegos, perfiles tanto profesionales como no,  donde se invita a dar charlas de cualquier temática y nivel, siempre relacionado como el mundo del desarrollo de videojuegos. Al igual que el año pasado, quería dejar un pequeño testimonio de este evento, así que he rascado el poco tiempo libre que he tenido esta semana y he preparado este post.

Seguir leyendo

Publicado en Uncategorized | Etiquetado , , , , | Deja un comentario

dotNet Spain Conference 2015

image

 

Microsoft organiza el dotNet Spain Conference los días 27 y 28 de febrero, es el mayor evento de .NET realizado en España. Está compuesto de 8 tracks con sesiones de más de una hora y hands-on-lab. Conocerás cómo sacar el máximo partido a .NET y a las herramientas de desarrollo que tienes a tu disposición.

https://www.desarrollaconmicrosoft.com/Dotnetspain2015

Sin duda, todos los tracks y talleres son interesantísimos pero me gustaría destacar el track de Coding 4 Fun del sábado 28 donde nos enseñaran a trastear con un montón de dispositivos, robótica y nos hablarán de motores de videojuegos como Wave Engine y Unity3D, iluminación avanzada en videojuegos Oculus Rift, etc… y ese mismo día, tendremos talleres de desarrollo de videojuegos con Unity3D, que daré yo mismo, en el que relizaremos paso a paso un videojuego Survival Shooter entero, y otros talleres como el desarrollo de un videojuego con SignalR

 

Échale un vistazo a al agenda del sábado 28, https://www.desarrollaconmicrosoft.com/Dotnetspain2015/Agenda?day=28

Publicado en Uncategorized | Etiquetado , , , | Deja un comentario

Tutorial: empezar a crear juegos HTML5 con WiMi5

En este tutorial de introducción vamos a ver paso a paso como crear un proyecto con WiMi5 y poder visualizar un juego HTML5.

Nuestro objetivo será arrastrar una imagen en la escena que se carga por defecto y poder previsualizarla con el panel de Preview. ¡Empecemos!

1. El primer paso es logearse dentro de https://accounts.wimi5.com. Después veremos la pantalla del Dashboard, desde donde se puede crear, editar o clonar nuevos proyectos. En nuestro caso elegimos Create Project y accedemos al Logic Editor de WiMi5. Desde esta pantalla debemos ir al Scene Editor. Para ello podemos hacer click en la opción Scene Editor del menú Desktop. O también podemos clickar en el icono que aparece dentro del panel Asset Manager.

tutorial juego html5

tutorial juego html5

tutorial juego html5

2. Ahora vamos a subir una imagen desde nuestro ordenador al almacén de archivos en la nube de WiMi5. Todos los recursos tanto sonoros como de imagen han de estar en ese repositorio para poder ser usados. Todos los archivos se gestionan desde el panel Resource Manager que permite subir, ordenar y borrar los archivos. Volviendo al ejemplo, para subir una imagen hacemos click en el icono de carpeta que aparece en la parte inferior del panel Resource Manager. Una vez abierta la ventana del Resource Manager se puede seleccionar la imagen que se quiere subir clickando en Upload… o bien arrastrando la imagen dentro de la ventana. Después hay que elegir el fichero y seleccionarlo para que se pueda usar en el proyecto que estamos editando. Una vez seleccionada la imagen aparecerá en el Resource Manager y podremos arrastrarla al panel Scene View.

tutorial juego html5

3. Ahora vamos a volver al Logic Editor para poder previsualizar el juego. Para ello se puede hacer click en la opción Logic Editor del menú Desktop. O bien se puede clickar en el icono inferior del panel Asset Manager.

tutorial juego html5

4. Ya en el Logic Editor simplemente tenemos que clickar en el botón de Play del panel Preview.

tutorial juego html5

Eso es todo, así de fácil es poder crear un proyecto con WiMi5. Más adelante realizaremos una serie de tutoriales sobre cada parte del Editor de juegos y sobre otros aspectos relacionados con la publicación, la integración de Virtual Goods o la descarga de proyectos.

tutorial juego html5

Publicado en Game Design, programacion | Etiquetado , , , , , , , | Deja un comentario

Concurso Juego Navidad WiMi5

 

Designed by freepik.com

Los amigos de WiMi5 han creado un concurso de desarrollo de juegos con el tema navideño. Para participar, simplemente tienes que crear un juego con su fantástica herramienta WiMi5 y publicarlo en el Labs de WiMi5. Con hasta 1500€ en premios en forma de trafico web y algún que otro detalle para los 10 finalistas.

Con WiMi5 podrás crear juegos en HTML5 de forma muy sencilla, tiene muchos tutoriales y plantillas de las que puedes partir y darle rienda suelta a la imaginación.

 

Para mas información sobre el concurso y las bases de participación, dirigiros aquí: http://wimi5.com/concurso-juego-navidad/

Ánimo y mucha suerte!

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Consejos a la hora de hacer un videojuego

¡Hola a todos!

Lo primero presentarme, me llamo Javier Bargueño y formo parte de DragonJam Studios, un estudio indie madrileño que llevamos ya más de un año enfrascados en el desarrollo de nuestro primer proyecto.

Se trata de Formula Wincars, que mezcla el Arcade con los Kart Racers incluyendo también un importante factor táctico y estratégico. El juego será básicamente online y con un gameplay simultaneo, así que ya os podéis imaginar el tipo de proyecto que estamos afrontando.

Conocí a un miembro de esta comunidad en el pasado Madrid Games Week y me animó a formar parte de ella, así que aquí estoy. Lo primero felicitaros porque echo un vistazo de vez en cuando y me gustan mucho los posts, de hecho me he suscrito para que me avise siempre que colguéis uno.

Nosotros solemos poner posts similares en nuestro blog de desarrollo, aunque en algunos no profundizamos tanto, ya que no sólo contamos con visitantes que son estudiantes o autodidactas sino que también hay mucha gente que tiene curiosidad por como se hacen los juegos pero no tiene una base de conocimientos, y si profundizamos mucho se asustan….jejejeje

Bueno, pues he pensado que podría colaborar con alguno de nuestros posts en esta comunidad y como uno de nuestros programadores nos deja (se muda de país) ha aprovechado y ha dejado una pequeña guía (son más consejos que otra cosa) para los principiantes que estén empezando a hacer un juego, aquí os lo pongo.

¡Espero que os guste!

Hola. Soy Eduardo, programador de Formula Wincars. Este es un post muy especial, ya que pronto terminaré de trabajar en DragonJam Studios y me marcharé al extranjero. Hace ya año y medio que trabajo en este proyecto, y creo que me ha hecho crecer muchísimo como profesional y como persona.

Los chicos de DragonJam son increíbles, el ambiente de trabajo es lo mejor que os podáis imaginar: son muy aplicados y apasionados con su trabajo, pero también muy humanos y cercanos. ¡Os voy a echar mucho de menos!

Recibimos muchas visitas de gente interesada en saber cómo se hace un videojuego, o de equipos que acaban de lanzarse por primera vez a esta aventura. Desde DragonJam, y aprovechando la experiencia colectiva de todos los que están aquí, os vamos a contar un breve resumen para poneros en marcha sobre cómo hacer un videojuego. Como no tenemos tiempo para un tema tan extenso, ésta será una pequeña guía o sugerencia. En internet podrás encontrar muchísima más información. Recuerda que siempre puedes preguntar a la gente de la industria. Aunque algunos están muy ocupados, siempre habrá gente encantada de responderte. Les encontrarás en foros, revistas, eventos…

Habitualmente, en la industria se divide la producción de un videojuego en varias partes.

 

 

En realidad, esto es sólo una aproximación útil. ¡Muchas veces no ocurre así! La persona que se encarga de la planificación de tareas y el desarrollo del proyecto se llama Productor.

Preproducción

Es la fase anterior a crear un videojuego. Puedes pensar que abarca desde que te planteas seriamente que vas a convertir una idea en un videojuego, hasta que os ponéis a implementarla y convertirla en un producto de verdad.

Habitualmente en Preproducción tienes que consolidar la idea que vais a transformar en una realidad. Y eso suele incluir:

  • Concretar la idea en un producto factible de ser producido. Habitualmente mediante instrumentos como el Documento de Diseño, que el Diseñador redacta y os permitirá unificar la visión del juego.
  • Saber qué herramientas vais a utilizar. Existen multitud de motores de juego muy buenos en el mercado. Algunos tienen acceso gratuito.
  • Saber a dónde queréis llegar. ¿Qué producto queréis tener? ¿Qué tiene que incluir como mínimo el producto para que se considere completo? ¿Dónde va a ser publicado o distribuido? Muchas preguntas que os tenéis que hacer ahora.
  • Consolidar el equipo. Más vale que seáis pocas personas dispuestas a dedicar tiempo y energías, que muchas e inconstantes. Puedes ser tú solo, o un montón de entusiastas online. Eso sí, ten en cuenta que lo óptimo es trabajar todos juntos y dedicarle mucho tiempo. Si eso no se puede –y es normal cuando eres un indie- aún es posible sacar los proyectos adelante, pero tendrás que reflejar eso en la planificación del proyecto.
  • Desarrollad cosas en función de vuestras fortalezas. Si sois cuatro programadores y un grafista, quizá queráis centraros en mecánicas complejas, contenido procedural, o cualquier otra solución que implique mucha programación y poco arte. Si no, hacedlo al revés. El diseño del juego será radicalmente distinto según el equipo que lo haga, más vale que lo tengáis en cuenta.

Puedes usar todo tipo de motores para hacer tu juego. Algunos se adaptarán mejor que otros a tus requisitos. También puedes hacerte el motor tú mismo, pero en la industria hay un dicho: «O haces juegos, o haces motores de juego»…

Desarrollo

  • Planificaos con cabeza: empezad por aseguraros de que el core del juego funciona. Después os extenderéis. Algunas empresas grandes se permiten el lujo de empezar la casa por el tejado, pero hasta que no seáis una de estas empresas, jugad seguro.
  • Si vais a usar herramientas con las que no estáis del todo familiarizados, ¡enhorabuena! Es una gran oportunidad para aprender. Sin embargo, has de entender que no puedes exigir lo mismo al proyecto que cuando seas un veterano con años de experiencia. Sé transigente, no necesitas los recursos de un Call of Duty para hacer un gran juego.
  • Utilizad algún tipo de metodología, que combine dos factores fundamentales: sentiros cómodos, y que os permita daros cuenta de los problemas pronto. Hay gente entusiasmada con forzar SCRUM (por ejemplo) a su equipo cuando éstos no lo acaban de tragar, y hay otros equipos que acaban las tareas sin orden ni concierto (estarán cuando estén y punto). No te vayas a ninguno de los dos extremos.
  • Medid los riesgos. A lo mejor no necesitáis el sistema más genérico y escalable de todos (sobre-ingeniería) si lo que estás haciendo tiene un riesgo bajo de ser cambiado. ¡Pero a lo mejor sí! Y si os volcáis implementando una feature que corre el riesgo de cambiar dentro de un mes, puede que descubráis que vuestro sistema es demasiado engorroso e incómodo.
  • Cada cierto tiempo, tenéis que testear. El testing es un mundo aparte, pero como consejo rápido es mejor enseñar un pequeño trozo pulido que mucho sin acabar. Del testing saldrán bugs, correcciones y cambios. Es también la parte más dura para el orgullo, así que tenéis que entender que la calidad proviene de haber testeado muchas veces. ¡No pretendáis hacerlo bien a la primera!

Vídeo de introducción al famoso SCRUM. Pese a ser muy bueno, ¡aquí no hay panaceas! Usad lo que os funcione a vosotros.

Postproducción

La batalla no ha terminado aún. Una vez tengáis un producto, pensaréis que ya ha terminado todo, pero lo cierto es que tendréis que presentar el juego, ir a todos los eventos que podáis, enseñárselo a mucha gente. Hay una gran cantidad de sitios (en internet, youtubers, ferias…) donde están deseando probar juegos de calidad. Que seáis un equipo modesto no quiere decir nada: en esta industria están acostumbrados a que la calidad provenga de los sitios más humildes. ¡Y hay cientos de ejemplos! Creed en vuestro juego y seguid presionando. Nunca enviéis un juego a un sitio web y os desentendáis, tenéis que seguir luchando por él.

IndieDB es una página que mueve a los grupos indies. Su comunidad es grande y muy buena. Podría ser un buen punto de partida ver lo que hacen los demás.

Y hasta aquí unas consideraciones sobre cómo podéis hacer realidad el sueño de hacer un videojuego. Es un mundo duro, pero también tremendamente gratificante. ¡Mucha suerte! Yo me despido y os dejo con mis compañeros, con este gran proyecto que es Formula Wincars. ¡Creed en nosotros!

Publicado en Uncategorized | 4 comentarios

GameJam: Indies Vs Pewdiepie

Este fin de semana se celebra la Game Jam Indies Vs Pewdiepie con el patrocinio del portal GameJolt. En esta jam cuyo tema principal es la diversión (tanto para el jugador, como para alguien que sea espectador del juego), tendremos 72 horas para terminar el juego.

El conocido youtuber PewDiePie se compromete a jugar en streaming a los 10 primeros juegos que queden en el ranking (tiene 32.000.000 de seguidores), así que es una oportunidad para darse a conocer y aprender mucho viendo como trabajan otros desarrolladores vía Streaming. Más info: http://jams.gamejolt.io/indiesvspewdiepie

Gamedev.es ha creado un servidor de Team Speak a disposición de cualquier desarrollador para organizarse con su equipo y totalmente abierto para que cualquiera pueda entrar, comentar y hacer preguntas sobre los juegos que se desarrollan para la jam. Pregunta a los administradores del servidor TS3 conectados si necesitais permisos, canales propios, etc. Estarán encantados de ayudaros.

Datos TS3 GameDev.es: IP: 37.187.55.101 Pass: «fly»

El equipo de Mechanic Moon Studio estará durante todo el fin de semana, desarrollando un juego de plataformas en Game Maker Studio, así que para cualquier duda sobre GMS o si simplemente quereis seguir el desarrollo, podeis pasaros por el Team Speak o seguirnos vía Twitch: http://www.twitch.tv/mechanicmoon (Durante el fin de semana del 21 al 23 de Noviembre, por las tardes).

Publicado en Uncategorized | Etiquetado | Deja un comentario

Tutorial – Instalar Visual Studio Community 2013 para Unity3D

 

Buenas hacía ya tiempo que no os traía un tutorial nuevo, esto ha sido debido a unos problemas que tuve pero bueno, aquí os traigo uno que os resultará muy útil.

En Unity 3D tenemos un IDE llamado Mono Develop, que a pesar de ser código abierto, el de Unity esta un poco anticuado y contiene numerosos bugs como por ejemplo que se ralentiza mucho al hacer refactoring o que te envía a lineas donde no esta el error.

Hace un par de días Microsoft liberó una edición de Visual Studio 2013 gratuita (Si no superamos el millón de dolares al año) para que podamos usarla, esto es una muy buena noticia porque este IDE es buenísimo.

Para poder instalarlo necesitaremos ir a esta página: http://www.visualstudio.com/news/vs2013-community-vs

Y nos saldrá algo como esto: 

 

Pincharemos donde dice «Download Visual Studio Community 2013».

En cuanto se nos descargue clickaremos en el archivo descargado y nos saldrá algo como esto:

En mi caso pone Update a la derecha abajo porque ya lo tengo instalado, pero a vosotros os pondrá continue, y os pedirá 7 GB de espacio en disco, aun asi se instala muy rápido (1 hora a 1 Mbp/s).

Cuando lo hayamos instalado procederemos a instalar el plugin necesario para hacerlo funcionar con Unity 3D, para ello iremos a la siguiente página:

Link directo a la página de descarga: https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2

Página oficial: http://unityvs.com/

Cuando hayamos entrado a la página de descarga veremos lo siguiente:

 

Le daremos a descargar, cuando lo hayamos descargado, clickaremos el archivo y se nos abrirá el instalador:

Le daremos todo a next (Si quereis cambiar la ruta de archivo cambiadla) y cuando se nos haya instalado iremos a la carpeta donde este instalado, normalmente se instala en archivos de programa x86 con el nombre Unity Tools o algo parecido.

Cuando estemos en la carpeta tendremos estos archivos:

 

Yo leí el EULA para ver las condiciones que ponen y ya os dije lo de hasta ganar 1 millón de dolares, etc…

Bueno cuando lo hayamos leído abriremos Unity 3D con nuestro proyecto, y arrastraremos el «Visual Studio 2013 Tools.unitypackage» a Unity, cuando hayamos hecho esto nos dirá que si queremos importar le daremos a «Import» como si fuera un pack normal y se nos creara una carpeta llamada UnityVS, y además un menú en la parte de arriba de Unity:

 

En este menú le daremos a «Generate Project Files» y a continuación Open in Visual Studio, cuando hayamos hecho esto ya podremos usar Visual Studio con Unity de manera gratuita.

Aquí tenéis la prueba:

 

Bueno espero que os haya gustado el tutorial, un saludo, nos vemos en el próximo.

PD: Si tenéis alguna duda twitear a @overflowingST

Publicado en programacion | 4 comentarios

Unity 3D Editor Window Parte 3 / Serie 1

Hola de nuevo, siento haber tardado hoy en hacer el tutorial pero andaba y ando ocupado con unas arreglillos en un disco duro. En cualquier caso aquí teneis el tutorial de hoy, el cual es un poco más complejo y largo que los demás.

Bueno, hoy meteremos a nuestro visualizador de texturas las funciones que necesita para que podamos visualizar las texturas de nuestro proyecto en esta ventana, asi que vamos a ello.

Lo primero que he hecho hoy ha sido expandir el tamaño del area derecha para que se puedan mostrar las texturas un poco mejor, el cambio es sencillo, en lugar de 150 lo he cambiado a 300, pero recordar que lo teneis que cambiar en ambas areas:

Primer área:

GUILayout.BeginArea(new Rect(0,0,this.position.width-300,this.position.height));

Segundo área:

GUILayout.BeginArea(new Rect(this.position.width-300,0,300,this.position.height));

Muy bien cuando hayamos hecho esto, añadiremos a nuestra area derecha una barra de scroll, para que en el caso de que tuvieramos muchas texturas podamos hacer scroll y elegir una para mostrar, el código es el siguiente:

Abrir scroll:

scrollPosition = GUILayout.BeginScrollView(scrollPosition);

Cerrar Scroll:

GUILayout.EndScrollView();

Y os preguntareis que es eso de scrollPosition, bien, scrollPosition es una variable Vector2 la cual sirve para obtener y poner la posición del scroll, asi que la tendremos que declarar como variable:

public Vector2 scrollPosition;

Una vez hecho esto añadiremos por encima de la parte del scroll un botón para cargar las texturas.

Pero antes necesitaremos declarar dos variables:

public Texture2D[] arrayTextures;
bool showTextures;

La primera es para guardar todas las texturas de nuestro proyecto que obtengamos con la función que declararemos ahora después.

Y la segunda es un condicional para guardar el estado del botón (si lo hemos presionado o no)

Bien ahora podemos declarar el botón y las funciones:

if(GUILayout.Button("Show Textures")){
showTextures = true;
arrayTextures = Resources.FindObjectsOfTypeAll<Texture2D>();
}

En este caso he añadido un GUILayout.Button con el nombre Show Textures (Mostrar texturas), y le he añadido un condicional de tal manera que si presionamos el botón la variable showTextures pasa a true (verdadera) y que a nuestro array de texturas añada todas las que encuentre en el proyecto.

Una vez hecho esto, dentro del scroll escribiremos esto:

if(showTextures){
for (int i = 0; i < arrayTextures.Length; i++) {
if(arrayTextures[i].hideFlags != HideFlags.HideInHierarchy && arrayTextures[i].hideFlags != HideFlags.NotEditable)
continue;
if(GUILayout.Button(arrayTextures[i] as Texture2D,GUILayout.Width(275),GUILayout.Height(275))){
textureToDraw = arrayTextures[i];
}
}
}

Con esta función estamos diciendo que recorra el array de texturas, y que las que sean modificables y que se puedan editar (es decir no internas, si no obtendriamos todos los iconos de Unity), que las muestre en un botón con ancho 275 y alto 275.

Ahora tenemos que hacer un paso más antes de que os explique que hace el botón.

Primero declararemos esta variable la cual va a ser la textura que se visualiza en la izquierda.

public Texture2D textureToDraw;

Y dentro del area izquierda en el código escribiremos esto:

Rect lastRect = new Rect(0,0,this.position.width-300,this.position.height);
GUI.Box(new Rect(lastRect.center.x-textureToDraw.width/2,lastRect.center.y-textureToDraw.height/2,textureToDraw.width,textureToDraw.height),textureToDraw);

Con esto estaremos, primero guardando el rectangulo que ocupa el area izquierda, puesto que lo necesitamos para posicionar la textura a dibujar.

Y luego hemos dicho que dibuje una caja(Box), pero que en el eje x coja el centro del rectangulo del area (es decir la variable guardada) y lo reste a su ancho entre 2 de esta manera posicionaremos cada textura independientemente de su anchura justo en el centro del area, luego hemos hecho lo mismo para la altura, y hemos dicho que dibuje la variable textureToDraw que es la que hemos declarado antes.

Con esto ya puedo explicar lo siguiente, al botón le hemos añadido la función de que cuando se presione, cambie la textura que se visualiza en la izquierda(es decir la textureToDraw) a la del botón en cuestión.

Bueno hemos terminado de momento:

El código quedaría así:shot_141108_032125

 

Y bueno el funcionamiento de la ventana sería el siguiente:

 

TextureVisualizer1

 

Como podeis ver en el gif, algunas texturas son muy grandes y no se ven bien, quizás en la próxima entrega intentaremos añadirle la función zoom a nuestro visualizador y alguna que otra función más, espero que os gusten mis tutoriales y si algo no entendéis no dudeis en avisarme.

Intentaré hacer un video completo de como hacer todo esto, y subiré el código a un repositorio online para que lo podais descargar, pero os recomiendo que lo hagais siguiendo los tutoriales puesto que aprendereis más.

Nos vemos en el próximo tutorial, un saludo!.

Publicado en Uncategorized | Deja un comentario