Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Juego Online (ESTILO MARIO)

Iniciado por avalontm, 30 de Diciembre de 2010, 05:35:45 AM

« anterior - próximo »

avalontm

Hola yo soy AvalonTM y ando creando un juego con esta libreria desde hace com 1 mes y con todos los manuales y ejemplos que ponen he reunido agregarlo a mi juego.

Video Viejo (cuando recien comenzaba n_n)
http://www.youtube.com/watch?v=ZSUamDpx_-I


Este es un adelanto de como esta quedando.. no  soy un experto pero hago lo que puedo :P



ME gustaria que opinen :P

Hola ..  Primero que nada Gracias por el comentario!!

Bueno..

Los FPS tienen un maximo de 60  y lo corre fijo en 60 FPS .. solo queen esta pc se me alento mucho el juego por sus recursos ...

Mi sistema Temporal.
1 GB RAM
1.4 MGHZ
32 VIDEO

Lo que pretendo hacer es un juego Multijugardor en linea, Cada usuario contara con su propia cuenta y su propia configuracion personal (como cualquier MMORPG).

El estilo de juego pretendo hacerlo Tipo Mario de Aventura o Social (No he decidido).

Por el momento Solo se puede obtener la posicion de los personajes y visualizarlo correspondiente a la posicion.
Chat entre los jugadores (Visibles en pantalla. 800x600).

Se pretende tener Imagenes HD.

los personajes cuentan con la siguiente configuracion:

Name
HealMax
HealMin
ManaMax
ManaMin
PosX
PosY
Gold
Level

(sorry por el multilenguaje pero asi lo trabajo )

Eso es mi Comienzo..

Otra FOTO (TENGO PROBLEMAS CON LAS COLLISONES)

Ahora carga Tiles de mapa en binario
Le agregue barra de HP a cada personaje.




Tengo problemas con las collisiones entre personajes y Tiles , Si halguien me pudiera ayudar se lo agradeceria n_n

Aqui les dejo El DEMO de como esta y el problema de las collisones (Se usan las Flechas , 1 y 2 mumerico.)
Viene con un archivo de configuracion para ver el debug de collisones (Color Azul)

Nota: El personaje que aparece es adicional (Pruebas en modo offline)
Avaland DEMO

aqui dejo el codigo Espero y me puedan ayudar n_n
Avaland - RESOURCE

Hechelion

Está genial.
¿Podrías comentar algo más del gameplay o como será el juego?

Lo que me llama la atención es la tasa de FPS, ¿la tienes fija en 46 o es lo máximo que te está dando?
¿Podrías comentar que hardware tiene o si tienes algo especial en los ciclos como un timer para la conexión TCP?

avalontm

Hola ..  Primero que nada Gracias por el comentario!!

Bueno..

Los FPS tienen un maximo de 60  y lo corre fijo en 60 FPS .. solo queen esta pc se me alento mucho el juego por sus recursos ...

Mi sistema Temporal.
1 GB RAM
1.4 MGHZ
32 VIDEO

Lo que pretendo hacer es un juego Multijugardor en linea, Cada usuario contara con su propia cuenta y su propia configuracion personal (como cualquier MMORPG).

El estilo de juego pretendo hacerlo Tipo Mario de Aventura o Social (No he decidido).

Por el momento Solo se puede obtener la posicion de los personajes y visualizarlo correspondiente a la posicion.
Chat entre los jugadores (Visibles en pantalla. 800x600).

Se pretende tener Imagenes HD.

los personajes cuentan con la siguiente configuracion:

Name
HealMax
HealMin
ManaMax
ManaMin
PosX
PosY
Gold
Level

(sorry por el multilenguaje pero asi lo trabajo :P)

Eso es mi Comienzo..

Ahorita trabajo en la recontruccion del mapa .. que sera por tiles de 64x64 es mi idea (Ya me aburrieron los clasicos tiles 32x32).

La Coneccion TCP esta en LOOP en espera de respuesta del server.
Se resive el mensaje del servidor "SSP" .. donde el cliente obtiene el mensaje y lo lee como el ejemplo:

Sub HandleData(rData As String)
'Set user's screen pos
If Left$(rData, 3) = "SSP" Then
    rData = Right$(rData, Len(rData) - 3)
    UserPos.X = ReadField(1, rData, 44)
    UserPos.Y = ReadField(2, rData, 44)
    Exit Sub
   End If
End if


Eso seria un poco de lo que tengo.. sigo en desarrollo.. :)

avalontm

#3
Tengo problemas con las collisiones entre personajes y Tiles , Si halguien me pudiera ayudar se lo agradeceria n_n

Aqui les dejo El DEMO de como esta y el problema de las collisones (Se usan las Flechas , 1 y 2 mumerico.)
Viene con un archivo de configuracion para ver el debug de collisones (Color Azul)

Nota: El personaje que aparece es adicional (Pruebas en modo offline)

Avaland DEMO


Hechelion

No incluiste el código fuente, sin eso es imposible ayudarte.




avalontm

Cita de: Hechelion en 04 de Enero de 2011, 07:53:00 AM
No incluiste el código fuente, sin eso es imposible ayudarte.

Lo siento .. u_u

aqui dejo el codigo Espero y me puedan ayudar n_n
Avaland - RESOURCE


Hechelion

Estuve mirando el proyecto, pero no logré encontrar donde estás calculando las colisiones (Si me indicas donde, le doy una mirada), pero te recomiendo mirar la función MATH_IntersectRect de la clase system de la librería, simplemente le pasas como parámetro los cuadrados de ambos PJ te dice si están colisionando o no.

avalontm

#7
Cita de: Hechelion en 05 de Enero de 2011, 02:02:19 AM
Estuve mirando el proyecto, pero no logré encontrar donde estás calculando las colisiones (Si me indicas donde, le doy una mirada), pero te recomiendo mirar la función MATH_IntersectRect de la clase system de la librería, simplemente le pasas como parámetro los cuadrados de ambos PJ te dice si están colisionando o no.
Código (vb) [Seleccionar]


Public Function SpriteCollision(CharIndex As Integer) As Boolean
Dim Y As Long
Dim X As Long
Dim varColt As Long

'Load arrays
For Y = 0 To 20
   For X = 0 To 50

  If System.MATH_IntersectRect(CharList(CharIndex).Shape, MapList(varColt).Shape) Then
       SpriteCollision = True
  End If
       If varColt = 1000 Then
       varColt = 0
       End If
       varColt = varColt + 1
   Next X
Next Y

If gDebug Then
   Call GFX.DRAW_Text(Impact, "Block: " & SpriteCollision, 650, 50, -1, GFX.ARGB_Set(255, 4, 122, 4), Align_Left)
End If

End Function

Public Sub Load_Gravedad()
Dim CharIndex As Integer

For CharIndex = 1 To NumChars
 If SpriteCollision(CharIndex) Then
 
     CharList(CharIndex).IsFalling = True
     CharList(CharIndex).IsJumping = False
     CharList(CharIndex).Pos.Y = CharList(CharIndex).Pos.Y
 End If
 If Not SpriteCollision(CharIndex) Then
  If Not CharList(CharIndex).IsJumping Then
               'Ahora se crea la gravedad
               If IsOnline Then
               Call SendData("M" & SOUTH)
               MoveScreen SOUTH
               End If
     CharList(CharIndex).IsFalling = False
     CharList(CharIndex).Pos.Y = CharList(CharIndex).Pos.Y + gGravityFactor

End If
End If
Next CharIndex
End Sub



  If System.MATH_IntersectRect(CharList(CharIndex).Shape, MapList(varColt).Shape) Then
       SpriteCollision = True
  End If



el Load_Gravedad esta loop en el juego y verifica si el index del personaje esta collisionando con halgun tile del mapa


Hechelion

No sé que problema tienes, el sistema de colisiones veo que funciona bien, está detectando que el PJ colisiona con el suelo (Tile fila 4xx)

avalontm

lo siento .. creo que no me explique del todo bien..

mi idea es hacer un juego tipo mario el clasi personaje que pasa niveles.

y mi problema ahorita son en las collisiones que al momento de brincar y topar en un tile en el aire me choque y regrese al suelo al personaje que si camino por el mapa y hay un tile frente al personaje lo detengay no lo deje avanzar.

como veras en el juego el personaje no collisiona al momento y varia su posicion en la collision del tile..

una idea que parar el personaje al instante es este ejemplo: pero no logro adaptarlo a mi juego

http://www.stratos-ad.com/forums/index.php?topic=10165.0



Hechelion

Ahora me ha quedado un poco más claro, lo que pasa es que recorrí el mapa y no vi ningún obstáculo y no encontré forma alguna de saltar, así que no veía problema con el sistema que tienes implementado.

Por lo que vi, tú tienes un array de tiles que representa todo el mapa y que defines aquellos que quieres  saber si hay colisión (El resto vale 0) y en cada ciclo recorres el array para saber si hay colisión (Eso es lo que entendí).
Pero en ese modelo, sólo sabes que hay una colisión, pero no sabes en que dirección está la colisión.

Lo que te recomiendo es que cambies la estructura, en vez de recorrer todo el array buscando colisiones, simplemente calcula donde está el PJ y calcula los 8 tiles que lo rodean, haces una prueba de colisión con esos 8 tiles y cada resultado te indicara si puedes ir en esa dirección.

Por ejemplo, si tu mapa es de 50*20 tiles y el PJ esta en el Tile 402, entonces tu sólo debes comprobar colisiones con los tiles adyacentes:
351...352...353
401...XXX...402
451...452...453

Si por ejemplo, tu PJ comienza a colisionar con 401 es porque no puede avanzar hacia la izquierda. (Está técnica tiene el problema que parte del rectángulo de tu PJ  va a entrar en el tile).



avalontm

muchas gracias... tengo una idea mas o menos ... vere que puedo hacer ... y te aviso si me resulto de mucho tu ayuda´

gracias!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.