十一月, 2008 的文章

游戏发芽网的在线聊天功能

游戏发芽网的在线聊天

孤单是不爽的,孤单的人是可耻的

所以当有一个人在玩智取华容道的时候,只有一个人玩,很快就会丧失兴趣。
但是如果打着打着,旁边有个信息说:嫣然一笑网友闯过了华容道的第31关,用了120步。
(华容道过关记录一千多,嫣然一笑一个人搞定了其中的500,真不是一般的有恒心)
这样就不会觉得孤单了吧(只是猜想,我自己忙着开发来着,没怎么玩)

更进一步,你看到有人在和你访问同一个网页,是不是想和他/她交流一下呢。。。

好吧,说了这么多,就是因为:
游戏发芽网在线聊天系统上线啦!!!
打开华容道游戏、过关记录播放等页面,你就可以在线聊天了。
(匿名用户暂不可以参与,只能看到聊天记录)

呃。。。人不多。。。先自说自话吧。。。

————————实现细节的分割线————————

在线聊天有一点点特殊,因为是web服务器和普通的HTML浏览器,
从服务器端向普通的客户端Push的方式(没有java applet / activeX 的)通信做不到
所以只有靠Pull的方式,即服务端不管session的事情,依赖一个个的post和客户端频繁的get来做消息同步

这样实现起来也很简单:
1. web server端处理两种消息:
  一种是用户发消息过来,录入数据库即可
  另一种是用户接收最新的消息(比如:编号为888的以后的10条消息),查数据库返回即可

2. web client浏览器端处理两种消息:
  一种是用户发言,这时候需要组装一个Post消息发给web server
  另一种是循环获取最新的消息列表,每次都记录下最新的获取时间方便下一次查找最新的

用到的javascript很简单,打开游戏发芽网找到源码里的youxi.js就能看到

下面说一下遇到的问题,即
时间同步问题:
1. 服务器端记录的时间是22点,是当地时间,比如说是英国
2. 客户端时间可以有很多,中国的,美国的,都有可能
3. 问题就出现了:客户端到底是显示本地的呢还是server的呢?

答案应该很明显,显示本地的。但是直接显示时间看不清楚,所以我考虑实现显示“人性化”的时间
比如,“3分钟以前”, 而不是僵硬的2008年11月19日下午3:08

好的,第二个问题出现了:聊天的过程中,显示的人性化时间需不需要更新呢?
比如一个“3分钟以前”的消息在下一分钟应该变成“4分钟以前”
哎呀,这回用本地的和server的时间差就引起问题了:
本地得到的时间并不是server上生成的时间,server上的时间和本地时间算时间差又没有意义

最后我找到了一种至少目前看起来可行的方案:
1. 每个消息在送到客户端的时候都会有个timetag,是距离1970年1月1日的秒数(熟悉事件处理的应该知道这个时间点)
2. 每隔一段时间(我设置的是5秒钟),在check服务器端有没有新的消息的时候,同时返回server的当前timetag
3. 每次check之后,根据当前的timetag和每个消息的timetag做差值
(张沈鹏:这步并不必要,实际上只要计算一次server端与本地的差值就够了。不过懒得改了,放着吧)
然后再加上一些简单计算转化成比较易读的时间,这样就可以搞定了。

直到想去深入一个问题的细节的时候,才发现所需要的时间不是想象的那么少。
直到勇于开始并解决掉一个问题的时候,才发现这类问题没有想象中那么难。

在发芽网添加了 adsense

撑一个国外的host
贵啊,
现在又经济危机了,
苍蝇蚊子都是肉啊,
呵呵,
在未注册用户的发代码页面,
以及华容道游戏、回放页面加上了两个横幅,
奢望一年能够赚上两罐子奶粉钱,
也算有所回报了。

信息泛滥的时代 - 一些在未来得到有效信息的想法

1. 用户公开自己的部分资料給信息提供商(当然是网上账户,所以并非实名)
比如年龄、性别、常住地址、月收入、月开销
喜欢的书籍、音乐、电影等等
去过的地方、国家等等
动态信息包括最近的出差、生孩子、婚宴嫁娶、购物需求之类的

1.a 这些资料可以有标准化的格式,share在一些类似gravatar的网站上面
1.b 可以搞个commitee来提供更加有效的form,让数据更有意义

2. 信息提供商提供信息(包括广告)(甚至提供第一步所需要的form)
信息可以涵盖金融、政治、英语、培训、打折促销、商家评比、用户调查数据之类的,反正是内容提供商。
由于用户公开了自己的资料,谁都可以获取,没有门槛
所以竞争之后生存下来的品牌信息提供商会是更加有效率
用户虽然会看到广告(也可能没有,因为信息提供商会获得其他方面的收入),但是获取信息的方式会更高

3. 这个只是用来满足共性需求,比如书籍、打折券、博客、电影推荐什么的。
其他的个性需求,自己依然可以去互联网上寻找

我觉得这很可能会在近年内成为用户获取信息的新模式。

实际上豆瓣就在做关于阅读、音乐、电影、网站的尝试,而且做得不错,不过似乎没有公开的API获取用户的信息列表

限制了智取华容道在线游戏的过关记录回放功能

收到网友反馈,智取华容道以前的设计(能够直接看到最优秀的过关记录)会让人觉得很受打击,从而丧失兴趣
一开始没加限制,是因为我最初做了两个假设:
1. 假设玩智取华容道游戏的人分为两种:有兴趣的、只想靠它过关的
2. 有兴趣的人自己会管住自己不看最优秀的解决方案,只想靠它过关的我也不挽留

实话说,玩的人并不多,应该是因为这个游戏本身足够老,老到掉渣的原因
呵呵话是这么说,我还是希望更多人玩啊,毕竟花了心血,而且华容道这个游戏也算是“世界三大不可思议”之一啊

但是这是第二次收到反馈说这件事了,所以我可能想错了,先加上限制试试看吧:

当前的三个限制条件
1. 发blog介绍过本游戏的用户(要求有清晰描述和链接)可申请观看所有记录的权限,介绍文章写好后在反馈页面说明就行。
2. 对于一个开局,除非自己有最优记录,否则不能看最优记录!
3. 用户只能看比自己玩的差、同登级和稍好的记录,自己没玩过则只能看最差记录

Enjoy! 欢迎提供反馈!

新增18个华容道开局

这两天转到美国,由于没车,终于有时间从前面得到的华容道所有开局中挑选一些出来
首先是把所有开局按曹操在0-3线的位置分类,同时按照0横到5横分类

最终挑选了许多有趣的开局,挑选了其中的18个传到了游戏发芽网的智取华容道
一些开局截图如下:
一些新开局

所有列表如下:
#58:似远实近: 曹操距离出口貌似很远,实际上举步可达
#59:近在咫尺3: 近在咫尺的改进版,需要更多步数。来自半瓶墨水原创
#60:五横最难的开局: 五个大将横拦,似乎滴水不漏,已是五横类最难的开具了。不过兵种单一就是有问题啊
#61:小兵探路: 真正的三横最难开局,大将层层埋伏,小兵前线骚扰
#62:前后夹攻: 曹操似乎将要逃脱,实际上却陷入前后夹攻之中
#63:单兵种的没落: 横竖搭配得当才能成大事,这个开局已是0横5竖最难,却仍旧易如反掌
#64:欲罢不能: 关羽拦在路上有心让路,无奈何华容道窄,将兵拥挤,欲罢兵而不能
#65:横行之将: 横行的大将得到竖将的配合,稳稳守住曹操
#66:列队欢送: 曹操接近出口,将士们列队欢送,实则暗藏杀机
#67:列队欢送2: 曹操接近出口,将士们列队欢送,实则暗藏杀机
#68:百花盛开: 小兵+曹操,形成了一朵从大将堆中盛开的花。另有含义,最短通关即知
#69:行百里者半九十: 向前一步是天堂,但真的只有一步了吗?
#70:小汽车: 像是一个竖着的小汽车侧面,左边大将为轮,曹操为驾驶舱:D
#71:单身的小兵: 四个小兵都各自为战,却着实不弱。玩到最快步骤后有更深层含义
#72:以退为进: 前路被大将封死,曹操只能以退为进
#73:一字长蛇阵: 横将竖将小兵都成一字排开,成一字长蛇阵之势。不过也只是势而已,构不成多大威胁。
#74:一直长蛇阵2: 横将竖将小兵都成一字排开,成一字长蛇阵之势。不过也只是势而已,构不成多大威胁。
#75:扰敌之策: 大将立于后方,用小兵扰敌,可能因此而士气低落,曹操轻易逃出

相关文章:智力華容道遊戲之「最強的堡壘群」

下一页 »