• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Fork me on GitHub
            隨筆 - 215  文章 - 13  trackbacks - 0
            <2017年3月>
            2627281234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678


            專注即時(shí)通訊及網(wǎng)游服務(wù)端編程
            ------------------------------------
            Openresty 官方模塊
            Openresty 標(biāo)準(zhǔn)模塊(Opm)
            Openresty 三方模塊
            ------------------------------------
            本博收藏大部分文章為轉(zhuǎn)載,并在文章開頭給出了原文出處,如有再轉(zhuǎn),敬請(qǐng)保留相關(guān)信息,這是大家對(duì)原創(chuàng)作者勞動(dòng)成果的自覺尊重!!如為您帶來不便,請(qǐng)于本博下留言,謝謝配合。

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            相冊(cè)

            Awesome

            Blog

            Book

            GitHub

            Link

            搜索

            •  

            積分與排名

            • 積分 - 216756
            • 排名 - 118

            最新評(píng)論

            閱讀排行榜

            https://www.zhihu.com/question/20405300?sort=created&page=1
            慶亮,廣州明朝,關(guān)注erlang/c/hadoop,輕微代…
            Lonng知乎用戶、liberal 等人贊同
            @龐巍偉@貓糧 等同學(xué)的回答基本上都是點(diǎn)中關(guān)鍵點(diǎn)了,但是部分內(nèi)容需要糾正下。

            作為算是第一批Erlang應(yīng)用于webgame(說是始作俑者也不為過)的家伙,補(bǔ)充點(diǎn)當(dāng)年的實(shí)際決策情況,順便糾正幾個(gè)錯(cuò)誤的認(rèn)識(shí),也算是自黑了不少:

            PS:
            1. 以下內(nèi)容都是實(shí)際在09-10年工作期間的真實(shí)情況,但是會(huì)盡量少八卦
            2. 選擇什么并不一定重要,做出選擇才重要
            3. 文中如果戳中某些人痛點(diǎn)請(qǐng)不要罵娘
            4. 目前還在游戲行業(yè),頁(yè)游、手游領(lǐng)域都有涉及,Erlang也一路堅(jiān)持了下來,大愛!
            5. 沒深入研究過Erlang的同學(xué),請(qǐng)不要瞎評(píng)論了,負(fù)點(diǎn)責(zé)任好嗎?搞得好像自己是個(gè)神,不管什么語(yǔ)言寫兩行就知道精髓了
            6. 這不是個(gè)語(yǔ)言爭(zhēng)論的回復(fù),請(qǐng)勿討論誰(shuí)更好,但是歡迎討論各個(gè)語(yǔ)言的優(yōu)劣勢(shì)以及如何揚(yáng)長(zhǎng)避短

            1. 頁(yè)游07-09,草根的春天
            國(guó)內(nèi)頁(yè)游從07年其實(shí)就有崛起之勢(shì),特別是“五分鐘”團(tuán)隊(duì)推出“偷菜”之后,大眾對(duì)游戲的態(tài)度慢慢開始改變,由抵制、打擊變?yōu)楹侠淼慕邮堋?然而由于webgame門檻低、前期市場(chǎng)規(guī)模小、天生基于web,造成了早期的webgame很多都是基于PHP、Java、ASP這些在傳統(tǒng)端游開發(fā)者看起來很不靠譜的編程語(yǔ)言(在珠三角以PHP最為主流),例如縱橫天下、熱血三國(guó)、商業(yè)大亨、彈彈堂、明朝時(shí)代等;順便提下漢森的《傾城》,Java前后端,在當(dāng)時(shí)的視覺效果真的很好,可惜內(nèi)部出了問題,源碼泄露、私服泛濫。

            明朝時(shí)代截圖:


            09年我來到《明朝時(shí)代》團(tuán)隊(duì)時(shí),覺得:我靠,太cool了,PHP居然能夠?qū)懹螒颍。。?居然!!!
            ===
            呵呵,很多同學(xué)可能就會(huì)覺得“那是你沒見識(shí),游戲的技術(shù)早就成熟了,你居然還在佩服這種低級(jí)玩意”;對(duì),當(dāng)時(shí)的確是沒有見識(shí);但是更多的是當(dāng)年作為一個(gè)新手(只有PHP自學(xué)的經(jīng)驗(yàn))對(duì)技術(shù)的渴望 --- 技術(shù)追求的狂熱是被不應(yīng)該被語(yǔ)言所限制的,就像愛情不分種族。但是不少同學(xué)最覺得只有學(xué)習(xí)C++才是有追求的【不喜勿噴,你可能不是,但是你看看周圍吧,多數(shù)的C++同學(xué)是這么思考的,等會(huì)我還會(huì)提個(gè)關(guān)于C++的八卦】。

            這個(gè)時(shí)期頁(yè)游的特點(diǎn):技術(shù)門檻底、SLG橫行、品質(zhì)離端游差距巨大;由于這些原因,端游方面的人才基本都不愿意去搞頁(yè)游,非常能夠理解這樣的想法,因?yàn)楦杏X起來是一種技術(shù)倒退;不過就市場(chǎng)來說,產(chǎn)品需求至上,技術(shù)是否先進(jìn)不能代表一切【理性思考方式之一:不要用觀點(diǎn)A的正確來證明B的錯(cuò)誤】。


            2. 09-10,我們遇到了問題,認(rèn)識(shí)了Erlang,選擇了Erlang

            在2009年大概是8、9月的樣子,我們看到一款游戲叫做《戰(zhàn)斧》(2.5D即時(shí)戰(zhàn)斗網(wǎng)頁(yè)游戲《戰(zhàn)斧OL》精美截圖曝光),這是一款09年的基于Flash的網(wǎng)頁(yè)ARPG,當(dāng)時(shí)我們看到demo視頻的時(shí)候以為是一款客戶端(再次原諒我的淺薄,當(dāng)時(shí)真的沒有想到網(wǎng)頁(yè)上可以做出來實(shí)時(shí)戰(zhàn)斗游戲),當(dāng)時(shí)的心情是:我靠,太cool了(=_=!),我們TMD還在搞什么鳥的SLG,技術(shù)太落后了!!!



            2009年10月,《明朝時(shí)代》由于技術(shù)改進(jìn),引入了Ejabberd(erlang著名的開源聊天服務(wù)套件)作為游戲的聊天服務(wù)器,但是在使用過程中遇到了些技術(shù)問題,高潮來了:我們?cè)诓欢瓻rlang的情況下,嘗試修改Ejabberd的源碼,居然解決了我們的性能需求!當(dāng)時(shí)我一方面佩服我當(dāng)時(shí)的老大,一方面驚異于Erlang的神奇:要是C++端,有個(gè)10W行代碼,你敢隨便改嗎?

            2009年11月,ECUG在杭州召開,我們幾個(gè)PHP都跑去膜拜各路大神,順便請(qǐng)教一下他們?cè)贓rlang方面的看法。 期間結(jié)識(shí)了 @余鋒 (不用介紹了吧) 立濤 @趙東煒 金尹 (這兩位是《Erlang程序設(shè)計(jì)》的譯者) @許式偉 (許總當(dāng)年還沒有找到golang) 老范(erlbattle - 惡狼戰(zhàn)役->基于Erlang語(yǔ)言的實(shí)時(shí)技術(shù)學(xué)習(xí)平臺(tái)[Erl Base actual time technic learnning env.]) 侯明園、李杰、崔博、Python大媽(一開始沒認(rèn)出來)一大批牛人以及周愛民老師。云風(fēng)當(dāng)時(shí)路過了下,沒有機(jī)會(huì)深入請(qǐng)教。



            這次技術(shù)會(huì)議應(yīng)該是我目前為止收貨最大的一次,當(dāng)時(shí)聽了余老大的PPT基本一遍就記住了(不是懂了),后來請(qǐng)教了以上諸位牛人的建議(當(dāng)然主要還是余老大給的信心),各位也坦言用Erlang必然會(huì)遇到些問題,但是說實(shí)話,哪門子語(yǔ)言對(duì)于我們來說不會(huì)遇到問題呢?因此考慮了如下幾點(diǎn)之后,我們選擇了Erlang作為服務(wù)端語(yǔ)言:
            a. Erlang的入門真的很簡(jiǎn)單(有同學(xué)說不簡(jiǎn)單,那我沒辦法)
            b. 不懂C++,Java呢又覺得臃腫
            c. PHP當(dāng)時(shí)有團(tuán)隊(duì)驗(yàn)證搞ARPG不太適合(c擴(kuò)展方式我們也搞不定)
            d. 網(wǎng)頁(yè)游戲當(dāng)時(shí)“唯快不破”【當(dāng)時(shí)的市場(chǎng)決定的】
            e. 熱更新對(duì)于在測(cè)試、技術(shù)能力上偏弱的一幫人來說,吸引力太大
            f. 1:1模型對(duì)于編程復(fù)雜度的降低有非常直接的幫助【呵呵,麻煩沒有實(shí)踐過的同學(xué)不要瞎批評(píng)好嗎?有時(shí)真的不太懂,你都沒有搞過,怎么就敢理直氣壯】
            g. 天生分布式【誰(shuí)用誰(shuí)知道】

            -----
            根據(jù) @bhuztez 的指正,用M:N的說法的確更合適,1:1其實(shí)是粒度的不同產(chǎn)生的說法,例如一個(gè)玩家一個(gè)網(wǎng)絡(luò)進(jìn)程,就是1:1,但是一個(gè)玩家一個(gè)進(jìn)程就不合適了,這個(gè)時(shí)候可能是1:N了。

            八卦一:技術(shù)會(huì)議本身是開放的,大家有意見討論是正常的;ECUG杭州期間,Erlang主題的時(shí)候(忘記是哪位的主題了),兩位C++同學(xué)一開始是各自向演講者提問的,后來兩位直接爭(zhēng)起來了;隨著接觸C++同學(xué)越來越多,發(fā)現(xiàn)C++同學(xué)較為容易鄙視其他C++同學(xué)的做法,總是認(rèn)為自己的做法才是符合C++的精髓;結(jié)果呢,高手本來就少,還很容易有鄙視鏈。 這個(gè)也是我對(duì)C++感覺心累的原因之一(我C++沒學(xué)好,就不去評(píng)論C++本身了)。

            3. 10年,踩坑、填坑Erlang

            2010.1.1 我們團(tuán)隊(duì)4個(gè)人沒有放假,過來公司寫代碼,因?yàn)閷?shí)在太興奮了---對(duì)于沒有寫過ARPG的人來說,這實(shí)在太讓人激動(dòng)了!
            我們參考了RabbitMQ的代碼結(jié)構(gòu)和網(wǎng)絡(luò)部分把框架搭建起來了,基本上是三天左右,這期間還一邊在看書;使用了google protobuff作為通訊協(xié)議,順便修正了部分protobuff第三庫(kù)的一些bug,花了一周多時(shí)間;然后陸續(xù)花了2、3周的時(shí)間去做了幾個(gè)簡(jiǎn)單功能,創(chuàng)建角色、登陸、場(chǎng)景、組隊(duì)、怪物、戰(zhàn)斗,我們把這個(gè)游戲demo稱為mgee(mingchao game engine of erlang version,哈哈,好掉渣的英語(yǔ),當(dāng)時(shí)以為自己能搞個(gè)引擎,其實(shí)是無知者無畏),至于流傳到了多少地方應(yīng)該沒法統(tǒng)計(jì)了,有幾個(gè)三本學(xué)校開Erlang課程用的就是mgee作為基礎(chǔ)。

            到了2010.2月X號(hào),我忘記了,反正后天就是年30了,mgee作為demo已經(jīng)完成了使命,我們壓測(cè)了一下發(fā)現(xiàn)只有500的承載能力,這個(gè)促使我們?nèi)チ私飧嗟挠螒蚣軜?gòu)知識(shí)。

            2010.3月,春節(jié)回來,我們團(tuán)隊(duì)到處找人請(qǐng)假,當(dāng)時(shí)征途團(tuán)隊(duì)的技術(shù)負(fù)責(zé)人過來一次過廣州,但是比較可惜沒能有機(jī)會(huì)當(dāng)面請(qǐng)教;后來呢,在網(wǎng)上找到一些資料,講的是征途、天龍、魔獸世界等游戲的架構(gòu)(有些是作者猜的),附上一些圖給大家看下我們當(dāng)年看到的資料:

            天龍服務(wù)端架構(gòu)思路:
            bigworld:



            QQ游戲大廳:

            基于這樣的資料和我們自己的經(jīng)驗(yàn),我們做了《明朝傳奇》,在線最高到了3100。這期間我們搞明白了1:1該怎么用,mnesia該怎么用,哪些東西是Erlang可以搞得定的(除了怪物尋路,其他邏輯都是基于Erlang),最終明白了一個(gè)道理:用不用的好看你個(gè)人,語(yǔ)言的約束對(duì)群體有效,對(duì)個(gè)體不一定有效(類似統(tǒng)計(jì)與概率),我們從來不鼓吹別人去用Erlang(大家為什么用Erlang,我們只能算是開了頭,不是鼓吹者),我們只是告訴你,用Erlang也可以用得好。

            4. 2011-2012年,Erlang服務(wù)端框架簡(jiǎn)化

            當(dāng)時(shí)幾個(gè)事情促使了我們?cè)偻耙徊剑?br />a. 明朝傳奇的代碼我們搞的太復(fù)雜,開發(fā)和運(yùn)行效率都不夠高,代碼難以掌握
            b. 當(dāng)時(shí)光環(huán)的 @達(dá)達(dá)來討論如何一機(jī)多服,給我們帶來了思路上的很大沖擊:成本控制
            c. 頂端的Erlang不好培養(yǎng)

            基于上面的原因,我們希望新的erlang服務(wù)端框架有如下特征:
            a. 簡(jiǎn)單、簡(jiǎn)單到發(fā)指, @謝廷寶 當(dāng)時(shí)大寶推薦了一種服務(wù)端設(shè)計(jì)的簡(jiǎn)單標(biāo)準(zhǔn):有語(yǔ)言經(jīng)驗(yàn)的人就能看得懂(并非100%掌握),也就是說看到API知道怎么寫功能。 這里可能有人會(huì)吐槽了,你把框架搞的這么強(qiáng),那些新人能學(xué)到什么? 呵呵,源碼在內(nèi)部是100%開放,每周都有內(nèi)部分享來分析現(xiàn)有的實(shí)現(xiàn)的優(yōu)缺點(diǎn),每個(gè)人都可以在經(jīng)過審查后修改核心實(shí)現(xiàn),為什么會(huì)限制新人呢?總有些人討論問題喜歡偷換概念,也喜歡指責(zé)別人自己做不到的事情。

            b. 性能高,上面龐巍偉同學(xué)提到的2000在線是不對(duì)的,當(dāng)時(shí)捷游的夢(mèng)幻飛仙過了4700(不分線、回合);而我們的《仙落凡塵》則是不分線ARPG的情況下到了4300(4399 1服),就當(dāng)時(shí)的CPU和內(nèi)存使用情況來說,1/3的資源不到。(當(dāng)時(shí)沒有辦法了,游戲地圖設(shè)計(jì)的不夠大,玩家進(jìn)入游戲后實(shí)在太擠了)

            在原則a的指導(dǎo)下,新人花三天看書、3天寫點(diǎn)入門代碼,1周的確是可以去寫點(diǎn)簡(jiǎn)單的功能的。(在珠三角的同學(xué)歡迎當(dāng)面來討論驗(yàn)證)但是如果你要求1周就能多么熟悉、深入,這誰(shuí)也做不到。

            4. 2013-2015,Erlang在內(nèi)部算是真正的落地

            真要讓一門技術(shù)變?yōu)榻鉀Q方案,光靠堅(jiān)持不夠,我們?cè)趦?nèi)部也做了一些事情來幫助Erlang在內(nèi)部至少可以形成簡(jiǎn)單的生態(tài)群:
            a. 成立虛擬的Erlang框架引擎組,負(fù)責(zé)在各個(gè)項(xiàng)目組之間同步優(yōu)秀代碼、統(tǒng)一基礎(chǔ)框架、剝離業(yè)務(wù)抽象邏輯【由于這邊的文化氛圍,推進(jìn)起來相對(duì)容易】
            b. 剝離公用非游戲?qū)S梅?wù),例如mlog(通用日志服務(wù))、mbd(通用大數(shù)據(jù)服務(wù))、mchat(通用聊天監(jiān)控服務(wù))、mservice(通用托管服務(wù)),提供給各部門各項(xiàng)目使用

            這樣,配合少量開源庫(kù),基本上能夠做到快速穩(wěn)定高效,也不會(huì)那么容易遇到技術(shù)瓶頸,技術(shù)的應(yīng)用方向也不會(huì)太狹隘。

            5. 一點(diǎn)總結(jié)

            a. 用了Erlang接近5年,越是深入越是覺得Erlang神奇,集中點(diǎn)還是Erlang的設(shè)計(jì)哲學(xué),這里推薦一篇文章: Erlang的調(diào)度原理(譯文)來了解下。
            b. 我從c/php/erlang一路走過來,算是對(duì)編譯型、腳本、函數(shù)式語(yǔ)言有個(gè)比較橫向的了解,推薦時(shí)間較寬裕的同學(xué)深入學(xué)學(xué)Erlang,不一樣的哲學(xué)會(huì)極大的豐富你的世界觀,影響你的方法論(好吧,看起來有點(diǎn)雞湯了)
            c. 像分布式、熱更新等都是非常重要的基礎(chǔ)設(shè)施,真正的高手自然不需要,但是你是否需要這些還是可以判斷的(多數(shù)人并非天才)
            d. 感謝 @余鋒 這樣的人一直在堅(jiān)持,總有人會(huì)讓你覺得感動(dòng),感動(dòng)于他們的堅(jiān)持、分享,世界并非非黑即白,而是多姿多彩。Erlang、C++、C、PHP、Scala都是一部分。
            e. 你或者你們團(tuán)隊(duì)用不用Erlang,要看你或者你們團(tuán)隊(duì)的經(jīng)驗(yàn)、產(chǎn)品需要、職業(yè)發(fā)展、成本等來綜合考慮,并不是一句話能夠說明的清楚的。而我只是想說一般來說,堅(jiān)持能解決大部分問題,沒有多少所謂的彎路,Erlang和C++等語(yǔ)言誰(shuí)好誰(shuí)壞也不是一句話能定論的。

            6. 其他補(bǔ)充


            a. 當(dāng)年的游戲服務(wù)端demo:qingliangcn/mgee · GitHub
            posted on 2016-03-14 17:12 思月行云 閱讀(2262) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Erlang
            蜜桃麻豆www久久| 国内精品人妻无码久久久影院导航 | 久久久久国产亚洲AV麻豆| 久久天天躁狠狠躁夜夜不卡| 伊人久久亚洲综合影院| 久久婷婷五月综合97色一本一本 | 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 日韩精品久久无码中文字幕| 久久九九有精品国产23百花影院| 久久AAAA片一区二区| 久久丫精品国产亚洲av不卡 | 婷婷久久综合九色综合九七| 久久久久久毛片免费播放| 久久久久国产精品三级网| 国产午夜精品久久久久免费视| 久久人人爽人人爽AV片| 久久精品九九亚洲精品天堂| 伊人久久大香线蕉综合5g| 蜜桃麻豆www久久| 久久综合给合久久狠狠狠97色| 久久综合伊人77777| 办公室久久精品| 国产精品一区二区久久| 亚洲国产精品无码久久一线| 久久精品亚洲精品国产欧美| 久久精品国产影库免费看 | 精品久久久久久久中文字幕| 97久久精品无码一区二区| 亚洲国产精品久久电影欧美| 尹人香蕉久久99天天拍| 欧美久久天天综合香蕉伊| 免费国产99久久久香蕉| 久久精品国产亚洲一区二区| 国产亚洲精品自在久久| 精品久久久久久中文字幕人妻最新 | 久久久国产精品| 美女久久久久久| 亚洲精品99久久久久中文字幕| 亚洲成av人片不卡无码久久| 久久久WWW免费人成精品| 国内精品久久久久久久涩爱|