Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Zedenox en Noviembre 21, 2011, 07:08:55 PM

Título: Ayuda Videojuego RTS
Publicado por: Zedenox en Noviembre 21, 2011, 07:08:55 PM
Bueno, a lo que vine :
estoy desarrollando un RTS (para los que no saben, videojuego de estrategia, warcraft 3, starcraft,age of empires, ya?) en GM8Pro y llevo esto, ademas he usado los tutoriales de fancypenguins (http://www.youtube.com/user/fancypenguins)(muy buenos) con los que logre bastantes cosas :

- Movimiento con mp_potential_step
- Deteccion de obstaculos y enemigos : verifica si hay el objetivo esta ocupado y se detiene (cuando mueves varias unidades a un lugar) o si solo esta entre el objetivo y la unidad
- Interfaz grafica GUI : hasta ahora solo muestra tu dinero, tiene una opcion para ver los trabajadores inactivos (trato de hacer que entre los inactivos seleccione un aleatorio pero no lo he logrado), un boton para finalizar el juego, y la GUI se mueve a traves del mapa(por ahora solo con las flechas y el numpad, trabajo en el mouse)
- Movimiento a traves del mapa : mapa mas grande
- Niebla de guerra (visibilidad) : dise?e una pero el juego corre lentisimo,
no son los recursos, el GMK solo pesa 26,6 kb  :-[ jeje

Bueno, por ahora les dejo unas imagenes :
(http://img100.imageshack.us/img100/6885/imagen1wb.jpg)
El Juego
(http://img828.imageshack.us/img828/3231/imagen2sy.jpg)
Algunas Unidades Moviendose
(http://img51.imageshack.us/img51/5562/imagen3av.jpg)
Movimiento a traves del Mapa con la GUI

Vengo a Pedirles ayuda con algunas cosas :
- Recoleccion de Recursos : mirando entre los tutoriales de fancypenguins encontre unos, estan al inicio, el problema es que yo quiero como warcraft 3, explico : al llegar al recurso, toman un poco y lo llevan a la base mas cercana, lo dejan y vuelven al recurso, y se repite el proceso. en este tutorial, se crean dos tipos de unidades y se cambia, quisiera realizar esto con una sola unidad.
- Interfaz grafica : al desplazarme a traves del mapa la GUI se corre un poco en direccion contraria a donde me dirijo, quisiera arreglar esto, es un poco fastidioso.
- Visualizar GUI para cada unidad : cuando seleccione una unidad, la GUI cambie o aparezca una parte de ella
- Todo lo Demas para un buen RTS : Construccion de Edificios, Creacion de unidades, inteligencia artificial, dise?o de mapas,etc.

Y lo mas importante : IDEAS para las unidades, nombres, edificios, enemigos, recursos.

oohh casi lo olvido : como puedo dise?ar una niebla de guerra (la visibilidad del mapa) que no ponga totalmente lento el juego, ya tengo una pero hace que el juego corra lentisimo

bueno, agradeceria su ayuda y me gustaria terminar algun dia lo que yo creeria que seria un gran juego.

Actualizo :
Bueno, aca donde vivo son las 01:55 PM (UTC-5, Colombia, serian las 07:55 PM en UTC+1, para espa?a) y acabo de terminar de almorzar,  ;D
hace un rato arregle el problema de la seleccion multiple y funciona de maravilla, ahora voy a tratar de crear la vista.

Actualizo :
Active la niebla de guerra con tama?o de 64x64 para que no pusiera lento, dejo imagen :
(http://img412.imageshack.us/img412/2813/imagen4qs.jpg)
Niebla de Guerra.

Actualizo :
Son las 9:56 AM aca donde vivo y acabo de avanzar con los ataques : los soldados atacan enemigos si estan cerca de rango, pero aun no programo la AI enemiga.Ademas, A?adi algo a la GUI y dise?e un poco de la creacion de unidades. Dejo Imagen :
(http://img32.imageshack.us/img32/5689/imagen7texto.jpg)
Ataque.
(http://img811.imageshack.us/img811/9960/imagen8wq.jpg)
Creando una Unidad (Ahora hay 4 Trabajadores).
Título: Re: Ayuda Videojuego RTS
Publicado por: Zeit en Noviembre 21, 2011, 10:37:29 PM
Hola, deberias ser mas especifico con las preguntas y separar tus dudas en diferentes temas, pero antes, tambien deberias usar el buscador pues yo he visto temas para cosas como las que quieres como minimapas, AI, luces o niebla, items, etc. Busca y aplicalo a tu engine y cuando tengas dudas concretas con gusto te ayudamos. Saludos.
Título: Re: Ayuda Videojuego RTS
Publicado por: MaanuRP en Noviembre 21, 2011, 10:42:04 PM
- Recoleccion de recursos: Puedes hacer 2 objetos distintos, y cuando le haces click derecho al recurso que cambie al objeto que va y viene recolectando.
O tambien con una variable, un solo objeto que es un evento step verifique una variable, y dependiendo de esa variable es como va a actuar.

- Haz que cuando el mouse llegue cerca de un lado de la room haga esto:

[gml]
if mouse_x >= view_xview + 640 - 16 //Si el mouse esta cerca del borde derecho.
{
view_xview += 1 //La camara se movera hacia la derecha.
}
if mouse_x <= view_xview + 16 //Si el mouse esta cerca del borde izquierdo.
{
view_xview -= 1 //La camara se movera hacia la izquierda.
}
if mouse_y <= view_yview - 16 //Si el mouse esta cerca del borde superior.
{
view_yview -= 1 //La camara se movera hacia arriba.
}
if mouse_y >= view_yview + 480 - 16 //Si el mouse esta cerca del borde inferior.
{
view_yview += 1 //La camara se movera hacia abajo.
}
[/gml]

-La GUI hazla por variables globales, cuando se hace click en tal unidad, pone en tal valor la unidad global. Un draw la verifica y la dibuja.

-Haz que se dibuje todo negro, y de alguna forma que se vaya sacando.




Edito:

Cita de: Zeit en Noviembre 21, 2011, 10:37:29 PM
Hola, deberias ser mas especifico con las preguntas y separar tus dudas en diferentes temas, pero antes, tambien deberias usar el buscador pues yo he visto temas para cosas como las que quieres como minimapas, AI, luces o niebla, items, etc. Busca y aplicalo a tu engine y cuando tengas dudas concretas con gusto te ayudamos. Saludos.

Aunque te conteste un par, tiene razon xD

Esa es la mejor idea.
Título: Re: Ayuda Videojuego RTS
Publicado por: Zedenox en Noviembre 22, 2011, 12:34:42 AM
si, gracias por responder, estuve mirando el codigo que dejaste y funciona excepto por una parte, y ademas se sale de los limites, puedes ver mas alla de -1 , voy a usar tu codigo con un poco del que ya tenia y lo arreglo

Actualizo :
Hace un rato termine la niebla de guerra, tuve que hacerla con un tama?o de 64 porque sino el juego no corria a la velocidad normal. Dejo Imagen :
(http://img412.imageshack.us/img412/2813/imagen4qs.jpg)
Niebla de Guerra 64x64.
Título: Re: Ayuda Videojuego RTS
Publicado por: MaanuRP en Noviembre 22, 2011, 02:33:08 AM
Es que te pase lo primero que hice de ese script xD
5 minutos despues ya lo habia arreglado (Porque antes lo habia hecho sin probar).

Aqui te dejo el ejemplo con imagenes y todo listo :)

Título: Re: Ayuda Videojuego RTS
Publicado por: Zedenox en Noviembre 22, 2011, 04:44:46 AM
gracias, pero aun asi sigue con el problema de que el mouse se va del limite del mundo
Título: Re: Ayuda Videojuego RTS
Publicado por: Zedenox en Noviembre 22, 2011, 05:36:30 AM
Actualizo :
Es casi medianoche ( :-[),estoy dise?ando la GUI y acabo de avanzar un poco con el generador de mundos, dejo dos mapas aleatorios :
(http://img43.imageshack.us/img43/4342/imagen5eq.jpg)
Mapa Aleatorio 1.
(http://img193.imageshack.us/img193/4769/imagen6rj.jpg)
Mapa Aleatorio 2.

El Problema es que los arboles si se ven, si alguno sabe como corregir esto, por favor digan como :D
Título: Re: Ayuda Videojuego RTS
Publicado por: MaanuRP en Noviembre 22, 2011, 05:43:59 AM
Como haces que esas partes queden oscuras? Si es con alguna variable puedes verificar esa variable desde los arboles y hacer que desaparezcan.

PD: Lo de mi ejemplo no se porque te sucede eso, yo lo estoy usando y me anda bien :/
Título: Re: Ayuda Videojuego RTS
Publicado por: klys en Noviembre 22, 2011, 07:07:00 AM
Me gusta este proyecto, amo los RTS games, si necesitas de programador, aqu? estoy!

Dime por mp que necesitas y te ayudare con gusto :3!  :D

Si la niebla de guerra son unos objectos puedes ponerles depth -100 (o mas) y cubrir?n todo.

Me gustar?a revisar como hiciste la niebla de guerra, quiz?s la pueda mejorar :D
Título: Re: Ayuda Videojuego RTS
Publicado por: Zedenox en Noviembre 22, 2011, 02:21:35 PM
Te dejo el Codigo de la Niebla de Guerra, Son Dos Objetos, La Niebla y el Creador.

Niebla : Parent_Player es Un Objeto que Cubre todos los Parents por Categoria (Unidades y Edificios) del Jugador. Esto va en el "Step" Event. No hubo Necesidad de Modificar la "Depth", ya que solo Cambie la "Mask" del Objeto a un Sprite sin Imagen, asi no hay Colision.
[gml]// Niebla
if (distance_to_object(instance_nearest(x,y,Parent_Player)) <= instance_nearest(x,y,Parent_Player).range * 4) {
   image_alpha = 1
}
if (distance_to_object(instance_nearest(x,y,Parent_Player)) <= instance_nearest(x,y,Parent_Player).range * 2) {
   image_alpha = 0.5
}
if (distance_to_object(instance_nearest(x,y,Parent_Player)) <= instance_nearest(x,y,Parent_Player).range) {
   image_alpha = 0
}[/gml]

Creador : La variable "fog_size" obtiene el Tama?o del Sprite de la Niebla, me ahorraba tener que cambiar valores si la hacias mas grande o Peque?a. El Restro de Codigo escanea el tama?o del Escenario y crea la Niebla.
[gml]// Niebla
fog_size = sprite_get_width(Spr_Fog)
for (fog_x=0; fog_x <= room_width; fog_x += fog_size) {
   for (fog_y=0; fog_y<=room_height; fog_y += fog_size) {
       instance_create(fog_x,fog_y,Fog)
   }
}[/gml]
Con este codigo me funciono muy bien, lo Dise?e yo solo (Bueno, me apoye un poco de un Video) y creo que no necesita mejoras. Tal Vez si encontraras la posibilidad de hacer que una Niebla de 16x16 no Hiciera que el Juego corriera Lentisimo, eso seria muy Util.
Título: Re: Ayuda Videojuego RTS
Publicado por: Zeit en Noviembre 22, 2011, 04:10:09 PM
Hola, para la niebla se me ocurre con un solo objeto con mascara de rectangulo y dibuja el rectangulo restando un color en escala de gris (dependiendo de la oscuridad) cuando colisione con tu personaje. Por cierto, para que no se vean los arboles utiliza un deph mayor para los objetos arbol que para los objeto niebla. Saludos.
Título: Re: Ayuda Videojuego RTS
Publicado por: Zedenox en Noviembre 22, 2011, 04:47:28 PM
Cita de: Zeit en Noviembre 22, 2011, 04:10:09 PM
Hola, para la niebla se me ocurre con un solo objeto con mascara de rectangulo y dibuja el rectangulo restando un color en escala de gris (dependiendo de la oscuridad) cuando colisione con tu personaje. Por cierto, para que no se vean los arboles utiliza un deph mayor para los objetos arbol que para los objeto niebla. Saludos.

la niebla a esta arreglada, voy a mirar con lo de la depth. oye me podrias ayudar con este codigo, es del generador de escenarios, estoy usando el metodo switch(por primera vez  XD) y tengo tres objetos, uno amarillo, uno rojo y uno verde, el problema es que en vez de crear aleatorio , solo crea el rojo :
[gml]create_limit = 32
// Lista de Enemigos
enemy_list = ds_list_create()
ds_list_add(enemy_list,a)
ds_list_add(enemy_list,b)
ds_list_add(enemy_list,c)
size = ds_list_size(enemy_list)
show_message(string(size)) // para saber el cuantos enemigos existen jeje
repeat(10) {
   number = irandom(size)
   e_x = random_range(create_limit,room_width-create_limit)
   e_y = random_range(create_limit,room_height-create_limit)
   switch (size){
       case 1:
           instance_create(e_x,e_y,a)
       case 2:
           instance_create(e_x,e_y,b)        
       case 3:
           instance_create(e_x,e_y,c)

   }
}[/gml]
Título: Re: Ayuda Videojuego RTS
Publicado por: Zeit en Noviembre 22, 2011, 05:49:47 PM
Hola, en : switch(size) debe ser switch(floor(number))... Saludos.
Título: Re: Ayuda Videojuego RTS
Publicado por: elviskelley en Noviembre 22, 2011, 07:33:30 PM
Gracias por decirme que este tipo de juegos se les llama RTS, estoy creando uno y no sabia como se llamaba jejeje.
Bueno... La niebla osea lo oscuro podr?as mejor hacerlo con primitivas aca veras como Click aqui (http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=2010)
Título: Re: Ayuda Videojuego RTS
Publicado por: MaanuRP en Noviembre 22, 2011, 08:06:04 PM
Cita de: elviskelley en Noviembre 22, 2011, 07:33:30 PM
Gracias por decirme que este tipo de juegos se les llama RTS, estoy creando uno y no sabia como se llamaba jejeje.
Bueno... La niebla osea lo oscuro podr?as mejor hacerlo con primitivas aca veras como Click aqui (http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=2010)

Me defines bien lo que son primitivas?
Título: Re: Ayuda Videojuego RTS
Publicado por: Zeit en Noviembre 22, 2011, 08:15:19 PM
Cita de: MaanuRP en Noviembre 22, 2011, 08:06:04 PM
Me defines bien lo que son primitivas?

Hola, en general son formas basicas: puntos, lineas, triangulos, rectangulos, poligonos, etc., pero para el caso de GM son solo puntos, lineas, triangulos. Puedes dividir cualquier forma en primitivas, en particular triangulos que es lo mas usual para recrear la imagen y modificar los vertices de los triangulos a tu antojo. Saludos.
Título: Re: Ayuda Videojuego RTS
Publicado por: MaanuRP en Noviembre 22, 2011, 08:20:35 PM
Y como pueden ser empleadas o usadas?
Título: Re: Ayuda Videojuego RTS
Publicado por: Zeit en Noviembre 22, 2011, 08:25:33 PM
Cita de: MaanuRP en Noviembre 22, 2011, 08:20:35 PM
Y como pueden ser empleadas o usadas?
En todo lo que imagines, luces y niebla, falso 3D, dibujar partes de una imagen, el mismo 3D, sombras de personajes, etc.

Por cierto, creo que para discutir este tema se debe cear un nuevo post, tambien usa el buscador, seguro encontraras mas (recuerdo haber creado varios post del tema hace tiempo).
Título: Re: Ayuda Videojuego RTS
Publicado por: klys en Noviembre 23, 2011, 05:28:47 AM
http://dl.dropbox.com/u/33603247/Fog%20of%20Wars%20Example%20Excellent%20Results.gmk

Basandome en tu motor de niebla de guerra, cree este que muestro aca!

Aqui expongo que es lo que hice:

El creador de niebla esta intacto, es lo ?nico que no hubo necesidad de modificar.

En la niebla modifique lo siguiente:

Step Event:

[gml]if (place_meeting(x,y,parent_player))
{
    visible = 0
}
else visible = 1

if (place_meeting(x,y,parent_lessvisible))
{
    image_alpha = 0.5
}
else image_alpha = 1[/gml]


Ahora... "parent_player" no abarca los objectos del jugador como tal, mas bien deberiamos cambiarlo a parent_view ya que abarca un nuevo objecto que le podriamos llamar object_view_center y para el "parent_lessvisible" le podriamos llamar object_view_outline

en el archivo que te pase el hijo de "object_view_center" es object10
y el hijo de "object_view_outline" es el object16

ambos tienen en su step event lo siguiente:
[gml]
// En step event
x = seguir.x
y = seguir.y
[/gml]
ademas, sus sprites tienen el centro en el centro y no deben ser visibles.

en la creacion de cada personaje que tenga vision:

[gml]
// En create event
range = 10
ID = instance_create(x,y,object10)
ID.seguir = id
ID.image_xscale = range
ID.image_yscale = range

ID = instance_create(x,y,object16)
ID.seguir = id
ID.image_xscale = range +3
ID.image_yscale = range +3[/gml]

Con eso, ya tienes una mejor forma de hacer niebla de guerra, trabaje toda la tarde en una idea, y esta fue una de las idea que se me ocurri? :D!

El sprite del fog de war ponlo en 32x32 o 40x40 !

Pruebalo y me dices :)

En el editable puedes mover una unidad por ves seleccionandola con click izquierdo y luego clickeando en cualquier lugar con click derecho (no use mp_potentia_step), y luego seleccionas para atacar algun edificio morado con click izquierdo, pero debe estar en su zona de vista para poder atacarle. (No ataca automaticamente, debes darle bastantes veces click izquierdo)

Espero te sirva, y espero que tengas intenciones de hacer un modo multiplayer, te puedo ayudar :D!!!