Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Enero 29, 2014, 05:19:27 PM

Título: 3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 29, 2014, 05:19:27 PM
Buenash! Pues yo he estado desarrollando mi juego 3D en un PC bastante bueno. Windows 8 tiene, 8GB RAM, 3.4 GHz, tarjeta grafica 2GB, pero de las peores, ahí la cagué, aún así es bastante bueno. Y cuando lo he probado en mi Windows vista, donde el PC es bastante mas malillo... RAM de 2 como mucho, procesador 1.7 creo, y lo demas... meh... y lleva sus años... todo va lentísimo.

1.EDITO: vale, lo he solucionado dando tamañó 128x128 a las texturas. Para algunas cosas guay, pero para los personajes y tal deberé duplicar, uno con el tamaño correcto y otro "ajustado", es un coñazo pero es necesario... y por qué en Windows 8 va perfecto con cualquier tamaño, pero en Windows vista NECESITA que sean potencias de 2? Si no recuerdo mal, en windows XP tampoco hacía falta, pero igualmente no le veo sentido...

2. A mí me va a perfectamente a 30 fps. Si lo pongo en modo alta iluminacion, las CARAS CUADRADAS, pues TODO MI JUEGO TIENE SOLO CARAS CUADRADAS 3D y cubos, pasan de tener 4 vertices a tener 9. Me baja a 15 fps de 30... TAN LENTO ES? En el otro PC mas viejo, acepto que es muy malo, nunca pude jugar casi ningun juego 3D, pero el LEAGUE OF LEGENDS me va al 100% con los graficos al minimo, y este juego mío va a 15 fps con todo al minimo, 10 al maximo... cuando no tiene ni comparacion! Creo que lo he hecho bastante eficiente... es normal, o es que me he pasado la eficiencia por donde yo me sé? Si sólo hago walls, floors y éstos forman cubos y triángulos, nadamás! Es un plataformas con sprites 2D pero con suelos y paredes 3D, no uso ningun modelo siquiera...
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: Mega G en Enero 29, 2014, 06:56:59 PM
Buenas DarkKRuleR, para que suban los fps en PCs antiguos puedes desactivar los objetos que estén fuera del alcance de la cámara.

Primero hazlos desaparecer todos con la función instance_deactivate_all y luego haz aparecer los que ves en pantalla con instance_activate_region.

Y si hay algún objeto que deba seguir funcionando a pesar de estar fuera de la vista, pon instance_activate_object para que no desaparezca.

Espero que así vuelva a los 30 fps o al menos se acerque.


Saludos y a ver si se arregla el asunto de la descarga para poder probar tu juego! :)
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 29, 2014, 07:24:56 PM
Joer, esto de tener que ser todas las texturas cuadradas y potencias de 2 jode... para varias cosas tengo que tener sprites duplicados, el original y el estirado... pero de ahora en adelante será menos, teniendo en mente esto ya haré a los personajes con esos tamaños :D pero aún no sé por qué pasa, cuando en mi PC donde trabajo funcionaba perfectamente... pero esto lo acabo de solucionar al 100%, fácil, sólo hacer stretch a los sprites :)

respecto a la lentitud en PCs menos nuevos, he hecho lo que me has dicho. Yo tenía que no mandaba a dibujar lo que estaba lejos, pero parece que no era suficiente.

[gml]instance_deactivate_object(objWall); instance_deactivate_object(objFondo); instance_deactivate_object(objMasFondoCueva);
instance_deactivate_object(objFloorCuevaRoto); instance_deactivate_object(objWallCuevaRoto); instance_deactivate_object(objFondoCuevaDesaparece);

instance_activate_region(objZ.x-500, objZ.y-500, 1000, 1000, true);[/gml]

desactivo todos los muros y luego activo lo más cercano. Con esto, en la mayoría de casos desaparece media room. Con la iluminación al máximo he subido de 25 a 30! Es buena señal, luego probaré en el otro PC en mínimo a ver que tal va ^_^ gracias! Ojalá pudiera hacer más, pero parece que el mínimo es 500, pues mi view es de 960, así que borrar 1000x1000 está bien...

lo doy por resuelto, y reenvié mi juego, cuando lo acepten hago el tema :D
Título: Re:[Resuelto] 3D tiene graves problemas en otros PCs
Publicado por: Haseo en Enero 29, 2014, 08:40:55 PM
Hola DarkKRuleR, he visto que has publicado varias veces muchos problemas con el rendimiento a la hora de hacer tu juego y me da curiosidad, pues segun las especificaciones que das de tu pc superan por mucho a mi pc portatil y aun asi te corre el juego lento,me gustaria mucho ayudarte se que es bastante frustrante no poder obtener los resultados que esperas de tus juegos, si no tienes ningun incoveniente puedes poner un editable del juego y lo chekamos para ver que errores tienes, yo en mi pc uso para el juego que estoy desarrollando terrenos con entre 2000 y 3000 vertices y aun asi el rendimiento es de 60/60. mi pc tiene
3 gb ram
dual core 2.10 ghz
sin targeta grafica solo chip de video integrado  :'(

y mis juegos 3d hechos con gamemaker corren fluidos.

una de las cosas que hace caer bastante el rendimiento 3d a la hora de hacer un juego, es la cantidad de objetos en el room, cuanto menos objetos uses para tu juego 3d mejor

En este escenario solo uso 2 objetos.

(http://i178.photobucket.com/albums/w266/Haseo001_2007/scrren_zps21e59165.png) (http://s178.photobucket.com/user/Haseo001_2007/media/scrren_zps21e59165.png.html)

o tambiem puedes poner un demo para ver por encima cual pueda ser el problema.

todo esto viene a que somos pocos en la comunidad los que nos atrevemos a desarrollar juegos en 3d y deberiamos apoyarnos.
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 29, 2014, 08:58:51 PM
Jaaarl..... 2 objetos?!? cantidad = ralentizacion?...

espera que te digo la cifra exacta de mi primera room (todas mis rooms son aprox 2000x1000)...

282 objetos, de donde 250 aprox serán suelos, paredes, techos y fondos... realmente influye tanto? cada objeto tiene 4 vértices en modo baja iluminación, 9 en alta... realmente ralentiza tener tantos objetos, aunque cada uno sólo tenga 4 vértices?

y como logras eso con sólo 2 objetos? Un objeto te dibuja TODO el escenario? madre mía  :o

la demo ya está enviada con la anterior optimizacion, no deberia haber problemas. Cuando pueda probarla en mi otro PC comentaré qué tal me fue, en el que uso ahora he logrado 30/30 incluso en modo alta iluminacion (9 vertices por cuadrado en vez de 4), y sigue siendo poco, pero esque el 3D es "secundario" en mi juego, pues la vista y la jugabilidad es plataformas, lo uso porque le da un aspecto increíblemente genial comparado a lo que tenía antes en 2D :D
Título: Re:[Resuelto] 3D tiene graves problemas en otros PCs
Publicado por: TLT96 en Enero 29, 2014, 09:04:29 PM
Bueno, Hagamos la union de los 3D Makers xDDD

Mi pc, en si es muyyyy mala, El league of legends me lo corre mas o menos normal, habeces recibe pequeños congelados y al cerrar el juego la pc queda algo cansada, abre programas lentos, incluyendo el internet y carpetas (TODO)

En S4 league, bien, al cerrarlo el mismo problema pero por menos tiempo.

Trate de jugar el Dead Rising 2 y un Lagazo.... Realmente lo puse y lo quite (Hasta en la pantalla de titulo se veia lag)

Consejos para el 3D?
Tu problema es la lentitud, probemos 2 cosas que estan en mi proyecto

http://www.comunidadgm.org/preguntas-y-respuestas/cual-game-maker-va-mejor-con-3d/
Alli veras una screen.

Como haseo dice, no tanto tienen que ver con los polys, sino en la pc que se ejecute

Yo utilizo el Game Maker 8.1 (Para cosas 3D), es un poco mejor...

Tienen buenos poly (O eso creo)
Un consejo es no dibujar la pantalla a cada momento, Crea un object llamado "Frameskipping" o algo asi DD

Create Event
Citartimeline_index=TimeLine
timeline_position=30
timeline_running=false

Step Event
Citarset_automatic_draw(false)
timeline_running=true

Crea una timeline llamada ummmmm "TimeLine"

Add Step 30
Citarscreen_redraw()
temp=fps-5
if temp>=30 temp=25
timeline_position=temp

Asi saltara los frames dependiendo de el lag xDD

Luego, si se laguea mas que todo en 3D no es por codigos si no por las lineas de los models (Lo que me parece raro ya que usas models d3d de el game maker o.O)

Puedes probar en los objects que no sean tus personajes o camara algo asi

if distance_to_object(CamaraoPlayer)<=640
visible=true
else
visible=false

Como dice Haseo, creo que es mejor un demo o algo asi xDD
Hablando de 3D, alguno sabe hacer models? a lo PS1?

PD: Me gusta ese juego (Antes lo vi, no recuerdo en cual tema xDD) y la unica forma es esa, 1 object para el scenario y otro para el player y camara.... Aunque tambien puedes hacer esos dos en uno xDD
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: penumbra en Enero 29, 2014, 09:17:20 PM
Cita de: DarkKRuleR en Enero 29, 2014, 08:58:51 PM
donde 250 aprox serán suelos, paredes, techos y fondos... realmente influye tanto?

¡Madre mía, eso es del diablo! *Arroja su PC lejos* ¿Estás dibujando todos esos objetos con las funciones de Game Maker, que no se distinguen por ser las más rápidas precísamente? ¿En una escena cuántos objetos en promedio tienes?

Cita de: TLT96 en Enero 29, 2014, 09:04:29 PM
Hablando de 3D, alguno sabe hacer models? a lo PS1?

Yo no uso todavía 3D en GM, probablemente me decida mejor por Unity, pero sé algo de modelado. No es difícil si quieres hacer modelos con un número bajo de polígonos, pero no desprecies un tutorial básico de modelado, hay conceptos que tienes que saber para evitarte problemas más tarde.





Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 29, 2014, 09:29:28 PM
Aprendí un poco la lección, y no uso el d3d_draw_wall, lo hago con primitives, definiendo los 4 vertices, que viene a ser lo mismo pero creo que más rápido. Eso sí, sí uso walls y floors para dibujar los sprites de todo, mientras que sólo uso primitivas para suelos y paredes. Podría hacer lo demás con primitivas, que realmente no me costaría, es lo mismo que un wall o flooor, defines sus 4 vertices y ya, pero así me resulta más fácil y si es un problema a futuro me lo plantearé.

Realmente el número de objetos no sé en qué debería influir si a la hora de dibujar sería lo mismo. Eso era una escena, es el promedio, pues todas suelen ser del mismo tamaño de room

uhh, TLT96, dejame procesar eso... creo que yo DEBO dibujar la pantalla a cada momento, el juego es de acción y el personaje estará constantemente moviéndose, saltando y lanzando ataques, y moviendo la cámara por ello, los enemigos igual :)

EDIT

Ahora que me lo leo más, si REALMENTE el numero de objetos influye (que no sé, qué mas da que un objeto dibuje 100 walls, a que 100 objetos dibujen 1 wall cada uno), creo que podría hacer... yo tengo 1 objeto por cada pared y 1 por cada suelo/techo, podría hacer que ellos no dibujen nada, y un objDraw, que haga with(objetoADibujar) y dibuje en su lugar... creo que funcionaría y podría ser una solucion, un solo objeto que hace with() para cada muro y ahí dibuja segun las coordenadas de ese muro, en vez que cada objeto muro dibuje por sí mismo?
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: penumbra en Enero 29, 2014, 09:56:44 PM
Mmm, una de las primeras cosas que te insisten cuando haces algo en 3D es ser tacaño con los polígonos y objetos, siempre usar lo menos, menos, menos posible.

Cita de: DarkKRuleR en Enero 29, 2014, 09:29:28 PM
Eso era una escena, es el promedio, pues todas suelen ser del mismo tamaño de room

No entiendo muy bien, o me da miedo entender  XD. ¿Por qué usas tantos objetos para hacer pisos y paredes? ¿Estás usando objetos como mosaicos (o pixeles) para ir construyendo paredes y pisos? Sobre todo en 3D, una pared debería ser un único objeto, el piso otro objeto, otra pared otro objeto, etc. para que al final tengas unos 3 o 4 objetos para todos esos muros.
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 29, 2014, 10:26:50 PM
Tengo paredes de 1x100, suelos/techos de 100x1, fondos de 100x100, cada uno es un objeto que dibuja el correspondiente wall/floor, los coloco todos para ir construyendo la room, como viene siendo normal no?

Lo mío es un plataformas, hay muchos niveles de suelos y techos así como de paredes, necesito objetos independientes para definirlas con precisión.

(http://dmcplusdata.webcindario.com/room.png)

Ahí tienes mi compleja y sensual room :D
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: Jucarave en Enero 29, 2014, 11:01:27 PM
Pues de hecho, el uso de tantos objetos es terrible, ten en cuenta que cada objeto tienen muchas propiedades y Game Maker hace varias operaciones con ellos para ordenarlos y ejecutarlos, también influye mucho(no se que tanto) el hecho de estes utilizando draw_wall y draw_floor, ya que se deben crear nuevos bufferes y desechar los anteriores constantemente, sumale a esto que son 250 objetos (overkill).

Esto puede variar de persona en persona, pero mi consejo (basado en mi experiencia con el 3D, de la cual he cometido muchos fallos  :-X ) es que tengas un objeto para el mundo y otro para el personaje, en cuanto a las colisiones... podrías crear objetos pero que no sean de tamaño pequeño, por ejemplo si tienes 20 pisos seguidos en linea recta, crea un solo objeto y pon su mascara de colisión de todo el tamaño total.

Saludos  8)
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 29, 2014, 11:11:33 PM
Como te dije, los walls y floors los hago con primitivas, así que ahí gano bastante (creo). Eso último que dices es interesante, 1 objeto que haga por varios... sería una buena optimización para el futuro, ya que es común tener varios en fila. Pero necesito muchos, me es imposible hacerlo si no... debo construir los niveles y checar colisiones...
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: ivn_eze en Enero 30, 2014, 12:04:46 AM
tio, la razon es que windows visata es la version de windows mas bugeada y mala que existe.
prueba iniciar el juego en modo de compatibilidad para windows xp SP3
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 30, 2014, 01:00:37 AM
Meh, ya probé en Vista con las mejoras. Los FPS se quedan en 20 y a veces bajan, quiero pensar que es mi PC que está hecha BASTANTE mierda, y fue un milagro que tirara el lol. Pero no tiraba ni siquiera cosas como Minecraft, así que... es normal.

Bueno, he detectado un extraño error, una tile desaparece tras este cambio... quizás lo arregle, y suba el juego al dropbox y lo cuelgue ya
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: Slade en Enero 30, 2014, 03:58:05 AM
Amigo te aconsejo lo siguiente, algunas cosas ya te las han dicho, pero igual  XD

1. trata de que un solo objeto dibuje a todos los objetos y dejar los demas como invisibles
2. como es una jugabilidad 2D desactiva los objetos que esten fuera de la vista.
3. si tienes Sprites cuadrados o que solo sirven de adorno, desmarca la casilla que dice "presice collision checking"
4. No uses texturas muy grandes si no es necesario y trata de que sean potencias de 2
5. No uses objetos como adornos, mejor dibujarlos desde un objeto "Control"
6. en los global settings, en la pestaña Other, en la opción "Game Priority" ponle "High" o "Highest" para que el procesador le de
    mas prioridad a tu juego y tenga un incremento de velocidad.

y por ulitmo y muy importante:

7. Fijate a que frecuencia corre tu monitor si 40hz, 50hz o 60hz esto es muy importante, ya que los fps a los que corre tu juego
    tienen que ser multiplos de dicho valor.

    Por ejemplo si la fecuencia de tu monitor esta a 60hz, entonces con 30 fps , 60 fps, 120 fps etc. te ira fluido y sin bajones
    pero si esta a 40 hz entonces deberia tener 20 fps 40 fps 80 fps etc. de lo contrario sufrira de bajones en la velocidad

Hace tiempo yo hice un juego en 3D con apenas unos 12-20 objetos cubos y esferas y a 60 fps, pero cuando lo probaba los fps bajaban drasticamente y aunque optimizaba y probaba a borrar objetos, los fps apenas si se incrementaban en 1 o 5. Hasta que me di cuenta que mi monitor tenia 2 frecuencias una a 40hz y otra a 60hz y por default tenia la opcion de 40hz. Asi que una vez le cambie la frecuencia a 60hz. se soluciono el problema.

Todos estas tips ayudan a mejorar mucho el rendimiento de una aplicacon. Espero que te ayude, saludos.
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Enero 30, 2014, 01:28:30 PM
Vaya, cuántos consejos...

1. Eso podría.. que el controlador haga un with y los dibuje por él, a futuro probaré si funciona :)
2. Sep, eso lo hice, se notó la mejora.
3. Error de novato, cómo pude olvidarlo?
4. Sep, eso también lo arreglé y por eso funcionó en Vista. La mayor textura que uso es 1024x1024, sólo una (y pierdo mucha calidad respecto a 2000 que tenía antes, pero bueno).
5. Esto podría agruparse con el punto 1 y el with, no?
6. Interesante...
7. Yo uso 30, ta guay pero.. y si el usuario no tiene multiplos de lo que yo uso? No me esperaba que estas cosas influyeran, sería jodido entonces...
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: penumbra en Enero 30, 2014, 09:54:01 PM
Para lo de las frecuencias, se podria usar

display_get_frequency()
display_set_frequency()

para ajustar la velocidad de refresco según el monitor del usuario

Siempre está la opción de usar una dll, por ejemplo GMOgre3D que es más potente y extiende la funcionalidad 3D de GM, claro, lo que implica tener invertir tiempo en aprender cosas nuevas
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Febrero 05, 2014, 01:39:04 AM
EDIT: lo he arreglado, ahora sólo un objeto hace TODOS los suelos y paredes leyendo las coordenadas de cada objeto suelo o pared. Cuando lo cuelgue veremos si se ha optimizado :D
Título: Re:3D tiene graves problemas en otros PCs
Publicado por: DarkKRuleR en Febrero 12, 2014, 08:51:35 PM
Buenas! Revivo un poco éste tema para hablar de la optimización. Recientemente hice una nueva versión de la demo optimizada al 80% para probar. La comprobé en otro PC donde el original me iba lento y éste me fue igual de lento. Tengo lo siguiente:

-Sigo teniendo muchos objetos para construir el entorno, pero un mismo objeto controlador dibuja en nombre de TODOS estos objetos. EN LA ROOM QUE PROBÉ sólo estaba el personaje y suelos y paredes, es decir, todo lo que había era dibujado por el mismo objeto prácticamente. Y...

-Desactivo los objetos que están fuera de la view, así que el punto de "que un solo objeto dibuje todo" y desactivar lo que está fuera creo que no es el problema.

-Desmarqué muchos precise collision checking, "Game Priority" a "Highest", CASI todas las texturas son múltimos de 2 (excepto las que no se dibujan con d3d o primitivas, como el HUD).

-Todos los muros los hago con primitivas. Sólo uso d3d_draw_floor para cosas como el personaje, pero, como os digo, en la room donde SÓLO HABÍA MUROS y el personaje, no debería influir. Sólo tengo una textura 1024x1024, las demás son todas alrededor de 128x128.

-El único problema que me falta: la frecuencia del monitor que decís que influye. ¿Podría ser esto lo que provoca que a alguno le vaya lento? (me va lento en mi PC "no tan nuevo", y de los que habéis jugado la demo a uno le iba lento). Si fuera así me molaría saber cómo remediar lo de la frecuencia y probar de nuevo en mi PC viejo. Si ahí va bien, irá bien en todos!! Pero no sé a qué os referís ni cómo arreglarlo.

A parte de la frecuencia esque directamente está todo mejorado como me dijísteis, un objeto dibujando en nombre de todos, desactivo lo que está fuera de la view...

y quiero saber dos cosas: que diferencias reales hay entre desactivar un objeto, o hacer que "ese objeto no se dibuje", o "no haga eventos"? Porque a veces desactivar objetos trae muchos problemas (como que desactivo el suelo y lo que hay encima cae atravesándolo, porque el objeto está dentro de la view pero el suelo está fuera), y ahí podría no desactivarlo sino hacer que no se dibuje, pero querría saber si perdería mucha eficiencia con ello... (porque desactivar lo que está fuera ayuda MUCHO a optimizarse pero da éstos problemas)

y qué diferencia real hay entre el d3d_draw_floor/wall y usar una primitiva con 4 vértices?