PFM: Primeros pasos con UDK, creando el proyecto

Ahora que ya tenemos claro el diseño del juego y tras unas semanas aprendiendo a usar UDK, es hora de comenzar a trabajar. En esta entrada veremos los pasos básicos necesarios para crear un proyecto nuevo en UDK.

Lo que define qué juego ejecutará el motor es el GameType. El GameType se encarga de decirle al motor las “reglas” del juego, de modo que podríamos ejecutar diferentes tipos de juego en un mismo escenario y con los mismos personajes, pero cambiando este conjunto de reglas. Por tanto, para crear un juego propio lo primero que hay que hacer es crear un GameType propio y decirle al motor que lo utilice al ejecutarse. [NOTA: En UDK ejecutar el motor es como decir ejecutar el juego, pues el motor es una parte intrínseca del juego. Simplemente se le especifica a qué juego queremos jugar]. Procedamos a crear nuestro propio GameType, un mapa de prueba y a prepararlo todo para trabajar en nuestro juego.

En el directorio de instalación de UDK podemos ver estas 4 carpetas:

pfm01_01

  • Binaries: Contiene los ejecutables del juego y programas adicionales, no debería hacer falta tocar aquí.
  • Development: Contiene el código fuente del motor en UnrealScript y es donde escribiremos nuestro propio código
  • Engine: Ficheros que requiere el motor, no debería tocarse.
  • UDKGame: Aquí se guardan todos los ficheros de nuestro juego: mapas, modelos, etc.

Primero crearemos nuestro propio GameType. Para ello tendremos que crear una clase propia en la carpeta Development, donde están todas las de UDK. Dentro de Development vemos toda una lista de carpetas:

pfm01_02Son los diferentes paquetes de código que ejecuta el motor para funcionar. Para organizarnos bien crearemos una carpeta propia, llamada en mi caso PFM. Dentro de esta carpeta crearemos otra llamada Classes, que es donde el motor buscará que esté el código extra.

pfm01_03Por defecto UDK no va a buscar el código nuevo en nuestra carpeta hasta que se lo indiquemos, y para ello hay que modificar un fichero de configuración. Como hemos visto antes, en el fichero de instalación de UDK hay una carpeta llamada UDKGame. Dentro de ella vemos varias carpetas, una de ellas se llama Config. En esta carpeta se encuentran los ficheros de configuración del motor. En estos ficheros se especifican cosas como configuración de controles, gráficos y entre otras cosas, el código que debe compilar UDK. Si queremos que UDK use el código que creemos, debemos indicárselo. Para ello modificaremos el fichero DefaultEngine.ini de la carpeta Config. Abrimos dicho fichero con cualquier editor de texto y buscamos la siguiente línea, donde se especifican los paquetes de código a compilar.

pfm01_04

Añadimos el paquete de nuestro juego, que será la carpeta que creamos anteriormente, PFM:

pfm01_05Guardamos el archivo y cerramos. Ahora UDK tendrá en cuenta nuestro código.

Hecho esto, creemos nuestro GameType. En la carpeta PFM/Classes vamos a crear una clase que definirá el tipo de juego. Creamos un fichero, llamado en mi caso “PFMGame.uc”. La extensión .uc indica que es un fichero de UnrealScript. Lo editamos y escribimos el siguiente código:


class PFMGame extends UTDeathMatch;

defaultproperties
 {
 }
 

Es una clase vacía que extiende UTDeathMatch, que es uno de los GameTypes que vienen en UDK por defecto. Al extender de este GameType y no cambiar nada, en esencia estaremos usando ese GameType de momento, pero luego podremos modificarlo para que PFMGame sea un GameType totalmente diferente. Guardamos el archivo y ya podemos cerrarlo.

Para probar nuestro GameType crearemos un mapa de test en el que poder movernos. Abrimos el editor (El ejecutable está en la carpeta Binaries). Como hemos añadido una clase nueva (PFMGame) nos pedirá compilar los scripts. Le decimos que sí, y una vez termine y si no hay ningún error de compilación, volvemos a ejecutar el editor, apareciendo entonces la aplicación.

udk08

El mapa que sale por defecto nos sirve, así que lo guardamos. Para organizarse mejor conviene crear una carpeta en UDKGame/Content/Maps, que es donde se guardan los mapas. Mi carpeta se llamará PFM y guardaré el mapa como “test01.udk”.

Ahora sólo falta decirle a UDK que use nuestro GameType PFMGame. Para esto, en el menú de la parte superior del editor, vamos a View->World Properties. Se abrirá una ventana de propiedades. Si desplegamos la pestaña Game Type veremos que podemos escoger el GameType a utilizar. Desplegando la lista veremos todos los GameTypes disponibles y si todo ha ido bien veremos el nuestro también. Lo seleccionamos.

pfm01_06Y ya está, si pulsamos el botón udk09de la barra de herramientas de la parte superior, se ejecutará el juego.

pfm01_07

Como vemos, al extender nuestro GameType de UTDeathMatch, aparece la interfaz típica de una partida DeathMatch de Unreal Tournament, pero es algo que podremos evitar cuando empecemos a extender PFMGame. De momento, ya tenemos UDK preparado para trabajar en nuestro juego. 🙂

Banner Blog

Anuncios

54 pensamientos en “PFM: Primeros pasos con UDK, creando el proyecto

  1. Pingback: PFM: Cambiando la cámara en UDK a tercera persona | El Blog de Marcos

    • Muchas gracias por tu otra respuesta……

      que pena molestarte tanto… pero hice lo de arriba y me sale esto cuando termina de compilar los script

    • Tranquilo no es molestia!
      Según parece por el mensaje que te da no encuentra ningún fichero con la extensión .uc. Y eso pasa porque la carpeta PFM/Classes está vacía o no contiene un fichero .uc
      Comprueba que estás viendo la extensión del archivo completa, que quizás tienes windows configurado para no mostrar la extensión y en realidad tu “PFMGame.uc” es un “PFMGame.uc.txt” y por eso no lo detecta

    • muchas gracias… igual tenia otro error, estaba mal escrito el nombre de la carpeta, tenia Clases en vez de Classes…. corregí eso y de una lo identifico, muchas gracias por tu respuesta (que no se note que soy un novato en esto del UnrealScript), he mirado por encima el resto de guías y están excelentes, espero con ansias la de Combate Cuerpo a cuerpo.

  2. Buenas…..
    Disculpa pero intentado lo q dices arriba me aparecio este error….

    http://www.facebook.com/photo.php?fbid=436877926388662&set=a.436877339722054.101342.100001993764646&type=3&src=http%3A%2F%2Fsphotos-g.ak.fbcdn.net%2Fhphotos-ak-ash4%2F482871_436877926388662_1423934863_n.jpg&size=960%2C600

    no se si abra sido por q obtuve el archi.uc de otra de las clases…. pero lo empeze desde cero….
    pero el nombre y todo esta …. y lo puse en el engine tambien.

  3. hola he empezado pero tengo el error de arriba parece que mi archivo .uc no lo es como hago que mi windows lo vea tengo windows 7 64 bits

    • Ve a las opciones de carpeta de windows y activa ver las extensiones de los archivos, así podrás cambiarla de “.txt” a “.uc”

    • Hola Andy. Repasa los pasos, quizá se te haya escapado alguno. Si no encuentras ningún fallo, reinstala UDK y vuelve a intentarlo, no vaya a ser que sin querer hayas borrado alguna clase. Suerte 😉

  4. Quiero hacer un remake de ( Vigilante 8 2nd offense- para PC, con LAN ) es un juego de PS1 al que yo era adicto y me gustaria Traerlo a la PC con este motor , es posible ? cuanto tiempo se lleva algo de esta dimension ? , no les de pena acribillar al que no sabe acepto opiniones y criticas NP – Este es mi arsenal : Intel i7 2600 3.30 GHZ / 12 GB RAM 1600 mhz Kingstone HyperX / 2.0 Teras HDD WD /ASUS Maximus IV GENE-Z-ROG / ATI R6970 2 GB Edicion MSI afterburner / Logitech G110 / Rat 3 Cyborg /Thermaltake 775 Watts / Panasonic Viera 42 Pulgadas 600 hz 3D Neoplasma.

    • Hola Valdo, con UDK seguro que es posible desarrollar un juego del estilo del que dices. El tiempo que te llevará dependerá de muchos factores como tus conocimientos del motor, programación, diseño 3d, etc.

  5. hola amigos tenia una duda tengo el archivo uc ya echo con los codigo de arriba en el tuto.. al compilar me sale todo perfecto… lo extendí de UTGame pero como puedo hacer que se extienda de utgame y a la vez de SimpleGame???

    • y si quisiera hacerlo de dos extensiones diferentes..mi pregunta es ¿sera posible? ejemplo extender de UTGame y de UTDeathMatch al mismo tiempo…
      o es necesario hacer dos typesgames info por separado pero tenerlos en la misma carpeta…

    • ahhh jeje gracias. otra duda se puede extender de dos extensiones que no extienda la una de la otra???

    • cambie la extencion a .UC y nada me, cambie el nombre de la carpeta de Clases o Classes y tampoco me funciono no me carga el script y no se por que, tambien reinstale y nada

    • Hola Rudolf, ¿qué error te da? Comprueba que has hecho los pasos correctamente, ya que la extensión y el nombre de la carpeta incorrectos son fallos que evidentemente hacen que no funcione, quizá se te ha escapado alguno más 😉

  6. holas este tutorial esta hecho desde un año mas o menos estoy tratando de aprender a usar UDK no se si abra cambiado hasta la fecha por que me da un problema cuando abro el UDK me pregunta si deseo compilar los script (lo normal) pero cuando termina de compilar mi carpeta me sale el siguiente error

    C:\UDK\UDK-2013-07\Development\Src\9Game\Classes\9Game.uc(1) : Error, Class name ‘9’ doesn’t match name of source file ‘9Game’

    • Hola, el propio error te dice que el nombre de la clase no coincide con el nombre del fichero y por eso no compila. Tienen que tener el mismo nombre.

    • pense eso tambien, incluso le puse el mismo nombre a la carpeta nueva tanto como al archivo .uc, dentro del archivo .uc esta bien especificado el nombre y en el archivo de DefaultEngine.ini tambien pero aun asi el error persiste 😦 me estoy leyendo los manuales de getting started y programacion que facilita la pagina de UDK a ver si encuentro solucion

      una pregunta para cuando logre solucinar esto (si es que lo soluciono D:)

      ¿crees que sea posible agregar el sistema de compensacion (ejercicio, fatiga, descanso, compensacion) con UDK?, al menos pienso que debe ser bastante dificil, y tendria que saber programar bien, para lograr si quiera un demo

    • No sé si pudiera ser pero a lo mejor no funciona si los nombres de las clases comienzan por un número. Para probar podrías cambiarlo por un nombre con letras a ver…
      No sé qué es el sistema de compensación xD

  7. Qué tal Marcos? Estoy preparando el diseño de un juego en UDK pero, a pesar de que me he leído todo el tutorial, tengo algunas dudas. La idea base del juego es cargar un pueblo desde el inicio por el que podrás moverte desde un principio sin problemas. Pero a medida que “avanzas” en la investigación, desaparecen ciertos objetos y aparecen otros (en tiempo de ejecución). La mayor parte de ellos son “zonas” con las que podrás colisionar, una especie de triggers. Por ejemplo: Si consigues una espada, se creará un cuadrado que envolverá tu casa para que cuando vuelvas a ella y colisiones con el cuadrado salte una cinemática o acciones de QTE. La pregunta fundamentalmente es: ¿cómo puedo crear dichos espacios de colisión en tiempo de ejecución? ¿Tienes un link dónde mirar la jerarquía de clases? Muchas gracias.

    • Hola Leo. Para esas cosas del estilo: cuando cojas la espada pasará tal cosa y cuando actives esto pasará tal otra.. lo mejor es usar kismet por su sencillez. Esas “zonas” que quieres crear podrías hacerlas usando triggers, que te permiten detectar en kismet cuándo entra el jugador. Además puedes activarlos y desactivarlos, etc. Más que crearlos en tiempo de ejecución, lo mejor es crearlos en tu mapa pero dejarlos desactivados y activarlos cuando te convenga.
      Para ver toda la jerarquía de clases te recomiendo que descargues el programa UncodeX, que te muestra todos los paquetes de clases y el árbol jerárquico y te permite hacer búsquedas en el código. Es muy útil para investigar en el código de UDK.

  8. Hola Soy nuevo en esto y me sale esto cuando termina de compilar los script de color rojo un error : c:/UDK/UDK-2009-11/BINARIES/../DEVELOPMENT/SRC/SLP/CLASSES/SLPGame.uc/: error , bad class definition SLPGame¨/ /63/63
    Copile Aborted due to error
    warning/error sumary
    c:/UDK/UDK-2009-11/BINARIES/../DEVELOPMENT/SRC/SLP/CLASSES/SLPGame.uc/: error , bad class definition SLPGame¨/ /63/63
    execution of commandlet took
    Q hago???

  9. Ey perdona molestarte tanto, pero el juego que estoy haciendo es una especie de “sandbox”, un pequeño mundo con un suelo de césped y un bunker en medio, y tengo varias dudas que quiero solucionar y hacer:

    1º: Quiero poner los static mesh de forma que cuando andes hacia ellos y choques, se caigan, roden, etc.

    2º: Un menú que salga al pulsar la tecla “E”, y que sea como un listado que traiga todos los static mesh que halla creado y sean como lo describo en la duda 1, y que cuando se le pinche a uno con el ratón, aparezcan en el terreno y se pueda interactuar con él.

    Lo que quiero hacer es un tipo de juego como el Garrýs mod, gracias por tu paciencia 🙂

    • Para que los static mesh reaccionen a impactos debes usar KActors:
      http://udn.epicgames.com/Three/UsingKActors.html

      Lo segundo ya es más complicado (no tanto por dificultad como por número de funcionalidades).
      Primero deberás crear un menú, empieza con algo sencillo como un único botón.
      Luego añadiría funcionalidad al botón para que al clicarlo hiciera un spawn de cierto actor en el escenario.
      Una vez tengas un botón en funcionamiento, ya metería más

  10. Ayudame, ocupe un archivo .txt para hacer el archivo .uc, segui todos tus pasos, pero me aparece como “TDC.uc.txt”, me puedes ayudar porfavor? y si… soy novato

  11. Amigo como puedo seguir desde cero, tu blog?, Es decir, he leido algunos de tus blogs pero, como que ya vas un poquito adelantado. Ý como soy nuevo me interesaria logicamente comenzar desde el principio.

    Gracias de antemano por tomarte la molestia de ayudar a otros.

  12. Hola marcos, mi problema es mas sencillo o eso creo, y es que no encuentro en la carpeta Binaries el ejecutable del editor, estoy usando el UDK3 2014-08. A ver si puedes ayudarme por favor.

  13. Hola brother! mira tengo un problemas cuando inicio el UDK le doy en Play y el juego se ejecuta pero la camara apunta hacia arriba y gira totalmente sin parar nose que hacer ayudame porfavor

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s