聊一个公司的年会开发需求, 3000 人同时游戏

2017-01-13 12:19:01 +08:00
 colordog

这样的,有个公司搞年会,要求呢,员工完个在一共时间段玩游戏,然后大屏幕显示游戏结果。

卤煮给的方案是: 主持人说开始的时候,后台人点击游戏激活按钮,然后员工点开游戏界面,进行游戏,游戏内容就是数钱,游戏时间 20 秒,游戏完成后提交服务器,然后,大屏幕会持续刷新游戏结果(定时去扫数据库)。

现在那个公司突然提出一个需求(在产品开发完毕的情况下): 要求大屏幕做倒计时, 20 秒倒计时,然后所有员工玩游戏也必须在倒计时这 20 秒内开始,完成,我现在整个蒙圈了,这么大的同步量,还要同步开始和结束时间,同步游戏,而且 3000 人如果用手机网络,这么多人在同一个地点的话,网络延迟的锅谁背,一下子几秒就出去了。

哪个兄弟有解决方案,我现在的初步想法是,不给改:爱咋地咋地。

8511 次点击
所在节点    PHP
68 条回复
hinate
2017-01-13 12:34:41 +08:00
tg gamebot...🙈🙈🙈
hinate
2017-01-13 12:36:00 +08:00
答非所问…没看清楚😑😑
pelloz
2017-01-13 12:44:58 +08:00
在客户端限制 20 秒啊,服务器只管接收客户端统计好的 20 秒内的结果。当然这样也比较容易发生作弊情况~
spice630
2017-01-13 12:49:21 +08:00
数钱不是单机游戏吗 ? 3000 还算多?
iyaozhen
2017-01-13 12:49:26 +08:00
@pelloz 这样应该可以了。程序先不放出来,提交的参数干扰下。应付一次性年会够了
bk201
2017-01-13 13:02:55 +08:00
websocket 主动推送开始结束标识,拿到结果结束。
wyntergreg
2017-01-13 13:06:27 +08:00
不是有时间同步服务器吗,为什么要自己同步时间
longear
2017-01-13 13:16:28 +08:00
每客户端每秒 3 ~ 4K 的数据量,要 9 ~ 12M 左右的总带宽, 只要举办地点的移动基站覆盖完善就应该没问题,

可以让大家提前 2 分钟打开数据网络,与游戏服务器建立连接,并发送 3k 每秒的模拟包,便于基站负载均衡。

这种高并发的简单任务适合用 node.js 来实现服务器

这个任务还是能学到一些东西的,挺好玩的~
colordog
2017-01-13 13:19:41 +08:00
可是, 20 秒,万一基站延迟问题,这雷背起来,有点大啊
falcon05
2017-01-13 13:24:01 +08:00
按三楼的方法应该可以凑和,只获取用户提交的结果就好了
jininij
2017-01-13 13:29:00 +08:00
客户端页面打开的时候,用 js 纠错一下时间,然后所有的倒计时画面,游戏,都在客户端做了。只上传游戏结果就好了。
codespots
2017-01-13 14:12:14 +08:00
不是太明白具体的要求,推荐用 Node.js+socket.io ,用 Websocket 同步游戏数据, PHP 的话推荐 Swoole ,数据库直接用 Redis ,这种就适合 node.js 或者 Swoole 这种非阻塞的模型
gamexg
2017-01-13 14:14:32 +08:00
mlhorizon
2017-01-13 14:22:25 +08:00
服务端只给出开始信号,客户端收到信号后开始, 20 秒后结束,加密上传结果,服务端收齐结果进行展示。
会场千万不要提供 WIFI ,网络问题让电信公司背锅。

就怕领导再提出来要实时显示 top10 。
aru
2017-01-13 14:31:47 +08:00
服务器端没啥问题呀
逻辑在客户端完成,必须得到密钥游戏才能开始。
开始前客户端定期刷新服务器,到时后拿到开始的密钥。
客户端定期(每秒)上报游戏数据即可,时间到就游戏结束。
php 的简单逻辑, 3000 req/s 我感觉玩儿似的。
aru
2017-01-13 14:33:06 +08:00
关键问题在于用户的网络肯定会出现问题,一个大厅那么多人,估计很多人上不了网,这个锅谁来背呢?
horizon
2017-01-13 14:34:56 +08:00
不行的。。肯定很多人都上不了网。
rrfeng
2017-01-13 14:35:04 +08:00
3000 Client 的话 WiFI 也得几十万块的设备……
odirus
2017-01-13 14:35:28 +08:00
楼主,别考虑那么多,客户端只上传结果就行了。

做一个网页显示地址,用于进入游戏,游戏开始前一分钟才放正式地址,让作弊的人没有足够的时间作弊(当然开始游戏前要在 PPT 上介绍一下怎么玩,不然蒙圈了,最好能检查一下各种手机是否适配,加载资源的延迟是否满足)
murmur
2017-01-13 14:38:09 +08:00
3000client 的话 你需要人民大会堂那么大的场地 还要保证每个人的网速 电信设备才是大头

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX