关于作者

用户名:David.Zhu
笔名:David.Zhu
地区: 广东-深圳
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



访问统计:
文章个数:133
评论个数:29
留言条数:11




Powered by BlogDriver 2.1

龙门客栈

 

E-Mail: davidripple#tom.com

文章

第一财经周刊:捅破下载公司的盈利窗户纸

9月份,迅雷CEO邹胜龙证实,迅雷公司已经进入网页游戏领域。这进一步证实了外界对这家公司的判断:他们想做的绝不仅是软件而已。

  事实上,这家仅次于腾讯(下载)的中国第二大客户端软件公司近年来正想尽办法,让用户在免费使用迅雷下载工具(下载)的同时,也能够使用它的多媒体引擎和博客空间、花点钱玩它运营的游戏,或者点播它拥有版权的影视节目。

  先后获得三轮风险投资之后,如今的迅雷相信一旦上市成功,就能够演绎可以比肩腾讯、百度、阿里巴巴等大型互联网公司的财富神话。与迅雷抱有同样希望的,还有Flashget(下载)的运营商趋势科技。

  事实真的会如愿景般美好吗?

  单从用户规模上看,他们当然有理由乐观。作为互联网最基本的应用之一,下载于今日的网络世界而言须臾不可或缺。在百度搜索风云榜之“十大软件风云榜”中,前六名都与下载工具有关。仅仅因为人们想要把网上的庞大资源据为己有的贪心—很多时侯下过来根本一次都不用,网民们就有足够的理由需要一款好用的下载软件。而且事实上,这个领域可供选择的工具并不算太多。

  但不幸的是,这个领域的先驱者们似乎忘记了为这种基础应用植入商业的因子。新闻可以赚钱、邮箱可以赚钱、游戏可以赚钱,可下载工具更多地被视为互联网分享精神的现实依托,特别是在BT下载“人人为我,我为人人”的分享理念深入人心之后。

  10年前,注视着屏幕上显示进度的灰色圆点一个个逐渐变成蓝色,中国最早的网民们会沉浸在不劳而获的满足感里。黑色蚂蚁推着装载金黄色固体的红色手推车—这是“网络蚂蚁”(下载)在桌面上的快捷方式图标。它是中国最早的下载软件之一,早到与56k调制解调器、打着“电脑学习班”名义的网吧雏形、奔腾处理器的联想品牌机同处一个时代。现在找到它,重新下载安装,操作界面竟看不出丝毫变化。

  如今,新一代网民依然有人愿意盯着下载工具的进度条,但他们眼里的是迅雷、eMule(下载)、Flashget和各种BT软件,在动辄以G为单位的下载活动中,已经没有人谁会用“蚂蚁”搬东西。

  现在看来,先天有免费基因的下载软件的诞生更多关乎用户需要,而非商业理想。1998年,无论在上海还是北京的网吧,上网是一件时髦而奢侈的事情—10到20块钱一个小时且提供一杯咖啡。与网费同样让人绝望的是上海和西安的闷热夏天,在这两个地方,暑假里百无聊赖的本科生洪以容和软件公司的程序员侯延堂都在试图解决一个问题—怎么样把网上的东西“当”到自己的电脑上?

  洪以容写出的网络蚂蚁的风行与当时中国互联网接入的特点—慢和贵—有关。当时的网民都会有这样的经历:无比虔诚地等着雅虎或者搜狐的网页上一个个图片慢慢打开。“断点续传”弥补了Windows下载中断后要重新开始的弊病,“多点连接”提高了下载速度,因为上网是计时收费,所以这样就等于在给网民省钱。1998年,网络蚂蚁被《电脑报》评为当年国内十大共享软件之一。

  侯延堂的网际快车(Flashget)无疑更有影响力,它也是第一款在世界范围内被广泛传播的国产软件,最初有66个国家和地区的免费版本。这款软件以提高下载速度、批量下载和下载文档管理的功能而闻名,2006年被趋势科技收购。Google进入中国后第一家合作伙伴也选择了Flashget。

  从2000年到2004年,侯延堂一直在更新这款软件,虽然收入微薄,但对于一个程序员来说,庞大的用户群带给他的满足感足以支撑他继续更新下去。但是2004年更新到了1.7版之后戛然而止。“侯先生当时迷上了魔兽世界游戏,没有时间更新。”趋势科技CEO黄明明说。

  事实上,2003年以后互联网带宽和需求的变化使下载软件也再不可能是一个人的表演。形势发生变化是在一个名叫邹胜龙的人出现之后。2003年,在深圳经历了自己第一次失败创业的邹胜龙意识到,随着宽带接入的普及,下载可能是在电子邮件、即时通讯和搜索引擎之后的应用热点。

  “对网民来说,下载工具好不好,快不快是第一位的。说到快,中国有句话叫迅雷不及掩耳,所以这个下载工具就叫迅雷。” 邹胜龙说。邹胜龙一开始就把迅雷当成生意来做,组织了100多人的技术团队。

  那个时候迷上网络游戏的人可不止侯延堂。随着带宽的增加,网民已经不满足于仅仅是获得资讯,他们转向了休闲娱乐,对下载的要求则越来越高。魔兽世界的一次小更新可能就达到几百兆,整个客户端文件则大到数G。这对迅雷来说是个好消息。

  虽然起步最晚,但是迅雷填补了Flashget停止更新留下的市场空白,并且下载速度更快。迅雷给出的数据是,到2008年7月,迅雷累计装机量达到了2.18亿台,下载工具市场占有率为66%。

  2002年,BT和eMule两种革命性的下载工具在国外出现,它们都采用P2P(peer to peer)原理。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量带宽。BT长于热门下载任务的快速下载,而eMule下载资源更多,在中国的VeryCD下载社区,分享氛围也更好。

  2006年收购了Flashget之后,趋势科技也组织了将近200人的团队。当年Flashget发布了1.8版开始支持BT下载,2008年则发布了2.2版和迷你版下载工具。

  从技术上看,现在的迅雷和网际快车都更像是一个联合体,既有P2P传输技术,也没有放弃网络蚂蚁所使用的HTTP、FTP传输技术。迅雷称之为P2SP,网际快车则叫做P4S,都实现了服务器到用户PC以及用户之间的互通传输。这么做的好处就是用户既可以从服务器上下载文件,也能够得到其他用户的共享。

  不过此时,各种下载工具已经很难在下载速度上拉开差距,一款下载软件的受欢迎程度开始取决于下载资源的丰富程度。但是,在网民们精心构筑的互联网分享世界中,视频、音乐、软件、游戏等资源被频繁地上传下载的时候,有一个问题显然被忽略了,那就是版权。

  2007年5月,电视连续剧《贞观长歌》版权所有方在要求迅雷删除下载链接未果后愤而起诉迅雷网,索赔169万元。2007年6月,在线视频服务供应商优度以迅雷在线提供电影《伤城》的搜索链接引导用户下载盗版影片为由与其对簿公堂,要求赔偿人民币15万元。接受《第一财经周刊》采访时,邹胜龙的办公桌上正放着一张侵权官司讨论会的邀请函。

  “起初迅雷也想自己买版权,但是内容太多了,买不过来。与其没完没了打官司,还不如与传统的发行商、网络内容集成商合作。”2008年迅雷开启了互联网视频广告分成的模式—发行商和内容集成商把正版内容提供给迅雷,迅雷则把内容分发给自己的海量用户。邹胜龙说,迅雷对合作方提出的条件就一条:只要能在迅雷看看的页面上卖广告就行。所得的广告收入可以分成。现在迅雷已经拿到2万多部正版影视节目的授权。

  宽客视频(BBSee)给“迅雷看看”提供了电视剧《亮剑》的正版内容,这是一家视频内容整合商,先获得正版高清视频的网络传播版权,然后通过贴片广告的形式来盈利并且支付版权费用。因推广平台不够大,就与迅雷签订了合作协议。正在热播的电视剧《我们俩的婚姻》也通过激动网授权成为迅雷看看的热播内容。


迅雷还借助自己的平台运营游戏。拥有迅雷账号的用户也可以登陆这些游戏,并通过充值购买虚拟道具。但这些游戏并非迅雷自己所有,而是有各自的运营商,它们只是需要借助迅雷的平台发展新用户。

  黄明明则希望Flashget能够将版权和盈利两个问题一次性解决。下载工具本身的盈利问题由来已久。洪以容曾经因为在网络蚂蚁上安放广告条而引起网友反对;侯延堂时期的网际快车也尝试过绑定3721,结果因为后者流氓软件的名声最后不了了之。

  黄明明认为网际快车未来的盈利主要有三个方向:首先是网际快车与Google合作的广告分成;其次是网络游戏下载和登陆的利润分成;最后就是他最看重的数字内容发行—用户要付费下载正版内容,下载工具作为传输渠道从中获利。他表示,网际快车的优势就是比盗版更方便、更快捷、更容易获得资源。

  他举例说,《夜宴》上映后,在盗版铺天盖地的情况下,仍然有120万网友通过网际快车付费下载正版影片,虽然下载费用只是4元,但是一旦在中国2亿多的网民中铺开,收入会相当可观。他相信这将成为网际快车未来主要的盈利方式。

  除此之外,网际快车数字内容发行并不局限于视频,也包括软件。比如韩国杀毒软件安博士,最初进入中国时没有什么人知道,和网际快车合作后成为中国市场占有率第四的杀毒软件。

  上影集团新媒体发行总监赵尔丁也认同下载工具作为发行渠道。“当时电视剧《武十郎》就是与迅雷合作的,一集5000元左右,迅雷最后还是赚到了钱的。”他说。可惜的是,这次尝试之后,双方合作依然寥寥,“这种合作要双方都有利可图。”

  9月18日,上影集团和光线传媒等100多家内容方都与土豆网的高清频道“黑豆”签订了内容和广告方面的协议。“土豆上的内容更容易被网民接触,因此广告分成更看好,所以我们会多投入。”赵尔丁表示。想成为网络内容分销商?迅雷和Flashget遇见了竞争对手。

  事实上,要把海量的资源正版化也是个几乎不可能完成的任务。大量网民需要的资源无法以正版的方式进入传输网络暂且不论,互联网从来不缺乏理想主义者也是一个原因。下载社区VeryCD的两个创始人黄一孟和戴云杰就是互联网分享精神的两个守望者。黄明明曾经坦言,VeryCD资源的完整程度,可能是目前迅雷和趋势科技都难以做到的。

  用户层面对于正版内容和付费下载的接受程度也是对迅雷们的一个很大的考验。在《第一财经周刊》的公司人调查中,89%的受访者表示并不在乎下载资源的版权问题,并且80%的受访者表示绝不接受付费下载。而对于下载工具的各种附加功能,62%的受访者表示从不使用。

  “我觉得不是中国的网民不愿意付费,是你没有提供足够好的质量、足够方便的方式,如果有这样的尝试,我相信慢慢会有一批用户愿意付这个费用,这时中国才真正具备了解决版权问题的最合适的土壤。”黄明明对此还保持着乐观。

  2005年9月份,迅雷获得了晨兴创投领衔的1000万美元的投资之后,开始探索新的盈利模式。2007年1月,迅雷完成了联创策源领衔、谷歌作为战略投资者的5000万美元的投资,之后迅雷发展了迅雷看看、迅雷狗狗、关键字广告等三项新业务。

  迅雷的天使投资人周鸿祎回忆,当时之所以看中这家公司是因为它能满足网民的某种需要,并且有巨大的用户基础。“有了这两点,以后肯定可以找到商业模式,我当时就想让它成为富媒体分发平台。”曾代表谷歌投资迅雷的宓群则是看中了迅雷的团队,“300人中有200人是技术人才”。

  资本的投入鼓舞了这家公司模仿互联网已有盈利模式的勇气。既然谷歌的AdSense和百度的竞价排名都能获得收入,迅雷也应该试试自己的关键字广告。但是,尽管迅雷的多媒体搜索引擎能够摇身一变成为迅雷狗狗,关键字广告在迅雷还没有成为主要的广告投放形式,反倒是传统的Flash展示广告条更多地出现在网页、客户端界面和弹出窗口。广告主多是网络游戏、数码产品以及一些互联网公司,但是对传统的广告大户如汽车、地产行业来说迅雷目前的用户还不具有太大的价值。

  为了延长用户使用时间增加广告收入,迅雷在视频分享、直播和点播三类领域中提供点播,并推出迅雷看看服务,但是这又难以绕过视频牌照和内容版权的老问题。

  与中国下载软件层出不穷的情况不同,国外互联网的下载工具使用并不十分广泛,除了版权管理更为严格之外,更快的网速是主要原因。比如在日本,因为网速足够快,不需要软件来加快速度,一般就是点击就可以下载。如此的话,下载工具已经没有存在的必要。

  “在2001年,你可能看个几M的短片就很高兴了,可是现在哪个电影不是几百M。现在有一些玩高清的人,一个电影就是10个或者20个G,只要人们的需求不断提高,下载工具就有存在的必要。”黄明明说。

  在网络活动中,下载与资讯、即时通讯、电子商务、网络游戏等业务都是网民最基本的应用,但当其它领域出现新浪、腾讯、阿里巴巴、盛大等大公司以后,下载却显得默默无闻。“如果按照用户数量来说,我们和迅雷都有1亿以上的用户,肯定是大公司了,区别就在于盈利。如果能捅破这张窗户纸,我们肯定是(大公司)。”黄明明回答说。

  2004年迅雷从深圳方大大厦搬到飞亚达大厦(和腾讯共处一座大楼)的时候,曾经立了一个上市倒计时牌子,但是到2006就停掉了。2007年,迅雷公司的天使投资人周鸿祎这样评论,“我认为迅雷短期内不会上市。迅雷还没有建立合理的商业模式。”

  不过,邹胜龙告诉《第一财经周刊》,如果上市就算大型公司的话,迅雷已经具备了上市的条件,随时可以上市。这位CEO宣称迅雷已经盈利,尽管从未透露过具体数字。

  “迅雷的曲线和腾讯非常相似,很陡!不信你问问他们(办公室外的员工),看看谁想走?”

- 作者: David.Zhu 2008年10月15日, 星期三 13:30  回复(0) |  引用(0) 加入博采

IE的本地域名解析机制
IE的本地域名解析机制
By David.Zhu 2008/10/6


    在Windows系统中有一个文件:C:\WINDOWS\system32\drivers\etc\hosts. 这个文件其实就是为Windows Internet Explorer提供本地域名解析的。其工作机理如下:
Windows在进行DNS解析之前,
1)查询host文件,在文件的各行中匹配相关域名,如果域名在host文件中找到,就取出该域名对应的IP地址来使用;否则 转2)。
2)发包到DNS域名服务器进行查询。

- 作者: David.Zhu 2008年10月6日, 星期一 13:29  回复(0) |  引用(0) 加入博采

探究视频加速器的原理
探究视频加速器的原理
By David.Zhu 2008/06/26


1.视频加速器的原理
    视频加速器能够提供对HTTP浏览器从HTTP服务器获取.flv,.mp4等类型的流媒体内容进行实时加速,其下载原理类似于典型的 BT下载,由Tracker服务器+客户端构成,当一个HTTP Agent向HTTP服务器请求.flv,.mp4类型的数据时,视频加速器能够定位该资源,并向Tracker服务器发送节点请求,实际的下载分为两部分,这两部分同时进行:一部分为从HTTP服务器的下载;一部分走P2P网络,从拥有此资源的其它节点处下载。其实我们完全可以将成熟的P2SP的下载技术和框架应用于此。
    那么剩下一个问题:视频加速器如何截获HTTP浏览器的资源请求并将从P2P网络接受到的数据又回传给它呢?我的第一个念头就是 :BHO.经过分析,我发现他们使用了自动代理配置技术Proxy Auto-Config,简称PAC, 结合注册表和WinInet库的使用,很好的解决了上面的问题。通过动态修改注册表:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
DefaultConnectionSettings
SavedLegacySettings

[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
DefaultConnectionSettings
SavedLegacySettings
将代理服务器设置为:
Use automatic configuration script
Adress=http://localhost:9000/application.pac.
通过WinInet API:InternetSetOption OPTION=INTERNET_OPTION_SETTINGS_CHANGED来实现代理服务器的实时改动。
    这样我们通过PAC文件中FindProxyForURL的实现,就可以实现截获HTTP浏览器的资源请求;同时,由于我们采用的是HTTP Proxy技术来实现于HTTP浏览器的交互,这样将P2P网络中接收到的数据经过HTTP协议封装再传给HTTP浏览器即可。

2.一个视频加速器的PAC文件
    以下是一个某视频加速器的PAC文件,主要实现了对本机地址和LAN地址进行直通,对URL开头为http://并且内容为.flv和.mp4的文件获取进行代理加速。
function FindProxyForURL(url,host){
    if(host == "localhost" || host == "127.0.0.1")
    {
       return "DIRECT";
    }
	var private_re = /^http:\/\/((lisbon)|(0\.0\.0\.0)|(127\.\d+\.\d+\.\d+)|(10
\.\d+\.\d+\.\d+)|(172\.(1[6789]|2[0-9]|3[01])\.\d+\.\d+)|(169\.254\.\d+\.\d+)|(192\.168
\.\d+\.\d+)|(22[3-9]\.\d+\.\d+\.\d+)|(2[3-5][0-9]\.\d+\.\d+\.\d+))+/ig
    if(private_re.test(url) || url.substring(0,7) != "http://")
    {
        return "DIRECT";
    }
    var pattern = /[^\/&]+(\.flv|\.mp4)+(\?|$)/ig;
    if(pattern.test(url))
    {
        return "PROXY localhost:9000";
    }
    else
    {
        return "DIRECT";
    }
}

3.Reference

- 作者: David.Zhu 2008年06月26日, 星期四 12:38  回复(0) |  引用(0) 加入博采

Extend RichEdit Control
Extend RichEdit Control
By David.Zhu 2008/06/25


1.要实现的功能
  • 支持图片插入,支持GIF,BMP,JPG,TGA,ICO,PNG,支持动态GIF
  • 支持Clipboard操作,实现自定义剪贴板格式(xml)
  • 支持OLE Drag&Drop操作(文件,图片,文字)
  • 支持字体设置:FontName,FontSize,Bold,Italic,Underline,FontColor
  • 支持FaceTipWnd:在鼠标Hover OLE对象时显示上下文工具条
  • 支持上下文菜单
  • 支持超链接检测和点击响应
  • 支持OLE内容存储和显示
2.Introduction
    研究RichEdit的原因是因为网上RichEdit相关的资料太少了,而RichEdit却在软件开发中越来越普遍和必要, 在视频会议,网络教育,即时通讯,休闲游戏等等中你都能看到RichEdit应用的身影,RichEdit可能会和界面引擎,P2SP下载一样成为软件的一个基础核心模块。
    目前网上的关于扩展RichEdit功能主要是利用QQ的ImageOle.dll模块支持Gif/Jpeg图片动画,利用IRichEditOleCallback 支持Bitmap和其它的Ole Object.实现都比较简单。当你想继续扩展RichEdit时,比如添加FaceTipWnd,OLE拖拽...前面又是一片空白。找了本Inside Ole来看,发现这个RichEdit还真不简单,涉及到了PersistStorage,IOleObject,OLE Drag&Drop,除了Moniker,OLE的其它的技术基本都可以在RichEdit中找到相关的应用。
    网上搜了半天实在找不到有价值的RichEdit资料了,没办法只好作逆向分析。逆向分析的过程感觉就像提马铃薯,一提提出一大串,一个关联一个,时间转眼已经过去2个星期了,还是无法重构RichEdit,不知道这个模块自己有机会完成不,不过我还是希望去挑战一下的。
    从RichEdit的功能封装来看,主要分为三个层次:第一层为核心功能层,主要提供RichEdit所支持的各种对象的插入和实现自定义剪贴板格式;第二层主要在第一层基础上添加了WM_RBUTTONUP消息的响应,实现了右键上下文菜单和菜单命令的响应;第三层在第二层的基础上继续集成了FaceListTip和FaceTipWnd的显示逻辑。另外提供的几个类实现了RichText到Html的转换,将RichEdit里面的内容用CSS+HTML进行描述,这个方法用来实现RichEdit内容的存储。

3.Release History
    None.

4.Reference

- 作者: David.Zhu 2008年06月25日, 星期三 17:49  回复(0) |  引用(0) 加入博采

NewSkin V0.3发布
NewSkin V0.3发布
By David.Zhu 2008/06/2


    截图如下:
NewSkin ver0.3界面截图
新增功能:
(1)实现DlgItem功能,使得UI引擎可以嵌入基于MFC实现的界面窗口

- 作者: David.Zhu 2008年06月2日, 星期一 21:28  回复(0) |  引用(0) 加入博采

NewSkin V0.2 发布
NewSkin Ver0.2 发布
By David.Zhu 2008/05/31


    截图如下:
NewSkin ver1.2界面截图
新增功能:
(1)不规则窗口支持
(2)宿主程序响应SkinCommand
(3)宿主程序响应界面元素事件,支持菜单弹出..
(4)PanelContainer实现,并支持上下滚动

Bug修正:
(1)修正Debug版本正常,但Release版本出现异常的Bug
(2)修正退出时内存资源泄露的Bug

- 作者: David.Zhu 2008年05月31日, 星期六 18:24  回复(0) |  引用(0) 加入博采

斗地主机器人AI的数学模型
斗地主机器人AI的数学模型
By David.Zhu 2008/05/25


    今天发呆的时候,突然想对斗地主机器人AI系统进行一下数学建模,于是有了点拙见,拿出来跟大家分享下。
    首先,我们定义一下斗地主机器人AI,从数学的角度看斗地主AI应该是一个空间S到另外一个空间D的映射F[S]-->D,其中我们称空间S为状态空间,即空间S的每个元素代表了一次出牌的上下文,对于任意一个元素属于空间S,它应该是一个多维的向量:
E=[x1,...,x28,y1,...y28,z1,...,z28,TokenHolder,c1,...,c28,Lord]
     其中,我们对玩家进行编号,以自己为起始点0,逆时针依次为玩家1,玩家2.TokenHolder表示当前的令牌持有者,Lord代表当前的地主玩家,[x1,...,x28]代表自己手中的牌,[y1,...,y28]代表玩家1手中的牌, [z1,...,z28]代表玩家2手中的牌,[c1,...,c28]代表当前桌面上出的牌。空间D我们称为出牌空间,对于任意一个元素属于空间D,它应该是一个多维的向量: E=[x1,...,x28]。

AI知识库的大小
    如果用二进制表示每个空间S上的元素需要116个二进制位,用二进制表示每个空间D上的元素需要28个二进制位。于是F对每个状态空间S中的自变量的映射可以用144个二进制位(即18个字节)来表示。一个粗粒度的估算,斗地主AI的存储上限为18*2116个字节,当然加上向量内部和之间存在的一些限制条件,实际的状态空间的容量应该远小于2116

如何机器人AI的训练
    训练的目的就是不断增加智能,即不断的为状态空间S上的元素建立到空间D的映射的过程。我们可以找三个有经验的老手进行游戏,然后在服务器端根据他们的出牌信息,生成一个状态的映射并添加到AI知识库中。为了加快训练的速度,可以并发的进行多个这样的训练然后将各自的AI知识库进行整理合并。

非特权的机器人AI
    上面讲到的机器人AI实际上是机器人作弊了的,它在决策时上可以看到另外两家手中的牌即[y1,...,y28]和 [z1,...,z28],由于机器人运行在服务器端,所以服务器可以偷偷的把另外两家手中的牌信息传递给机器人以增加机器人的利害程度。呵呵,当然如果要是机器人也当一个合法公民,上述的AI映射只需稍做下修改就可以了,将[y1,...,y28]和[z1,...,z28]合并为一个向量[y'1,...,y'28],表示其它两家当前手中的牌的总和。

知识库的内存组织
     还没想好,不过应该是采用树结构。

留待解决的问题
     知识库过大了内存装不下怎么办?一个状态在知识库中找不到相应的映射呢?如果映射出现了一对多的映射?

- 作者: David.Zhu 2008年05月25日, 星期日 17:57  回复(0) |  引用(0) 加入博采

QQ界面引擎技术:NewSkin
QQ界面引擎技术:NewSkin
By David.Zhu 2008/05/22


  腾讯目前至少有两个界面引擎:NewSkin.DLLTenio.DLL.其中NewSkin.DLL主要用于QQ客户端主界面,而 Tenio.DLL则广泛的用在其互动娱乐产品线的各个产品中,比如QQ宠物,QQ游戏大厅等等。比较这两种界面引擎,其实各有特色:NewSkin.DLL主要是实现了控件的非窗口化,实现上采用了COM技术,采用微软的Script引擎技术使得外部可以通过VBScript脚本语言与界面引擎进行交互;Tenio.DLL则将换肤推广到Dialog一级,我一个朋友正在实现它,现在暂不过多介绍。

   我这里实现的是NewSkin.DLL,目前实现的功能包括:界面配置解析,事件响应,控件绘制,VBS脚本交互,按钮Tooltip显示。由于时间有限,我仅仅实现了Button,Text,Picture,Window四个控件。界面截图如下:
采用NewSkin界面实现的QQ界面截图

碰到的问题:Pannel,ExtendWindow,DlgItem没有实现,目前对这三个控件的运行机制还不是很清楚。在 Config.xml中没有指定Pannel与Button的包容关系,在VBScript.vbs里面也没有相关Button的定位代码,可能是在NewSkin.DLL的外部实现并通过IBQQSkinHost::RegisterSink接口挂接到NewSkin.DLL中???

- 作者: David.Zhu 2008年05月22日, 星期四 17:49  回复(2) |  引用(0) 加入博采

P2P流媒体直播系统开发总结
P2P流媒体直播系统开发总结
By David.Zhu 2008/05/09


    时间过得挺快,转眼距CyberMagic 1.0版本的发布已经有两年多时间了,期间发生了太多的波折. 我们做P2P流媒体直播软件在国内还算是比较早,当时Coolstreaming和PPLive刚出来不久,CyberMagic的发布在PPS和QQLive之间.可是CyberMagic现在却静静地躺在我的电脑里,没有了昔日的光芒.
    公司对CyberMagic系统的测试也投入了不少的财力和人力,在公司总部多次组织所有员工进行了测试,同时利用集团在全国各地的销售办事处人员组织电脑上网集中测试,免费提供P2P直播技术支持(比如周笔畅的Bibisky直播软件).相比PPLive在教育网上进行测试,显然我们的P2P软件模型的验证成本要高得多. CyberMagic在开发完了以后公司不认为P2P直播能够为公司带来盈利,所有没有继续将其产品化走PPL,PPS的道路,而是作为公司的核心技术储备.于是后续的开发就转向了基于P2P的核心承载网络(uOverlay),P2P的多点会议,P2P的VOD等.至今我还在困惑:如果CyberMagic走的是另外一条路现在会是怎么样的,另外一个MySee?
    随着2006年下半年公司出现的财务困境,以前的开发团队成员相继离开了公司,我也在2007年上半年离职.后来就一个人继续对CyberMagic进行重构和开发.此时,国内P2P流媒体直播领域已经出现了很多的后起之袖:UUSEE,光芒国际,Sopcast,PPMate..., 但市场份额还是被PPL,PPS,QQLive三分天下.技术上,CyberMagic已经不占优势.我面临着两种选择,要么继续改进和完善CyberMagic,使其可运营化,要么去分析和学习别人的优秀技术,对CyberMagic来一个脱胎换股.最终我选择了后者,选择了PPLive,于是对PPL的架构和实现进行了深入的分析和学习.
     目前已经初步完成的模块包括:common.dll,Troubleshooter.dll,EROC.DLL,TEN.DLL,KOM.DLL,FwUPnP.dll EWA.ocx(SynacastEWA.ocx),List.ocx (SynacastList.ocx),客户端界面实现(UI.DLL).另外,参考CyberMagic 技术实现了自己的MIR.DLL,Source,SourceAgent和SuperNode服务器.
     面临的问题:1)前期在GUI界面上投入的时间和精力太多,导致对服务器和P2P核心算法的开发不足;2)缺少测试和运营所需的服务器资源.
     路漫漫其修远,吾将上下而求索.

- 作者: David.Zhu 2008年05月9日, 星期五 23:51  回复(2) |  引用(0) 加入博采

探讨棋牌类游戏AI算法
探讨棋牌类游戏AI算法
By David.Zhu 2008/05/09


    去年开发了两款棋牌类游戏:斗地址广东麻将,规则参考Tencent的QQ游戏规则.客户端实现采用Flash 9开发,服务端采用Win32+VC6开发(基于IOCP),数据库网关采用Win32+VC6开发(基于IOCP,MySQL5实现了处理线程池和数据库连接池).虽然服务器端去年就已经完成,但相应的机器人AI算法一直没有能力去实现.今天把它拿到Blog上来希望有机会和感兴趣的兄弟们探讨下.
    Kevin在他的Blog上给出了他的实现,其给出的算法思想是用宽度优先生成一棵搜索树,再根据玩牌的技巧进行剪枝与判权,机器人的AI能够像养成类游戏那样,实现在蹂躏下慢慢成长,水平逐步提高.虽然Kevin给出了算法的基本思想,但小弟愚笨还是没能领悟到禅机呀.
    我认为游戏AI应该具有如下特性:
(1)团队意识
     打麻将游戏中每个玩家自成一家就无所谓了,但对于像斗地主这样的游戏,玩家是分组的,AI机器人当地主和当农民时的出牌策略应该是不同的.
(2)记牌
     AI机器人能够响应各个玩家已经打出的牌,以便于以后的决策.同时,还应该为服务器作弊提供接口.比如, 麻将类游戏,AI机器人在决策时就可以偷偷的看其它玩家手中的牌或是看牌桌上还未派发的牌;对于斗地主游戏,AI机器人在决策时也可以偷偷的看其它玩家手中的牌.
(3)训练和学习
     通过与游戏高手的练习能够训练和提高AI机器人的智力水平,逐步学习和提高.
(4)知识库的存储
     AI机器人的知识库应该是可以以数据文件的形式在计算机中进行存储的.机器人在启动的时候加载配置的知识库数据文件.
    也不知道我的想法是否过于理想,反正至今还没找到一个合适的模型来抽象和表示游戏的决策过程:(.

参考资料:
(1)斗地主人工智能
(2)棋类游戏的智能模块设计――浅谈人工智能
(3)中国象棋计算机博弈关键技术分析

- 作者: David.Zhu 2008年05月9日, 星期五 23:35  回复(0) |  引用(0) 加入博采