Project1
标题:
怎样使游戏不卡?
[打印本页]
作者:
zhuhengli
时间:
2008-9-13 06:41
标题:
怎样使游戏不卡?
我做的游戏 在我电脑运行正常 到别人电脑就明显变慢 而且有些卡,我电脑配置极高,但别人不能玩也不爽
怎样做 能使游戏变快不卡啊 能适合一般配置较低的电脑啊
谢谢 [LINE]1,#dddddd[/LINE]
此贴于 2008-9-15 14:34:40 被版主darkten提醒,请楼主看到后对本贴做出回应。
[LINE]1,#dddddd[/LINE]
版务信息:版主帮忙结贴~
作者:
共产主义红星
时间:
2008-9-13 06:44
尽量减少事件。
当然如果你到一定程度可以改脚本,减少一些刷新。 [LINE]1,#dddddd[/LINE]
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
作者:
心情de对白
时间:
2008-9-13 06:47
用下这个脚本试试·
#======================================
# ■ Anti Event Lag Script
#======================================
# By: Near Fantastica
# Date: 12.06.05
# Version: 3
#======================================
#======================================
# ■ Game_Map
#======================================
class Game_Map
#--------------------------------------------------------------------------
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
#--------------------------------------------------------------------------
def update
if $game_map.need_refresh
refresh
end
if @scroll_rest > 0
distance = 2 ** @scroll_speed
case @scroll_direction
when 2
scroll_down(distance)
when 4
scroll_left(distance)
when 6
scroll_right(distance)
when 8
scroll_up(distance)
end
@scroll_rest -= distance
end
for event in @events.values
if in_range?(event) or event.trigger == 3 or event.trigger == 4
event.update
end
end
for common_event in @common_events.values
common_event.update
end
@fog_ox -= @fog_sx / 8.0
@fog_oy -= @fog_sy / 8.0
if @fog_tone_duration >= 1
d = @fog_tone_duration
target = @fog_tone_target
@fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
@fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
@fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
@fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
@fog_tone_duration -= 1
end
if @fog_opacity_duration >= 1
d = @fog_opacity_duration
@fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
@fog_opacity_duration -= 1
end
end
end
#======================================
# ■ Spriteset_Map
#======================================
class Spriteset_Map
#--------------------------------------------------------------------------
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
#--------------------------------------------------------------------------
def update
if @panorama_name != $game_map.panorama_name or
@panorama_hue != $game_map.panorama_hue
@panorama_name = $game_map.panorama_name
@panorama_hue = $game_map.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
@fog_name = $game_map.fog_name
@fog_hue = $game_map.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
@fog.zoom_x = $game_map.fog_zoom / 100.0
@fog.zoom_y = $game_map.fog_zoom / 100.0
@fog.opacity = $game_map.fog_opacity
@fog.blend_type = $game_map.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
i=0
for sprite in @character_sprites
if sprite.character.is_a?(Game_Event)
if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
sprite.update
i+=1
end
else
sprite.update
i+=1
end
end
#p i
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
for sprite in @picture_sprites
sprite.update
end
@timer_sprite.update
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
@viewport3.color = $game_screen.flash_color
@viewport1.update
@viewport3.update
end
end
复制代码
作者:
link006007
时间:
2008-9-13 08:30
那些反卡脚本其实没什么用的啦 在事件少的地图, 或是事件较集中的地图 反而降低性能...
原理类似3D游戏里的视椎切割, 但实际效果确没那么好
提高性能; 改善代码, 规划每张地图的事件量
最好就是自己在初始化地图时组织地图的事件的数组, 当前流程不可能出现的事件就没有必要在update中更新
作者:
黑鏻
时间:
2008-9-14 03:09
地图缩小、没必要的事件删掉,
解决战斗中公共事件比较卡的问题:
http://rpg.blue/web/htm/news14.htm
作者:
lgcwj008
时间:
2008-9-15 03:19
缩小地图 把不要的事件杀掉。
或使用这个脚本
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#============================================================================
# ■ VX_事件图形刷新简化 —— By 诡异の猫
#============================================================================
# 脚本内容: 只刷新视野内的事件图形,改善大地图事件过多卡机情况.
#============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● 判定图形是否再视野内
#--------------------------------------------------------------------------
def in_view?
add_x = (self.width-32)*4 + 256
add_y = self.height*8
begin_x = $game_map.display_x - add_x
begin_y = $game_map.display_y - add_y
end_x = $game_map.display_x + 4352 + add_x
end_y = $game_map.display_y + 3328 + add_y
limit_x = $game_map.width * 256 - 256 + add_x
limit_y = $game_map.height * 256 - 256 + add_y
char_x = @character.real_x
char_y = @character.real_y
if end_x <= limit_x
return false if char_x < begin_x or char_x > end_x
end
if end_y <= limit_y
return false if char_y < begin_y or char_y > end_y
end
if end_x > limit_x and end_y > limit_y
return false if char_x < begin_x and char_x > end_x - limit_x
return false if char_y < begin_y and char_y > end_y - limit_y
end
return true
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
if in_view?
update_bitmap
self.visible = (not @character.transparent)
update_src_rect
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
end
update_balloon
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
start_animation(animation)
@character.animation_id = 0
end
if @character.balloon_id != 0
@balloon_id = @character.balloon_id
start_balloon
@character.balloon_id = 0
end
end
end
#==============================================================================
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
复制代码
我就是用上面的那个脚本改善卡的- -
作者:
越前リョーマ
时间:
2008-9-15 03:30
用防卡脚本,
但那只是表面,该卡的还是会卡。
所以要做到游戏本身不卡,地图小点,事件少点。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1