Guía para aprender a crear videojuegos (Lee esto si quieres ser como Will Wright)

Bueno, no es que garantice que vayas a ser como Will Wright si lees esta guía que acabo de publicar en Colectivo Guma, pero lo que sí te puedo asegurar es que al final de este primer capítulo habrás terminado tu primer juego: Un sencillo PONG para dos jugadores en el mismo teclado. ¿Perfecto para vacilar con tus amigos, verdad?

Como podréis comprobar si lo leéis, está escrito en un formato totalmente diferente a lo habitual y, según lo que me viene diciendo la gente, es mucho más divertido de seguir que las guías tradicionales. Puede que hasta resulte divertido para algunos consumados desarrolladores.

Si alguna vez se os ha pasado por la cabeza lo de crear un juego o simplemente tenéis curiosidad, os lo recomiendo encarecidamente.

Capítulos publicados hasta el momento

40 thoughts on “Guía para aprender a crear videojuegos (Lee esto si quieres ser como Will Wright)

  1. Pingback: TiRSO!Blog » Este es Will Wright

  2. Pingback: TiRSO!Blog » Tercer capítulo de la guía “Quiero Ser Como Will (Wright)”

  3. estoy siguiendo el tutorial y me da error no se que pasa y no lo consigo corregir, me da en “drawing_color” te dejo lo que llevo

    //————————————————-
    //Program: MI PRIMER PONG
    //Author: IGNACIO
    //Team: Team Inforg
    //————————————————-

    ///////////////////////////////////////////
    // Función incial (aquí empieza todo)

    Program MIPONG;
    Global
    int RESOLUCION_X;
    int RESOLUCION_Y;

    int x_Paleta_1;
    int y_Paleta_1;
    int Ancho_paleta_1;
    int Alto_Paleta_1;
    int Color_Paleta_1;
    BEGIN

    // INICIALIZAR ASPECTOS GRÁFICOS

    set_title(“Mi Primer Pong”); // Establece el título de la ventana de juego
    Full_screen = true; // No queremos que se ejecute a pantalla completa
    Graph_mode = mode_16bits; // El modo gráfico será de 16 bits
    set_mode (m640x480); // Resolución de 640×480
    set_fps(60, 60/10); // Establecemos los fps que queremos

    RESOLUCION_X = 640; // Almacenamos en dos variables la resolucion
    RESOLUCION_Y = 480; // para utilizarlo después

    // ESCRIBIR INFORMACIÓN SOBRE EL JUEGO EN PANTALLA
    write(0,10,10,0,”Mi Primer Pong, v. 0.01″);
    write(0,10,20,0,”Team Inforg”);
    write_int(0,300,10,1,&fps);

    // HEMOS TERMINADO DE INICIALIZR, LANZAMOS EL BUCLE PRINCIPAL
    Controlador_Juego(); // Arrancamos el controlador del juego
    END
    ///////////////////////////////////////////
    // Controlador del juego (aquí se controla el juego)

    Process Controlador_juego()
    BEGIN
    Inicializar(); // Inicializar al estado inicial
    Loop // Bucle principal

    If(key(_esc)) // si se pulsa escape
    exit(0,0); // salir del juego
    END
    Dibujar(); // dibujar todos los elementos en pantalla.
    Frame; // Refrescar pantalla
    End // del loop

    End

    ////////////////////////////////////////////
    // Inicializar el juego a su estado inicial

    Process Inicializar()
    BEGIN

    X_Paleta_1=30;
    Y_Paleta_1=240;
    Ancho_Paleta_1=20;
    Alto_Paleta_1=100;

    END

    ///////////////////////////////////////////
    // Dibuja los elementos del juego en pantalla

    Process Dibujar()
    Begin

    clear_screen(); // Limpiar la pantalla
    drawing_map(0,0) // Establecer que se dibuje en el fondo1

    // DIBUJAR PALETA 1

    drawing_color(rgb(0,0,0)); // indicamos el color de dibujo
    draw_box(X_Paleta_1-Ancho_Paleta_1/2, Y_paleta_1-Ancho_paleta_1/2,
    x_Paleta_1 Ancho_Paleta_1/2, y_Paleta_1 Alto_1/2;

    End

    ayudame a ver donde esta el error

  4. soy yo de nuevo ya corregir el error pero a continuar me da otro error haber si puedes solucionarlo como antes estoy ya en el final del tutorial.
    //————————————————-
    //Program: MI PRIMER PONG
    //Author: IGNACIO
    //Team: Team Inforg
    //————————————————-

    ///////////////////////////////////////////
    // Función incial (aquí empieza todo)

    Program MIPONG;
    Global
    int RESOLUCION_X;
    int RESOLUCION_Y;

    // VARIABLES GLOBALES
    int Velocidad_Paletas;

    //CARACTERISTICAS DE LA PALETA 1

    int X_Paleta_1;
    int Y_Paleta_1;
    int Ancho_Paleta_1;
    int Alto_Paleta_1;
    int Color_Paleta_1;

    //CARACTERISTICAS DE LA PALETA 2

    int X_Paleta_2;
    int Y_Paleta_2;
    int Ancho_Paleta_2;
    int Alto_Paleta_2;
    int Color_Paleta_2;

    //CARACTERISTICAS DE LA BOLA

    int X_BOLA;
    int Y_BOLA;
    int Ancho_BOLA;
    int Alto_BOLA;
    int Color_BOLA;
    int Velocidad_Bola_X = 3;
    int Velocidad_Bola_Y = 3;
    BEGIN

    // INICIALIZAR ASPECTOS GRÁFICOS

    set_title(“Mi Primer Pong”); // Establece el título de la ventana de juego
    Full_screen = false; // No queremos que se ejecute a pantalla completa
    Graph_mode = mode_16bits; // El modo gráfico será de 16 bits
    set_mode (m640x480); // Resolución de 640×480
    set_fps(60, 60/10); // Establecemos los fps que queremos

    RESOLUCION_X = 640; // Almacenamos en dos variables la resolucion
    RESOLUCION_Y = 480; // para utilizarlo después

    // ESCRIBIR INFORMACIÓN SOBRE EL JUEGO EN PANTALLA
    write(0,10,10,0,”Mi Primer Pong, v. 0.01″);
    write(0,10,20,0,”Team Inforg”);
    write_int(0,300,10,1,&fps);

    // HEMOS TERMINADO DE INICIALIZR, LANZAMOS EL BUCLE PRINCIPAL
    Controlador_Juego(); // Arrancamos el controlador del juego
    END
    ///////////////////////////////////////////
    // Controlador del juego (aquí se controla el juego)

    Process Controlador_juego()
    BEGIN
    Inicializar(); // Inicializar al estado inicial
    Loop // Bucle principal

    If(key(_esc)) // si se pulsa escape
    exit(0,0); // salir del juego
    END

    Actualizar(); // Actualiza la lógica del juego
    Dibujar(); // dibujar todos los elementos en pantalla.
    Frame; // Refrescar pantalla
    End // del loop

    End

    ////////////////////////////////////////////
    // Inicializa el juego a su estado inicial

    Process Inicializar()
    BEGIN

    velocidad_paletas = 5;

    // INICIALIZAR PALETA 1
    X_Paleta_1=30;
    Y_Paleta_1=240;
    Ancho_Paleta_1=20;
    Alto_Paleta_1=100;

    // INICIALIZAR PALETA 2
    X_Paleta_2=610;
    Y_Paleta_2=240;
    Ancho_Paleta_2=20;
    Alto_Paleta_2=100;

    // INICIALIZAR BOLA
    X_BOLA=320;
    Y_BOLA=240;
    Ancho_BOLA=15;
    Alto_BOLA=15;

    END

    ///////////////////////////////////////////
    // Dibuja los elementos del juego en pantalla

    Process Dibujar()
    Begin

    clear_screen(); // Limpiar la pantalla
    drawing_map(0,0); // Establecer que se dibuje en el fondo1

    // DIBUJAR PALETA 1

    drawing_color(rgb(255,255,255)); // Indicamos el color de dibujo
    draw_box(X_Paleta_1-Ancho_Paleta_1/2, Y_paleta_1-Alto_paleta_1/2,
    X_Paleta_1 Ancho_Paleta_1/2, Y_Paleta_1 Alto_Paleta_1/2);

    // DIBUJAR PALETA 2

    drawing_color(rgb(255,255,255)); // Indicamos el color de dibujo
    draw_box(X_Paleta_2-Ancho_Paleta_2/2, Y_paleta_2-Alto_paleta_2/2,
    X_Paleta_2 Ancho_Paleta_2/2, Y_Paleta_2 Alto_Paleta_2/2);

    // DIBUJAR BOLA

    drawing_color(rgb(255,255,255)); // Indicamos el color de dibujo
    draw_box(X_BOLA-Ancho_BOLA/2, Y_BOLA-Alto_BOLA/2,
    X_BOLA Ancho_BOLA/2, Y_BOLA Alto_BOLA/2);
    End

    ///////////////////////////////////////////
    // Actualiza la lógica del juego

    Process Actualizar()
    Begin
    //ACTUALIZAR PALETA 1

    // Si se pulsa “arriba” y la paleta no ha llegado arriba
    if(key(_up) AND Y_Paleta_1-Alto_Paleta_1/2 > 50)
    Y_paleta_1 -= velocidad_paletas; // Hacemos que suba
    End

    // Si se pulsa “abajo” y la paleta no ha llegado abajo
    if(key(_down) AND Y_PALETA_1 Alto_Paleta_1/2 50)
    Y_paleta_2 -= velocidad_paletas; // Hacemos que suba
    End

    // Si se pulsa “abajo” y la paleta no ha llegado abajo
    if(key(_m) AND Y_PALETA_2 Alto_Paleta_2/2 < 430)
    Y_Paleta_2 = velocidad_paletas; // Hacemos que baje
    End

    Control_Bola();

    End

    /////////////////////////////////////////
    // Actualiza la lógica de la bola

    Process Control_Bola()
    Begin

    // Colisiones con Paleta 1
    If(velocidad_Bola_X X_Paleta_1 // si la bola está en zona de colisionar con la paleta 1
    && X_Bola-Ancho_Bola/2<=x_Paleta_1 Ancho_Paleta_1/2)

    If(abs(Y_Paleta_1-Y_Bola)0 && X_bola<x_paleta_2 //si la bola está en la zona de colision con la paleta 2
    && x_Bola-Ancho_Bola/2<=x_Paleta_2 Ancho_Paleta_2/2)

    If(abs(Y_Paleta_2-Y_Bola)<Alto_Paleta_2*0.5 Alto_Bola*0.5) // Si la paleta 2 está bien colocada
    Velocidad_Bola_x *=-1;
    End

    //COLISIONES CON PAREDES SUPERIORES E INFERIOR
    If(Velocidad_Bola_Y<0 && Y_Bola-Ancho_Bola*0.5<=50) // si la bola colisiona con la pared superior
    Velocidad_Bola_Y *=-1;
    End

    If(Velocidad_Bola_Y<0 && Y_Bola-Ancho_Bola*0.5<=430) // si la bola colisiona con la pared inferior
    Velocidad_Bola_Y *=-1;
    End

    X_Bola =Velocidad_Bola_X;
    Y_Bola =Velocidad_Bola_Y;
    End

    de nuevo muchas gracias

  5. Tienes que decirme cuál es el error del compilador; si no tendría que revisar todo el código… Además, tienes que intentar acostumbrarte a corregir estos errores por ti mismo: Más adelante no vas a tener a nadie que te revise tu código ;)

    • Necesito aprender a desarrollar videojuegos, Necesito que me recomiendes documentacion, para leer y aprender… me manejo en C/C++ y visual Basic (Nivel Intermedio)….

      Espero tu respuesta, muchas gracias.

  6. ¡Muy bien! Pero has cometido un pequeño error al generar el .rar… Tienes que incluir también el archivo con extensión .dcb, que es en realidad el que contiene toda la información del juego. Sin eso no puedes ejecutarlo.

    Si lo corriges y me pasas el enlace nuevo, igual escribo una entrada en el blog para q lo vea todo el mundo ;)

  7. Me lo he descargado y no me funciona… Dice que el formato del .dcb es incorrecto. Si a ti te funciona seguramente sea por algún problema concreto del Windows Vista, o vaya usted a saber… xD

    Si quieres, puedes grabar un pequeño vídeo (de unos pocos segundos, tampoco forcemos) y también lo pondría en una entrada de mi blog.

    También, si te interesa esto de hacer videojuegos, te recomiendo que te introduzcas en el foro de stratos-ad (http://forums.stratos-ad.com). Esa es seguramente la comunidad más activa de desarrolladores de juegos hispanohablantes y seguro que te ayudará un montón a seguir avanzando.

  8. Pingback: El primer PONG (incluye vídeo) « miguelSantirso.es

  9. heyy estoy interesado en crear videojuegos…ablo en boca de cuatro fantasmillas k somos XD k estamos empezando en esto…uno d nosotros kontrola muxisisisimo mac ..yo controlo linux un poko y tngo estudios de musika y se usar varios programas para crear…y luego tnemos a otro que se encargaria del rollo de grafikos enkuanto a crear un personaje …y otra que se le da mu bien los guiones y todo eso….bueno como e dicho estamos empezando y e visto este tutorial par air yo poniendome a kaldo por mi parte….el problema esque me pierdo cuando hay tanto link podrias indicarme que archivo necesito bajar del fenix ese…y en donde porque me baje el fenixpack2.9 pero eso no tiene lo que nombras en la guia.

    gracias

    PD:buenisima guia es mucho mas amena que cualkier toste d esos que t enkuentras por google oi en dia^^

  10. siento ser tan pesado..pero solo dispongo de linux y la konsola de windows no m ayuda muxo kuando aparece en la guia….no m ejecuta el cmd que pides…supongo porke se referira a la consola d windows…entonces abro la terminal d ubuntu …pero d ai palante no se komo llegar a la karpeta y aser el resto :S lo siento

  11. hola me pasa k hago el primer codigo i no me da ningun error al compilar con el codigo

    //Author: Oscar
    //Team: Team Inforg
    //————————————————————–
    //////////////////////////////////////////////////////
    // Funcion inicial (aqui empieza todo)

    Program MIPONG;
    Global
    int RESOLUCION_X;
    int RESOLUCION_Y;
    BEGIN

    //INICIALIZAR ASPECTOS GRAFICOS
    set_title (“Mi primer pong”);
    Full_screen = false;
    Graph_mode = mode_16bits;
    set_mode (m640x480);
    set_fps (60, 60/10);

    RESOLUCION_X = 640;
    RESOLUCION_Y = 480;

    write(0,10,10,0, “Mi primer Pong, v. 0.01″);
    write(0,10,20,0, “Team Inforg”);
    write_int(0,300,10,1,&fps);

    Controlador_Juego();
    END

    Process Controlador_Juego();
    BEGIN

    Loop
    if (key(_esc))
    exit (0, 0);
    End

    Frame;

    End
    END

    el problema es que obtengo el dcb i lo interpreto con el FXI i me da error

    si alguien tiene la respuesta le estaria muy agradecido
    gracias de antemano

  12. Pingback: Segundo capítulo de la guía “Quiero Ser Como Will (Wright)” « miguelSantirso.es

  13. Lei el primer capitulo
    muy bueno
    pero eso paso de verdad???
    lo digo por curiosidad ^^
    y como puedo hacer para que se reinicie la bola cuando se va?
    es que no se mucho de computacion
    se poquito y queria saber si podias ayudarme
    salu2!

  14. Hola que Tal señor Miguel
    Bueno lo que pasa que yo desde pequeño he querido hacer videojuegos es lo que mas me gusta
    y de verdad le agradesco por estos tutoriales SOn muy buenos para comenzarte a meterte en el tema Muchas gracias
    Esperto algun dia ser mejor que usted
    Gracias No mames Es usted Genial
    EChenle cacumen

  15. hola mi nombre es alejandro y ps a mi me gusta mucho todo esto de la cultura de los videojuegos. se podria decir que soy un vicio para los videojuegos pero puedo controlarlo, pero no solo me gusta jugarlos tambien me gustaria crear.
    he creado un juego con FPScreator pero quiero algo mas que eso, quiero hacer mis propios juegos desde cero, quiero hacer de mis pensamientos e imaginaciones un videojuego por eso pido ayuda.
    pues me llamo mucho la atencion esta guia que pusiste por que no es aburrida como cualquier otra guia por eso te felicito. ademas de ser como un libro de una historia para leer es una exelente guia para desarrollar videojuegos.
    mi problema es que descargue el fenix que dice la guia, empece todo muy bien, hice los codigos como lo decia, iba todo bien hasta que al compilar el juego con el FXI me aparecio un error de que el compilador no sirve, intente buscarlo en google pero no encontre nada y los links que pusiste aca ya no funcionan.
    por favor quiero seguir con esto ya que me gusta muchisimo asi que si pudieras arreglar los links o poner otro te lo agradecere, me urge por favor.
    saludos a todos.

  16. ¡Hola! Primero felicitarte por la guía, está muy bien estructurada y amenizada. No sé si seguirás en este proyecto, pero quería saber si podrías renovar el enlace de descarga. (No me funciona el primer de todos, así que estoy ahí atascado). Muchas gracias.

  17. hola como estas, ya he visto todo el tutorial 1 hice todo lo que dijistes en el tutorial tal cual y como esta, todo esta bien solo que cuando voy a comenzar a jugar la pelota(bola) traspasa la paleta 2 y no se todavia como arreglarlo para que funcione bien por favor ayudame

  18. Miguel, saludos!!! He comenzado tu tutorial, tengo muchas ganas de aprender como va esto de la programación. Pero tengo un problema, al intentar mirar las principales funciones no funciona ningun directorio de documentos. En blogspot tampoco, ¿como puedo mirarme las principales funciones? ¿no las tendrás tu para subirlas a un servidor y que les heche un ojo? Muchas gracias de antemano.

  19. tengo un pequeño problema despues de copilar el archivo por primera ves y pongo “fxi mipong.dcb” sale una ventanita de error con el simple mensaje “error al abrir mipong.dcb” me podrian ayudar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>