游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: gpra8764

建议大家把VB增加运行速度的方法汇集一下

[复制链接]

7

主题

87

帖子

109

积分

注册会员

Rank: 2

积分
109
QQ
发表于 2006-3-20 13:41:00 | 显示全部楼层

Re:建议大家把VB增加运行速度的方法汇集一下

用Do...Loop进行主要的循环,用Timer控件控制Do...Loop的速度。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-3-20 17:02:00 | 显示全部楼层

Re:建议大家把VB增加运行速度的方法汇集一下

to 楼上的,
控制速度不需要用timer哦,现在的商业游戏不会用到一个timer~
我在转成vb.net以后也就从来没再用过timer了,要控制速度照样~

to 楼楼上的
用do...loop要锁FPS,我还是头一次听说~
你不知道怎么实现不能说不能实现吧?
另外~
你的那个打击者在PIII上面居然跑不动?
比较厉害~
我想星际这个游戏不论是图象和算法上都比你的复杂n多倍吧?
而且技术也一样是8、9年前的了~
我原来用P100MHz+32MB的连MMX都不带的破电脑带8家电脑都可以玩的流畅,更经典的是我那个p100,因为是从别人那儿换来的,没配风扇,我连风扇都没装玩的~
千万别叫我什么有本事自己做个游戏之类的,我承认,我没你这样的恒心,所以至今没发布一款完整的游戏,不过我也有自己研究的东西,不发布不代表我什么代码都不写,只是不想到处散布垃圾而已了~
我的那个2d图形引擎虽然说性能不能说优越,不过我上次做过压力测试,在我的1.5GHz的电脑上(512MB SDRAM,ATi Radeon Mobility 9200 32MB),占用60%CPU来渲染200个动画精灵(每个动画是3个子动画构成的,人物,影子,魔法特效,并且带高亮和变灰度的PixelShader特效,也就是说要渲染600个带Alpha混和和PixelShader特效的对象),帧率最后结果是40-50FPS左右~占100%CPU的话可以达到80FPS左右。
另外普通运行的话(20个帧动画对象+20-30其他静态精灵)我的帧率在60%CPU占有率下一般是在500FPS以上,在我朋友的一台PIII800上是200多FPS,也是一样带Alpha混和和高亮和灰度特效的~
如果你要是不相信可以自己从我网站上下载下来测试,改一下渲染树XML文件就可以办到了(网上发布的那个版本有个小bug,如果显卡的PixelShader版本高于2.0会判断错误为不支持PS,不过已经修正,没上传而已)。

还有,你要往前看,不要老是跟我们一番见识,多从那些优秀游戏上找思路吧~
为什么一个9年前的,效果不错的2d游戏用P100就可以跑得流畅,而你的游戏却要PIV,应该在代码优化上下下功夫了吧?做游戏不要求数量多,既然你已经发布了不少游戏,何必不把发布新游戏的精力花在一个游戏上面呢?把它做好,让大家无法挑剔?
另外,你是不是太排斥新技术了?吃不到葡萄就说葡萄酸?还有关于抄代码问题,我觉得拿来主义在编程届应该是个比较好的学习方法吧?从理解别人的代码到掌握这种方法有什么不妥?不过只是照搬过来改个名字这种情况除外~比如说你就可以看看别人是怎么实现用do...loop在不锁FPS的前提下实现不同电脑上的速度一致的

3

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
QQ
发表于 2006-3-20 17:27:00 | 显示全部楼层

Re:建议大家把VB增加运行速度的方法汇集一下

我要说的是,PushBox是模仿另外一个推箱子的玩法和功能而实现的
而程序代码全部都是我手工输入的,绝非什么复制别人的代码然后改个名字这么简单
还有,游戏之家是有在MSN上传给我那个推箱子的源代码
不过这是在我已经发布游戏之后,而不是在我还没发布就把代码给我看

所以说我偷他的代码纯属造遥生事,起因是我之前曾经对他有过不敬
而他至今仍然怀恨在心,今天甚至到我的主页上去捣乱,到处诽谤

最后,我想说一下,二进制位运算、I/O操作、BitBlt并不复杂
难道我用自己学到的东西实现相同的效果也不行吗

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-3-20 17:37:00 | 显示全部楼层

Re:建议大家把VB增加运行速度的方法汇集一下

动态编译vb或者c#代码,并且使用其中方法,让c#当vb.net的苦力,哈哈~

Console.WriteLine("系统信息:开始初始化脚本文件……")
            m_params.GenerateInMemory = True
            m_params.GenerateExecutable = False
            m_params.CompilerOptions = "/target:library /optimize"
            m_params.WarningLevel = 4
            m_params.ReferencedAssemblies.Add("System.dll")
            m_params.ReferencedAssemblies.Add("System.Data.dll")
            m_params.ReferencedAssemblies.Add("MyWoW.Common.dll")
            files = IO.Directory.GetFiles("scripts\Player\")
            If files Is Nothing Then
                Console.WriteLine("错误:缺少Player脚本!")
                Me.Finalize()
                Exit Sub
            End If
            If files(0).Substring(files(0).Length - 1, 1).ToLower = "b" Then vbp = New Microsoft.VisualBasic.VBCodeProvider Else vbp = New Microsoft.CSharp.CSharpCodeProvider
            Dim res As CodeDom.Compiler.CompilerResults = com.CompileAssemblyFromFileBatch(m_params, files)
            If Not res.Errors Is Nothing Then
                Dim i As Int16
                For i = 1 To res.Errors.Count
                    Console.WriteLine("读取脚本文件出错:" & res.Errors(i - 1).FileName & "的第" & res.Errors(i - 1).Line _
                    & "行 错误描述:" & res.Errors(i - 1).ErrorText)
                Next i
                Me.Finalize()
                Exit Sub
            End If
            'AsmPlayer =
            Player = New Player(GetClass("MyWoW.Scripts.Player.PlayerClass", res.CompiledAssembly))
      
Public Sub New(ByVal [Type] As Type)
            Dim bb As Reflection.MethodInfo
            bb = [Type].GetMethod("InitRace", BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static)
            sInitRace = System.Delegate.CreateDelegate(GetType(InitRace), bb)
            bb = [Type].GetMethod("InitClass", BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static)
            sInitClass = System.Delegate.CreateDelegate(GetType(InitClass), bb)
        End Sub

14

主题

318

帖子

321

积分

中级会员

Rank: 3Rank: 3

积分
321
发表于 2006-3-21 11:36:00 | 显示全部楼层

Re: Re:建议大家把VB增加运行速度的方法汇集一下

惩伐者: Re:建议大家把VB增加运行速度的方法汇集一下

我想补充一下, 我的1940III游戏不超过1000行代码,够精简吧!
消耗游戏速度的是调用的计算过程。

的确是啊,都是没用的代码。这种程度的游戏也用1000行?

43

主题

229

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
 楼主| 发表于 2006-4-20 23:49:00 | 显示全部楼层

Re: Re:建议大家把VB增加运行速度的方法汇集一下

sandy_zc_1: Re:建议大家把VB增加运行速度的方法汇集一下

我曾经发过类似帖子啊。


你那个数据类型的速度测试对大型程序很有帮助啊

10

主题

62

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-4-21 09:42:00 | 显示全部楼层

Re:建议大家把VB增加运行速度的方法汇集一下

LenB比Len效率还高

在VB中可以修改SafeArray来模拟指针的:
http://dev.csdn.net/user/AdamBear
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 07:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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