设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

XP载入大图片场景时特别容易崩溃,请问有办法吗?

查看数: 3393 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-1-6 15:22

正文摘要:

公所周知XP载入图片是一块块显示的,游戏在载入较大的图片时很容易崩溃。我一开始以为是游戏本身有问题,但是XP载入同样的背景时也非常容易崩溃。 如图所示,上面的场景正在刷新,刷新一到一半崩溃了。 请问有什么 ...

回复

ppspssss 发表于 2020-1-7 15:26:57
89444640 发表于 2020-1-7 15:07
你看企鹅……比rm占的还大
然后我有很多淡入淡出,都要注释掉?

我遊戏的內存1500MB大是2000个动画, 肯定正常遊戏不会这么多动画 ; 淡出淡入的話我的是指主角场所移动那个,还有半透明菜单窗口腳本才用, 只适用我的遊戏, 实際情況还得看你的遊戏


或許实際情況不适合你的遊戏, 因為腳本不同

点评

我这張图重点是@spriteset ... 上的Graphics.transition(0) 一定要加在前面,如果后面会没效果, 加載@spriteset前使用0秒的漸變  发表于 2020-1-7 20:43
即时消息跟这个問題无关,  发表于 2020-1-7 15:41
我看见即时消息了,那就是说你会一直运行个并行在处理,这个也会降低处理效率吧。  发表于 2020-1-7 15:35
嗯,还有就是加载和释放,如果经常半透明就会站的比较大吧,我都是底图糊满了不透明,我动画其实挺多,由于像素图可能占用内存反而不会很大  发表于 2020-1-7 15:32
89444640 发表于 2020-1-7 15:07:27
本帖最后由 89444640 于 2020-1-7 15:11 编辑
ppspssss 发表于 2020-1-7 13:26
@89444640 數据庫大內存就大的問題是只有RMXP有, 你數據庫比如2000个动画, 由于RMXP的遊戏一开啟,会把所有 ...



你看企鹅……比rm占的还大
然后我有很多淡入淡出,都要注释掉?

点评

Graphics.transition(0)这个漸變其实是还是有,只不过是0幀的漸變,<我糾正一下, 我的情況是加在半透明菜单的腳本和主角場所移动时的漸變(def transfer_player  发表于 2020-1-7 20:47
ppspssss 发表于 2020-1-7 14:19:16
本帖最后由 ppspssss 于 2020-1-7 14:45 编辑

我粗略估計, 场所移动的造成崩潰, 可能是場所移动的淡出淡入問題,
把下面的
# 执行过渡
      Graphics.transition(10)

改成0即不進行淡出淡入的渐变 ,
Graphics.transition(0)

我之前就是測試加載地图时有可能会崩潰 , 排查了好久, 直至运气好測找到原因,原來是淡出淡入漸變問題, 之后所有東西都不加淡出淡入了, 就没有崩潰 ,不过不肯定是不是楼主的問題,

点评

是的,不调试游戏,只开RPG maker XP在打开一个大的地图,刷新题图显示的时候也一样会崩溃。(游戏完全没有运行)  发表于 2020-1-7 19:08
我觉得rm的图块描绘方式,软件分配的内存数量是固定的,因为图块方式总图块数量不会大的过于离谱,如果用特大地图可能是崩溃的原因。  发表于 2020-1-7 15:26
软件如果会崩溃的话,你看下你的地图素材大小,我最大地图是256*17920 3.82M,另外找个大地图,看下你存盘文件大小。  发表于 2020-1-7 15:25
你的意思是: 不調試遊戏, 只开RPG maker XP該軟件, 也会崩潰? 并不只有遊戏中的意思?  发表于 2020-1-7 15:07
我的是即时不开游戏,而是用RMXP进行地图编辑时,碰见大地图也照样有可能崩溃,我感觉我个人的问题和你的不太一样。  发表于 2020-1-7 15:00
ppspssss 发表于 2020-1-7 13:26:49
@89444640 數据庫大內存就大的問題是只有RMXP有, 你數據庫比如2000个动画, 由于RMXP的遊戏一开啟,会把所有的數据庫的東西加載进內存,RMXP一开遊戏你看資源管理員發現內存会變得很大,比如我試了会占用1500MB以上內存, 同樣相同數量动画使用RMVX 和RMACE 都只会占200MB以下 ,
寒凌天 发表于 2020-1-7 02:31:54
guoxiaomi 发表于 2020-1-6 21:39
能做一个简单工程复现此现象吗?


RUBY 代码复制
  1. class Scene_Map
  2.   def transfer_player
  3.     begin
  4.     loading_page
  5.     # 清除主角场所移动调试标志
  6.     $game_temp.player_transferring = false
  7.     # 移动目标与现在的地图有差异的情况下   
  8.     if $game_map.map_id != $game_temp.player_new_map_id
  9.       RPG::Cache.clear if !Config.cache?
  10.       # 设置新地图
  11.       $game_map.setup($game_temp.player_new_map_id)   
  12.     end
  13.     # 刷新地图 (执行并行事件)
  14.     $game_map.update
  15.     # 执行地图设置的 BGM、BGS 的自动切换
  16.     $game_map.autoplay
  17.     # 设置主角位置
  18.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)   
  19.     # 设置主角朝向
  20.     case $game_temp.player_new_direction
  21.     when 2  # 下
  22.       $game_player.turn_down
  23.     when 4  # 左
  24.       $game_player.turn_left
  25.     when 6  # 右
  26.       $game_player.turn_right
  27.     when 8  # 上
  28.       $game_player.turn_up
  29.     end
  30.     # 矫正主角姿势
  31.     $game_player.straighten
  32.     loading_page_step(2)
  33.     @spriteset.dispose
  34.     @spriteset = Spriteset_Map.new   #########这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!这行代码崩溃的!#########################################################################
  35.     loading_page_step(3)
  36.     @arpg.dispose
  37.     @arpg = ARPG.new
  38.     # 釋放記憶體
  39.     #if Config.cache? && @esc_timeout == 0
  40.       GC.start
  41.     #end
  42.     $refresh["enemy_states"] = false
  43.     # 处理过渡中的情况下
  44.     if $game_temp.transition_processing
  45.       # 清除过渡处理中标志
  46.       $game_temp.transition_processing = false
  47.       # 执行过渡
  48.       Graphics.transition(10)
  49.     end
  50.  
  51.     loading_disable
  52.     Kboard.clear_buffer if Config.clear_key_buffer?
  53.     # 在生成活动块
  54.     #@spriteset = Spriteset_Map.new
  55.     #@arpg = ARPG.new
  56.     # 设置画面
  57.     #Graphics.frame_reset
  58.     # 刷新输入信息
  59.     #Input.update
  60.     rescue;p "3",$!,$@;end
  61.   end
  62. end



不能,这东西随机性太强了,有时候你等半天都没事,有时冷不丁的给你崩溃一次。
然后我把每行代码后面都写了一句LOG输出日志的代码,在偶然一次崩溃后,根据日志文件终于定位出了产生崩溃的代码行。
@spriteset = Spriteset_Map.new
但是这个类好像是封装在系统内部的?我查到这里,技术有限就查不下去了。

点评

是的,基本都是在玩了一段时间后才崩溃。  发表于 2020-1-7 15:02
我这也是经偶尔会出现崩溃,很多时候出现的时刻是在战斗加载  发表于 2020-1-7 09:49
看看载入过多上地图和事件,然后重启一下从刚才第一次测试的时间开始再来一遍,战斗动画调用也有影响。  发表于 2020-1-7 09:48
内存一直占无法释放,到一定时候就会崩溃,楼主你是否在游戏运行一段时间就会出现这个现象。重启电脑清空内存,然后运行游戏到崩溃  发表于 2020-1-7 09:48
我觉得只要数据库过大就会崩溃,我以前连999个道具没全塞满了都崩,而非图块类的地图,地图数据库都极大,rm不会调显卡,只能吃内存  发表于 2020-1-7 09:46
guoxiaomi 发表于 2020-1-6 21:39:24
能做一个简单工程复现此现象吗?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-10 22:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表