From the category archives:

3D

El cubo volador

by Jorge Machin on July 14, 2010 · 3 comments

in 3D, Adobe Flash, C/C++, Personal, Portafolio, Proyectos, Unity, videos

Una pequeña prueba de concepto para agregar figuras 3D a videos para juegos y otras aplicaciones.

Por supuesto que el guión no esta basado en algo que me haya pasado :)

{ 3 comments }

Juegos Multiusuarios – Parte 2

by Jorge Machin on June 9, 2010 · 0 comments

in 3D, Proyectos, Unity

Ya pusé un espacio en Facebook para colocar los demos de Unity que estoy haciendo en mi tiempo libre. Se tendrán avances poco a poco y trataré de subirlos conforme los vaya teniendo, por lo que cabe aclarar que hay muchas cosas tras bambalinas y lo que se ve no es todo en lo que se esta trabajando.


entrada

La idea inicial es crear plazas de reunión para la comunidad, algunos juegos independientes como un shoter y juegos de autos. Lo ideal sería poder hacer grupos y tener algunas misiones u objetivos. Veremos como avanza todo esto.

Si quieren visitarlo pueden ir a http://www.facebook.com/apps/application.php?id=112054205482061 y echarle un vistazo y sugerir algunas cosas y prestar ideas.

{ 0 comments }

Juegos 3D Multiusuarios – Parte 1

by Jorge Machin on May 1, 2010 · 6 comments

in 3D, Personal, Unity

Llevo algo de tiempo haciendo algunos experimentos usando mi propio motor 3D y algunos otros como Ogre, Irrlicht y Unity. He encontrado que Unity permite realizar juegos muy rápido y sin complicaciones. Además su comunidad esta creciendo día a día. Es por eso que ahora agrego los juegos 3D a mi lista de proyectos e incluso a mi portafolio por si alguna empresa esta interesada en hacer campañas interactivas para sus clientes y productos usando esta tecnología :)


Cuarto para un shooter.
Cuarto para un shooter.Un juego de carreras de autos.Otro cuarto para el shooter.

Pero... ¿porqué no? también crear uno que otro juego para divertirnos y sacar toda la energía guardada después de estar trabajando detrás del monitor. Además se puede utilizar Facebook para crearle una comunidad, conocer gente nueva y estar al tanto de todo lo que pasa dentro de este espacio virtual.

¡Claro! Al principio los modelos y los juegos van a ser sencillos, pero con el paso del tiempo habrá cosas más elaboradas. Pronto escribiré más al respecto.

{ 6 comments }

Formas en Unity

by Jorge Machin on April 24, 2010 · 0 comments

in 3D, Unity

Unity es un motor de juegos 3D que ha llevado la posibilidad de hacer videojuegos 3D a las masas al ser fácil de usar, estar basado en la plataforma mono y tener una versión gratituita que se puede usar incluso para construir juegos comerciales y sin tener que pagar ningún tipo de regalias.

Uno de sus puntos más criticado es una interfaz del usuario algo primitiva para nuestros días, especialmente si se compara con Flex. Afortunadamente Marcelo Roca ha compartido con la comunidad una encapsulación sencilla, eficiente y fácil de modificar que nos permite hacer formas de una manera rápida. Además esta trabajando en un editor de formas. Se puede bajar de Google Code.

Un ejemplo del codigo de una pantalla típica de login sería de esta forma:

using System;
using System.Collections;
using System.Drawing;

using UnityEngine;

using UnityForms;

public partial class LoginForm : Form {

    /** **/
   
    public  GUISkin window_skin;
   
   
    /** **/
   
    private RegisterForm register_form;

   
    /** **/
   
    private Label lbl_usuarios_registrados;
   
   
    private Label lbl_correo;
   
    private TextField fld_correo;
   

    private Label lbl_clave;
   
    private PasswordField fld_password;
   
   
    private Toggle tgl_recordar = new Toggle();
   
    private Label lbl_recordar;
   
   
    public Button btn_entrar;
   
   
    private Label lbl_usuarios_nuevos;
   
   
    public Button btn_recuperar_clave;
   
    public Button btn_solicitud_registro;
   
   
    public Button btn_invitado;
   
   
   
    public override void Initialize() {
   
        set_window_properties();
       
        set_form();
       
        //
       
        btn_recuperar_clave.Click += recuperar_clave_OnClick;
       
        btn_entrar.Click += entrar_OnClick;
       
        btn_solicitud_registro.Click += register_request_OnClick;
       
        btn_invitado.Click += guest_OnClick;
       

       
    }   

   
    private void set_window_properties() {
   
        // Titulo
       
        SuspendLayout();
       
        Text = "Entrada";
       
        Size = new Size( 415, 380 );

        Draggable = true;
       
        StartPosition = StartPosition.Center;
       
        WindowMode = UnityForms.WindowMode.Window;
       
        ResumeLayout(false);

    }   
   
   
    private void set_form() {
   
        //
   
        lbl_usuarios_registrados = (Label) Controls.Add( new Label() );
       
        lbl_usuarios_registrados.Text = "Usuarios Registrados:";
       
        lbl_usuarios_registrados.Location = new Point( 15, 20 );
       
        lbl_usuarios_registrados.Size = new Size( 200, 42 );
       
       
        //
   
        lbl_correo = (Label) Controls.Add( new Label() );
       
        lbl_correo.Text = "Correo:";
       
        lbl_correo.Style = new GUIStyle();       
       
        lbl_correo.Location = new Point( 15, 60 );
       
        lbl_correo.Size = new Size( 200, 30 );
       
       
        fld_correo = ( TextField ) this.Controls.Add( new TextField() );

        fld_correo.Location = new Point( 15, 92 );
       
        fld_correo.Size = new Size( 210, 37 );
       
        fld_correo.TabIndex = 2;

        //

        lbl_clave = (Label) this.Controls.Add( new Label() );
       
        lbl_clave.Text = "Clave:";
       
        lbl_clave.Style = new GUIStyle();            
       
        lbl_clave.Location = new Point( 15, 136 );
       
        lbl_clave.Size = new Size( 100, 30 );
       
       
        fld_password = ( PasswordField ) Controls.Add( new PasswordField() );

        fld_password.Location = new Point( 15, 168 );
       
        fld_password.Size = new Size( 210, 37 );
       
        fld_password.TabIndex = 1;

        //
   
        tgl_recordar.Text = "Recordar mis datos";
   
        tgl_recordar.Location = new Point( 15, 212 );
       
        tgl_recordar.Size = new Size( 200, 30 );
       
        tgl_recordar.TabIndex = 3;
       
        Controls.Add( tgl_recordar );

        //

        btn_entrar = ( Button ) this.Controls.Add( new Button() );
   
        btn_entrar.Text = "Entrar";
   
        btn_entrar.Location = new Point( 240, 212 );
   
        btn_entrar.Size = new Size( 160, 30 );

        //

        btn_recuperar_clave = ( Button ) Controls.Add( new Button() );
   
        btn_recuperar_clave.Text = "Recuperar clave";
   
        btn_recuperar_clave.Location = new Point( 240, 162 );
       
        btn_recuperar_clave.TabIndex = 5;
       
        btn_recuperar_clave.Size = new Size( 160, 30 );

        /** Usuarios Nuevos **/

        lbl_usuarios_nuevos = (Label) this.Controls.Add( new Label() );
       
        lbl_usuarios_nuevos.Text = "Usuarios Nuevos:";
       
        lbl_usuarios_nuevos.Location = new Point( 15, 260 );
       
        lbl_usuarios_nuevos.Size = new Size( 200, 30 );

        //

        btn_solicitud_registro = ( Button ) Controls.Add( new Button() );
   
        btn_solicitud_registro.Text = "Solicitud de registro";
   
        btn_solicitud_registro.Location = new Point( 15, 300 );
   
        btn_solicitud_registro.Size = new Size( 180, 30 );

        //

        btn_invitado = ( Button ) Controls.Add( new Button() );
   
        btn_invitado.Text = "Entrar como invitado";
   
        btn_invitado.Location = new Point( 215, 300 );
   
        btn_invitado.Size = new Size( 180, 30 );
   

    }
       
}

{ 0 comments }

Revisando memory-sticks abandonados encontré un video de noviembre de 2006 donde grababa una prueba de como me conectaba desde mi máquina XP a mi servidor Linux con KDE y Fedora Core 6. Se puede ver como corría al mismo tiempo un video, un chat 3D escrito en Flash y un programa de demostración 3D de Irrlicht (OpenGL). Desafortunadamente es una de mis primeras pruebas y no transmitía el audio. Al poco rato de hacer este video configuré lo que me hacía falta.

Realmente el desempeño es muy bueno considerando que es una conexión remota. En parte es porque las ordenes OpenGL se corren localmente como se puede ver en el acercamiento a la terminal en la parte final del video.

{ 0 comments }