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

Project1

 找回密码
 注册会员
搜索
查看: 2238|回复: 4
打印 上一主题 下一主题

[讨论] 求帮测试ORZ

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
帖子
1102
跳转到指定楼层
1
发表于 2015-10-22 21:35:51 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
https://rpg.blue/forum.php?mod=viewthread&tid=87968
不知为何这个bitmap的Marshal,dump/load没问题。但是先dump,再写入外部文件,然后再读取load就会报错。。。。【dump format error for symbol(0x45)
OEZ
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。

Lv3.寻梦者

梦石
0
星屑
1291
在线时间
6552 小时
注册时间
2010-12-30
帖子
8949
5
发表于 2015-11-28 14:03:01 | 只看该作者
话说突然发现,VIP菊苣已经写过自动识别行走图帧数的脚本了

点评

(っ´ω`c)序列动画是192²那种的吗  发表于 2015-11-28 15:33
那和写常量有什么区别……  发表于 2015-11-28 15:30
我说的是序列图动画不是图片分割啦  发表于 2015-11-28 15:30
(っ´ω`c) VIP菊苣的脚本是根据素材的命名去分割的~  发表于 2015-11-28 15:30
都写在常量里。随便给我一张图片我怎么去判断这张图片要分成几块啦……  发表于 2015-11-28 15:27
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1291
在线时间
6552 小时
注册时间
2010-12-30
帖子
8949
4
发表于 2015-10-23 12:39:08 | 只看该作者
墨凌羽 发表于 2015-10-23 01:37
代码很简单。。。打开文件dump就行
打算设计一个包的格式,一个包本质上是个数组。然后存储bitmap和一些其 ...

(っ´ω`c) 噫,为啥会涉及大小不规整的部分,都说了平均分割就可以了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
帖子
1102
3
 楼主| 发表于 2015-10-23 01:37:28 | 只看该作者
  1. #--------------------------------------------------------------------------
  2. # ● 核心部分,bitmap的快速Marshal
  3. #--------------------------------------------------------------------------

  4. class Font
  5. def marshal_dump;end
  6. def marshal_load(obj);end
  7. end

  8. class Bitmap
  9. # 传送到内存的API函数
  10. RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  11. RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
  12. def _dump(limit)
  13. data = "rgba" * width * height
  14. RtlMoveMemory_pi.call(data, address, data.length)
  15. [width, height, Zlib::Deflate.deflate(data,0)].pack("LLa*") # 压缩
  16. end
  17. def self._load(str)
  18. w, h, zdata = str.unpack("LLa*"); b = new(w, h)
  19. RtlMoveMemory_ip.call(b.address, Zlib::Inflate.inflate(zdata), w * h * 4); b
  20. end
  21. # [[[bitmap.object_id * 2 + 16] + 8] + 16] == 数据的开头
  22. #
  23. def address
  24. buffer, ad = "xxxx", object_id * 2 + 16
  25. RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 8
  26. RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 16
  27. RtlMoveMemory_pi.call(buffer, ad, 4); return buffer.unpack("L")[0]
  28. end
  29. end
  30. #--------------------------------------------------------------------------
  31. # ● pack模块
  32. #--------------------------------------------------------------------------
  33. module Pack
  34.   class << self
  35.    
  36.     def pack(name,table)
  37.       File.open("#{name}.pak", "wb"){|f| Marshal.dump(table,f);f.close}
  38.     end
  39.   
  40.     def read(name)
  41.       File.open("#{name}.pak","rb"){|f| return Marshal.load(f);f.close}
  42.     end

  43.   end
  44. end
复制代码
代码很简单。。。打开文件dump就行
打算设计一个包的格式,一个包本质上是个数组。然后存储bitmap和一些其他信息。。。。RM那种序列图考分割来实现对于大小不规整的来说不好处理【可以附个配置文件之类的记录坐标之类的】如果是一个pak包的话可能会比较好处理一些。
嗯,配合下面的脚本,会把一整个文件夹内的png图片全部打包成一个pak包
  1. path = #文件路径
  2. packname = #pack包名
  3. pak = []
  4. Dir.entries(path).each do |i|
  5.   if i[/.png/] then
  6.     bitmap = Bitmap.new("#{path}/"+i)
  7.     pak.push([i,bitmap])
  8.   end
  9. end
  10. Pack.pack(name,pak)
复制代码
现在有两个方面的问题。一个是生成的pak包的大小,基本就是原文件的两倍。。。ORZ还有就是读取速度。还是太慢了,而且好像也不稳定的样子【同一个包多次读取时间浮动比较大
@MeowSnow 貌似你要的东西也不用等那么久的样子QAQ
@寒冷魔王 你这个坑货让你帮我处理的那个dll为何完全没有音信的样子。。。orz
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
2
发表于 2015-10-23 00:43:00 | 只看该作者
我是来消除零回复的

虽然我没试过,但是会不会是因为文件打开的方式不是wb或者rb?==

点评

dump部分已经压过了。。。ORZ【最主要的就是data部分  发表于 2015-10-23 15:49
Zlib::Deflate & Zlib::Inflate  发表于 2015-10-23 15:29
另外读取速度貌似与包的大小相关性较小而与包内文件结构有关系比较大。。。如果不介意以后多个loading界面和游戏大小突增貌似也不是不可以的样....  发表于 2015-10-23 01:20
对了,用这个生成的文件大小是原来的两倍。。。。本来是打算作为一种图片素材打包的方式结果这大小。。。  发表于 2015-10-23 01:18
以前遇过类似的问题==  发表于 2015-10-23 01:00
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-12-22 13:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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