游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3246|回复: 8

网游服务器如何解决“过期检测”这个问题的

[复制链接]

3

主题

9

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2015-1-14 20:24:11 | 显示全部楼层 |阅读模式
最典型的案例,网游时按时长计费的,计费到期后你就会被强制下线,绝大部分这类服务器在时间快到时会立即通知客户端弹出提示,如果不管,到点一会会被踢下线(精确到秒),这个东西是如何实现的,很多网游的在线人数都是几千上万的,难道有个进程/线程在不停的遍历这些这些玩家的到钱时间数据吗?这效率貌似很低啊,我做过测试,不停的遍历一个5k-6k的map消耗不小的,别说上万了

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2015-1-14 20:33:56 | 显示全部楼层
本帖最后由 snghun 于 2015-1-15 01:30 编辑

突然觉得回答这个问题太不值得了
删掉

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20522
发表于 2015-1-14 20:59:27 | 显示全部楼层
每个object都是在跑逻辑,只要在自己的逻辑里加个

点卡--;

if( 点卡 < 0 )
    踹它;

3

主题

9

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2015-1-15 00:00:52 | 显示全部楼层
snghun 发表于 2015-1-14 20:33
我能想到的方案:

一分钟算一次.

你这台电脑上只用来算这个?你的游戏逻辑主线程怎么办?莫非你们的服务器线程/进程都是跑在不同的硬件机上的,一台机器专门算这个,算完了给游戏主线程提交踢人任务?

3

主题

9

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2015-1-15 00:02:17 | 显示全部楼层
sea_bug 发表于 2015-1-14 20:59
每个object都是在跑逻辑,只要在自己的逻辑里加个

点卡--;

能写详细点不,我完全没看懂这个模型,object指的啥,如果每个obect都在跑,这个任务交给谁,不会影响到游戏主线程吗?

71

主题

1330

帖子

2585

积分

金牌会员

Rank: 6Rank: 6

积分
2585
发表于 2015-1-15 09:34:13 | 显示全部楼层
精确到秒的话,让客户端自己计时,到时间自己T自己。
至于作弊的后果,事后检查也不是太大问题。

2

主题

9

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2015-1-19 23:20:46 | 显示全部楼层
可以1小时检查一次,不足1小时的专门做个名单1分钟检查一次,发现不足1分钟的又专门做过名单1秒钟检查1次。

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2015-1-20 17:18:47 | 显示全部楼层
1. 网游同时在线玩家没那么高的...
2. 玩家上线后,把点卡到时时间托管到中心服的管理器,建立最小堆检测点卡到期时间

1

主题

10

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2015-1-20 22:58:47 | 显示全部楼层
客户端可以自己计时的啊,到时间了主动断就好。
如果怕作弊。点卡时长这个东西轻易不会变,会变化的几率极小,可以扔到一个单独的线程里面去定时遍历。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 07:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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