Ir al contenido

publicidad
publicidad

Foto

Desarrollo de videojuego [XNA]


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
60 respuestas en este tema

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#46

Escrito 30 abril 2009 - 10:48

Ahora voy contigo Ellolo17, jejejej :twisted: .

Pues yo aporto parte de la ayuda sobre este tema del motor que uso:

...


Esta idea está perfecta desde luego, pero la veo más orientada a juegos multijugador estilo COD4, CS, etc. Si la coges por partes para adaptarla a un MMORPG, tienes algo similar a lo que estoy haciendo. Establecer conexión, conectar con el servidor que te va a atender, intercambiar datos de jugadores que ya están jugando, empezar a recibir información del servidor (movimientos, conexiones y desconexiones). Comenta una buena idea que es comprobar la latencia de los jugadores para ajustar el envío de información, algo así tendré que introducir más adelante.

Un par de consejos para evitar el lag:

[color=blue]- Never insert a SLEEP command ...


¡Muy buenas ideas!, lo único que añadiría sería que al controlar alguno de estos elementos, también hay que tener cuidado de si esto influirá en la fluidez del juego. Perder en lag, pero ganar en tiempo de procesamiento tampoco compensa.., hay que alcanzar una relación óptima.

Consejos para mejorar la integridad:
[i][color=darkblue]...


Nada que objetar. Igual que controlar el lag de los jugadores, estas ideas son algo que también tendré que introducir, ¡gracias por la información!.

Un ejemplo de una traza enviada

[code:1]packet$=playername$+"*"+str$(camera position x())+"*"+str$(camera position y())+"*"+str$(camera position z())+"*"+str$(camera angle x())+"*"+str$(camera angle y())+"*"+str$(camera angle z())+"*"+speed$+"*"+fireweapon$+"*"+ping$[/code]
Este codigo seria en Darkbasic. El comando str$ convierte a texto, las otras funciones son bastante explicitas en su nombre ^^

Si se usa ese modelo de traza, aqui tienes lo que se enviaria:
"Bill10424*543.1122*58.2311*801.8790*44.3250*172.0093*94.2210*15*0*2480"


En esos paquetes creo que hay información que en mi caso se puede ahorrar. Al trabajar con hilos y en TCP, los paquetes de un jugador sólo los recibe el hilo que atiende a ese jugador, y teniendo instancias que guardan la información del jugador me puedo ahorrar el mandar continuamente el nombre del jugador, la velocidad y el arma seleccionada. En cuanto a la posición del jugador ya lo estoy enviando; y el ángulo, en cuanto lo introduzca también tendré que mandarlo.

Pero vamos, la traza está perfecta por ejemplo si en el servidor sólo hay un hilo que reciba paquetes, y le pongo un 10 si la recepción es por UDP

Espero que todo esto te sirva de ayuda


¡¡Desde luego ElloLo17!!, muchas gracias. Toda la información me viene genial porque siempre hay cosas que se me acaban pasando...

Un saludo!.

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#47

Escrito 30 abril 2009 - 18:10

Pues no entiendo cómo si el cliente se conecta al SC, al SL y al SPJ, sólo sea necesario abrir un puerto en el router.[code:1]
-------tcp------------|
| -------tcp---------||
| | vv
| | ---- tcp ----
| | |SL|<--------->|SC|
| | ---- ----
| | \ A
| | \ |
| | \¿udp? | tcp
| | \ |
| | \ |
| | \ V
| | ---- ¿udp? ----
| |--|SP|<--------->|C |
| ---- ----
|
| ----
|----|SP|
----[/code]
Yo ahi veo 3 "sockets", o no? (perdón por la calidad del esquema, pero mi teléfono no da para mas ;)

Saludos.

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#48

Escrito 30 abril 2009 - 20:54

Pues no entiendo cómo si el cliente se conecta al SC, al SL y al SPJ, sólo sea necesario abrir un puerto en el router.
...
Yo ahi veo 3 "sockets", o no? (perdón por la calidad del esquema, pero mi teléfono no da para mas ;)

Saludos.


Jejeje, mira, te pongo un enlace al diagrama y te explico:

IMAGEN

Las puntas de la flecha quiere decir donde está abierto el puerto. Como puedes ver, ahí el cliente sólo tiene que abrir un puerto. El SPJ y SL tendrán que abrir tantos como clientes + 1, y SC sólo necesitará uno.

Un ejemplo de puertos que habria que tener abiertos son:
[code:1]Para SC: Puerto TCP:5000
Para SL: Puerto TCP:6000 en adelante
Para SPJ: Puerto TCP:18000 en adelante
Para Cliente: Puerto TCP:4000[/code]

Y el establecimiento siguiendo la numeración de la imagen consistiría en:
[code:1]1. SC manda comando de conexión a SC:5000
2. SPJ manda comando de conexión a SC:5000
3. Cliente manda comando de conexión a SC:5000
4. SC pide un puerto para el nuevo cliente a SL:6000, devuelve el puerto 6001
5. SC pide un puerto para el nuevo cliente a SPJ:18000, devuelve el puerto 18001
6. Cliente se conecta a SL:6001, selecciona personaje patatín patatán.
7. Cliente se conecta a SPJ:18001 para enviar coordenadas
8. SPJ se conecta a CLIENTE:4000[/code]

Como los clientes se ejecutan en máquinas diferentes, todos pueden tener el mismo puerto para recibir datos.

Un saludo!.

  • Ital

  • Magus

  • vida restante: 100%
  • Registrado: 01 ene 2006
  • Mensajes: 313
#49

Escrito 29 agosto 2009 - 21:12

Hola deviax.
Tengo que decir que tu juego es uno de los más serios e interesantes que he visto.
He visto que estás interesado en el diseño gráfico de personajes, [al parecer quieres dibujos tipo APB, no? je, je] me gustaría colaborar con ésto, en realidad.
También podría aportar lo que me sea posible en el aspecto creativo y de audio [en especial música]

De igual forma espero que el juego siga con su desarrollo de calidad. Estaré atento al blog para ver lo que den a conocer. Ánimo, que personas grandes hacen cosas grandes. ;)

Buen día a todos!

  • jonaSoft

  • Fledgling

  • vida restante: 100%
  • Registrado: 09 oct 2009
  • Mensajes: 55
#50

Escrito 09 octubre 2009 - 20:04

Una pregunta, el menú como lo hiciste? Hay algun tutorial?


Este componente te podria servir.

http://xnacommunity....rringTitle=Home

Y Devialx

Tu proyecto es algo parecido a esto.

http://solanumsolstice.codeplex.com/

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#51

Escrito 05 enero 2010 - 20:36

Aquí os dejo un vídeo con el estado actual del proyecto, aunque me parece que poco a poco voy perdiendo mi lugar en este foro por lo menos con este proyecto.., finalmente voy a plantearlo desde la perspectiva de una ciudad virtual a lo versión light de Second Life.



PD: Aceptar el consejo que sabiamente los desarrolladores de este foro os dan..., es realmente duro pelearse con un MMO, si no fuera porque es mi proyecto fin de carrera lo había abandonado hace meses :-( .

#52

Escrito 06 enero 2010 - 17:16

Felicidades, Esta muy currado. Sobre todo me han gustado los menu y lo de la ventanita de chat.
Suerte con el proyecto

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#53

Escrito 06 enero 2010 - 18:10

Felicidad, Esta muy currado. Sobre todo me han gustado los menu y lo de la ventanita de chat.
Suerte con el proyecto


Muchas gracias rantamplan87,

La verdad es que el sistema de comunicaciones o el de eventos entre elementos del juego si que ha tenido su trabajillo..., es una pena que muchas de las cosas que hacen que todo funcione no se puedan apreciar si no te las cuentan. De la comunicación ya os he contado practicamente todo en otros posts, pero por ejemplo para la programación del juego por un lado creé clases que encapsularan los elementos básicos de la interfaz y que facilitaran su creación y uso (textos, imágenes, imágenes animadas, cuadros para introducir texto, botones), después me monté un sistema de contenedores en el que poder agregar estos elementos indicando si los quieres colocar debajo de otro elemento de ese contenedor, a su derecha o izquierda, centrado..., y que además mediante el patrón de diseño Observer fueran propagando los eventos de la interacción del usuario (por ejemplo el click del ratón sobre un botón) y que llegara la información a las pantallas para su control.

Ahora ando liado con el diseño de los gráficos in-game (personaje, escenarios, interfaz del chat y selección de jugadores), que los finales no serán esos que se ven en el vídeo.

Ya con eso le pongo fin a este proyecto que como se podía imaginar es desbordante para una persona, aunque me ha servido para trabajarme unas librerías que afinaré un poquito más y utilizaré en próximos proyectos menos exigentes jejeje.

Un saludo!.

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#54

Escrito 19 enero 2010 - 13:58

Siguiendo con mi cruzada, os dejo un vídeo de la pinta que tiene el proyecto ahora que le he pegado un lavado de cara.

Última versión

Esta versión ya se acerca más a la final. Me queda por escalar los escenarios para que el personaje no sea Godzilla y no llegue con la cabeza a la segunda planta de las casas, y crearme un par de personajes más para no pasarme de egocéntrico (ese tipejo que se mueve clonado por la pantalla es mi intento de dibujarme :P)

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#55

Escrito 19 enero 2010 - 16:28

Te ha quedado bastante bien.

Intenta quitar ese antiestetico marco negro añadiendo mas bosque y te quedará mejor.

Un saludo.

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#56

Escrito 19 enero 2010 - 18:45

Te ha quedado bastante bien.

Intenta quitar ese antiestetico marco negro añadiendo mas bosque y te quedará mejor.

Un saludo.


Muchas gracias Ellolo17 :).

Sobre lo del marco tienes razón, aunque de momento estaba así para recordarme que quería ver si XNA me ofrece alguna forma de meter de fondo un patrón de dibujo, es decir, igual que ahora está en negro, poner que se repitan árboles. Sino acabaré optando por tu solución.

Un saludo!.

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#57

Escrito 19 enero 2010 - 19:36

Pues hacer la matriz del mapa mas grande y poner todo bosques para "disimular" el fondo negro. Al menos es lo que se usa en varios juegos como el Warcraft 3 donde, si has probado el editor de mapas, ves que en el juego la camara solo se mueve hasta lo que en el editor es un cuadradito azul y luego lo que hay mas para allá puedes editarlo y a partir de la linea de fuera es todo negro.

Bueno, no recuerdo si era en el warcraft 3 o en otro pero mas o menos asi es y si no lo tiene simplemente se limita la camara para que no lo muestre.

Un saludo.

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#58

Escrito 19 enero 2010 - 21:53

Sí, si. Entiendo la idea que me das, ayer haciendo el mapa pensé en meter unas cuantas filas y columnas más de árboles, pero lo que decía es que igual que puedo decirle a XNA que quiero el fondo negro o azul, a lo mejor me dejaba decirle "ponme de patrón de fondo este árbol", y así no opto por una solución tan poco... elegante :D.

Pero vamos, he hecho una búsqueda diagonal por internet de esta idea y no he visto nada así que terminaré metiendo árboles y algo de agua en el diseño del mapa.

Un saludo

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#59

Escrito 19 enero 2010 - 21:58

Me alegra que sigas "vivo" deviax ;)

¿Para cuando un código o demo de los servidores?.

Tú debes ser casi igual de "bueno" dibujando que yo (muahaha), pero a mi, mas que el tema "artístico" me llama más la atención el tema "técnico", sobre todo porqué en los videos apenas se nota el "lag" cuando mueves los mecos.
Supongo que fuera d la LAN la cosa puede que varie un poco, pero la gracia es que puedes llegar a hacer un "Tibia" sin pretensiones de tener 900 pj por server.

Ya me daría yo con un canto en los dientes si algún día programo "algo" y juegan 50 PJ al mismo tiempo.

Saludos.

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#60

Escrito 20 enero 2010 - 01:19

Am, pues supongo que si, el DarkBasic -y por lo tanto el Dark GDK- lo tienen el comando para que fondo = 0,255,0 XD

Con esto digo: Lo tiene que tener el XNA y si no, puedes cogerte el dark gdk que es gratis aunque sea solo por poner ese comando.

Se encuentra en el DarkBasic en la seccion de codigos de las camaras con el nombre de "Color backdrop", por si te puede servir a buscarlo por XNA.

O si no usa algun comando para poner una textura en el fondo en vez de un color -es un comando que se usa para shaders- y usas una textura de 2x2 que sea solo de color verde.

Opciones tienes muchas. Asi que la que mas te guste ;)

Un saludo.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad