2. Rotacion de sprites

29 04 2008

Los sprites son objetos que nos permite representar imagenes en nuestros juegos.

En un ejemplo anterior del hola mundo utilizamos un spriteFont , un sprite normal tiene casi el mismo proceso de carga que un spriteFont, la diferencia radica en unos pequeños detalles de carga:

Texture2D nave;

nave = Content.Load("nave");

Se inicializa nuestro objeto textura.

En el proceso loadContent() en ves de loas<spriteFont> lo remplazamos por nuestra textura.

Para darle rotacion a nuestro objeto textura devemos tener en cuenta el proceso draw(), ya que en este tendremos sobrecargas importastes a considar:

nustra imagen, posicion, Color, rotacion, vector origen,escala, efectos, capa).

esto queda asi:

            spriteBatch.Draw(nave, posicionNave,
                             new Rectangle(0, 0, nave.Width, nave.Height),
                             Color.White, rotacion, new Vector2(nave.Width / 2,
                             nave.Height / 2), 1.5f, SpriteEffects.None, 0);

El objeto rotacion sera el que manipularemos:

float rotacion = 0.0f;

Aplicando como en elejemplo de movimiento de teclas en el hola mundo, ontonces rotamos al momento de hacer lelf , right con las teclas:

                if (tecla == Keys.Left)
                {
                    rotacion -= ((float)gameTime.ElapsedGameTime.TotalSeconds) * 3f;
                }

                if (tecla == Keys.Right)
                {
                    rotacion += ((float)gameTime.ElapsedGameTime.TotalSeconds) * 3f;
                }

El gameTime ha sido sacado del mismo proceso en que estamos, asi que no le busques mucho sentido a este codigo ya q solo es un para mover el frame a una cierta velocidad considerable.

Ontonces supongamos que nuestro objeto esta dividido en dos mitades , la mitad de la izquierda la dejamos para valores mayores a 1 y la otra mitad para valores menores que 1, osea si el objeto rotacion valiese 0.5 nos encontrariamos quenuestroobjeto se mueve hacia la derecha. En caso contrario hacia la izquierda.

Eso es todo, espero volver con mas info de movimientos de sprites, hasta luego.

Archivo

rar





Motores de Juegos

22 04 2008

Que es un motor de juego?

Un motor de juegos es un congunto de componentes reutilizables, es toda aquella logica de juegos que se desarrolla para posteriormente esta misma poderla aplicarla en los juegos ,proyectos, que queramos, un motor de juego basicamente incluye redenrizado ( “renderer”) para gráficos 2D y 3D, un motor de la física o de detección de colisión (choque y respuesta), el sonido, secuencias de comandos, animación, la inteligencia artificial, la creación de redes, streaming, memoria Gestión, threading, y una escena gráfica.

Les dejo estos videos para que vean el poder que tiene un motor de juegos.

Este es magic un motor fresquito que esta saliendo al mercado y esta disponible para Xna, aqui la info.

Link de la info.





Arte

20 04 2008

En los videojuegos ahi una gran creacion por parte de los diseñadores, en lo personal yo soy pesimo para el dibujo, pero a los que les gusta este mundo les dejo esteinteresante link que les ayudara.

Link animarte

animarte





Explicacion de codigo.

19 04 2008

El ejemplo de xna para principiantes en el tema, es como un poco raro entenderlo aun cuando no estamos
inicializados funciones , estas son las funciones basicas de xna y proceso algo parecido para cualquier lenguaje de desarrollo de videoJuegos.

Fijarse en la funcion drawn(), en esta funcion ahi un funcionamiento interno q es el SHADER CODE,
en el tenemos el vertex Shader, Pixel Shader, Technique, Funciones que manejan el disposito de nuestra tarjeta de video y de ahi a ser nuestro game representado por pantalla.

c#





Menu en Fenix

18 04 2008

Hola, anteriormente les habia comentado sobre el lenguaje fenix, para mi, la ventaja de este lenguaje es que es mas facil de distribuir ya que no se necesita de un framework, trayendo consigo funsiones y librerias nesesarias para crear juegos , eso si este lenguaje es solo para programacion 2d, bueno les muestro un pequeño programa de un menu tipico de un juego, esta mismo sera implementadoen un futuro tema en XNA, Bueno este menu en realidad es muy facil de comprender, lo explicare mas a fondo por pasos.

1. Imprimo todas las opciones del menu mostadas por pantalla y leagrego un tipo de fuente.

2. Creo una funcion que se llama resalta, esta funcion resaltara nuestro texto, lo mostamos
por pantalla , pero esta ves con el tamaño de fuente mas grande, pero pongamonos a pensar
tenemos 2 textos impresos en la misma posicion, es por ello que me aseguro que al momento de
lanzar ese resalto , el texto a resaltar deve ser borrado , ya que si no nos quedarian un texto de
una tamañode fuente mayor con uno de menor y en la misma posicion.

3. Y por ultimo esto se va actualizando en cada momento que movemos las teclas up y down.

program main; global string opciones[]="Computadora v/s Computadora", "Player1 v/s Computadora", "Player1 v/s Player2", "Creditos", "Salir"; int i=0,j=0,var=0,musicOpc,musicFondo,imgFondo,proceTeclado; fntopc,fntopc2; end include "librerias/globales.prg"; begin proceTeclado=teclado(); SET_MODE(800,600,16,MOde_fullScreen); loadingElementos(); PUT_SCREEN(imgFondo,1); PLAY_SONG(musicFondo,0); mopciones(); frame; loop DELETE_TEXT(0); mopciones(); resalta(var); teclado(); frame(300); //if(key(_eSc))break end; end end // function loadingElementos() begin imgFondo=LOAD_FPG("fpg/jona.fpg"); fntopc=load_fnt("fnt/opc1.fnt"); fntopc2=load_fnt("fnt/opc2.fnt"); musicOpc=load_wav("music/opc.wav"); musicFondo=LOAD_SONG("music/marilyn.mp3"); end // process teclado() begin if(key(_up)) if(var==0) var=4; PLAY_WAV(musicOpc,0); else var--; PLAY_WAV(musicOpc,0); end end; if(key(_down)) if(var==4) var=0; PLAY_WAV(musicOpc,0); else var++; PLAY_WAV(musicOpc,0); end end; if(key(_enter)) ejecuta(var); end end // function ejecuta(int mivar) begin switch(mivar) case 0: CLEAR_SCREEN(); STOP_SONG(); UNLOAD_FNT(fntopc); UNLOAD_FNT(fntopc2); SIGNAL(proceTeclado,s_sleep); pantallaDeJuego(); end case 1:end case 2:end case 3:end case 4:EXIT(0);end end end // function resalta(int var) begin DELETE_TEXT(var+1); write(fntopc2,380,100+60*var,1,opciones[var]); end // function mopciones() begin for(i=0;i<=4;i++) write(fntopc,380,100+60*i,1,opciones[i]); end end

rar

Video





1.Hola Mundo XNA.

3 04 2008

Esto es cosa de buscar en San google y encontrar, no pensaba hacer el hola mundo en xna pero me acorde que una vez hize un hola mundo en java y que se movia , bueno eso ya resulta mas atractivo je, esto a primeras es un asunto deprimente ,porque lo digo , porque te dices a ti mismo :hice esto ,para esto no mas, pero bueno a medidas que vayas practicando te daras cuenta que haces cosas mas complejas y mas entretenidas.

Empezemos…

Una ves que tienen todo instalado podemos proseguir , acuerdense del link de todo lo que le deje en un articulo anterior q les deje.
Instalacion

Les dejo el Link de mi compañero ahi esta mas claro que el agua de todos los primeros pasos para la generacion de un proyecto. Proyecto XNA

Y ahora les dejo el source.

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;

/* Bueno para los que no saben y tan recien aprendiendo, using
es importar una libreria en nuestro codigo , es como decir: oye
emprestame esto que lo voy a necesitar, Se lo solicitamos al
framework, el framework es el marco de trabajo que nos entrega
variadas funcionalidades*/

/*****Microsoft.Xna.Framework*****
    Ofrece clases de juego común que se necesita, como
temporizadores y los bucles del juego.

 ****Microsoft.Xna.Framework.Audio***
   Contiene bajo nivel de interfaz de programación de
   aplicaciones (API) de los métodos que pueden cargar
   y manipular XACT-proyecto creado y los archivos de
   contenido para reproducir audio.

****Microsoft.Xna.Framework.Graphics*****
   Contiene bajo nivel de interfaz de programación de
   aplicaciones (API) de los métodos que aprovechan las
   capacidades de aceleración de hardware para mostrar
   objetos 3D.

***Microsoft.Xna.Framework.Input*****
  Contiene las clases para recibir el aporte de teclado,
  el ratón y dispositivos de Xbox 360 Controller.

***Microsoft.Xna.Framework.Net****
  Contiene clases que implementan el apoyo a Xbox
  LIVE, multijugador,  y la creación de redes para el
  Marco de juegos XNA.

***Microsoft.Xna.Framework.Storage***
  Contiene clases que permiten la lectura y escritura
  de archivos.
 **/
namespace Hola_mundo_X_Y
{

 /*La palabra clave namespace se utiliza para declarar un ámbito.
     Este ámbito permite organizar el código y proporciona una
     forma de crear tipos globalmente únicos.*/

 public class Game1 : Microsoft.Xna.Framework.Game
 {

   // Esta es la clase base del juego
   GraphicsDeviceManager graphics;

  //Con este objeto administras los dispositivos
  graficos SpriteBatch spriteBatch;

 /* Permite a un grupo de sprites que se
    expedirá con la misma configuración.
   Namespace: Microsoft.Xna.Framework.Graphics
   Assembly: Microsoft.Xna.Framework
   (en microsoft.xna.framework.dll)*/
        Vector2 posicionPalabra;
        
        /*Define un vector con dos componentes;
        X-Componente e Y-Componente.
        Namespace: Microsoft.Xna.Framework
        Assembly: Microsoft.Xna.Framework
       (en microsoft.xna.framework.dll)*/
        SpriteFont arial;

        //nuestra fuente
        const int velocidadPalabra = 5;

        //una variable entera y constante
        string saludo = "Hola Mundo";

        //una variable cadena
        public Game1()
        {

        //inializador de los componentes.
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }
        protected override void Initialize()
        {

        // logica de iniciación
        //Variables de puntajes y objetos del juego
        //No inicies nada grafico en este lugar

            posicionPalabra.X = 50;
            posicionPalabra.Y = 50;
            base.Initialize();
        }

        protected override void LoadContent()
        {

        // instanciando SpriteBatch, para ya poder
       // empezar a dibujar.
     spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
         arial = Content.Load("arial");

        }

  protected override void UnloadContent()
  {

  // Elimina todo contenido q no pertenesca
  //a ContentManager.
  }
  protected override void Update(GameTime gameTime)
  {
     KeyboardState keyboard = Keyboard.GetState();
    teclado(gameTime);

  //funcion teclado
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed||
				keyboard.IsKeyDown(Keys.Escape))
   {
       // si queremos salir de la ventana con Esc.
       this.Exit();
   }

   base.Update(gameTime);

   //Este se llama cuando el juego se Dibuja.
   }
        protected void teclado(GameTime gameTime)
        {

            // controlador de teclado
            KeyboardState estadoTeclado = Keyboard.GetState();

            // estado de nuetro teclado ,
           //el metodo GetState nos recolecta el estado de
            //nuestro teclado
      Keys[] teclapulsada = estadoTeclado.GetPressedKeys();

  // todos los eventos de teclado los guardamos en Keys[].

      foreach (Keys tecla in teclapulsada)
         {

      //repite un grupo de instrucciones incluidas
       // en el bucle para
          //cada elemento de una matriz o de un objeto collection
         // en este caso Keys[].
         if (tecla == Keys.Left)
         {
         posicionPalabra.X -= velocidadPalabra;

        //disminiyendo--   
        }
        if (tecla == Keys.Right)
        {
        posicionPalabra.X += velocidadPalabra;

        //aumentando++
        }
         if (tecla == Keys.Up)
        {
        posicionPalabra.Y -= velocidadPalabra;

        //disminiyendo--
        }

       if (tecla == Keys.Down)
       {
       posicionPalabra.Y += velocidadPalabra;

       //aumentando++
       }

       if (tecla == Keys.Escape)
       {
       this.Exit();

       //cierre del programa
       }
     }
   }
   protected override void Draw(GameTime gameTime)
   {

   //Metodo de pintado
     graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
     spriteBatch.Begin();
     spriteBatch.DrawString(arial, saludo+
                                   "("+posicionPalabra.X+"
                                 ,"+ posicionPalabra.Y+")",
                             posicionPalabra, Color.Black);
     spriteBatch.End();
     base.Draw(gameTime);
   }
  }
}

bueno despues de todo este codigo veran algo como esto:

Seguiremos por mas cosas que ver .Les dejo los archivos adjuntos, lo cual para ver este pequeño proyecto, tienen que tener el XNA Games Studio 2.0 Redistributable y XP con sp2( servipack 2) .

aqui los links de descarga.

rar

Hola mundo X_Y

XNA Games Studio 2.0 Redestributable.

Emmm probe todo esto en el pc de mi hermano , no me ha funkado , bueno lo dejo de tarea para despues, la ideas es hacer un instalador en donde vaya todo empaquetado , si alguien sabe me avisa en un post, pero si tienes todo instalado y lo pruebas con el Visual C# , no tendreis problemas.

Bueno me despido, hasta la proxima , practiquen harto!!! La practica hace al maestro, bytes.





Desmitificar Juegos.

2 04 2008

que significa esta palabra??

Des – preposicion que significa sin o carencia de algo
Mitificar: Verbo, que significa,dar o explicar con atributos no conocidos que pueden ser fantasticos, irreales etc. Persona o cosa a las que se atribuyen cualidades o excelencias que no tienen o que no se sabe de su origen, o bien dar una realidad de la que carecen.
Mito:

Desmitificar, significa quitar los mitos, o sea aclarar y explicarlos en la realidad… en tu frase seria, Aclarar y describir la creacion de las redes de internet o los sitios de internet y la forma de usarlos..

Ejemplo: voy a desmitificar a un mago.

Xd ahora paso a ser un blog de Lenguaje, bueno no conocia la palabra y queria saber antes que nada.

A lo nuestro…

Les presento Gamasutra.

Sin duda una de las mejores paginas de noticias, articulos tecnicos, divertidos, de negocios, postmortems (lo que escriben los desarrolladores acerca de como les fue con su proyecto despues de terminarlo), eventos, trabajos y demas relacionados con el mundo del desarrollo de videojuegos. Indispensable visitar.

Bueno aqui les dejo un link de un tema interesante sobre la desmitificacion del Mario Galaxy, en donde entenderemos el funcionamiento de este gran juego.





Programacion de VideoJuegos

2 04 2008
—-

Este tema es el que mas me intrega, nose si yo realmente soy un gamer o no , solo de ves en cuando me obseciono por uno o que otro jueguito, estube jugando 2 años sin parar pasando por play station y play station 2 ,pero llego un momento que ya nada era novedoso , como que habia jugado de todo ya, pero eso nunca ira a cambia , porque la industria de los Video Juegos se procupa por ti , y siempre habra juegos novedosos que ver, bueno a lo que iba en realidad, te haz puesto a pensar; Y yo podre hacer un videoJuego ?? la verda yo lo pense reteiradas veces ,pero altiro pense, !!no esto es muy avanzado para mi, lo pense cuando iba en 4º medio, ahora ahi tecnologias que si nos dan la posibilidad de creer que podemos hacer esto, XNA fue lo que mas me motivo en la idea de programar un juego, luego conoci a Fenix un lenguaje basado en Div Y Div a su vez basado en c++.

Al momento de programar un juego lo primero que se piensa es programarlo en c++ puro, ya que resulta muy potente , en Fenix nos econtramos con ese gran potencial , tambien nos encontramos con la potencia de c# con XNA, en el blog hablare dos los dos, por dos razones : me interesa XNA y Fenix sirve vastante para aprender , es 3 veces mas facil que aprender visual basic xd , y asi nos permite crear una mayor vision de la programacion.

Pero apuesto que estas pensando: programar videoJuegos deve ser muy dificil?, tiene campo laboral?, donde se estudia? , esto es facil de responder: Lo mejor es estudiar afuera del pais , pero si no puedes por razones de dinero quedate en chile y estudia informatica, en especial Ingeneria Civil Informatica. El campo laboral es grande pero solo saliendo del pais , aunque si eres una persona de las que te crees altamente creativo este campo puede crecer aqui en chile.

Les dejo estos link interesantes para que se motiven.

Wanako Games es una empresa chilena de video juegos , y si que la esta rompiendo.

Arcos : es un instituto y a lo menos que yo sepa creo q el unico en chile que tiene la carrera de diseñador de video Juegos.

Octavo Arte : Es un concurso de creacion de video juegos que esta apoyado por la Universidad de Concepcion y esta en la busqueda de la fomentacion en la programacion de video juegos en chile.

Game Festival: Lo mismo que OctavoArte pero este es patrocinado por la Universidad de chile.

Mario Bros Chileno: Considerado el mejor desarrollador de videojuegos en chile.

Ingieniero Colombiano que cumple sus sueños.

Y vean esta malla del instituto de programacion que esta en USA es la mejor que he visto – link - .

Seguire con mas novedades, temas como crear proyectos con Xna y Fenix, Esperarme que no tardo.





Hablemos de xna

2 04 2008

XNA, cuyo significado (recursivo) es XNA’s Not Acronymed, es una Api desarrollada por Microsoft para el desarrollo de videojuegos para las plataformas Xbox 360 y Windows.

Podemos desarrollar con esta API con Microsoft Visual C# , el Framework de Microsoft y el Xna Game Studio, les dejo un link donde se les explica todo el proceso de instalacion de XNA.

Instalacion

Recursos e informaciones.

XNA creators.

XNA recursos y proyectos.

XNA para torpes.

y si quieres mas lo dejamos a manos de San google.





Hola mundo!!

1 04 2008

Tipico, lo primero que hace alguien que quiere aprender a programar es esta frase o bueno algo parecido , aunque para mi tiene una filosofia, ayaaa,  me puse xd!!, bueno el hola mundo es lo primero que uno hace , el primer peldaño, con este peldaño se van construyendo varios mas, y hasta formar una gran torre de conocimientos, lo cual deven ser peldaños solidos para que no se caigan, asi que por eso la razon de este blog, compartir lo que se y saber mis fallas y compartirlas con la gente, hablare de varios temas relacionados con nuevas tecnologias, microsoft sobre  todo y otras mas que pueden interles, todo explicado de una manera muy facil , esa tambien es un objetivo del blog, bueno esperemos , que prepare los temas.

hello world
emm return 42??? bueno no se lo que es, lo probare de ahi xd.
pd: falto gotoxy y conio.h para que quede ma bonito.