You are on page 1of 22
CCA TTR TTC M TTT Els [sm con UPD ee een patrén ritmico Instalando el juego con Inna Setup SON ii 20 Videajuegos AUTOR DE LA oBRA Nacos Mecina DIRECCION EDITORIAL ard Toibio etrio@berrenacom CCoOROMUACION EDITORIAL Fa Margaita Garcia, aber ron Disefio Y MAQUETACION ‘Antonio G* Tom ‘PRODUCCION Marisa Cogoro SUSCRIPCIONES Tol $1 628.0203 Fax 91 628 09 35 sscrpiresSibepera com uumacidtFotgreim Dui mnesiOn: Gréficas Don Bosco ‘DUPLICACION co.ROM: MP0. Fin de la obra Terminamos con este nmero nuestra obra dedicada al disefto y le progra- macién de videojuegos, dedicada a formar al alurnno en las principales téo- nicas relacionadas en ei desarrollo completo de un videojuego 3D. Alo largo de la obra hemos aprendido programacién a nivel general y a nivel especifico con ciertas herramientas y lenguajes. También hemos tra- bajado con distintas aplicaciones de edicion y retoque de imagenes, tanto ‘en 2D como en 3D. Hemos descubierto las aplicaciones mas importantes. ara crear nuestra propia musica y toda clase de efectos sonoros, y hemos. aprendido la historia de los videojuegos desde sus inicios hasta el panora- ma actual. ‘Ademés, con esta obra se ha pretendido ayudar a fomentar la creatividad del lector, dandole ideas para sus desarrollos y disefios y animandole siem- pre a practicar, pues asi es como se consiguen los mejores resultados. Terminamos aqui el viaje de 20 semanas articulade en 400 paginas y 20 CD-ROMs, en el que deseamos que hayas adquirido una buena base para oder continuar a partir de abi. na mens Aprovechamos para agradecer tu confianza, esperamos que Programacién om ¥ Disefio de Videojuegos haya sido una obra provechosa y que, on defi- ea tecect net) Titiva, te hayas divertido, Ore (Madrid) Porque en el fondo, de eso se trata. Tel: 91 657 6900 evra erprensa woe berprensa.com 381 Zona de desarrollo Coneluimos #1 desarrollo de nuestro juego “Zone of Fighters" implomentan- cate do un sencilo médule multiugador Usando el protacolo UDP. REDACCION, PUBLICIDAD Y ‘ADMINISTRACION / ce io Te, 7 Pol. nd. 1 Noga”) 28110 Algete (Mac) Tel: 91 628 0203 Fax 91 628 09:35 (at nt ener) Dero Leal: Ma5e4-2002 |i: Coons 5241725 Teo 20495211741 bra ample 849226175 385 Zona de graficos 389 Zona de audio Continuamos, en esta ocasién, compl tando el patrén ritmico. edicion de patrones, 391 Blitz 3D algunos ejercicios para conocer mejor su funcionamiento. 395 Tutorial Aprendemos como realizar un instalador de nus sumartio Para finalizar la seccién de diseno gréfico hemos querido recorrer algunas de las herramientas que hemos utllizado para avanzar un poco mas en Su Uso. Seguidamente, anadiremos alguna melodia, efectos y trabajaremos con la No queremos dejar las funcionas de red e internet sin antes haber realizado tro juego usando el pro- copra 1803 Grama Inno Setup, anna sr 397 Historia del videojuego ‘Terminamos de ver los simuladores de velocidad: esta vez eprenderemos MMT acne sobre simuladores de motociclisma y de tipo futurist -"Programaciée y Diseho 6e Videojuegos” son 399 Cuestionario ‘waataamn compte, pare on cre cee ‘Cada semana un pequeno test de autoevaluacién, en este numero encon- {eects on wre wards tambien los respuestas ‘aed ur bens ae 9 se te i Irvenee nee o s sre na a oa Contenido CD-ROM {cto on ee ae ‘se sient se acshesibciniebeevsnesinrveyt nty indanipetth ee ees res ea ‘SERVICIO TECMICO: PARA ENCUADERNAR LA OBRA: Para consulas,dudastéonicasy reclamacionesIberprensa tec a siguentedreccion de core electrnic: » Tapas del volumen 1 disponibles en Iberprensa. ‘gameseberprense.com Pedidos por teléfono: 916260203. > Tapas del volumen 2 ya a la venta en quioscos. tpacrighepaencegintlinersraned £1 envio de nimoros sueltos 0 atrasedos se reaizaré contra > Los suscriptores recibirdn las tapas en su domicilio | _rembolso del precio de vent a publice més el coste de los sin cargo alguno como obsequio de Iberprensa. ‘gastos de enva. Pueden ser solicitados enol eléfono de atencién ‘al cliente 91 626 02 03 Sistema multijugador oncluimos el de: rrollo de nuestro juego “Zone of Fighters” imple- mentando un sencillo médulo multijugador usando el proto- colo UDP para dos ordenado- res conectados entre si por Fed local. ‘Como sabemos, este proto- colo es ideal para intercambiar datos entre ordenadores a gran velocidad, necesario para juegos fen tiempo real como “Zone of Fighters". Hemos implementado ‘el médulo multijugador en un programa totalmente indepen- diente, para facilitar su com- prensién. La idea basica es que uno de los ordenadores funcio- ne como anfitrién del juego (Host) y el otro como invitado 0 remoto. La jugabilidad o game- play se basard en varios modos de juego en el que las dos biona- ves lucharén en un mismo terre- no contra un numero determina- do de ovnis enemigos y segtin el juego elegido, entre ellas tam~ bien. ) CONCEPTOS BASICOS DE DESARROLLO Antes de programar cualquier juego con algun sistema multiju- gador hay que tener muy claro qué es Io que se quiere, ya que testear este tipo de programas. depende de una instalacién ade- cuada. En primer lugar, tenemos dos ordenadores que envian y reciben paquetes de informa- clon entre si a través de un mismo programa. Por lo tanto, este programa debe hacer dis- tincién entre quién es el host y quién el remoto. Para ambos casos, debemos realizar un cédigo diferente pero mante- niendo una estrecha relacion entre si. Aparte, el resto del OB bor areciin de cédigo ser de uso comin ‘como: recursos, la relacion con el entorno, la creacién de dispa~ ros, sistema de particulas, visualizacién de indicadores, etc, Los paquetes de informa- clon contienen datos acerca de la posicién y estado de ambas bionaves y su flujo debe mante- ner un cierto orden para evitar cortes de conexion. Ademés, debemos controlar al maximo la cantidad de bytes de cada paquete enviado para aumentar el rendimiento de respuesta. Por 80, solo se incluird informacion fundamental de cada jugador imposible de obtener. El resto de informacién se debe procurar ‘obtener en base a los datos dis- ponibles. Todo paquete debe ir ‘encabezado con un byte que indique de qué tipo es, ya que ‘en el protocolo UDP no va iden- tificada. Por Ultimo, el host es el encargado de crear el juego y sus caracteristicas. Por lo tanto, el jugedor remoto se adapta a elios come invitado a la partida. MODULO PRINCIPAL. PREPARANDO EL JUEGO Como novedad al cédigo de “Zone of Figthers” para un juga- dor, disponemos de varios modu- los diferentes que explicamos en esta entrega: médulo principal ("Multijugadorbb"), médulo de control del jugador local (host o remoto) ("JugadorLocal.bb"), médulo de control del juego (“Juego.bb"), médulo de control de ovnis enemigos ("Ovnis.bb") y médulo de control de red ("Red.bb"), Enel médulo principal (’Muttijugador.bb") se encuentra el bucle principal del juego, el cual llama a las demas funcio- nes. Pero antes, debemos pre- eng et Pose re eee ee ee ein) mie es oe fen) Actualizar_JugRemoto (host) Carron recite _Esquams de a relein otro un equipo remot Conectado 9 un prtign creat porn equipo Stein tot guntar al usuario si quiere ser el anfitrién 0 el invitado para que el programa ejecute una parte del cédigo u otra. Este control lo realizamos simplemente a través de la variable global “Host” (1= Host /O = Remoto) Si se elige ser el host, se le pregunta al usuario qué tipo de juego va a crear y en qué escena- rio. Si por el contrario, decide ser el remoto, es decir, unirse a una partida creada, solo es necesario preguntarie el escenario donde se ha creado la partida y la direc cién IP del host para poder entrar en contacto con él. Después de esto, ol programa ya esta prepa- rado para diferenciar a ambos jugadores conectados. El siguiente paso es cargar mode- los, texturas y el audio del juego, ‘asi como preparar el entorno y crear el resto de elementos. Seguidamente, preparamos el “stream” o fichero de comunica- cién para el envio de paquetes y creamos lo jugadores. Para esto ultimo hay que tener un concep- to claro: tanto el host como el remoto son jugadores locales: es decir, en el ordenador host, su jugador es el local y el jugador del ‘ordenador invitado es el remoto. Y para el ordenador remoto, su 381 ‘mental jgabied ya posblid de ica jugador es el local y el jugador de! ordenador host es el remoto. Por lo tanto, en ambos casos debe mos crear un jugador local Ahora bien, su direccion IP y puerto de comunicacion seran diferentes (Ver Cédigo 1) Cuando un jugador crea una Partida (host) solo tiene que crear su bionave y colocaria en el terre- no. Sin embargo, para el jugador remoto, ademas de crear su bio- nave, debe comunicérselo al host pare que éste pueda crear y colo- car en su terreno la bionave invita- da. Asi que bastara con enviarle tun paquete con su nombre de identifieacion y su posicién. Este Paquete se identifica con el nume- ro 100. Veremos luego en el médulo de red cémo se recibe esta informacion por el otro equi- po. Una vez preparada la comuni- cacién, entramos en el bucle de juego donde controlamos y actualizamos al jugador local ‘Control JugadorLocal{ JugLocal)” y "Actualizar_ JugadorLocal (JugLocal)", la comunicacion “Actualizar Red(JugLocal)” y el juego “Actualizar Juego)". Las funciones para controlar al juga~ dor local son exactamente igual a las utilizadas en el juego original de “Zone of Fighters”. La nica diferencia es que utilizamos como variables de control (Entidad, rota- cién y velocidad) los campos de la estructura " JugadorLocal” previe~ ‘mente definida en el médulo de dafiniciones: ‘type JugadorLocal Field Entidad Field yy#,velocidadé Field Estado End Type MODULO DE RED. CONTROLANDO LA COMUNICACION En este médulo controlamos todo el flujo de paquetes de informacion entre los dos jue- 0s, Dependiendo de si el equi- Po se comporta como host 0 Femoto entraremos en un con- trol u otro. Sin embargo, las ‘operaciones para los dos juga- dores son basicamente las mis- Cédigo 1. La P sera ctferente segin quien elja ser el host Tf Hoot TP = HostIP(1) Puerto. host=2001 reser$ setedrR(P) + Nombre Host$=nombres IP host=Int_1e(1PSer$) Upp_stream-Createupestrean(Puerto_ host) SJugfocal .JugadorLocal crear_gugadorlocal () Positionintity Juglocal\Entidad, 730,300,800 Hse Puerto Renoto=Rand(3000,4000) = Nombre RenotoSenonbres ‘UDP_streamsCreateuDpstream(Puerto Resto) ‘Jugiocal.Jugadorlocal= Crear_JugadorLocal () PositionEntity Juglecal \Entidad, 71300, 300,800 Weitenyte UDP strean,100 WeiteLine UDP Stream,llonbre_Rerotos Jiciteshort UDP_ stream, 7300 eiteshort UDP_strean,300 Weiteshort UDP_strean, 800 SendUDP¥sq UDP_Strean,1P host, Puerto host Endl ase mas pero orientadas a cada tipo de jugador. (#) CONTROL POR EL HOST Si hemos elegido ser el anfitrion del juego, el programa ejecutara las sentencias contenidas a par- tir de: “If Host”. Lo primero que debemos hacer es obtener el paquete que nos envian por medio de “RecvUDPMsg" en la variable "Msg". A partir de ahi, podemos obtener la direccién IP y el puerto del jugador remoto. La IP ya la tenemos en “Msg” a través de “RecUDPMsg" y e| puerto lo hallamas con “UDPMsgPort” Tf Host sg = RecvUDeMsg (UDP_strean) TP Remotomtag Puerto Renoto-UDPMsgPort (uop_strean) Lo siguiente es comprobar si realmente nos ha llegado un paquete. Si es asi, obtenemos el primer byte que, como sabe- mos, nos dird el tipo de informa- clon que trae (Tipo_Mensaje). De esta forma, podemos seleccio- nar las acciones por medio de una estructura “Select.. Case”: TE Msg "Tipo Monsaje-Readbyto(UDP_Strosn) Select Tipo Mensaje Una forma de ahorrar bytes en paquetes de informacién es evitar en lo maximo posible variables de tipo “Float”, ya que ocu- pan 4 bytes cada una. Por ‘ejemplo, si no precisamos de posiciones precisa: podemos sustituirlas por variables de tipo “Short’ que ocupan la mitad. En nuestro caso, es lo mismo utilizar 500.5, 1200.8, 300 que 500,1200,300 ya que el terreno es de grandes Como primera opcién, vamos _ tendré las coordenadas de posi- a gestionar el envio del paquete _cién X, Y.y Z dela bionave, asi remoto de tipo 100 que hizo el como dos bytes més indicando jugador remoto al unirse a la si ha disparado y con qué arma, artida (Ver Cédigo 2). Estos dos ultimos datos son Siguiendo la lectura del stre- suficientes para que el progra- am (recordemos que los datos __ma anfitrion genere los disparos en un stream se escriben yleen _y explosiones con el codigo. secuencialmente), encontramos comin. ‘el nombre del jugador remoto y su posicién. case 2 Evidentemente, si un jugador | RifeRtesdFloat (UDP Stream) se ha unido a nuestra partida ReX*ReadShort(UDP_Strean) debemos verlo en la pantalla ReYeReadshort(UDE_Stream) : Por lo tanto, es necesario crear Rez+Readshort (UDE_Stream) otra bionave como jugador DispsReadayte(UDE_Strean) remoto ademas dela nuestra ‘ArmarRoadayte(UDP_strean) (ugador local). actualizar JugadorRenato El control de esta nueva bio- (R#, RPK, RPY, PZ, Disp, Arma) nave lo realizamos en el médulo “Juego.bb". Bien, hasta aqui Debido a que el desplaza- todo perfecto. Sin embargo, si miento de la bionave y los dis- nos situamos en el ordenador _paros dependen de un pivote del jugador nuevo veremos que es necesario proporcionar el 41 solo ve su bionave y no la del dngulo de rotacion exacto al host. Asi que éste debe enviar otro ordenador en una variable un paquete al remoto comuni- de tipo “Float"(RY#). Para candole que esta dentro dela_—_actualizar esta bionave solo partida y que debe crear otra. tenemos que posicionarla en bionave que represente al host. las coordenadas recibidas, Este paquete sera de tipo 4y se controlar su municién y la gestionara en la parte del cédi-__deteccién con los bonos. g0 del remoto. Elsiguiente paso Estos dos ultimes procesos se importante para el host es podian haber sustituido por actualizar a su bionave invitada variables contenidas en el ademas de la suya propia, Paquete de informacién indi- Obviamente, esta ultima es con-_candolos. Pero, como dijimos, wrolada por el jugador pero para__hay que evitar envios sustitul- la remota dependera de la infor- bles por otros métodos. macién que reciba del otro orde- Los siguientes tipos de men- nador. Todos los paquetes de _sajes se refieren al control de la actualizacién recibidos por el __partida en si como informacion remoto seran de tipo 2ycon- _siel jugador remoto ha muerto, (Cécigo 2. Eljugador remoto envi6 un paquete de tipo 100 Case 100 jcrear jugador reaoto Yonbre Renoto$=ReadLine(UDP_stream) [PxteReadshort (UDP_Stream) :REV¥=ReadShort (UDP_stream): eztReadshort (UDP stream) ‘JugRemoto. JugadorRenoto=Crear_JugadorRemato() PositionEntity JugRemoto\Entidad, RPK, RPY, RPE Weiteayte UDP stream, 4 eiteLine UDP_stream,lionbre Host $ eiteshort UDP_Strean, Ent ityX(JusLocal\Entidad) Weiteshort UDP_Strean,tnt ity’ (Juglecal \Entidad) eiteshort UDP_Strean,Entity2 (Juglocal \Entidad) ritenyte UDP_Strean, odo Juego Weitenyte UDP strean,umovnis SendUDPMsg UDP_Strean,1P Renoto,Puerto_Remoto £1 nuevo medul para muttiugederincuye dos "pos de ambientacion erent. abandona el juego o sila partida hha terminado. Es conveniente enviar toda la informacion posible de una sola vez en un solo paquete que muchos envios de pequefios paquetes, Por eso, implementa- mos en este mismo médulo el envio de informacién después de analizar los paquetes recibidos. ‘Aun siendo el host y jugador local en nuestro equipo, en el ordena- dor del remoto nos corresponde ser el remoto y debemos mandar- le nuestra posicion y estado con- tinuamente antes de terminar y actualizar el juego (Ver Cédigo 3), (a) CONTROL POR EL JUGADOR REMOTO Si hemos elegido formar parte de una nueva partide, nos con- vertiremos en un jugador remo- to. Por lo tanto, el programa eje- cutaré el cédigo a partir de la instruccién “Else” de la funcion “Actualizar Red (ugLocel. JugadorLocal)” Al igual que ocurrie con el host, el remoto también recibe y procesa informacion provenien- te de éste con "RecvUDPMsg”, Los tipos de mensajes son igua- les pero con otro numero de identificacion diferente. Cuando nos unimos a un host debemos crear su bionave en nuestro torreno. Para allo, debemos haber recibido un mensaje de tipo 4 enviado por el host cuan- do entramos en la partida: Case 4; Crear jugador Host nbxe_Hosts-ReadLine (UDP_strean) sea ex-Roadshort (UDP_stream) : Rpv=Readshort (UDP_Strean) [RPt-Readshort (UDP Stream) Yodo Juego=Readbyte(UDP_Stxean) ‘NunOvniseReadByte UDP Strean) ‘JugRenoto. JugadorRenoto= Crear JugadorRenoto() PositionEntity Jugkenoto\ Entidad, RPK, APY PZ For n= 1 To Nunvnis Crear_ovNI() Next ‘Come podemos observar, hemos recibido también infor- macién del juego creado ("Modo_Juego” y, “NumOvnis”) y que necesitaremos para con- olar la partida en el remoto, ya que éste carece de esa informa- ion, Si recordamos, el host envia continuamente paquetes de tipo 1 con su posicién y estado al jugador remoto para actualizer su posicién. Por lo tanto, debe- ‘mos tener en este caso el mismo cédigo del host: case 1; Actualiza Host RY-Read? loat (UDP_Strean) Disp-ReadByte(UDP_Strean) ‘Arma=ReadByte(UDP_Strean) Actualizar_JugadorRenoto (RY¢, RPK, RPY, RBZ, Disp, Arma) Es importante que esté claro que esta informacién solo la utiliza el jugador remot para actualizar la bionave que repre- senta al host en su terreno de juego. Para terminar, al igual ‘que ocurre con el host, es necesario que el remoto le envie continuamente su posi- cién y estado antes de salir de la funcién. En este caso en un paquete de tipo 2 () LOS OVNIS La presencia de ovnis en el juego conlleva un envio de infor- ‘macién para que en ambos equi- pos se muestren en la misma posicién y con el mismo estado durante Ia partida. Esto trae con- sigo un envio adicional muy importante de informacion, la ‘cual debemos realizar junto a la de los jugadores en el médulo de red. Luego, dependiendo de si el programa es host o remoto, se ejecutard una funcion de actualizacin diferente para los ovnis. Para disponer de las coor- denadas y estado de cada ovni de una forma ordenada y que podamos enviarlo todo junto en el médulo de red, vamos a dis- poner de una estructura de datos temporal que almacene estos valores en la funcién “Actualizar_OVNIS Host ()" del médulo “Ovnis. bb": ‘Temp.tipo temp = First tipo temp For OWNE.tipo OVNI= Bach tipo om ‘Temp \OvELAA=OVNT\x ‘Temp\OVETY#-OVNT\y ‘Temp\OVIEIZP=OVNT\z ‘Tomp\vida-ovnr\vida ‘Temp\Disparo-OvN\ Send disparo ovr ‘Texp\Arna-onir\tipo_armanento ‘Tenp = After Temp ext Seguidamente, los datos de esta estructura los volcamos en el stream de envio, los cuales seran leidos por el remoto y Es importante mostrar una estan de osu {doe do Jago a tial de a porta ya que umenta ls competiviad entre los jugadores 10 cual invita seguir joganda que utilizaré la funcién “Actualizar_OVNIS_remotos () del médulo “Ovnis.bb" For Tamp.tipo temp = Bach tipo temp ‘eiteShort UDP_Strean,Tenp\ oINIX#: Weiteshor: UDP_Strean,Temp\OVAIU# Weieeshort UbP_strean,Tenp\OVNIZ Weitesyte UDP Strean,Temp\vida WeiteByte UP_Stxean,omp\Disparo: WeSceByte UDP_Strean,Tomp\ra Weiteayte UDP_Strean,Temp\objetivo Next Hay que recordar que el host es quien crea y desplaza a los ovnis y el remoto solo se limita a tenerlos como clones en el terre- no. Los procesos expuestos en este ntimero son los basicos en este nuevo médulo para “Zone of Fighters”. El resto del progra- ma esta ampliamente comenta- do en el cédigo fuente, incluido ‘en el CD. Siguiendo el flujo del programa y leyendo los comen- tarios es facil comprender su funcionamiento. Hasta la proxima. ‘Codigo 3. Debemes mandar continuamente nuestra posicién y estado Tf gugiocal\estado“i Weitesyte UDP stream,1 Else WriteByte UDP_stream,10 ; Muerto mate Weiterloat UDP Strean,Jugtocal\yy + Writeshort UDP_Strean,ntityy (Juglocal\Entidad) ieiteByte UDP_stream,Send disparo + SendUDPMsg UDP_Stream, TP Remoto, Puerto Renoto 384 ieiteShort UDP_Strean,Entityx(Juglocal \Entidad) liriteshort Ubp_stream,mntityz(Juglocal\Entidad) Writebyte UDP_Strean,tipo arnanento SEs Técnicas avanzadas de disefAo grafico ara finalizar la sec: Pee errs ete) eee! ee ee eet eee ae i Pere Cerne pene eee ea ea ace ce Cease eee ee jos. Practicamonte, Deop Paint 3D ee eee eee tay Pee heer ere eee cas Reece te eee eas ary eee arene aire Cena een Cr cea Rea eee cs ec ee Cen ed ee cee ere ance ee eee a eae! 2 eee Peet ee es oe eee Pee ere eet ht ea ee ee ae ] RECORDATORIO directorio “Extras” del CD. tracer earner Cree weaenetacis Dee reales Apareceré el modelo de espal- Ce gy ee ea eae See eae eee oe Pee ome es a ad Pen yaaa’ CO ee es Reet eae ene eee keene! x poco obtner sexu an uns napa vent. Pree ear) rm para rela cambios en 20. Renee ae naertns Peete ee oe) [ee eae ney Pentre nani att eset ee a eee Pee ec et aca ed eee Sey Pree ee roth ne ee caer eee Cee aon ears Pees iets eee eet ene eae ae eerie et) See eee) Perea eect aes) focus keen eed Cee eet ee Pee ara t) eee kaa Peary eee seen Sauna ieee ce eer) Seen sett ine Peerless Pte ee ee een Renee ata eee ee ee Pree atts eee eee eee ne laure de tetas rel por igual on 20 30 PRCT | cetmente en el mode Reem eae Boe eee) Peace ges ence ely seccién de capas (F7) y elegir la eae eae eee eae ke ree es ents es) ane eo es eee era Pee en cet) eee er ua) Sea ca eo Preeti nee eet eae tates Pete ee ee eas eet en ome ae) Cee ener ea et eae eee) ates Rese cin cr (Cote ort ne nee reek Bre eee) eee ee eed eed Eee eae eo ee Sent ae ne Ree eee ec) Pee oe eae Ba eer Reese ete a ee eae eae) cores oon es ee ea teed Eero ca aera eee Teer See eee ce Pee oa enor) eee ete Sena eee eet eee ess Ce cece neo Peete hs ear) Layer, © bien Clear Layer para ee eM ee Pre eaeee eteee Cea Bren ee ee eae eee eee Reems eee ead Ree eee Rey eee ee cic) ieee a rong Perea ees Peete can too ene ue eC ed Se eee poe arn) ene sauna Nac Poe eee ee Eee eee eit Pee tne) Peet a eee eee eons Parana r Mortars Be Rees Peete ee ees see Poe as ieee en ees ee ea eee Bene ae a eee Pree ae caries Cee tae Ree a eed Pee ey) Sheet ne it cts sertar puntos y el de la derecha Pees ane) Peete eer ee Rear raat) editable. Con ol primer icono Bee eee et ee ay eric ees rere raat Pre Re ay ee ttm Peet Team! a Poe ence rae ae nic) (Scale) de 4 y elegimos un color et ee ea Cee ee ee Pee earl cee ae ee ae aecl ear a ied vere) Rene ei eee ea ae eee ea ac Cee ea eee eee aed Bene Westar ee CO ag een eee ae een Sate rer ames HL Ce ee Perego ee neta Nee Te a) Rea art nee oceans) eee arate) Peek ee ne ett ae ea ya ete ea Ree eae eee ett eee ere Perera etter Ra oer een modificar la intensidad y posi- arena ee tase kate pre cet et re Sree arose) ore renee Ce ace Peerage ee ene rr a eae ae Bret ae achat Boece ta ce) eee eee ee ae eee Mere eee ares Pee EE heard eee anc! repre eae ener Cee eee) Peer ee eae Peete eee ee Peeve ue ier) See eae a oad eae ate a ere eon ee tare ee ee ae) See ee aaa ra) y en alambrico (wireframe). One ees sactivar cada uno de los atribu- ene ears Para cambiar el color del fondo Pea roe eee eo amen Fig. 8), ee eee eee) Peete et eat) Peasant ae ee cay et ae eee) ea ee eee a Pteerere etary Saeco teen 7) Videu| eee aaa YA eet Rena ee ee Aen omnia ae acy eae eee ‘mos la ventana de previsualiza- Beet rore eaten ee eee ei Cee te nce ee ed ae Ree racer ee) ae can Prete ac La primera de ellas seré la base Peer Nae) ero tne ee a Coes encased Varn recat un recuadro que englobe a los Pree ee aed) een Bane ee ed Sree eos een ten tera Peres eer eT Perens rte iy) Eee eee re ues Yukon Core eee res Perea ee res Cee rea) Pcs) ree ee ees ee id ieee aerate ees Steet es eee eee ato Pers eee tere pene eee ace peer ee tae 2 a Ce ea te tien tate Peete ee cae ee eas Peet uri ene aa ee ae Peo e amen ena ee oc e aac e rata ae PRR ee eee) Re een Sees eee eee eee ae cake kaos tenida en “Extras” del CD "mu- Peete ecet a Dee et eto Ree eer crs! Peete eet Pts ee [eee ee tars enna ey Perea eae a Pee tae ead eae eae Pea eed eC eee eee eee Pea eae oe Peete eee eee a aE ae ee eee eens oe ee cco Praeger) eae eee sa eee eee ete oy eae ee ey Pe Reset ke) eee eee ae a eee eee ene Pee nc Pret Rec Ce aca) ee eens ee eer tres eo ec crey Cee we eee Geo) eee Oar ete xeles de la capa activa con los cee eo er eae eee een Cee ee eee cl ee eee RAC en Cee eae RO en amie (Cee la RRroed (eter ieee area eee ea) eee ace acca ee ae cata See etree ely eer ee eed ter ee ky oe aaa Sioa eee ey ere ee tenn eee atest Se ae ers Pee ed ane aed ee ae Cre eee een ae Pee ce eS eee tae Pe eee ens eee ess em) eet ere entry eee ara) Pee ett eae ee een ets Pee eg tee aes eee ren eee) Peete ete nent} incidencia y su radio de accion eee ent ed eee re cg ed eee eg ee eed situamos como se muestra en Chee aed ee ence ees Cee Pree icast rc) eRe E i, 5 Seon cony cy oer Tr eee Preeti eri Coe ok pee eee ety Ee aren ener y ae peers Pere eaee uc) eee a etre ene ea rr Poe reer) Coe rae acc eee ernie Peter nee uri Ce ae eee a ka eae aa eee ae ca eee ear ae eee ees Pica aerate Cease ees Secuenciadores trackers (yl) Rac Cee oe peace) Seer a) cee eet Pee ena Bicester eee aca eeeeee i ecats Pees eee rs pear eae ene eet ns ee es Coreen Rar Ca ac ee ea) ee ee ee eg Teen) eee ea) Pee aes Cree eee re eee eee EArt ad Pee ane er errca Pe ER esd eee t gl ee eo as eae ae ete ec ntaceats Beene aot eee erat eee) Ceasar) een eeat ance) basice en el canal 4. ee eee! En ee eens Peres Poem aes olor ed Poet a eso niy ee eee Poet ee eco oer) See ec Cee cas eee ee enemy Cac Ear que la muestra sonaré completa Peake ce teces Cree Re ee Pree ena a te eee ea em ein Pe ee er) eee re Peete ee) Pe tee te) Pee ee Co eee ee te eee Sa are Poets ee aC eco ect) ek me ens Oe ee eter ate Pen ee rer eee’ a eh Ee koe Pere ere werd Set ee BROCE Te mre ted inc. ON inc. ON Colocando ls nots de maracas deforma mis © Nee eee peat mee Cree eee he ee See ee ne a Bete een tee ee ee ener ce Peete a ee ee) Bee ance ee ee eee ee rear eee ae ee ere Pence tt oent aa eae ore eee ete een nec tes eee (Fig. 2) See ea) Nene ata eae Oe ett Mea aes asa eee es eee ee ey pee ee tre ete ee ee ore eee ee et as Oe a a Rr ty eee te mene te ee Cree ee ora kee rey Re ee eee eee aed 7) Lise} eee eta art Se eee eee ee at Peres eae te el ae Pee ee ee ee eee Rete eet a ee eee en eer ts anasto a) eee ee ae ee een ema Tee) er eat ge ee Eee PEPER ota solitaria se mantiene so- _de acordes a partir de combina fen varin canal vee Pane asa fee ee See eT at Cee ee et ee ete aed Pe cae et eee ee eee Pea ae me ees inka ed siga sonando solo hasta el final _notas del acorde. Una vez activa: ee ar Ey mos aplicar una bajada de su vo- abrir el editor de acordes Chord ee ee ee een ne a ee ed eee ee ea Roe atten ay ee eee eed ee as Pe ee an een ae ey Pent ee eee ee et Pee ea ae ee ora ne ae Pree? do. En la casilla Shortcut Key ele- La posted de tar una combina do Cee ocean eee eee tes del ordenador pare produsr sods nos Ceca! preter eec sero seer fen ee eee ee eed) ene ee ce he ee OOM eo ee ee ae TRUCO plo, si queremos modificar la ve- _elegidos previamente las notas see eee eae eae ee a Ror Pete ee reset ae a) Pee wees aed eee A pece a saer nn ae eee as Serene ae eet meron eee ney enn et ney eee ene! ey eet esi Funciones de red Cy Ill y ampliacion del lenguaje ‘© queremos dejar las |/Hor iii) He) Conti) funciones de red e TPlocal$=TPiccals+DottedIP internet sin antes (Host2>(n)) haber realizado algu- Nex: nos ejercicios para conocer _—_—Bppitle "IP Toes] = "/4Plecal mejor su funcionamiento. También damos a conocer Para obtener la IP local utiliza algunos trucos que nos ayu- mos la instruccién darén a optimizar nuestro “CountHostlPs”. La instruccion codigo y que mostrames en —_“GetEnv” nos proporcionara el las figuras 1, 2 y 3. nombre del equipo en la red. Por tiltimo, hablaremos de las Después de obtener la notacion posibilidades de ampliacién del__de la IP preguntamos a qué direc- lenguaje y de su futuro préximo. _cién IP vamos @ comunicarnos. Asi que la pedimos en notacién @ CHATEANDO 1.2.3.4 y luego la convertimos a POR UDP la notacién de numero entero Eneste primer ejemplohemos —_que entiende Blitz3D: querido realizar un sencillisimo programa que permite hablar Locate 10,20:1epests=tapue§ entre dos ordenadores conecta- | (*P Destino? *) dos por red utilizando el protoco- | 1PDestinos intIe(1PbestS) lo UDP. El fundamento es que el mismo programa envie y reciba La funci6n “IntIP* simplemen- mensajes utilizando un puerto de te transforma ol string con nota- entrada y salida y otro de desti-—_cién 1.2.3.4 a. un numero entero no, el cual equivale al de entrada, (Ver Cédigo 1). Ademés, utilizamos dos streams —_Para lio, isiamos los cuatro para albergar los mensajes de —_nmeros separados por un punto y ‘envio y llegada, Cada ordenador —_ sumamos sus valores previamente debera introducir la direccién IP _calculados con la funcién “Val”: dol otro para establecer la comu- nicacion, inction val (strings) Al principio del programa se valor=0 pide la IP del equipo local para Tf Left(Drin(strings),1)="-" ‘obtener informacién. Esta IP se ‘signo=-1 visualizara como titulo dela ven- Else tana! signe! mndlt ‘Conttp-countHost Ps (GetBav For nel To Len(strings) (*tocaltiost”)) ‘orAsc (Mids (StringS,n/1)) Cédigo 1. Funcion “intiP” ‘unction inei® (125) aisval (Loft( PS, Instr(1PS, adeval(taft(1P5, Inst (10S, ateval (Left(285,Inotr (10S, afeval(IE8) Return (al ShL 24) + (a2 hl 16) + (a3 Shl 8 ) 408 Bd Function 1) :1PSsnight (12S, en(1P$)-Instr(1P6," PSRight (29, Len(1P9) Inst," PS-Right (159 Len(1PS)-tnstr(1P5," 3f GAT And c<58 ‘then m= valor : mm shi valor-valor shi 3 valorsvalortarc-t8 EndIf TE on46 Exit Next valor-valor*signo Return valor End Function Esta funcién simplemente con- vierte un string en un nimero con Signo incluido, recorriendo cada uno de sus caracteres y convirtién- dolo con la instruccién “Asc” Seguidamente, pasamos a dofinir los puertos y a crear los streams de entrada y salida. Busrtoentrada4000 PuertoSalida 6300 Buertodest:ino=6000 ‘Ubp_Streank=createuDestrean (Puertomntreda) UDP_Streanii=createvDestroam (Puertosalida) Ya tenemos el programa pre- parado para enviar y recibir men- sajes. Por lo tanto, ya pademos entrar en el bucle principal del programa. La idea es que a medi- da que escribamos los caracteres ‘se imprimiran en el otro ordena- dor, admitiendo también el cam= bio de linea con la tecla “Enter” Para ello utilizamos la funcion “GexKey()" para obtener los caracteres desde el teclado uno a uno. A medida que tecleamos enviaremos cada cardcter al otro equipo a traves del stream de salida "UDP_StreamWV". Igual ‘que los caracteres, enviamos el cambio de linea, el cual corres ponde al caracter 13: ‘TeclasGetkey() If Teola>d If Tecla=13 Print 31 EE Writebyte(UDP_Streanl, ecla) SendUDPHsy UDP Streant, TPDest ino, PuertoDest ino Else rite chr(Tecla) ritenyte(UDP_Streantl, Tecla) SendUDPMag UDP strani, IPDest.ino,PuertoDestino malt malt Por ultimo, nos queda recibir el mensaje del otro ordenador. Para ello, utilizamos la instruc- clon “RecUDPMsg” y el stream de lectura "UDP_StreamR”’ Mensa je=RecvUbeMsg(UDP Stream) TE Mensajeoo Longitud-Readavail (Uoe_streane) Tf Tongitue>d caracter-Readsyte (woe streams) If Caracter=13 Print Ese rite Chr(Caracter) mart mart mare Antes de leer @ imprimir el caracter en pantalla comproba- mos que hemos recibido un mensaje correcto a través de su fongitud Evidentemente, para probar este ejemplo debemos tener dos, equipos conectados entre si por cable de red. @ INTERNET ‘Queremos mostrar unos peque- fios ejemplos de comunicacion a traves de internet utilizando e! protocol TCP/IP. @ ENVIAR UN EMAIL En primer lugar, mostramos la forma mas sencilla de enviar un ‘email a una direccian de Internet utilizando la funeion "OpenTCPStream". Para poder establecer la comunicacién debe- mos introducir la direccién donde queremos enviar el email. En este caso es admisible la notacion "www" o bien "1.2.3.4" 382 Dixecoions=Input$ (*DIRECCION (notacion IP 0 wwe)? “) ‘Texto=Inpat$(“Bscriba el mnail:*) Una vez introducido el texto que queremos enviar ala direc- cién especificada, abrimos el archivo de escritura con “OpenTCPStream": ‘mmail-dpercestrean (Direccion$, 60) If Not Enail Runtimetrror (ERROR EM LA. CONEKTON”) Si la operacién devuelve un valor nulo salimos del programa con un error. Si la comunicacion se ha inicializado correctamente pasamos a mandar el texto escri- biendo el stream abierto, WiriteLine mail,texto Print “EMAIL: Print “<* + Textot” > Print “ENVIADO CORRECTAMENTEY ® ACCEDER A UN SERVIDOR tra utlidad interesante es la pos bilidad de acceder a un servidor para enviar o recibir archivos. Presentamos un pequerio ejemplo de apertura de conexién con un servidor determinado. Simplemen- te, mostramos cémo acceder des- ués de introducir el nombre de usuario y la contrasefia, En primer lugar, debemos pedir la direcci6n de! servidor para poder abrir el archivo de comunicacién: Servidors = Input ("2Direcci6n del Servidor? *) ‘Comin cacion-opentCPStrean (Servidors,21) El siguiente paso, después de detectar si ha habide conexion, @s pedir el nombre de usuario. Este se enviara precedido de la directiva "USER" necesaria para que el servidor reconozca el tipo de orden enviada: If ict Coounicacion Runtinerror (ERROR NIA CONEXTON”) Usuarios=Input $(“2Nombre de usuario? “) Ordeng="USER"+Usuario$ WriteLine Comunicacion,Ordens Hacemos la misma operacion con Ia contrasefia, esta vez con la directiva "PASS" Pass$-Input§(“éContrasefia? *) orden$="Pass"*Pass$ WriteLine Comunicacion, Orden$ Una vez realizadas todas las ‘operaciones de enlace con éxito pasamos al bucle principal, el cual utiliza mos para enviar todas las ‘rdenes que queramos al servidor: Repeat Mensa jeS-feadineCominicacicn) Print Mensajes ‘rden$=Tnput ("zoperacion? >*) WeiteLine Comnicacion, Ordens Until ordon$="Pin* Como podemos comprobar este tipo de operaciones os real- mente sencillo y proporciona una gran flexibilidad para desarrollar aplicaciones para internet. ® DIRECTPLAY No queremos dejar el uso de las DirectPlay con las funciones para TCP sin mostrar un sencillo ‘ejemplo de cémo crear un juego multijugador con ellas. La idea basica es mostrar en pantalla un jugador local y uno remoto representados por una pequena esfera de distinto color. Ambos son movidos por el usuario con los cursores. El jugador local vera su esfera moverse en su pantalla y en Ia del otro ordena- dor y viceversa. Al principio cre- amos un jugador local y cuando #1 remoto se una creamos oro con diferente grafico. Este se moverd siguiendo las coordena- das recibidas a través de la red; es decir, cada jugador envia al otro equipo sus coordenadas x @Y, y ambos las utilizan para mover al jugador remoto. Para ‘empezar, y después de definir las estructuras para cada juga- dor, debemos preguntar quién hard de anfitrion; es decir, quién creard el juego, lo cual almace- amos en la variable “Host”. En 1 ejemplo no usaremos la ven- tana estandar de las DirectPlay de Windows. Para ello, utiliza- mos la funcién “HostNetGame" Deere ae eee) alor) GI Funelon par etree los nimeros de un sting y en vez de “StartNetGame" (Ver Codigo 2). En caso de que el usuario he elegido ser el anfitrién (Host) pasamos a crear el juego con el nombre “Nombre juego”. En caso contrario, utilizamos ‘JoinNetGame” para unirnos al juego creado. Para ello, necesita ‘mos también saber la direccién IP del equipo donde esté ol nuevo juego, la cual hemos pre- guntado con anterioridad y que almacenamos en "IPServ$". Ya tenemos preparado al sistema para albergar a cada jugador, Cada ordenador muestra a su jugador, por lo tanto, debemos rear un jugador local: ‘JugLocal -Jugedoriocel = New Jugadoriocal JugLocal\Ent = Loadtmage (togh-png”) (C6digo 8. Entramos en un bucle principal ‘jugLocal x-Juglocal \t(Keydown (205) -ReyDown (203) ) Juglocal \y=usLocal\y+ (KeyDown (208)-KeyDown(200)) Drawinage JugLocal \Ent Jugiocal\x,Jugtocal\y ‘Text Juglocal\x, Justocal \y-10,Juglocal \nonbres Posicions=bytess (JugLocal\x) 4ByteS§(JugLocal\y) SendNetisg 1, Posicion$, Juglocal\20,0 ugocal\x = 100 ugzocal\y = 100 ‘Taglocal\ID = CreateNetPlayer (nombres) \Jaglecal\nombres = nombres ‘mensajes del otro ordenador y ‘obrar en consecuencia. Esta ope racién la realizamos con Ia funcion "RecNetMisq()". Los mensajes util- zados por las funciones de DirectPlay vienen automaticamen- te encabezados por un cédigo que indica de qué tipo es (Ver Fig. 2) Asi que, utilizando una estruc- tura "Select..Case” realizamos las operaciones segun el tipo de mensaje (Ver Codigo 4) Si recibimos un cédigo 100 quiere decir que un nuevo jugador De este jugador poseemos su entidad, sus coordenadas y su identificacion en el juego. Para crear el jugador en ol sistema multijugador es necesario utilizar “CreateNetPlayer’. Una vez crea- do el jugador local entramos en un bucle principal donde move mos al jugador con los cursores, yenviamos su posicién al otro sistema con un mensaje de tipo 1 (Ver Cédigo 3) Observamos cOmo el sistema de DirectPlay recibe y envia men- sajes de caracter alfanumérico, por lo tanto, debemos convertir las coordenadas numéricas en string, Para ello, utilizamos la fun- clén “ByteS$" cuya finalidad es convertir cada valor en alfanumé- Fico utilizando como intermedia- rio un banco de memoria. (Fig. 1) Continuamos con las instruc- clones necesarias para recibir los re MENSAJE DE USUARIO Tipo 100 ROS) urea ae) nr HA OCURRIDO UN ERROR GRi ORIGINAL DEJA LA Deserzcién de os diferentes tpos de menssjex producidos por NetsaTipe. WE hoot Dédigo 2, Nos preguntaremos quién haré de host ‘Text 220,260, CREANDO JUEGO "#iorbre Juegos neCountHost Ps( IP = HostIP(n) ) If HogtNetGane (Norbre_Juego$)=2 ‘Text 220,280, JUEGO "sNonbre_Juego+" CREADO CORRECTAMENTE Delay 1000 Else Runtinezrror "No se ha podido iniciar un nuevo juogo" malt Hise Tf JoinNetGame (Nombre Juegos, IRServ$)=0 Runtimetrror "No se ha podido unir al juego" Bise ‘AppTitle "UNIDO AL JUEGO "+Nonbre Juegot” CORRECTAMEWTE" mndif Edit sss —k= UCU Et eOeCeeie) CUCU SALA} aa Caio ae aes SR roa iu COM Gaia se ha unido a la partida, por lo que: tenemos que crearlo. A partir de aqui si no ocurre ningun error (tipo 200) recibiremos mensajes de tipo 1 conteniendo las coorde- nadas del jugador remoto. Asi que solo tenemos que convertir este mensaje en numeros para obtener las coordenadas y actualizario. La funcién “StringS” simple- mente realiza la operacién con- traria ala operacian "ByteSS"; es decir, convierte caracteres en nmeros (Ver Fig. 3) ® AMPLIACION DEL LENGUAJE Blitz3D nos proporciona la opcién de ampliar sus posibilida- des a través del uso de librerias de enlace dinémico “DLL” progra- madas con otros lenguajes como C, C++, Visual Basic, PureBasic, etc. Para llamar a las funciones ‘contenidas en une DLL, dispone- mos de la instruccién "CallDLL” CallDLL. (nombre_libreriaDLL, Nombre del procedimiento, banco de entrada, banco de salida). Los bancos de memoria son utilizados para el paso de pard- metros entre la libreria y Blitz3D. EI Cédigo 5 muestra un sencillo ejemplo de creacién de una DLL en Visual C para visualizar un texto en una ventana de Windows y su posterior utiliza- cién por Biitz3D. Como podemos comprobar, para construir una libreria de enlace dinamico se necesitan conocimientos més avanzados de programacién en otros len- guajes. El ejemplo que hemos presentado solo pretende servir 394 como referencia para aquellos. _taforma y la habilidad de compi- con el interés de realizar sus pro- _ lar cédigo escrito en OpenGl pias librerias DLL, directamente desde el editor. Blitz3D llegar muy pronto Esperamos que Blitz3D cubra con una nueva ampliacién deno- todas vuestras necesidades de minada BlitzMax. Este nuevo len- desarrollo y que pronto padamos guaje basado en Blitz3D admite ver entre los seguidores de este nuevas caracteristicas en las que curso un amplio abanico de nuevos se incluye la posibilidad multipla- juegos con una calidad admirable, From=tlettegecom() ‘JagRenoto.JugadorRenoto = New JugadorRenoto ‘Jagkenoto\nt=Loadiinage' "Jus2.pa9") ugRemoto\x=200 ugRemoto\y=200 JugRemoto\ ID=Fron ‘JugRemsto\nonbre§=NetPlayerNane (From) case 101: AppRitle "EL JUGADOR REMOTO SE FUE’ Delete Jugremoto case 200: Runtinosrror "UN ERROR GRAVE HA OCURRIDO’ case 1: (Coordenadass—HetiseData() Remi=strings(Left (Coordenadass,2)) ‘Rem¥=strings (Right (Coordenadas5,2)) For Jugkenoto..JugadorRenotowBach IugadorRenato Jugkenoto\ Reni ‘agRenoto\y-Reny Drawinage JugRenoto\mnt JugRenoto\x, JugRemto\y ‘Text JugRemoto\x,JugRemoto\y, JugRendto\ nombres Next End Select, mate § Cabecera dei procedimiento: #include “windows.h” extern “Cr { _declspec (dLlexport) int _cdecl ejemplo (int const void int, Int Tamafountrada, int rout, int TananoSal ida} } = Procedimiento: Int ejemplo (int const vin, Tamafoentrada, int *out Tanafosalida) « MessageBox (FindVindow (WILL, "ProcDLi),"Esto es un ejemplo del uso de DEE en Klitz3D”, “DLL en BlitesD", MB Ok); return (1); } Desde Biitz3D: Apptitle “Proc. BLL Llanada-callDLL, (“Procedimiento" ,“ejemplo") aitxey() Instalacion cel juego con InnoSetup uando se termina de desarrollar un videojuego normal- mente se tienen multitud de carpetas y doce- nas de archivos situados en un lugar determinado del disco duro que el usuario final desconoce. Por lo tanto, resulta primor- dial incluir un sistema de instala- cién guiada en el que el jugador solo tenga que responder a una serie de preguntas para adaptar toda esa informacién en su equipo. Otra finalidad de un sis- tema de instalacion es empa- quetar todas las carpetas y archivos del juego en un solo fichero (generalmente comprimi- do) para facilitar su distribucion, En el mercado existe multi- tud de instaladores. Los encon- tramos de pago y algunos de libre uso. Para "Zone of Fighters" hemos elegido uno de los mejores instaladores gratis que podemos encontrar hoy dia, Innio Setup. CARACTERISTICAS, Muchas son las cualidades de este instalador, pero lo que mas destaca es su estabilidad y la cantidad de posibilidades que admite, Entre ellas, su sencillez de uso. Puede funcionar en todas las versiones de Windows incluso para NT 4.0 0 XP Inno > SCRIPT. Un Script es un fichero de ‘texto con un formato determinado parecido a un lenguaje de programacion que puede ser editado. Es propio de la aplicacién que lo utiliza y sirve para pro- gramar su funcionamiento. ‘Setup genera un script con todos los procesos de la instalacién para que podamos programarlo a nuestro gusto. Ademas, admite compresi6n de archivos, croa- clén de atajos en cualquier lugar del sistema (barra de tareas, escritorio) y hasta creacion de ragistros de sistema En nuestro tutorial solo reali- zaremos una instalacién basica ayudados por el sistema de ereacién guiado del programa o "Wizard". Aun asi, es suficiente para nuestros propésitos. CREANDO LA INSTALACION Alejecutar Inno Setup, el pro- grama nos pregunta si quere- mos escribir un Script directa- mente o si preferimos utilizar la instalacién guiada. De cualquier forma, al final obtendremos en el editor del programa un texto de script con la instalacion, el cual podemos modificar poste- riormente @ nuestro gusto. Seleccionamos la opcion Create a new script file using the ... yen la siguiente ventana pulsamos en Next. El siguiente dialogo se refiere a la informa- cion del programa. En la prime- ra escribimos el nombre de! juego y en la segunda la ver- sién, por ejemplo “Zone of Fighters 1.0”. La tercera y cuar- ta casilla son para el nombre y la web de quien publica el juego (Fig. 1) Luego entramos en el didlogo sobre el directorio donde se ins- talaré el juego. Por defecto, el programa nos sittia en Archivos de programa (Program Files). En nuestro caso, el juego utiliza tuna ubicacion fija y establecida de antemano en el cédigo. C:\Zone of Fighters. Por lo tanto, debemos seleccionar este Ubicacién para que el instalador coleque ahi todos los ficheros. Puede ocurrir que haya usuarios que no tengan nombrado su disco dura principal como “C:" En tal caso no podrian instalar el juego. Asi que debemos permi- tirle que elija la suya, ya que mantener una ubicacién fila no resulta nada profesional. Para modificar este aspecto en "Zone of Fighters” tendremos que ‘cambiar el codigo de esta forma: Por ejemplo, sustituimos: bionave-Loadesh ("c:\zone of ‘fighters \nodelos\bionave. 365") control-Loadinage(“c#\zone of fighters\gfx\nenu\control.png*) por bionave=Loadvesh (" \nodelos\ bionave.3d5") y control=Loadinage(\gfx\ments\ ccontrol.png”) etc, Si elegimos esta ultima opcién tendremos que dejar seleccionada la casilla Allow user to change .... para que el usuario pueda cambiar la ubica- cién del juego. El siguiente paso es decirle al instalador =, Cuando ejecutemos una instalaci6n realizada con Inno Setup, todas las car- La expresién {app} en el script significa el directo- rio del juego el cual fue elegido en Ia casilla Application destination base directory. cul seré el ejecutable de! juego (el cual elegimos a través del explorador pulsando en el botén “Browse...”) y donde esta. Si nuestro juego posee ademas otros ficheros o carpe- tas tendremos que incluirlos a través de Other Application files. Este es @! trabajo mas duro, ya que tenemos aue ir sumando todas las carpetas y subcarpetas. ‘Supongamos que tenemos todo el juego en la carpeta “2OF_MASTER™. Empezamos ahadiendo esta capeta. Pulsamos en Add directory... y la elegimos desde el explora- dor. Hacemos lo mismo con todas las demas. Si tenemos una carpeta con subcarpetas, tendremos que elegir por orden la carpeta y seguidamente cada na de las demas subcarpetas (Fig. 2y 3). Una vez afiadidos todos los ficheros del juego pasamos a definir la generacién de iconos. Automaticamente, el programa coloca el nombre del juego dado anteriormente para la barra de tareas de Windows (casilla Application Start Menu ). Si queremos que el instala- dor cree un acceso directo del Juego y de la pagina web rela~ clonada con 6! previamente definida, ademas de que el usuario pueda decidir si quiere ©1no un acceso directo, selec- cionaremos todas las casillas de esta ventana. Por ultimo. el siguiente paso es incluir los ficheros de documentacién del juego. La primera casilla se refiere al fichero de texto que explica el tipo de licencia del juego. La siguiente mostraré un fichero de texto antes de empe- zar la instalacién y la Giltima Casilla es para un fichero de texto después de la instalacion (Fig. 4), ‘A la pregunta de si quere- mos ejecutar a compilacion del nuevo script respondemos que no, (> EL COMPILADOR Después de crear nuestra insta- lacién apareceré en el editor del Podemos defor acceso arectos tanto oa compilador el script generado por el sistema guiado, el cual podemos modificar a nuestro gusto. Observamos que el Cédigo esta dividido en las dife- rentes partes que hemos esta- do rellenando durante la crea- cin con el Wizard. En “Setup” disponemos de todos los datos referentes ala instalacién como el nombre del juego, detalles del editor, de la ubicacién del programa y de los textos de informacion. En "Task" se muestran las caracte- risticas activadas para la crea- cion. En “Files” se detalla la situacién de los archivos para crear el ejecutable de instala- cién definitive (Source) y dénde serén ubicados durante la eje- cucion de la instalacion (DestDin), La seccién “INI” se refiere a los ficheros de entrada instalados en el sistema. En “Icons” se define la ubicacion y nombre de los iconos creados yen “Run’ la ubicacién del pro- grama que ejecutaré después de terminar la instalacion Para crear el fichero de ins- talacién debemos pulsar en el icono o bien con la opcion Run (F9). Si todo sale bien se habré creado un Unico fichero ejecutable en el directorio (Output creado en la misma car- peta donde tenemos los fiche- ros del juego. Esperamos que todos los tutoriales expuestos en ol curso hayan ampliaco atin mas vues- tos conocimientos para llevar @ cabo mejores desarrollos. FO RiSaremactn do oF Simuladores ce velocidad (yll) 0s simuladores de son casi nulas comparadas con velocidad nose han —_ las delas 4 ruedas. limitado al mundo de La primera referencia para jue- las cuatro rued: gos de motos en el PC la encon- Paralelo a éstos se han tramos en el titulo Motocross de desarrollado titulos para el Microsoft en 1989 para MS- mundo del motociclismo y 00S. Al igual que ocurria con otras disciplinas. Pole Position en 1983, era en 2D ‘Ademds, en la mayoriadelos —_y la accion avanzaba hacia la casos, se han sustituido los vehi-_ pantalla con el jugador situado culos clasicos por otros mas fu- en el centro y de espaldas. Un ‘turistes con caracteristicas de aio después aparece African ensuefo. Incluso algunos han —_Trail Simulator de Positive con un mezclado la velocidad con el poco delomismo. En lamodali- (Ari) The Cytes: ternational Grand Pix combate. En esta entregahabla- dad de racing se desarrolleron Facing (Abi Moto Racer remos un poco de todos ellos. _mas titulos destacando en 1989 ‘The Cycles: International Grand SOBRE DOS: Prix Racing (Distinctive RUEDAS Software/ Accolade) con un ju- Ladisciplina del motor siempre _gabilidad arcade estupenda con ha estado vinculada tambiéna _posibilidad de elegir diferentes ci- los vehiculos de dos ruedas, bien _lindradas. Este mimo afio apare- ‘en competiciones en circuitos _ce un nuevo concepto de moto- cerrados como en espacios ciclismo en la simulacion de Ia le- abiertos (motocross) como ocu- _gendaria Harley Davidson en la rre con el automovilismo.No se que la ciudad adquiere matiz de han desarrollado tantos titulos, y _circuito con Harley DavidSon: menos de calidad, para esta dis- The Road to Sturges (Incredible ciplina como ocurre con la fér- Technologies, Inc). A este titulo mula 1 0 el ally, pero de igual _le siguieron otros de la misma manera empez6 su produccién _serie hasta el 2000. Tuvieron que para las antiguas consolas de vi- pasar algunos afios para encon- eojuegos y ordenadores de8 —_trar un juego que realmente lle- bits que intentaban recrear alas nara el mundo del motociclismo recreativas de la 6poca. La premi- para PC. La desarrolladora sa técnica basica era exactamen- Delphine Software International, tela misma que la utllizadapara__aprovechando las caracteristicas simular el automovilismo. la Uni- de la aceleraci6n grafica 3Dfx, las ca diferencia radicaba en la repre-_ MMX de Intel junto a las posibili- sentacién de los vehiculos. A dades de la comunicacién via medida que avanzaban las capa- MODEM, realiza Moto Racer cidades técnicas y el uso de dis- (Electronics Arts, 1996). Poseia positivos de juegos se diferencia- dos estilos de competicién su- ron las caracteristicas del com- _perbike y motocross en & circu portamiento fisico del vehiculo a _ tos perfectamente disefiados la respuesta del jugador, Los jue-_ Soportaba hasta 8 jugadores co- gos de motociclismo se han nectados y fue el primero en in orientado siempre el concepto _cluir sonido 3D. Moto Racer es arcade en torno alas competi- ya un clasico y se han realizado clones con més renombre mun- tres partes mas hasta el 2002 rant consegido con sre Superb w# dial, ya que las posibilidades de con Moto Racer 3. Aestetitulole bie personalizacion de los vehiculos _siguleron otros que simulaban = na sus cualidades. 1 més destaca- do fue Motocross Madness (1998) de Microsoft con uso de las Direct3D; poseia graficos en 3D real con soporte para disposi- tivos de juegos especializados y todas las conexiones diferentes para multijugador. La segunda parte, publicada en el 2000, es todo un espectaculo visual en el que puedes elegir varios tipos de competicién, preparar le moto y jugar con otros jugadores por red En este mismo afio se versio- na para PC Jeremy McGrath ‘Supercross 2000, el cual ofrecia la novedad de incluir un editor de Circuitos. A partir del 2000 los ti- tulos aleanzan un realismo asombroso y pocas son las cuali- dades de que carecen. E| aprove- chamiento de las 3D y las posibi- lidades graficas del momento irrumpieron en todas las publica- ciones. Antes del lanzamiento de F1 2000 con la licencia FIA de au- tomovilismo, EA Sports publica ‘SuperBike World ChampionShip a finales de 1998 con la licencia del mundial SBK, compitiendo con el Motocross Madness de Microsoft. Las cualidades técni- cas eran casi idénticas ya que poseia gréficos en 3D real o ani- maci6n por Motion Capture. ‘SuperBike contempla unas cuall- dades casi perfectas para un jue- go de estas caracteristicas que proporcionan un realismo impre- sionante. Se trataba pues de un digno simulador en el que inclu- 50 se puede observar el movi- miento de los pilotos en las cur- vas y el cambio de sonido en ca- da marca. La siguiente entrega, ‘SuperBike 2000, aunque con ma- yores caracteristicas técnicas co- mo mas vistas de camara, movi- mientos o mas detalles en prime- ra persona, no superé en absolu- to a su version anterior. Por otro lado, queremos terminar con la disciplina rey en circuitos de ve- locidad, los 500 cc. Este evento ‘encontré una buena salida en el mercado con titulos como la se- rie Grand Prix 800 (MicroProse / Hasbro 1999). Pero sin duda, el mejor acercamiento a esta disci plina estuvo a cargo de Namco ‘cuando versiona su recreativa de 1999 Namco 800cc GP para con- sola con el nombre de Moto GPy que posteriormente también pa- sa al PC, Moto GP esta conside- rado el mejor simulador de 500ce. de hoy en dia. Su realis- mo es total y alcanza hasta en la maniobrabilidad de las motos. Es el primero en ahadir el freno en. las dos ruedas e inclinacién de la moto a voluntad. Proporciona también cambios climatolégicos que afectan al manejo de la moto y sistema de Motion Capture en, los pilotos. “VELOCIDAD FUTURISTA El concepto de las carreras en los videojuegos también se extiende ‘en el campo de la ciencia-ficcién ofreciendo titulos con un talante de arcade de lo mas puro. Uno de los primeros intentos por simular ‘carreras ambientadas en el espa- Cio © con vehiculos futuristas pa ra PC corre a cargo de Electronics Arts con la version de Powerdrome de Amiga en el que se simulaba una carrera de naves or un circuito cerrado. Inspirado ‘en la realidad virtual aparece en 1993 MegaRace (Cryo Interactive Entertainment) con gréficos en ‘3D, video Full Motion y vez. Siguié una secuela con MegaRace 2 (1996) y MegaRace 3 (2002). Pero el titulo que ha enca- bezadio las listas de simuladores de carreras futuristas ha sido la ‘serie Wipeout de Psygnosis des- de 1995, Fue el primer titulo de Psygnosis para Nintendo 64 y {que versioné posteriormente para PC. Con Wipeout se rompen mol- des en cuestion de jugabilidad ofreciendo una velocidad de juego endiablada y el primero con carac~ teristicas multjugador. Ademas de estos titulos, no podemos olve darnos de otros de gran calidad como la serie Start Wars: Episodio |: Racer(Lucas Arts Entertainment, 1999), basado en. la pelicula del mismo nombre. Cada dia la tecnologia apli- cada alos juegos avanza mas y mas. Qué maravillas nos depa- rerd el futuro? La pregunta queda en el aire. eee 1. 4Como podemos obtener el nombre de un equipo conectado a la red local? protocolo UDP? ©MNOTR WN instalacion? 10. En Inno Setup, cen qué parte del Script se encuentra lo referente a los ficheros contenidos en Ia instalacién? teen net aa no) 11 Num JP » Host Countostis(™" ‘ection PS = DotedPS Num JP) 2. Crea vego Nueva suogo = HostNerGome | Unies un oepe Fehoet = "42700. Naove Union = JnNatGame (“PARTIDA PARTIDA1") 3 Type botenos Fe gates Foil Ems Tyee Din Botenbotonesto) (Dm botonBsbotones®) 4. Uilzando i instuceon “inagesOvean FimagesOve house). botn\ gitensoton Brawimage botongaticn boron botorBly ifosseBownt socsonen En saron= S. Elaginos en Stesios gracantes, Deno dela ventana de ilog0 ‘legos el Spo extercay entamos on Et Cninventane de Et fularos el ota “Nsw” y an Gradient selecconamos os dos puntos fo coir 1. Que ol raente nunca logue a citi td la imagen 77. Ena soon General pusamos ef boton Change ena seecon Song Type siogmos os carlos '. Enis seccion Samniepusamos en lcono “Now” ysegucamente egress, Cae ver que se pase Non” Soon ue 9. Hacendo cc sote lanes herzontal que atravens ol cip de 940 ‘vel punt donde queers modal vauman ydespaando © | pumetaeads, 2Con qué instruccién abrimos un archivo de escritura en un servidor? £Qué es lo primero que debemos realizar antes de clasificar los mensajes recibidos por el £Cémo podemos enviar una variable de 4 bytes a través del protocolo UDP? En Deep Paint 3D, ,e6mo podemos obtener una ventana con la textura? « éCon qué herramienta podemos dibujar una silueta curva en Deep Paint 3D? {Qué teclas del teclado equivalen a las notas DO y REF en ModPlug? « Como podemos activar el uso de acordes en ModPlug? zCémo podemos permitir en Inno Setup que el usuario pueda cambiar el destino de la eee ete ee) +1 Utlando ls instuci6n “GetEnv” = GetEn"Locaost) 2. Coniainstcion “OpenTCPStaam” = Comunicacén-OpentCPSteamDrecaen, Puerto) {3 Leer mensle con "RacvUDPMsg" = MonsjonRacrUDPMSgUDP_Stosm 4. Utiando “WiteFLost® = WrtFlost UDP_Steem, vaort '. acide doe ae soe ol canal 77 £100 comesponde a a toxa Qy 0 RE ala 8. Sie scons es de dos ntas haciendo lc con atacla “SHIFT” 7 Aetvando a cals Alow user to change the aplication decoy ‘40. Lo relocion de ficheros se encuentra desouts del encabexamianto (Fish ass Contenido CD- Serie de utilidades para editar misica, crear cds y un montén de cosas mis. Music Collector Ten bien ordenada tus masias ycolecio- nalas usando esta aplicacin, Micoco MP3 to Wav converter Plus Convierte fil y répidamente tus MP3 en archivos WAV, RecordNow Max Excelente sofware de grabacion de cds con tun montén de opciones, Con este estupendo programa podris editar tus archivos de audio y adres efectos. CD MP3 Terminator GGraba tus MP2 2 cd de un modo muy senci- lo usando esta programa, DISENO 2D Photo Lite Excelente programe con el que podris afia- di multiples efectos a tus imégones. Irfanview Gracias a esta aplicacion podrés prevsuali: 1a tus imagenes répidamente, Poweralbums Ten siempre tus fotografis ydibujos orde nador con este catalogador. 00 Slowview Otro software de ctalogacién con ol aque adems pods visualizer tus imégenes. VCW VicMan‘s Photo Editor Programe de edcn de imagenes para rea liar os cambios que desees. DISENiIO 3D Ayam Programa de edicién y desarrollo de imége- nes en tres dimensiones. Gen Excelente aplicacién con la que podras caracterizar toda clase de rostros a tu gusto Nendo Demo de esta herramienta con la que podrés crear entornos yobjetos en 30, Rhinoceros Interesante utlidad para desarrllr escenas entres dimensiones vindola ademas a la ver en varias perspectvas. PROGRAMACION Inno Setup ‘Nueva opor tunidad para te software con el que realizaremos el instlador del juego. NCTDiscWriter ActiveX DLL Gracias a esta herramienta podrés crear backups de tus dats y no perder nada Emeditor Editor muy cémado de usar que soporta ademés miitiples lenguajes de program: cin, JUEGOS Motocross Madness 2 Haz que tus competidores muerdan el polvo de la derota con este divetido juego. Motocross Mania Trepidante simulador en el que no tendris descenso alguna hasta legar ala meta Tux Racer Simpatico juego completo en el que deberés correr una tepidante carrera deslzéndote por la nieve. AmaSuperBike Corre con tu moto y divirtete de lo findo en todas as carreras que desees. Star Wars Episode 1 Racer CCompetcin de tipo futurista en la que ade ‘més podrés meterte en la piel de los perso: najes de Star Wars Zone of Fightor [Nuestro juego, en su version a definitive ‘Ademas incluimos todo e cbdigo fuente. vipEO CamVideo FX Interesante utilidad con la que podrés pasar tus videos desde la cémara digital y un montén de utilidades més. X Audio Video Clip Joiner CCombina fi y rpidamente los clips de video con el aio > EXTRAS En este apartado encontrarés todos los ej2mplos de los que hablamos en el colec- cionable, para que no pierdas detalle ragoess Bl

You might also like