Febrero 01, 2011, 08:42:16 PM Ultima modificación: Febrero 02, 2011, 04:30:29 AM por Jucarave
Hola a todos, veran tengo el siguiente problema, hace poco empece a desarrollar un juego 3D en mi casa... ahora ya tengo el sistema casi finalizado, pero tengo un problema.

Mi computador tiene 1.5gb de ram 1.8ghz de procesador y 256mb de video y el juego me corre full.

Pero en el de mi oficina que es 1.5gb de ram 2.8ghz de procesador y 64mb de video el juego corre un poco lento y eso que solo con un enemigo...

Todavia no he ensayado a poner mas enemigos en el de mi casa, pero es logico que en un cierto punto se va a poner lento...

En total el personaje basico tiene un alrededor de 600 poligonos y el arma (digamos el m4) tiene como 200.




Ya hice que dependiendo de la distancia al jugador, los modelos no se dibujen y eso funciona un poco... pero no es la solucion ya que van a haber varios enemigos en pantalla, lo que lo hara mas lento.

Las texturas son de baja calidad, cada parte (pie, mano, pecho) la textura mide 64*64

Queria ver que consejos me dan para que el juego no quede tan pesado... y en el peor de los casos reducir la cantidad de poligonos del personaje :'(




Saludos

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


La reduccion de poligono es una alternativa viable.
Pero, hay otra forma:
(un poco complicada)

Supongamos que en un juego, su velocidad maxima es de 600fps (Lo juegos comerciales al menos si). El problema, es que ninguna tarjeta de video y mucho menos, ninguna RAM puede alcanzar esa velocidad tan alta. La solucion, es aumentar la velocidad del juego respecto a los fps perdidos. Es complicado, pero si a 60fps, el personaje avanza con una velocidad de 10pixeles por fotograma,en el caso de que los fps se reduscan (por ejemplo a 30fps), va a ser necesario aumentar la velocidad del movimiento del personaje (a 20 pixeles por fotograma). De esta forma quien este jugando no va a notar en absoluto que lo fps decayeron, por que en jugador avanza a la misma velocidad.

Okey, lo importante:

Colocalo, por ejemplo en un script que se llame movfps
[gml]
if(fps <= 90) and (fps != 0) and (argument0 != 0)
return argument0*(room_speed/fps)
[/gml]

Donde se controla al personaje
[gml]if(keyboard_check(vk_left) = true)
x += movfps(10)[/gml]

Con eso funcionaria, al menos a mi me sirve. Donde dice fps<=90, reemplazalo por la velocidad del room. Recorda que si aumentas la velocidad del room, el valor 10 (del personaje) tiene que disminuir.

Okey nos vemos  XD !
hay otra forma usando current_time, anque no me la acuerdo  XD

mmm muy interesante ;) la verdad no se me habia ocurrido :-[ ... pero tienes razon, ahora tendre que implementarlo a atodos los scripts de animacion, velocidad, moviento :o

anyway gracias por tu ayuda ;D

Saludos

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.