说明:
小x 好不容易写完这三篇互联网往事就声明要停笔了,相对于文字而言他更擅长写代码。我说你这三篇文章中的故事,可以被擅长洗稿的小编洗很多次。他甚至没听说过洗稿是什么意思。小x 在我的印象中,非常像国产凌凌漆中的英雄,是我们身边比较好玩的老朋友。祝福他,即便退隐江湖,依然还是宝刀未老!
序言:
多玩YY即将迎来成立二十周年,当下是2024年,此时听闻张云帆要履新字节跳动整体负责游戏业务,于是决定写一个系列的文章回顾当年多玩YY的往事,以亲历者的角度回顾这家在纳斯达克上市的公司初创时期在风雨飘摇中成长的经历,欢迎点赞收藏加关注一键三连。
文章重点是想讲述多玩早期几个重要的产品,因此我考虑了良久,选择以张云帆为主线去叙事,因为多玩YY在创办不到一年时间里连续推出三个重要的项目均获得了成功,这些产品都是由张云帆主导,为了叙事方便,在写作过程中当年一起在共事的默默无闻的程序员、运营、编辑有些人会被提及有些人没有提及,这里希望大家能够理解。
揭秘YY语音的前身多玩DTS的诞生
2005年,骏景花园骏盈轩xxx号的某个周日的清晨,经历了周六的加班后,办公室里只有李学凌老大和前来拜访的automan(刘红柳)还有我,李欢应该是在房间睡得跟猪一样,李学凌老大和automan在离我稍远的地方不知道在聊些什么,我猜大概都是一些日常的圈子里的见闻,例如fishman就在我们对面的楼里租了个房子作办公室,李老大在骏景花园小区某个小卖部买东西的时候遇到foxmail的张小龙这样的话题。
当他们在聊天的时候,我正背对着他们在服务器编译一个旧版的 Mysql3.x ,因为我发现一个叫 teamspeaker 软件的 server 端似乎只能与 Mysql3.x 建立起连接。
过了一阵,我发现我居然把服务调通了,我很兴奋的转过身不动声色的跟李学凌老大说了一句:“老大,我搞定了”,我相信那时的老大心里是窃喜的,他于是也不动声色的回了我一句:“嗯”,这时automan就很好奇的问搞定了什么,李老大轻描淡写的回答:“没什么,他说他工作做完了”。然后又继续和automan闲聊。后来他们聊了什么,我都听不进去,心里只希望automan赶紧离开,我好向李老大汇报工作,可是 automan 完全不知道发生了什么,还是很有兴致的跟李学凌老大聊天,不知道过了多久,automan终于要回去了,我甚至于很失礼的没有站起来相送,毕竟是automan把我招进网易在李学凌老大身边工作。
等李老大把automan送出去关上门,我立即从座位上跳起来很激动的跟老大说:“老大,我搞定啦!”
2005年,这一刻起,多玩有了部署语音通信服务的能力。用我们现在的眼光看,这实在没什么值得如此激动的,只能说当时我们的技术实在太弱了。
事情要从当时的一个多月前说起,在多玩公会系统取得成功之后张云帆可能是根据对魔兽世界的游玩体验觉得多玩应该应该有一套语音通话系统,让玩家在组队的打怪的时候可以用语音来互相沟通,毕竟一边玩游戏一边文字聊天的沟通效率实在太低了。
在当时一些魔兽世界的玩家会用一款叫teamspeaker的软件在一边玩游戏一边语音通话,在同一时间里只有一个玩家可以在频道里说话。teamspeaker 的客户端和服务端都不开源,现在的teamspeaker会提供SDK给用户,可当时teamspeaker还没提供SDK,因此 teamspeaker 的二次开发这里成了一个难题。
为了解决这个难题,一开始大家想到雷军,因为金山公司是我们能接触得到的最好的软件公司,于是张云帆联系了雷军请他帮忙,那时大家早已知道雷军是多玩的投资人。
雷军和张云帆关系很好,据说当时的金山公司有着国内最好的程序员但当时金山出品游戏并不好玩,雷军于是邀请张云帆到讲网络游戏,为此,雷军要求金山公司全国各地的分公司总监都必须到金山的总部来听张云帆讲课,张云帆一连讲了两天,讲完课后,雷军还不尽兴与张云帆在酒店还聊了半个通宵,这里强调是“半个通宵”是因为张云帆说他实在太困了没法聊下去了。
至于雷军为什么要找张云帆来讲课,我这时才知道虽然在2003年时我们都在网易网站部工作,老张当时在商业频道当编辑,但我不知道的是老张在游戏圈里很有影响力,当时网易的《大话西游2》、《梦幻西游》很热,老张在学校读书的时候就搞了个游戏公会,这个公会在游戏里影响力很大。
这里补充说明一下,今天所有网络直播都叫“公会”就是因为最早老张在北美服务器玩uo的时候,玩家组织就叫gulid 也就是公会,老张是guildmaster 也就是会长。然后YY沿用了这个设定,之后所有网络直播都沿用了。
老张当时也经常和网易游戏的人在一起交流,当时网易游戏的负责人对张云帆很看重,开出很好的待遇希望老张能到网易的游戏部门工作,要知道当时网易的游戏和网站部的薪酬待遇是差别是非常大的,可是不知道出于怎样的考虑,老张还是选择跟随李学凌老大出来创业而且还拉着自己的同学,师弟一起来。我没法在这里揣测张云帆当时的事业规划,因为在网易工作时我们的接触并不多,甚至在我的印象中没见过他在办公室玩过《大话西游2》和《梦幻西游》,当时的网游基本上是点卡充值按时间扣费的,网易员工可以拥有一个免费的账号,因此有不少员工会玩这两个游戏。
金山付给多玩的讲课费是多玩网成立后第一笔收入。
雷军很快对我们作了回应,他安排金山毒霸的技术总监陈睿来帮我们,按张云帆复述雷军的话来说就是:(多玩)这是兄弟公司,一定要帮忙!
没过多久,张云帆就收到了陈睿发来的电子邮件,他的团队对teamspeaker的客户端做了逆向的分析并把软件的分析报告发给了张云帆,张云帆没看懂把邮件给我和李向明看,我们看了一下就安慰他说,没事,我们也没看懂。李向明比我经验还丰富,他仔细看了邮件后说这只是一份的软件分析报告,里面列举了这个teamspeaker客户端依赖的动态连接库,没有更多的信息,通俗一点就是陈睿的邮件里说了很多但等于啥都没说。
李向明是我大学的同学,当时做 Palm OS软件开发,经验非常丰富,很年轻就和朋友合作出过一本Palm OS开发的书,由于李学凌老大要求我找一些技术高手来多玩,我就推荐了李向明。当时我们的系统基本就是用 Java 开发,性能不高,李老大很渴望团队里有C的程序员,这样我们就能解决许多系统的性能问题,由于在Palm OS做开发要用到C语言,于是李学凌老大就说服李向明进入多玩工作。
原本 teamspeaker 这个事情就该这样过去了,毕竟当时金山毒霸的技术总监陈睿都没搞定的事情,我们这些菜鸟还能做什么呢?可是我不甘心,我当时虽然是一个菜鸟,但同时也是一个打不死的小强,即便身穿黄金圣衣的陈睿都砸不开的叹息之墙,我的天马流星拳也要在上面砸出条缝来。
我想既然我们没办法从 teamspeaker 的客户端入手,那从 teamspeaker 服务器端入手或许是走得通,我和张云帆提了我的想法,我说,假如我能够把用户在多玩通行证的数据同步到 teamspeaker 的本地数据库里,这样用户在 teamspeaker 客户端上填上我们的服务器的ip地址和端口和多玩通行证用户密码就可以登录到我们的teamspeaker server了,你看这样行不?尽管这样用户体验很一般,张云帆还是接受了我的方案,剩下来的,就是要看我能不能搞定teamspeaker服务器端的数据库。
teamspeaker服务器端在初次启动时会在本地创建一个 Sqlite 的嵌入数据库文件用作保存聊天室的用户信息和用户创建的频道, 这个 Sqlite 数据库文件是需要密码才能打开的,我当时没有能力去破解这个密码,但是经过我研究,发现 teamspeaker 服务器端也支持用 Mysql 保存用户数据和频道的配置,但只支持 Mysql 3.x,那时我们已经用上了mysql 4.x 所以一开始测试总是不通过,发现这个细节后事情变得非常简单,我编译构建一个mysql 3.x,让 teamspeaker 服务器端初次启动时连上这个mysql 3.x,初始化数据库表,这样只要我分析那些数据表的结构就知道怎样往里面添加 teamspeaker 的用户信息了。
等张云帆、李向明等人回到公司,我给大家简单的做了一个演示,李向明说他可以写一个Windows程序作为外壳程序,把 teamseaker客户端打包在里面,这个Windows外壳程序运行时会把 teamseaker 客户端启动并且隐藏起来,当用户按下讲话的按键时,外壳程序会把这个按键的消息发送给teamseaker客户端进程,使得teamseaker客户端进入发送语音的状态,这样看起来用户是在用我们开发UI去做语音通话。李向明说,这个程序很简单可是他没有 Windows 程序开发的UI经验,于是他让公司花了100多块钱买了一个商业Windows UI开发库,后来对方还给我们邮寄了发票。
我这边的工作就更简单了,用户打开我们开发的外壳程序在一个嵌入了浏览器的界面里引导用户登录或者注册多玩的通行证,随后有个步骤让用户激活我们的 teamseaker 服务端的账号,其实就是把多玩通行证的用户id同步一份到 teamseaker 服务端的mysql数据库里面。这种原生Windows程序加Web的应用现在很流行,可比起当时远在北京的小林(lxl) 搞的DWS,我们还是差远了。
过了一两天,李向明开发的调用teamseaker客户端外壳程序开发好了,我们简单做了测试没发现问题,就把语音系统上线,不记得是张云帆还是李学凌老大起的名字,这个软件的名字就叫多玩DTS,D就是duowan的首字母,TS就是 teamspeake r的缩写。
张云帆经常打电话找雷军帮忙解除服务器的防火墙策略
多玩DTS的服务端所使用的还是雷军借给当初我们的那台4G内存的服务,上面运行着多玩通行证系统,魔兽搜索引擎已经被迁移走了,因此我可以把teamspeaker服务器端和mysql 3.x 和通行证与通行证所使用的 Mysql 4.x 部署在一起。
其实我很怕使用雷军借给我们的这台服务器,因为这台服务器处于金山公司的核心数据机房,从名字上来看,这个的区域的服务器是不该提供http web服务的,因此金山的运维们总是很敬业的给我们的服务器加上防火墙策略使得我们的通行证系统无法访问,每当这个时候张云帆就会不顾一切的给雷军打电话,雷军当时很忙,经常在一些重要的会议里接到张云帆求助电话。
由于这个时候张云帆运营的游戏公会系统因为实在太火爆了几乎耗尽了我们所有的硬件资源,我没有选择,才只好把多玩DTS的服务和通行证放在一起,幸运的是,可能雷军出面给我们解除防火墙策略的次数实在太多了,多玩DTS的服务上线后金山的运维再也没对我们这台服务器设防火墙策略了,这样的事情哪怕在当时也是不可思议的。
上线这天,我临时开发了一个 jsp 页面可以做一些简单用户管理的操作,交给盈盈(张云帆当时的女朋友后来的张夫人)使用,因为是由她担任多玩DTS的管理员兼客服;teamseaker 有自己的后台管理界面,他们本来就很熟悉操作,我反而不会使用。
多玩DTS的运营的过程我就不清楚了,因为完成这个工作没过几天,我就要到北京去出差,公司把李欢开发的多玩CMS卖给一个门户网站,我负责到客户那里安装部署,教客户的编辑使用。我到北京这一去就是一个多月,那段时间里多玩通行证和多玩DTS居然非常稳定没有发生过一次问题需要我去处理的,于是我就渐渐忘记多玩DTS这个产品了。
等我回到广州后发现一些编辑们在开着多玩DTS语音,我才想起来在我离开广州去北京前还整了个这样的系统,我问盈盈说,有多少用户啦?她打开teamseaker后台管理界面给我看,只见里面密密麻麻都是用户开通的聊天频道,可是我没看到注册用户数,于是我到 Mysql 数据库里去查看,原来多玩DTS运营两个月不到获得注册用户22万,我把这个数据告诉大家,毫无疑问,这是多玩创办一年不到的时间里第三个成功的产品,可能是大家已经习惯了这一路上不断的成功,也有可能是大家已经忙不过来了,这一次大家的表现得相对淡定。我发现离开的这一个多月的时间里公司的产品多了几个,小钟从大学毕业后正式到多玩上班也开发了一个产品在线上运营效果还不错,看来在老张运营下在大半年的时间里多玩网已经形成了一个产品矩阵的布局。
直到很久以后,我才知道多玩DTS语音通信之所以能够承载那么多用户语音聊天主要是因为teamseaker用了一个叫 Speex 的语音编解码库,因为后来我在做一些语音通信产品开发时也用了 Speex 了一点对了解,这个库针专门对人声做了优化,编码出来的音频数据非常小,并且在一个频道里 teamseaker 同时只允许一个用户讲话,在没人说话的时候几乎不会有网络流量,因此 teamseaker 对带宽资源消耗非常低,这使得我们在一台资源非常有限的服务器上支撑了大量的用户,当时我们还没有能力做运维体系建设,因此一些不好用户体验我们也监测不到。
至于张云帆、刘涛,Toby等人是如何把一个产品在两个月不到的时间里获得22万注册用户的,automan(刘红柳)认为老张他们牢牢的抓住了《魔兽世界》的机遇,在我看来,刘涛,Toby等人的运营能力很强,至于是怎么做到的,我就不太清楚了。
张云帆的多玩DTS给多玩打开了一扇门,开启了一个时代,从技术层面来看多玩DTS与后面的YY语音没有任何关系,通过 Speex 本上只适合处理人的声音而对音乐歌曲这些音频处理则很糟糕;后来YY语音的应用场景包括直播、秀场是需要承载高清语音,音频编解码的方式肯定不一样。YY语音是后另外组建的团队开发的,里面的情况直到现在我都不清楚。
2011年时我偶然看到李学凌老大发了个微博,里面是一张多玩DTS的截图,李老大微博的内容大意是说,这是YY语音多前身多玩DTS,欢聚时代早在2005年时已经有了自己的语音通信产品,这是我最后一次看到多玩DTS的界面,因为我自己从来就没保留过一张多玩DTS的UI截图。
假如。。。。
前些年,我发现B站的CEO叫陈睿,来自金山公司,后来我也买了一点B站的美股,于是在一些安静的夜晚里盯着B站的股票的时候我会天马行空的想一个问题,假如我们当时继续要求陈睿帮我们,假如陈睿当时帮我们搞定了音频通信,后来的历史会不会被改变?我认为存在一个这样的可能,多玩一定会争取或者说服陈睿加盟多玩担任CTO,据说张云帆和陈睿是很好的朋友,而假如陈睿真的担任多玩的CTO,今天的B站又会是怎样呢?
有没存在这样一种可能,在2005年那个夏天,我们或许改变了今天的Bilibili,所以看到这里B站的UP主和用户们要不要给一个一键三连呢?
张云帆在多玩创办不到一年的时间里,连续推出的多玩魔兽搜索引擎,多玩游戏公会系统,多玩DTS语音系统都获得了巨大的成功,我们这些做技术的人也在老同事的圈子里获得了大家的尊重,过去大家叫我小x,后来许多人都叫我x总,x叔;由于我参与开发了YY语音的前身多玩DTS,于是总是有些老同事开玩笑说我是YY之父(The Father of YY),李欢甚至说李学凌应该在欢聚大厦里给我们这些做技术的每一个人都立一个铜像,我认为这样说不对,因为如果大家仔细读完这三个产品的故事会发现其实技术在这里面并不重要,整个过程基本上就是老张有一个想法,我们把产品开发出来然后就爆款吸引到了许多活跃的注册用户。
这里要强调的是“技术不重要”这种话不是什么人都可以说的,说这个话的人要么很有钱可以雇得到任何他想要的技术大佬,要么说这话的人本身就是技术大佬,又或者是一些团队里的灵魂人物可以让团队里面的每一个人都围着自己转;不具备这三个条件之一开口便说“技术不重要”是一件很失礼的事,老张显然是有资格说这句话的人。
我们要相信“陪伴”的力量
2005年时的骏景花园小区里有许多和我们一样的创业公司,多玩网这个创业团队有幸的在这个小区里活了下来搬到了附近科韵路成为一家有影响力的互联网公司。
有一位网易老同事听过我们经历后说,李学凌在创业的过程中应该是非常孤独难受,你们这些人陪伴在他身边即使什么事情都不做就已经是对他最大的支持了。我不完全认同这位老同事说的话,事情还是做了一点点,不过因为我不玩网游,我对多玩的用户几乎没有感情,在我整个职业生涯里我最在乎的是QQ秀的用户,在团队里最在乎这些游戏玩家的人应该是张云帆。
我也相信“陪伴”的力量,如果有一天我在做一个项目,有那么几个兄弟陪伴着我,即使他们什么都不做,代码由我来写,电路板让我来画,我也会很感激的。
附录:
文章中提到,雷军请张云帆给金山公司的总监讲课,讲完课后,雷军与张云帆在酒店还聊了半个通宵,其中雷军讲了一个故事,张云帆回到广州后跟我们讲了几次这个故事,我根据老张的口述摘录如下:
故事的主角也是一名程序员,一名金山公司的离职程序员,雷军对这名程序员似乎念念不忘,或许因为如此,张云帆在办公室里也把这故事讲了几次,于是我也记住了这个人,但所有人都不曾提起他的名字。
这个程序员好像也是学历不高,来金山面试,要求很低,低到没法再低,就是有个地方可以睡觉,有点零用钱就可以了;后面事实也证明了这名程序员确实每天除了埋头干活什么事都不管,真的是给他一张床睡觉就很满意了,在技术能力方面非常厉害,一个人闷头写了大量的代码。
就这样一个程序员,却不知道为什么老招他的顶头上司不满意,老是为难他,老是和他过不去;最终这个程序员实在受不了提出辞职,雷军找这个程序员谈话,在雷军的办公室里两个人谈了半小时,这个人还是决定要辞职,于是没办法,这人最后还是离职了。
事后,这程序员的经理还和雷军说,这程序员怎样怎样不好,雷军当时就发怒了说:这人和我谈了半个小时,压根就没提你的名字。
根据张云帆说,提到这事雷军很感慨:这么好的一个程序员,就这样走了;这么好的一个程序员,就这样走了;我虽然不在现场,但是我能听得出来那个声音透露出来的遗憾:这么好的一个程序员,就这样走了。