游戏开发论坛

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

再次请教如何实现类似剑侠情缘的地图平滑滚动?

[复制链接]

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2006-1-19 15:31:00 | 显示全部楼层 |阅读模式
正在做一个2D的RPG游戏,但是只要限制帧速,地图滚动的时候就有跳跃的感觉,而不限帧的话,不同机器速度就不一样,很郁闷。

有不少商业游戏地图滚动的时候都是跳得厉害,看了很不爽。

但是剑侠情缘系列,不论游戏速度怎么设置滚动都非常平滑,很想知道是怎么实现的。

我说的就是在以象素为单位的前提下的平滑滚动。

在游戏循环中:
const int DELAY = 10;

void GameRun()
{
static double DelayTick = DELAY * freq / 1000;
static LARGE_INTEGER time;

QueryPerformanceCounter(&time);
now = (double)time.QuadPart;
if(now < old + DelayTick )
return;
old=now;

// 游戏主逻辑
}

在游戏主逻辑中,我有类似以下的代码:
if (GetAsyncKeyState(VK_LEFT))
{
x -= 1;
}

DrawMap(x, y);

问题是,在限制帧速的过程中,我只能限制下限,却限制不了上限。每次进入循环时,若没到刷新时刻则直接返回,但这样下一次进入循环的时候,可能已经超过了刷新时间。这种后果是,每次刷新的间隔不同,所以地图运动起来时快时慢。

这里有高人能指点一下吗?感激不尽!

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2006-1-19 15:53:00 | 显示全部楼层

Re: 再次请教如何实现类似剑侠情缘的地图平滑滚动?

贴一个滚动不平滑的演示,左右箭头控制地图滚动,Esc退出。

sf_2006119155244.rar

634.62 KB, 下载次数:

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2006-1-20 00:07:00 | 显示全部楼层

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

自己顶一下

6

主题

42

帖子

42

积分

注册会员

Rank: 2

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

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

      请注意,你可以将逻辑循环和渲染循环分离开,渲染循环中对角色位置等数值在客户端进行插值处理,逻辑只在一段时间后同步位置即可,这样在渲染引擎上已经可以达到相当好的平滑度。
      之后,剩下的瓶颈则主要是要求逻辑层以及资源管理模块提高效率,否则会出现卡的现象,剑网系列在这点上做了许多优化。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-1-20 10:28:00 | 显示全部楼层

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

我看挺平滑的/

60

主题

134

帖子

134

积分

注册会员

Rank: 2

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

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

有必要一定设限FPS么?

3

主题

72

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2006-1-20 22:00:00 | 显示全部楼层

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

每一帧相对移动的越少越平滑。
每帧间隔时间没有大的跳跃移动比较平滑。

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2006-1-21 09:41:00 | 显示全部楼层

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

不知道大家有没有玩过剑侠系列呢?比如剑侠2,新剑侠等,它的移动是那种绝对的平滑,没有一丝一毫的跳动感,我想要的就是那种效果。:)我是完美主义者。其实demo中的图像已经比不少商业游戏还平滑了。

3

主题

72

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2006-1-21 12:50:00 | 显示全部楼层

Re:再次请教如何实现类似剑侠情缘的地图平滑滚动?

你的那个demo非常经典的体现了什么叫画面撕裂。。。。。
说实话,我比较的感到难以理解的是,在全屏状态下,居然还有如此激烈的撕裂。
可以试一下同步。但是你绘制的图形本身并不多。
所以,这就比较搞笑了。

另:你说得剑侠,是网络的还是以前的单机版的?

7

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
QQ
发表于 2006-1-23 00:16:00 | 显示全部楼层

Re: 再次请教如何实现类似剑侠情缘的地图平滑滚动?

在我的程序中,每帧地图移动1到2个象素的情况下确实是很平滑很清楚地卷动,但卷屏速度非常慢,如果要有一个合适的卷动速度的话,地图得每帧移动5象素左右,但这时卷动起来就不平滑了,倒不是跳动,而是有模糊的感觉,没尝试过楼上朋友说的插值,有空试试看!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 06:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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