游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2312|回复: 9

请教 关于游戏运行速度优化的问题

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-3-10 12:03:00 | 显示全部楼层 |阅读模式
    我制作了一款弹幕游戏(就象<<雷电>>那样的),在自己的机器上速度是正常的,我机器比较好.但是在普通的机器上运行速度就跟不上了.
    我的示口区域也就是800*600的,这种游戏在很多时候都会有1000枚以上的子弹在频幕中运动,别人的怎么不会速度变慢?
    我的游戏设置为:只要子弹出了800*600这个范围就不进行子弹位置的计算也不进行渲染.我在获取系统时间时也是用的哪个可以把时间精确到1毫秒以下的函数.
    那么我就在想,数量如此庞大的子弹难道不是在渲染每一帧时都进行子弹位置的计算吗?
    顺便问一问,关于帧数确定的问题, 我一般是这样做的:
       float pfTime;   //每帧间隔时间  单位是ms
       pfTime+=GetTime();   //GetTime()是获取精确的间隔时间
       while(pfTime>=16.7f)     //每秒60帧
       {
           渲染
       }
      大家也是这样做的吗?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-3-10 13:26:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

错了,渲染怎么能用时间去控制呢?
最多在前面加个sleep就够了啊

22

主题

309

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
QQ
发表于 2008-3-10 14:16:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

为啥用while不用if?

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-3-10 15:18:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

优化程序你要先知道自己的程序慢在哪里
然后才谈得上优化
先去做完测试再来问吧

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2008-3-10 15:51:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

当然是每帧都要计算啊,才1000个怎么就“数量如此庞大”了……

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-3-10 20:50:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

其实1000个是不多cpu使用率也只有20%左右,但是它就是在卡.

每16.7ms计算一次,子弹最多是估计有10000发左右.计算机要计算子弹的位置,颜色变化,透明度,旋转角度;要判断子弹的生存状态(Unbirth,Birthing,Living,Dying,Death);检查是否与其它角色碰撞(我是用每个子弹与每个角色循环逐个计算两点间的距离的).我的背景是用3DMAX做的.

在测试的时候发现只要显卡比较好就可以完美运行.我怀疑过是不是效果太多造成的,但是我把所有要渲染的东西都停止了渲染那种没有显卡的机器还是达不到60帧.

33

主题

544

帖子

554

积分

高级会员

Rank: 4

积分
554
发表于 2008-3-10 21:54:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

在测试的时候发现只要显卡比较好就可以完美运行.我怀疑过是不是效果太多造成的,但是我把所有要渲染的东西都停止了渲染那种没有显卡的机器还是达不到60帧.


如果真是这样就很奇怪呀~
也许你可以尝试一下每一帧都计算出不同操作的耗时情况,来判断问题所在~
我前段时间也写了个弹幕游戏玩http://bbs.gameres.com/showthread.asp?threadid=105982
过程中并没有碰到效率的问题,个人觉得对于现在的电脑来说,在子弹的轨迹碰撞计算上应该不会有任何问题的
另外你主循环那块的代码,我看的不是很明白

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-3-10 22:18:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

谢谢各位的帮助.我已经知道问题的所在了.我在测试的时候没有禁止windows对鼠标消息的处理,在处理这类消息时就使我的游戏速度变慢了.

2

主题

108

帖子

116

积分

注册会员

Rank: 2

积分
116
发表于 2008-3-12 13:18:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

如果你是1000个子弹,1000个DP,这样不慢才怪呢。
建议把DP降下来,可以考虑用DPUP类函数来做,这样可以把1000个子弹的三角形全部放在一个缓冲区中,一次性提交。每帧去修改缓冲区数据,因为用DPUP,所以缓冲区放在内存中,直接修改不会有性能的影响。而DPUP也没有传说中那么慢。

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-3-16 10:32:00 | 显示全部楼层

Re:请教 关于游戏运行速度优化的问题

能在说清楚一点吗?什么是DPUP呀?
是让我建立一个对子弹位置计算的类吗?其实我是这样做的.
同一种类的子弹我都是用结构体定义的,然后用结构体数组定义具体的每一个子弹,然后把这些子弹的数据传给我的子弹运动类进行处理.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 14:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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