游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9465|回复: 23

求助!关于游戏中用BMP位图太占内存的解决方法

[复制链接]

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-1-20 00:56:00 | 显示全部楼层 |阅读模式
我正在用 VB+DirectDraw 写一个仿传奇的游戏(就看中VB的开发速度了,呵呵)
目前游戏写已经完成80%了(常规下 FPS:75),但目前有个问题,高手一定要赐教啊!

在游戏中需要用到很多怪物的BMP位图,但加载太多的BMP位图太占内存,在有的场景里需要要很多种怪物同时出现,有没有好的解决方法?在《热血传奇》里,它是怎么处理的?

知道的一定要赐教啊,我刚学用DirectDraw写游戏,菜的很还

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2006-1-20 04:02:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

其实用VB解决这个问题还算容易,因为VB可以很容易的使用Timer控件等方法来构造多线程。记录每张贴图的最后使用时间和使用频率,当贴图占用内存超出想要得值就卸载相对老旧的贴图,新贴图当第一次使用时载入。

遗憾的是VB下的DirectDraw读取贴图的速度似乎效率低了一点,尽量采用D3D和DDS格式的贴图会稍微好些。

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2006-1-20 09:26:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

占不占内存和BMP没有关系,任何图形格式最终都要成为像素的阵列块存在于内存中

读取速度和文件本身的大小有关,Jpg等压缩格式文件大小小于BMP格式,所以,压缩格式的图形文件读取速度快,在不需要Alpha等效果的时候可以用压缩格式保存图片

目前PC机一般可用内存都很大,做2D都是足够的,可能的话最好一次读入内存,不要游戏中途去读硬盘(过关读图片文件还是可以的)

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2006-1-20 09:32:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

可以用GIF文件或8位BMP文件,甚至JPG文件,JPG文件不要压缩,

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-1-20 14:26:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

首先感谢楼上朋友的回答

我现在把游戏中需要的BMP位图一次性读入需要耗费140M内存(其中怪物位图占50%),而这还仅仅加载了不到一半的怪物(因为有的图片还没做完)。我估计全部读入需要近200M,那么运行这个游戏需要玩家的机器至少有256M的内存。但《热血传奇》它是怎么做的?128M的机器就可以玩啊,像《暗黑破坏神》,它是用读关卡的方法解决的。但《热血传奇》不用啊。

有一种方法可以解决,那就是只加载当前场景需要的位图。但是这样在地图间切换的时候就会耗费读取的时间,很不爽。VB的速度本来就不是很好,本来在场景间切换就得等待1到2秒种(中型地图),高手一定要赐教啊!

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2006-1-20 14:53:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

200MB。。。无语了。。质疑你们美工。。。

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-1-20 16:15:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

楼主为什么要一次性读入呢,需要的时候才预读入不是更好吗。

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2006-1-20 16:35:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

200M内存属于正常状态,不用太担心,这个只是虚拟内存。物理内存没有这么多的

通常情况下,我们需要分块读取,1-2秒钟能切换场景,证明你的程序写的非常好了

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2006-1-20 16:42:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

肯定不用全部加载,估计是美工存的图片文件尺寸太大,压缩一下吧。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-1-20 18:29:00 | 显示全部楼层

Re:求助!关于游戏中用BMP位图太占内存的解决方法

建议使用dds文件,比较适合dx,大小也比bmp略小一些,不过效率高很多~
另外,建议楼主尝试使用d3d来做2d,这样的话像alpha,旋转,缩放等等特效都会非常简单~
而且,directdraw就快被淘汰了,据说新的dx都不会带ddraw了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 08:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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