Así es, mucha gente no cree en el potencial de XNA como una plataforma seria para desarrollar videojuegos, algunos simplemente porque odian a Microsoft, otros consideran que es una herramienta de muy alto nivel, los analistas pueden decir que no es una forma rentable de publicar juegos y los ignorantes dicen cosas tan fuera de lugar que ni siquiera voy a replicar aquí.

Estoy de acuerdo en que estudios como id Software, Epic Games, Bungie, EA, Ubisoft, Konami, Capcom, Bungie, Naughty Dog, Bethesda, 2K Games etc. etc. etc. no van a tomar XNA para hacer el próximo de sus juegos pero el objetivo de la plataforma XNA no es llegar a estos estudios; es llegar a gente como tú y como yo que nos encantan los juegos, que queremos implementar una idea y poder jugarla casi al instante, la herramienta es gratis, hay una gran comunidad internacional de apoyo y muchos recursos disponibles.
Honestamente creo que XNA está muy lejos de desaparecer o de dejar de ser utilizada; la llegada del Windows Phone 7 OS puede que sea el puente que necesiten los desarrolladores para poder empezar a ganar dinero y posiblemente hacer lo suficiente como para comprar su próxima laptop.
Por mi parte yo no busco en XNA una herramienta para hacer dinero, la veo como una forma divertida de desarrollar juegos, una plataforma divertida para aprender lo básico sobre el desarrollo de videojuegos, a mí me ha atrapado y aunque uso y usaré otras tecnologías y herramientas para desarrollar juegos, creo que XNA es una forma divertida para desarrollar juegos.
Después del rant anterior, los quiero invitar a que próximamente visiten el sitio xnamexico.com en donde encontrarás información sobre desarrollo de juegos, arte, proyectos, tutoriales y foros; todo centrado en XNA la diversión que trae el desarrollar juegos-
:-)
Categories: Uncategorized
Tagged: desarrollo, juegos, mexico, videojuegos, xna

Desde tempranito, la nueva edición de Gameplay ya está directamente en iTunes y phyne.net.
En esta ocasión hablamos sobre GTA IV: The Lost & Damned, The Dishwasher: Dead Samurai, EGS 2009, comentarios acertados de Cliffy B y desvariamos sobre la incorporación de tecnología 3D en videojuegos.
Por cierto el twitter de James Silva(creador de The Dishwasher: Dead Samurai): @jamezilla
Esparamos sus comentarios y no olviden pasar la voz!!!!
Descarga directa a este podcast: Gameplay 1: Marines pelones




Categories: C# · Game Inspection · Game programming · Movies & TV · Podcast · XNA
Tagged: cliffy b, desarrollo videojuegos, dishwasher dead samurai, era hielo 3, español, gameplay, mexico, Podcast, xna

Muchas gracias a todos los que escucharon el primer episodio de Gameplay!!!!
¿Hay algún tema que quieran que tratemos? ¿Alguna tecnología, libro, consola o juego? Déjenos sus comentarios con sus sugerencias dudas o recomendaciones y les prometo que las vamos a tomar en cuenta TODAS.
Lo que me faltó decir es que el podcast será quincenal; cada lunes tendran directamente en la comodidad de sus ordenadores, un nuevo episodio del podcast de videojuegos para jugadores y desarrolladores.
Categories: Podcast · Videogames
Tagged: desarrollo, gameplay, podast, videojuegos

Ya está lista la primer emisión de Gameplay; el podcast de videojuegos para jugadores y desarrolladores.
En esta primer entrega, nos acompaña Juakin y juntos hablamos sobre lo que es Phyne, Gameplay y nuestros juegos favoritos.
Agradecimiento especial a Diego quien fue el encargado de la edición del podcast.
Descarga directa: Gameplay 0: La presentación.
Espero que les guste y los invito a comentar y a suscribirse al podcast.


Categories: Game Inspection · Podcast
Tagged: desarrollo videojuegos, e3 2009, foxhound, gameplay, hdgam3r, juegos favoritos, mexico, microsoft, nintendo, phyne, podcast videojuegos, sony
Programar un videojuego es algo muy gratificante. Simplemente con ver una imagen moviéndose y rebotando en la pantalla es emocionante. Ahora, agregárle animación, física e interacción con el usuario(mediante mouse, teclado o control) nos hace sentir muy orgullosos de nuestro trabajo.
El problema es que si algo no sale a la primera o a la segunda o a la tercera, la desesperación llega. Yo me encuentro en esas situaciones muchas veces al día.
Puede ser que las cosas no salgan porque ya estás cansado, porque tu atención está en otro lado, porque la lógica del código esté mal o simplemente porque no conoces todas(o al menos la mayoría) de las capacidades del lenguaje o librerías que estás utilizando.
Por eso, antes de querer empezar a programar un juego(aunque sencillo) en XNA, te recomiendo que revises algún tutorial del lenguaje en el sobre el cual existe XNA, me refiero a C#.
En esta ocasión, quiero recomendarles un tutorial muy completo, el sitio es C# Station
El autor es un MVP de Microsoft, Joe Mayo. El también es autor de libros sobre C# y otras tecnologías. El tutorial comprende 23 capítulos, que si bien no te harán un experto en C#, te darán un overview muy bueno del lenguaje.
El tutorial supone que al menos tienes los fundamentos básicos sobre programación, y específicamente la orientada a objetos.
Una vez terminado el tutorial, puede que estés listo, o con más confianza para entrar de lleno a algún tutorial de XNA.
Categories: C# · Game programming · Reviews
Tagged: c# tutorial, c++, joe mayo, programming videogame, xna, xna tutorial
Hola amiguitos. Pues como lo leen, el podcast número uno de phyne ya está a punto de salir.
Ya tenemos los invitados, los temas, el editor de audio y las secciones…sólo faltan algunos detalles finales. El primer episodio lo grabaremos en el transcurso de la siguiente semana, así que espérenlo muy pronto.
Si tienen alguna sugerencia acerca de algo que les gustaría tratar o saber, déjenla en los comentarios.
Categories: Podcast · Videogames
Supongo que todos hemos jugado el juego de piedra, papel o tijeras. Bueno por si alguien pasó su infancia en un búnker, puede checarlo aquí: Piedra, papel o tijeras
En este post, vamos a recrear el juego, pero además le agregaremos una interfaz gráfica con botones de radio, un botón normal y una caja de texto.
#Scissors, paper, rock game
#Importamos todo el modulo Tkinter para la interfaz grafica
from Tkinter import *
#importamos el modulo random para generar la eleccion del contrincante del cpu
import random
#Lista que contiene las opciones que tiene el cpu para jugar
WEAPONS = ["scissors", "paper", "rock"]
#Definimos la clase Application donde guardaremos todos los widgets como botones, texto y radiobuttons
#Application hereda de Frame
class Application(Frame):
#Metodo constructor de application
def __init__(self, master):
#Invocamos el consructor de Frame
Frame.__init__(self, master)
#Digamos que muestra el objeto Application en pantalla
self.grid()
#Invocamos el metodo createWidgets(), definido mas abajo
self.createWidgets()
#Metodo que crea los elementos que se colocarán en la ventana raiz
def createWidgets(self):
#Label es un widget que muestra texto, no tiene interacción alguna
Label(self, text = "Pick scissors, paper or rock and then press the fight button"
).grid(row = 0, column = 0, sticky = W)
#Variable que contendra la eleccion del jugador
self.election = StringVar()
#Los botones de radio que presentan las opciones a elegir para el jugador
Radiobutton(self, text = "Scissors", variable = self.election, value = "scissors"
).grid(row = 1, column = 0, sticky = W)
Radiobutton(self, text = "Paper", variable = self.election, value = "paper"
).grid(row = 2, column = 0, sticky = W)
Radiobutton(self, text = "Rock", variable = self.election, value = "rock"
).grid(row = 3, column = 0, sticky = W)
#El boton que activa el inicio del juego, manda a llamar el metodo fight()
Button(self, text = "Fight", bg = "Red", command = self.fight).grid(row = 4, column = 0)
#Creamos la caja de texto en donde se mostrara el resultado del juego, por el momento esta vacio
self.result = Text(self, width = 40, height = 5, wrap = WORD)
self.result.grid(row = 5, column = 0, columnspan = 3)
#Metodo que calcula una eleccion de arma para el cpu y compara para ver quien gana
def fight(self):
#Elige pseudoaleatoriamente un arma para el cpu
self.cpuWeapon = random.choice(WEAPONS)
self.message = ""
if self.election.get() == "rock" and self.cpuWeapon == "scissors":
self.message = "You Win!!!"
elif self.election.get() == "paper" and self.cpuWeapon == "rock":
self.message = "You Win!!!"
elif self.election.get() == "scissors" and self.cpuWeapon == "paper":
self.message = "You Win!!!"
elif self.cpuWeapon == "scissors" and self.election.get() == "paper":
self.message = "You Lose!!!"
elif self.cpuWeapon == "rock" and self.election.get() == "scissors":
self.message = "You Lose!!!"
elif self.cpuWeapon == "paper" and self.election.get() == "rock":
self.message = "You Lose!!!"
else:
self.message = "TIE!!!!"
#Concatenamos el mensaje con las armas de cada uno (cpu/user)
self.message += "\nYour weapon: " + self.election.get() + "\nCPU Weapon: " + self.cpuWeapon
#Borramos lo que hay en el cuadro de texto
self.result.delete(0.0, END)
#Mostramos el mensaje en el cuadro de texto
self.result.insert(0.0, self.message)
#main
#Instanciamos un objeto Tk() en donde se colocaran los demas widgets
root = Tk()
#Le damos el nombre a nuestra GUI
root.title("Scissors, paper, rock")
#Se le asigna un tamaño como string en formato anchoxalto
root.geometry("350x250")
#instanciamos un objeto Application y le mandamos como maestro al objeto root
app = Application(root)
#el ciclo principal de la aplicacion
root.mainloop()
La idea del programa, viene de un proyecto del libro Guide to Programming with Python, de Michael Dawson. Próximamente haré un post sobre el libro.
Categories: Game programming · Projects · Python
Tagged: Python, scissors paper rock
Existe un algoritmo que se utiliza para encontrar el número máximo y el mínimo dentro de un arreglo de números (o de otros objetos, dependiendo del programa), es el algoritmo MAXMIN.
El algoritmo sirve para un número n(en potencia de dos) de elementos. Después de encontrar el máximo y el mínimo en el arreglo, guarda el valor máximo en la posición [0] y el mínimo en la posición[1] de un arreglo[2].
El algoritmo es recursivo, en el caso base(cuando n es dos) solamente compara los valores y los coloca en en las casillas correspondientes del arreglo[2].
En el caso recursivo, el arreglo se va partiendo en mitades, de 0 a (n/2)-1 y otro de n/2 a n-1. Así hasta llegar al caso base.
Aquí se presenta el código en lenguaje C.
/*
* Author: Arturo Nereu Nunez Martinez 1163145
*
* Version: Febrero 2008
*
* Programa que ejecuta el algoritmo MAXMIN, con una entrada de maximo 32 numeros.
* La entrada debe ser potencia de dos.
*/
#include <stdio.h>
void maxMin(int *arr, int *arrMaxMin, int n){
if(n == 2){
if(arr[0] > arr[1]){
arrMaxMin[0] = arr[0];
arrMaxMin[1] = arr[1];
} else{
arrMaxMin[0] = arr[1];
arrMaxMin[1] = arr[0];
}
}
if(n >= 4){
int i = 0;
int lim = n/2;
int maxMinA[2];
int maxMinB[2];
int arrTempA[lim];
for(i; i<lim; i++){
arrTempA[i] = arr[i];
}
int arrTempB[lim];
i = 0;
for(i; i< lim; i++){
arrTempB[i] = arr[lim+i];
}
maxMin(arrTempA, maxMinA, lim);
maxMin(arrTempB, maxMinB, lim);
if(maxMinA[0] >= maxMinB[0]){
arrMaxMin[0] = maxMinA[0];
} else{
arrMaxMin[0] = maxMinB[0];
}
if(maxMinA[1] <= maxMinB[1]){
arrMaxMin[1] = maxMinA[1];
} else{
arrMaxMin[1] = maxMinB[1];
}
}
}
void pideDatos(int *X, int n){
int *x, i=0;
x = X+n;
for(; X<x; ++X) {
printf("Dame el dato [%i]:",i++);
scanf("%i",X);
}
}
int main (void){
int tamArr = 0;
int arrMaxMin[2];
int *ptrArrMaxMin = &arrMaxMin[0];
printf("Dame el numero en potencias de dos, para el tamaño del arreglo: ");
scanf("%i", &tamArr);
int arrGeneral[tamArr];
pideDatos(arrGeneral, tamArr);
maxMin(arrGeneral, ptrArrMaxMin, tamArr);
printf("El max: %i, y el min: %i \n", arrMaxMin[0], arrMaxMin[1]);
return 0;
}
Probablemente no esté bien refactorizado, pero el ejemplo del algoritmo es funcional.
Categories: C · Projects

En este tutorial, vamos a instalar el entorno de desarrollo de python para comenzar a programar juegos con ayuda del conjunto de módulos para gráficos y juegos; pygame.
Al igual que todo lo que se hace en python, la instalación es muy sencilla. Primero debes de ir al sitio oficial de python para obtener el entorno de desarrollo y la versión más estable y con mayor compatibilidad que hasta ahora es la 2.6.2. Te recomiendo que bajes esa versión para tu sistema operativo.
Descarga de python: python.org/download
Ahora dirígete a la página oficial de pygame para obtener la versión 1.8.1 de pygame.
Descarga de pygame: pygame.org/download
Windows: Ya que tienes ambos ejecutables, sólo debes de hacer doble click en el instalador de python. Después de que termine la instalación, dále doble click al instalador de pygame.
Cuando ambos archivos estén instalados, abre el programa llamado ‘IDLE (Python GUI)’. Esto abre el entorno de desarrollo de python en modo interactivo.
Para probar que tu instalación fue correcta, escribe dentro de la ventana: print “Hola python”
print "Hola python"
Deberá de salir una linea después el mensaje; Hola python. Si es así, la instalación de python fue correcta. Ahora para probar la instalación correcta de pygame, escribe: import pygame
import pygame
Si te sale el mensaje:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
import pygame
ImportError: No module named pygame
Algo salió mal y será necesaria la reinstalación de pygame, en caso contrario: ¡Has instalado lo necesario para poder crear tu propio videojuego en python!
Para más información visita:
www.python.org
www.pygame.org
Categories: Projects · Python · Videogames