MUDKIP
Chiquitito y Pegajoso
Hola Comunidad de Whack a Hack! Saludos para todos, soy el amigo Mudkip y quiero compartir un post que a más de uno le puede resultar de utilidad.
Todos quienes usamos RPG Maker Xp y pokemon Essentials principalmente nos hemos topado con el hecho de que nuestros juegos corren a lo mucho a 40 FPS exprimiendo al máximo las capacidades de nuestras tostadoras, y a pesar de eso aún así hay caídas de frames que arruinan toda la magia de la experiencia a la hora de jugar. (Motivo principal diría yo por el que Essentials aún sigue siendo una segunda opción para quienes aman esto de desarrollar fan games de pokemon.)
Bueno, intrusiando por las mías entre la ensalada de letras y códigos del mismo essentials pude configurarlo de manera que al menos el ingame básico (Caminar por el mundo, los eventos, las animaciones, los NPC) puedan verse a 60 fps de una manera sobria, sin que todo se despilfarre y todos los NPC corran como locos por el mapa sin darnos tiempo a entender que acaba de suceder.
Para esto vamos a tener que reemplazar cifras dentro de los mismos scripts existentes en el juego para que todo vaya entonadito, bueno al Asunto:
(Recordar que todas las menciones se hacen en la version 17.2 de essentials, para vesriones anteriores pueden variar aunque en esencia es lo mismo me imagino)
Y en fin, eso es todo lo que e podido pillar por el momento, si alguien que sepa de esto pudiera ayudar a que los demás aspectos del juego (capturar, revisar menus, etc) puedan verse con sus tiempos reales sería genial.
Prueben sus proyectos y notaran la gran diferencia!
Por mi parte me despido adiosin ¡!!
Todos quienes usamos RPG Maker Xp y pokemon Essentials principalmente nos hemos topado con el hecho de que nuestros juegos corren a lo mucho a 40 FPS exprimiendo al máximo las capacidades de nuestras tostadoras, y a pesar de eso aún así hay caídas de frames que arruinan toda la magia de la experiencia a la hora de jugar. (Motivo principal diría yo por el que Essentials aún sigue siendo una segunda opción para quienes aman esto de desarrollar fan games de pokemon.)
Bueno, intrusiando por las mías entre la ensalada de letras y códigos del mismo essentials pude configurarlo de manera que al menos el ingame básico (Caminar por el mundo, los eventos, las animaciones, los NPC) puedan verse a 60 fps de una manera sobria, sin que todo se despilfarre y todos los NPC corran como locos por el mapa sin darnos tiempo a entender que acaba de suceder.
Para esto vamos a tener que reemplazar cifras dentro de los mismos scripts existentes en el juego para que todo vaya entonadito, bueno al Asunto:
(Recordar que todas las menciones se hacen en la version 17.2 de essentials, para vesriones anteriores pueden variar aunque en esencia es lo mismo me imagino)
1- Ir al script RGSS2Compatibility, en la línea 67 verán que hay un comando que dice Graphics.frame_rate=40, y oh sorpresa, es el comando que define los frames a los que andarán nuestros proyectos, entonces cambian ese 40 por un 60 y quedaría así
BRAVO! Ya tienes tu juego a 60 fps, pero aquí nacen más problemas, si pruban su juego verán que sus npc corren por el mapa con endemoniados (ni tanto), las batallas siguen lentas y todo va muy rápido lo cual puede resultar incomodo sin dar tiempo a nuestros amigos a que digieran la trama con calma y se enamoren de nuestra maravillosa narrativa cierto? Jajaja.
BRAVO! Ya tienes tu juego a 60 fps, pero aquí nacen más problemas, si pruban su juego verán que sus npc corren por el mapa con endemoniados (ni tanto), las batallas siguen lentas y todo va muy rápido lo cual puede resultar incomodo sin dar tiempo a nuestros amigos a que digieran la trama con calma y se enamoren de nuestra maravillosa narrativa cierto? Jajaja.
2- Ahora toca modificar los textos para que no parezca una carrera de quien lee más rápido, para esto vamos al script PScreen_Options, principalmente desde la línea 138 hasta la 144, ahí se encuentra nuestro objetivo.
A ustedes les aparecerá algo asi:
Pues reemplazen todo esto por esta preciosura:
Y listo, los textos del juego se leerán como corresponde
A ustedes les aparecerá algo asi:
Código:
def pbSettingToTextSpeed(speed)
return 2 if speed==0
return 1 if speed==1
return -2 if speed==2
return MessageConfig::TextSpeed if MessageConfig::TextSpeed
return (Graphics.frame_rate>40) ? -2 : 1
end
Código:
def pbSettingToTextSpeed(speed)
return 3 if speed==0
return 1.1 if speed==1
return -1 if speed==2
return MessageConfig::TextSpeed if MessageConfig::TextSpeed
return (Graphics.frame_rate>60) ? -2 : 1
end
3- Ahora toca modificar la prisa de nuestro protagonista que corre más que cuando nos da diarrea (que mal chiste)
Ir al script Game_CHaracter, en la línea 241 hasta la 285 debería haber algo asi:
pues reemplazen todo eso por esta belleza:
y su personaje caminara como corresponde.
Ir al script Game_CHaracter, en la línea 241 hasta la 285 debería haber algo asi:
Código:
def update_pattern
return if [MENTION=13890]Lock[/MENTION]_pattern
[MENTION=42437]ani[/MENTION]me_count = 20 if !@step_anime && @stop_count>0
if [MENTION=42437]ani[/MENTION]me_count > 18-@move_speed*3
if !@step_anime && @stop_count>0
@pattern = [MENTION=40591]Origi[/MENTION]nal_pattern
else
@pattern = (@pattern+1)%4
end
[MENTION=42437]ani[/MENTION]me_count = 0
end
end
def update_jump
@jump_count -= 1
@real_x = (@real_x*@jump_count+@x*Game_Map.realResX)/(@jump_count+1)
@real_y = (@real_y*@jump_count+@y*Game_Map.realResY)/(@jump_count+1)
if !jumping? && !moving?
Events.onStepTakenFieldMovement.trigger(self,self)
end
end
def update_move
distance = 2**@move_speed
realResX = Game_Map.realResX
realResY = Game_Map.realResY
@real_x = [@real_x-distance,@x*realResX].max if @x*realResX<@real_x
@real_x = [@real_x+distance,@x*realResX].min if @x*realResX>@real_x
@real_y = [@real_y+distance,@y*realResY].min if @y*realResY>@real_y
@real_y = [@real_y-distance,@y*realResY].max if @y*realResY<@real_y
if !jumping? && !moving?
Events.onStepTakenFieldMovement.trigger(self,self)
end
if @walk_anime
[MENTION=42437]ani[/MENTION]me_count += 1.5
elsif @step_anime
[MENTION=42437]ani[/MENTION]me_count += 1
end
end
Código:
def update_pattern
return if [MENTION=13890]Lock[/MENTION]_pattern
[MENTION=42437]ani[/MENTION]me_count = 20 if !@step_anime && @stop_count>0
if [MENTION=42437]ani[/MENTION]me_count > 25-@move_speed*3
if !@step_anime && @stop_count>0
@pattern = [MENTION=40591]Origi[/MENTION]nal_pattern
else
@pattern = (@pattern+1)%4
end
[MENTION=42437]ani[/MENTION]me_count = 0
end
end
def update_jump
@jump_count -= 1
@real_x = (@real_x*@jump_count+@x*Game_Map.realResX)/(@jump_count+1)
@real_y = (@real_y*@jump_count+@y*Game_Map.realResY)/(@jump_count+1)
if !jumping? && !moving?
Events.onStepTakenFieldMovement.trigger(self,self)
end
end
def update_move
distance = 1.75**@move_speed
realResX = Game_Map.realResX
realResY = Game_Map.realResY
@real_x = [@real_x-distance,@x*realResX].max if @x*realResX<@real_x
@real_x = [@real_x+distance,@x*realResX].min if @x*realResX>@real_x
@real_y = [@real_y+distance,@y*realResY].min if @y*realResY>@real_y
@real_y = [@real_y-distance,@y*realResY].max if @y*realResY<@real_y
if !jumping? && !moving?
Events.onStepTakenFieldMovement.trigger(self,self)
end
if @walk_anime
[MENTION=42437]ani[/MENTION]me_count += 1.5
elsif @step_anime
[MENTION=42437]ani[/MENTION]me_count += 1
end
end
4- Y finalmente un pequeño arreglo para que las batallas anden a 60 fps de igual forma:
Ir al evento Pokebattle_Battle, entre las líneas 2336 y 2346 deberían tener algo como esto:
entonces, seleccionan todo eso y lo reemplaza por este bombon:
(Aclaro que esta ultima configuracion corresponde a Caeles Caelum aunque modificado para 60 fps)
Y listo, las batallas andan a 60 fps 8)
Ir al evento Pokebattle_Battle, entre las líneas 2336 y 2346 deberían tener algo como esto:
Código:
def pbStartBattle(canlose=false)
PBDebug.log("")
PBDebug.log("******************************************")
begin
pbStartBattleCore(canlose)
rescue BattleAbortedException
@decision=0
@scene.pbEndBattle(@decision)
end
return @decision
end
Código:
def pbStartBattle(canlose=false)
Graphics.frame_rate = 60
PBDebug.log("")
PBDebug.log("******************************************")
begin
pbStartBattleCore(canlose)
rescue BattleAbortedException
@decision=0
@scene.pbEndBattle(@decision)
end
Graphics.frame_rate = 60
return @decision
end
Y listo, las batallas andan a 60 fps 8)
Y en fin, eso es todo lo que e podido pillar por el momento, si alguien que sepa de esto pudiera ayudar a que los demás aspectos del juego (capturar, revisar menus, etc) puedan verse con sus tiempos reales sería genial.
Prueben sus proyectos y notaran la gran diferencia!
Por mi parte me despido adiosin ¡!!
Última edición: