Project1
标题:
800*600分辨率 完美版
[打印本页]
作者:
不是马甲
时间:
2010-12-5 15:34
标题:
800*600分辨率 完美版
本帖最后由 不是马甲 于 2010-12-5 15:57 编辑
此版本将柳柳的1024的脚本修改为了800的脚本 并使用了苏紫大大扩展dll之类 现在将修改后的工程发布给需要的人使用
另外 对 八云紫 大大表示由衷的感谢
Project.rar
(794.4 KB, 下载次数: 5375)
2010-12-5 15:46 上传
点击文件名下载附件
在刚开始的时候发现了一个漏洞 现在已经修补好了 如果大家在用的时候发现有漏洞 希望告诉马甲
http://rpg.blue/thread-162317-1-1.html
作者:
伊湛
时间:
2010-12-8 18:36
你好 请问 如果在我以前做过的游戏里 修改要怎样修改呢
因为游戏做了一半了 又想重新做过…… 但又想换个大点的分辨率
作者:
不是马甲
时间:
2010-12-10 12:10
回复
伊湛
的帖子
能说详细一点吗
作者:
伊湛
时间:
2010-12-10 12:17
回复
不是马甲
的帖子
就是 貌似我把你那个工程里的 800脚本复制进去我的游戏 分辨率也没变大
想请教下 加哪800脚本之外 还要修改些什么才能换分辨率
作者:
不是马甲
时间:
2010-12-10 12:27
回复
伊湛
的帖子
将 Game。exe user33.dll kernel33.dll RGSS103J.dll Game。ini 全部替换
作者:
eve592370698
时间:
2011-2-17 22:34
标题:
请注意这个模板对显卡要求高
本帖最后由 eve592370698 于 2011-4-6 20:33 编辑
这个模板分辨率变更系统有个很大的缺陷,就是当您的地图太大,而且结构负责,里面并行处理的事件比较多的时候,人物行走及屏幕转动会特别卡,可以说,是自身的动画加速缺陷导致的。我就回答一下楼下两位的问题吧:
不能全屏使用,因为核心还是640×480,这里本质上是对显示做了增强扩展,这原理,我解释不是特别清楚,大概跟32位windows2003和2008支持32G内存的原理差不多吧;
渐变这方面,是脚本本身已经到位了,但是显示增强扩展组件不够导致的。
最大的麻烦,不兼容ZTBS战斗系统!这个核心问题我已经解决了!请放心使用吧:
http://rpg.blue/thread-173201-1-1.html
说白了就是给ZTBS加入扩展功能。
ZTBS战旗系统86.rar
2011-4-6 20:31 上传
点击文件名下载附件
1.15 MB, 下载次数: 0
800×600分辨率扩展的ZTBS,凑合着用吧,等以后有时间我再更新。
作者:
wbsy8241
时间:
2011-2-17 22:49
最主要的全屏后依然只有640*480
作者:
R-零
时间:
2011-2-19 15:59
渐变的问题也解决了吗?
作者:
eve592370698
时间:
2011-3-16 14:47
标题:
不是马甲,希望您能积极把脚本好好弄弄
本帖最后由 eve592370698 于 2011-4-10 18:49 编辑
该作者目前上高中,要迎战高考,没办法。目前需要DX3D加速才行。
我公布一下测试结果吧:
测试地图:图块自己做的,事件60个,其中1个是带有自动消除事件的自动执行事件,还有1个事记录角色坐标及设置背景音乐、场所移动的并行处理事件。
台式机:
CPU:AMD 速龙4200双核,1G内存,Nvidia独立显卡512M,操作系统XP,桌面分辨率1280×1024,32位真彩色当您设置的图块优先级比较复杂的时候,人物行走特别卡。打开任务管理器,CPU使用率40%,内存占用64M左右。DX9测试正常。
测试地图:《寻找神龙测试版》合并的王宫内部(图块139×133,开启记录角色坐标变量的并行事件时候超级卡),世界大地图(有航海和飞空脚本,动画效果欠佳)。FPS才15
笔记本:
CPU:Intel Core2 T5870,2G内存,显卡ATI M R HD4300显存1G,桌面分辨率1366×768,16位增强色测试如上地图:
XP事儿流畅,时而迟钝,FPS能达到25
windows7略比XP好一点点。但游戏时间长了也会卡屏。
目前找到了一个RGE系统的800×600,但是因为使用的脚本不用,所以不支持外来脚本
http://rpg.blue/forum.php?mod=vi ... 1&highlight=rge
补充一下,我找到了个卡屏的解决方法,请看此脚本,从CPU提速和防卡经过加工处理过来的:
不能照搬的原脚本位置
http://rpg.blue/forum.php?mod=vi ... =%E5%8A%A0%E9%80%9F
还有,就是这个脚本跟您的CPU、驱动及系统设置有关系,经测试,AMD的CPU似乎不太好使
=begin
★首先,请不要在单核CPU,低于768M内存的电脑上上使用此脚本!否则死机概不负责
☆其次,请不要使用该脚本和后台运行加以改造来无限占用系统资源,否则会引起死机!
做这个脚本目的是在您的CPU允许的情况下,当您的一个地图设置事件过多而卡机时
通过适当提高CPU使用率来阻止卡机的发生。请注意:
该脚本针对的是800×600等扩展分辨率的脚本设计的,因为一个地图超过30个事件
时,使用扩展分辨率脚本就会出现卡机状况,为了能够像过去那样使用故添加此项。刚切
换到容易卡机的地图时需要几秒钟的事件等待系统反应过来,所以不要太着急!但是使用
加速也未必能像正常运行那样达到40FPS,也就是增加10个FPS,例如不加入此脚本位20
FPS的,加入此脚本也就能达到25~35FPS。
设置CPU线程
=end
class Antilag_Settings
attr_accessor :event
attr_accessor :max_cpu_utilization
attr_accessor :cpu_tolerance
# 初始化对象
#-----------------------------------------------------------------------------
def initialize
@event = true
@high_priority = true
@max_cpu_utilization = 60
#这个是控制优先级。
@cpu_tolerance = 20
@SetPriorityClass = Win32API.new('kernel32', 'SetPriorityClass',
['p', 'i'], 'i')
@GetProcessTimes = Win32API.new('kernel32', 'GetProcessTimes',
['i','p','p','p','p'], 'i')
end
# 更改优先级 on(true)/off(false)
#-----------------------------------------------------------------------------
def high_priority=(value)
@high_priority = value
if @high_priority
@SetPriorityClass.call(-1, 0x00000060) # 高质量
# 设置CPU优先级80为高。110为实时。20为标准。
else
@SetPriorityClass.call(-1, 0x00000020) # 标准优先
end
end
#-----------------------------------------------------------------------------
# 返回现在的CPU使用率
#-----------------------------------------------------------------------------
def get_cpu_utilization
# 使用API获取内核用户调用时间
creation_time = '0' * 10
exit_time = '0' * 10
kernel_time = '0' * 10
user_time = '0' * 10
@GetProcessTimes.call(-1, creation_time, exit_time, kernel_time, user_time)
kernel_time = kernel_time.unpack('l2')
user_time = user_time.unpack('l2')
kernel_time = kernel_time[0] + kernel_time[1]
user_time = user_time[0] + user_time[1]
# 计算不同的CPU使用率
if @old_time != nil
timer_difference = Time.new - @old_timer
time_difference = kernel_time + user_time - @old_time
result = time_difference / timer_difference / 100000
else
result = $antilag.max_cpu_utilization
end
# 节约CPU使用(还是计算)
@old_timer = Time.new
@old_time = kernel_time + user_time
return result
end
end
$antilag = Antilag_Settings.new
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
# 处理地图画面的类。
#==============================================================================
class Scene_Map
#-----------------------------------------------------------------------------
# 刷新模块, 增加平滑帧数
#-----------------------------------------------------------------------------
alias f0tzis_anti_lag_scene_map_update update
def update
f0tzis_anti_lag_scene_map_update
if Graphics.frame_count % 20 == 0 and $antilag.max_cpu_utilization <= 100
# 计算CPU最大限度利用和当前的利用率
abs = $antilag.max_cpu_utilization - $antilag.get_cpu_utilization
# 如果改变帧速率的差异
if abs.abs >= $antilag.max_cpu_utilization * $antilag.cpu_tolerance/100.0
Graphics.frame_rate = [[10, Graphics.frame_rate + abs / 2].max, 40].min
end
end
end
end
#==============================================================================
# Game_Event Class
# 处理事件
#===============================================================================
class Game_Event
# 这里不需要理会
def in_range?
# 如果TRUE 返回一个虚拟的事件
# 自动启动/并行处理事件或者一个空的事件
if not $antilag.event or (@trigger == 3 or @trigger == 4 or
(@list != nil and @list[0].code == 108 and @list[0].parameters == ['']))
return true
end
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 @real_x <= screne_x
return false if @real_x >= screne_width
return false if @real_y <= screne_y
return false if @real_y >= screne_height
return true
end
#-----------------------------------------------------------------------------
# ● 更新画面
#-----------------------------------------------------------------------------
alias f0tzis_anti_lag_game_event_update update
def update
return if not self.in_range?
f0tzis_anti_lag_game_event_update
end
end
#===============================================================================
# ■ Game_Map
#
# 处理地图的类。包含卷动以及可以通行的判断功能。
#===============================================================================
class Game_Map
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
def in_range?(object)
diff_x = ($game_map.display_x - object.real_x).abs # 绝对值
diff_y = ($game_map.display_x - object.real_x).abs # 绝对值
width = 128 * 24 # size * tiles
height = 128 * 19 # size * tiles
return !((diff_x > width) or (diff_y > height))
end
end
#===============================================================================
# ■ Spriteset_Map
#
# 处理地图画面活动块和元件的类。
#===============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
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
@panorama2.bitmap.dispose
@panorama2.bitmap = nil
@panorama3.bitmap.dispose
@panorama3.bitmap = nil
@panorama4.bitmap.dispose
@panorama4.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
@panorama2.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
@panorama3.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
@panorama4.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
@fog2.bitmap.dispose
@fog2.bitmap = nil
@fog3.bitmap.dispose
@fog3.bitmap = nil
@fog4.bitmap.dispose
@fog4.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
@fog2.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
@fog3.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
@fog4.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
@tilemap2.ox = @tilemap.ox
@tilemap2.oy = @tilemap.oy
@tilemap2.update
@tilemap3.ox = @tilemap.ox
@tilemap3.oy = @tilemap.oy + 480
@tilemap3.update
@tilemap4.ox = @tilemap.ox
@tilemap4.oy = @tilemap.oy + 480
@tilemap4.update
# 刷新远景平面
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
@panorama2.ox = @panorama.ox
@panorama2.oy = @panorama.oy
@panorama3.ox = @panorama.ox
@panorama3.oy = @panorama.oy + 480
@panorama4.ox = @panorama.ox
@panorama4.oy = @panorama.oy + 480
# 刷新雾平面
@
[email protected]
[email protected]
[email protected]
_x = $game_map.fog_zoom / 100.0
@
[email protected]
[email protected]
[email protected]
_y = $game_map.fog_zoom / 100.0
@
[email protected]
[email protected]
[email protected]
= $game_map.fog_opacity
@
[email protected]
[email protected]
[email protected]
_type = $game_map.fog_blend_type
@fog4.tone = @fog3.tone = @fog2.tone = @fog.tone = $game_map.fog_tone
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog2.ox = @fog.ox #+ 140#*@fog.zoom_x
@fog2.oy = @fog.oy
@fog3.ox = @fog.ox
@fog3.oy = @fog.oy + 480
@fog4.ox = @fog.ox
@fog4.oy = @fog.oy + 480
# 刷新角色活动块
for sprite in @character_sprites
sprite.update
end
# 刷新天候图形
@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
$viewport4.tone = $game_screen.tone
$viewport4.ox = $game_screen.shake+640
$viewport5.tone = $game_screen.tone
$viewport5.ox = $game_screen.shake
$viewport6.tone = $game_screen.tone
$viewport6.ox = $game_screen.shake+640
# 设置画面的闪烁色
@viewport3.color = $game_screen.flash_color
# 刷新显示端口
$viewport1.update
@viewport3.update
$viewport4.update
$viewport5.update
$viewport6.update
end
def in_range?(object)
diff_x = ($game_player.real_x - object.real_x).abs # 绝对值
diff_y = ($game_player.real_y - object.real_y).abs # 绝对值
width = 128 * 24 # size * tiles
height = 128 * 19 # size * tiles
return !((diff_x > width) or (diff_y > height))
end
end
#===============================================================================
# ■ Interpreter
#
# 执行事件命令的解释器
#===============================================================================
class Interpreter
#-----------------------------------------------------------------------------
# * 脚本
#-----------------------------------------------------------------------------
def command_355
# script 设置第一行
script = @list[@index].parameters[0] + "\n"
# 循环
loop do
# 下一个事件指令在脚本 2 行以上的情况下
if @list[@index+1].code == 655
# 添加到 script 2 行以后
script += @list[@index+1].parameters[0] + "\n"
# 事件指令不在脚本 2 行以上的情况下
else
# 中断循环
break
end
# 推进索引
@index += 1
end
# 评价
result = eval(script)
#---------------------------------------------------------------------------
# 返回值为 false 的情况下
# NEW: the last word of the code mustnt be false!
#---------------------------------------------------------------------------
if result == false and script[script.length-6..script.length-2] != 'false'
# 结束
return false
end
# 继续
return true
end
end
#咳咳少了几行代码
$antilag.max_cpu_utilization = 75
$antilag.cpu_tolerance = 20
$antilag.high_priority = true
$antilag.event = true
#自动回滚标准
if $antilag.max_cpu_utilization>=100
$antilag.max_cpu_utilization=70
end # 分歧结束。
复制代码
为了从根本上防止卡屏,您使用此模板如果没有自动执行和并行处理的事件,一个地图最多容纳45个,如果有并行处理事件,那一个地图不能超过30个。
作者:
不是马甲
时间:
2011-4-4 08:09
回复
eve592370698
的帖子
额,没到15天,不算挖坟吧(虽然就剩一天了)。
因为此ID暂时不用了,所以一直没有看见。我更换为 零度 ID 有事请通过站内内短信发给 零度
今天偶然看了一下,像上面一位说的渐变 好像在 主站内可以搜到800*600的渐变。
我们很多人会感觉到640*480太小了,但xp要用800*600的话很麻烦,网上有很多说是改变窗口大小,其实分辨率没有变,结果是画面感十分不好。于是,便有了这个悲剧的产物。
其实在用的时候,可以不用我提供的那个脚本,直接一步步在原脚本上修改,不过很麻烦。
就像lz上的那样,很多脚本和此脚本有冲突,这是避免不了的,我在测试时就发现了几个脚本冲突。这脚本其实就是强制性修改画面,所以很暴力。如果你不怕费事的话,可以遵循上面的“在原脚本上修改”的方法。
其实像lz ,如果可以,你完全可以用RGE,它也支持xp脚本,但前提是你必须会脚本编程。
xp1.03其实经常有方块出现,建议使用1.02版,本人感觉(包括他人推荐)都说1.02版是很不错的。
对于卡的问题,推荐你在主站内寻找 防卡脚本 和 脚本加速 。
目前,只想到这么多,其余的,下次再基于解答,有事可以通过站内短信找我。
作者:
88510051as
时间:
2011-4-25 15:56
感谢LZ分享
作者:
tommay
时间:
2011-5-7 00:18
汇报一个BUG:
在程序运行后按Alt+Enter最大化,显示有误。貌似只是将640*480的区域最大化了。。。
提供两个解决方法:
(1)屏蔽Alt+Enter
(2)重写Alt_Enter部分代码
等待高手。
作者:
j433463
时间:
2012-12-17 04:19
1.02 能使用自定字体吗?我就是因为需要升级到 1.03 的。
作者:
blueppe
时间:
2024-5-15 19:40
不好意思...我想知道有没有人使用这个800x600的时候 fog效果来增加画面光影时会对不准 还是我自己的问题
不知道有没有什么解决方法....
已经比较熟悉xp操作不想放弃使用其他的rpg maker
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1