游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7958|回复: 22

发现了提升VB6速度的方法(只用VB6解决)

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-7-31 04:20:00 | 显示全部楼层 |阅读模式
以前认为,VB6内部无法进行interface的实现,而只能用Object( IDispatch )来“解释执行”以模拟多态,
速度自然是。。。

不过刚发现,可以用 Implements 进行接口实现(VB6中新建的每个类模块,都有一个接口)

比如: Unit 这个类模块,同时有 _Unit 接口(不可见)

而我新建一个类,比如 Monster (同时有 _Monster接口), 然后加入:

Implements Unit

这就意味着,实现了 _Unit 接口。
(这里C++程序员们要注意,不是 Monster : Unit 而是 Monster : _Unit )

特别要注意:
比如,我再新建一个类,AdvMonster,然后:

Implements Monster

这仅仅表示,实现了 _Monster 接口,而并没有实现 _Unit 接口。
(C++程序员要千万注意,这里面的继承关系!)
所以如果要让AdvMonster也实现_Unit,则应该加入: Implements Unit

------------------------------------------------------------------------------

方法的实现(覆盖):

比如我要实现 _Unit 接口的 Move 方法,于是我在 Monster 类中写:

Private Sub Unit_Move()
End Sub

要注意的是,这里用 Private 而不是 Public !否则AdvMonster类实现_Monster接口会出问题
(C++程序员要注意,这里不是按照方法名来进行覆盖的...)

源代码,和编译好的 ActiveX Dll(可以用 OLE view 去查看复杂的继承关系):

sf_20087314208.rar

8.95 KB, 下载次数:

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-7-31 07:54:00 | 显示全部楼层

Re:发现了提升VB6速度的方法(只用VB6解决)

你才发现呀? 前几年发现你的游戏运行效率就可以提高了,不过你说你那个游戏用了40000行我觉得是有些问题。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-7-31 08:49:00 | 显示全部楼层

Re: Re:发现了提升VB6速度的方法(只用VB6解决)

游戏之家站长: Re:发现了提升VB6速度的方法(只用VB6解决)

你才发现呀? 前几年发现你的游戏运行效率就可以提高了,不过你说你那个游戏用了40000行我觉得是有些问题。


呵呵,说笑了,前几年我未曾用过 Object  , 可以说根本没有用"多态",
那就不会影响效率,倒是您的代码,不知道有没有用 Object...

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-7-31 10:00:00 | 显示全部楼层

Re:发现了提升VB6速度的方法(只用VB6解决)

很多你说的东西我都没用过,我比较注重实践,就是不停的测试程序而得到最终要的结果,所以我的代码比较简洁,到目前为止仍然受DOS的设计思想影响,目前还没有超过1万行代码的游戏。
学数学的很注重那个计算过程,我的游戏里很多数据都是直接答案,但之前花的时间比较多,但目的就是答案,有了答案就省去了很多累赘代码。

之前我说了,在VB的开发运行效率上已找到了些窍门,未来的游戏逐渐向C++开发的大型游戏运行效率靠拢,在五星勋章3的时候一些问题都没解决,我的CS可以在PIII500+4M独立显卡下运行,选择低画质(就是不开FSAA,硬件加速,高级渲染等)可以保证30-50FPS,这个和用C++写的速度差不多了,五星3连续打到后面的关卡FPS就猛掉。

77

主题

485

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
发表于 2008-7-31 10:47:00 | 显示全部楼层

Re:发现了提升VB6速度的方法(只用VB6解决)

派生类嘛.

65

主题

313

帖子

313

积分

中级会员

Rank: 3Rank: 3

积分
313
发表于 2008-7-31 15:12:00 | 显示全部楼层

Re: Re:发现了提升VB6速度的方法(只用VB6解决)

游戏之家站长: Re:发现了提升VB6速度的方法(只用VB6解决)

很多你说的东西我都没用过,我比较注重实践,就是不停的测试程序而得到最终要的结果,所以我的代码比较简洁...

野猪派,这是不科学的写法,怪不得你的游戏可续行不强,更新一次要拷贝EXE,不好。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-7-31 16:09:00 | 显示全部楼层

Re:发现了提升VB6速度的方法(只用VB6解决)

我的是快速开发游戏的方法,你叫我用几年去写一个游戏不可能,没那个时间。
我的方法是业余游戏开发者的捷径。
如果是商业游戏,那是另外一回事,所以我做的没错。

65

主题

313

帖子

313

积分

中级会员

Rank: 3Rank: 3

积分
313
发表于 2008-7-31 16:39:00 | 显示全部楼层

Re: Re:发现了提升VB6速度的方法(只用VB6解决)

游戏之家站长: Re:发现了提升VB6速度的方法(只用VB6解决)

我的是快速开发游戏的方法,你叫我用几年去写一个游戏不可能,没那个时间。
我的方法是业余游戏开发者的捷径。
如果是商业游戏,那是另外一回事,所以我做的没错。

游戏作了一飞机,不是黑屏就死机;
五星勋章刚发布,程序错误堵住路;
反恐前线才出窝,BUG竟比代码多。

29

主题

475

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2008-7-31 17:06:00 | 显示全部楼层

Re:发现了提升VB6速度的方法(只用VB6解决)

VB6连extends都不可以,难道可以implements?很值得怀疑,那还要在接口里面写上虚函数,不可想象

11

主题

747

帖子

752

积分

高级会员

Rank: 4

积分
752
发表于 2008-7-31 18:48:00 | 显示全部楼层

Re:发现了提升VB6速度的方法(只用VB6解决)

VB是忽略速度来提高制作效率,所以即使提高了运行效率,也是给瘸子的杵换成拐,快不了多少的。不过楼主用心可赞,我觉得你可以朝更深的研究方面发展。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 19:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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