青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 14,  comments - 57,  trackbacks - 0

        2011已經謝幕了,現在都流行總結,要是讓我總結2011,可以用2個詞來概括,辛苦、刺激。
辛苦是因為2011基本上是加了一年班,從過完年開始,到2012年過年前最后一周,這一年來,是我感覺最辛苦的一年,好在最終
項目算是打了個翻身仗,心里總算有了些慰藉。

       2011年游戲經歷從技術封測、內測、公測到整改、重新內測公測,一路走來,遇到無數稀奇古怪的Bug,
有時候壓力大的時候,晚上都睡不著,腦子里回想著現場的一絲絲蛛絲馬跡,希望能找到bug的原因,經歷過無數次絕望到重生的喜悅,也有被猜忌不信任的痛苦,活脫脫就是一部部偵探劇情。
  沒有從事過游戲開發或者游戲沒上線的同學很難理解:bug有這么難找嗎?的確,如果是簡單的空指針宕機,當然是好找的,用我們的話,這類問題是個傻子都能解決(其實不然,很多時候直接原因是空指針,
真正的原因隱藏很深),但是更多的是隱藏很深的問題,需要反復的分析現場,假設劇情才能得到靈感,然后推演,才可能得到結果,當然,這個和游戲邏輯的復雜度是分不開的。
  具體的bug細節不便在此分析,但是大部分的問題,其實都是因為不正常的設計引起的,所以其實我一直在思考,在軟件開發領域,其實也存在著"道",說通俗點叫客觀規律,不按照道行事,遲早是要受到懲罰的。
但是在游戲后臺開發中,很多時候存在不同技術方案的矛盾,難以讓人取舍,這些矛盾都是真實在很多項目存在的。

動態內存還是靜態內存

      很多開發者由于擔心內存泄露,在項目中禁止使用動態內存(當然這實際上幾乎是做不到的),使用對象池來避免動態內存,就是預先創建預計最大數量的對象,后續申請和歸還的時候,都是操作對象池,
避免動態new和delete。這樣的項目還不少,我見過的就好幾個。對象池的好處是顯而易見的,基本上可以避免內存泄露。但是實際上,這種方式是把雙刃劍,個人覺得在游戲項目中,這種方式弊大于利。
主要弊端有下面幾點:
1、開發不方便,導致需要添加很多的對象池管理類,即使有模板幫忙,也是非常繁瑣的。實際開發中,幾乎不可能對這些小對象類都搞一個對象池管理類。

2、由于采用預先生成對象,一般會預估一個對象可能存在的最大數量,然后按照最大數量來創建,浪費內存。
  的確,你沒有內存泄露,但是你啟動的時候就需要好幾個G的內存,這個是內存浪費,好在現在server開發基本都是64位,沒有地址空間的困擾了,但是,在大部分情況下浪費好幾個G的內存,
光想想都有點心疼。

3、引入了新的風險,由于采用對象池,申請新對象的時候,只是簡單的pop一個空閑對象就可以了,很容易漏掉對象初始化的工作,在回收對象的時候,大部分開發者也很容易漏掉清理工作,或者初始化和
清理工作過于簡單,這樣容易導致新對象被歷史操作影響。曾經遇到過一個新FB所有傳送點都打不開的問題,就是因為歷史對象回收時數據沒清理導致的。

    回頭來看對象池的優點,很多開發者堅持是為了解決內存碎片和內存泄露。先說內存碎片,暫且不說內存碎片真的是否有這么嚴重,退一步,其實內存碎片已經有很多的成熟解決方案了,自己重載smallObject還是
采用標準的tcmalloc解決,都是非常輕松的。至于內存泄露,個人覺得這個問題其實是很好查的,也是c++程序員的基本要求。

分模塊針對接口編程還是一鍋粥

     這個問題單獨提出來,幾乎所有人都會說,當然是分模塊針對接口開發了。和天下所有的事情一樣,知易行難。由于游戲邏輯項目影響的地方非常多,比如死亡的時候,既需要判斷死亡掉落,又需要處理任務狀態,
如果在戰場和競技場中,還要判斷基數和得分等等,這就導致很多開發者不假思索的把所有的東西都揉在一起,你中有我,我中有你,我改你的代碼你改我的。
一個最簡單的例子,我在項目中開發掉落功能,當把物品添加到玩家背包后,發現客戶端沒有更新背包,一查,居然還需要掉落的開發者自己構造數據包同步客戶端,其實作為其他模塊,根本不關心背包數據同步的細節。
這個其實在現實生活中很常見,我委托背包模塊添加一個物品,具體的細節是被由被委托人來負責的。將過多的細節交給其他模塊處理,會導致復雜度增加,容易出現問題,對其他人來說,也是一個精力浪費,如果是一個復雜
模塊,你會發現需要了解太多的細節,修改太多自己不熟悉的代碼,進而導致風險。還有一種觀點,認為一鍋粥的開發方式有助于了解游戲的各個業務模塊,對這種觀點,我是不以為然的,每天陷入到繁瑣的細節,真的對熟悉業務有好處嗎?或許閑下來玩玩游戲更有幫助,而且,這么亂的代碼,看起來也是非常累的。分模塊開發,具體的辦法,游戲編程精粹5上有篇文章寫得很好,這里不擴展了。

真的需要禁用STL嗎

  不止一次在和其他項目交流的資料里看到對方很威嚴的宣稱在項目里禁止使用STL。說實話,我還真沒覺得STL有什么不好。見過太多這類項目自己重復實現一個個蹩腳的排序算法、容器等等。
大部分人一般都會根據經驗選擇使用自己熟悉的技術,這個無可厚非,但是像這樣明著禁止使用STL,真不知道如何能理直氣壯。其實大部分不用STL的理由,基本上都是不熟悉,完全沒有足夠的理由禁止使用。

游戲開發無技術含量?
 
    曾經多次聽到行業內的兄弟有此感慨,確實,游戲邏輯復雜度非常高,架構上大部分都是類似的。但是這并不說明游戲后臺開發復雜度不高,如何將游戲開發邏輯復雜剝離開來,做到穩定高效開發,其實還是有很多
東西可以探討的,看看那些項目,大部分都是一鍋粥,需要什么功能就蠻干,加上去,這樣確實毫無技術含量,都是蠻干。所以,一件事情是否有技術含量,不光是看事情本身,還要看怎么干,蠻干和苦干,那是最沒有技術
含量的方式了,程序員還是要有強烈的“偷懶”意識。

 

posted on 2012-02-16 21:00 feixuwu 閱讀(769) 評論(4)  編輯 收藏 引用 所屬分類: 游戲開發

FeedBack:
# re: 項目開發中的一些思考
2012-02-17 11:28 | 楊粼波
1.對于STL這樣的態度的公司或團隊,不乏少數。其實,不論從容器還是算法來說,STL提供的容器和算法足夠大部分情況下的使用。boost也同樣好。當然,主要還是要能夠掌控他們,否則就如脫韁野馬。好與不好,合適就好。

2.關于游戲開發的技術含量,還是有的。在我的定義里面,游戲開發其實還是一種應用。所以相對于那些高深的研究來說,還是相對要技術含量低,特別是在國內一把抄的前提下。就服務器而言,最基礎的是要提供穩定的底層,而后隨著人數的承載量增長,對于服務器的架構設計要求也是越來越高的。就管理而言,要保證幾十號人工作如一人,項目管理能力同樣重要。

3.關于內存管理,得就事論事,合適就好。先用最普通的內存分配方式實現,如果不合適了再行優化。Premature optimization is the root of all evil.

4.如果能夠在設計最初就劃分好模塊,那再好不過,因為這樣就可以把功能細分了,功能能細分了,這樣就能夠把任務更細的劃分到每一個實現人身上。但若一開始無法劃分,那就不要劃分,這樣反倒會束手束腳,那就先實現,完成后再重構。其實你說的情況不是一個模塊劃分,接口的問題,而是一個高耦合的情況。“高內聚,低耦合”這都沒做到,自然的,就更不要談什么模塊和接口了。如果你們能夠達到這點,就不會亂到一鍋粥了。要堅持不斷重構,其中的好處,你們越到后面,越能夠體會到。  回復  更多評論
  
# re: 項目開發中的一些思考
2012-02-18 11:54 | feixuwu
同意部分觀點,歡迎大家探討。
1、其實按照模塊劃分,針對接口開發,組件式開發這類東西,在游戲項目中已經很成熟了,很多項目都是這樣做的,不存在什么問題和難點。

2、至于先實現再重構,個人覺得很難,游戲項目大部分時間緊,越到后面壓力越大,很難到后面來調動大家積極性來重構,也很難抽出時間來重構,風險也非常大。過多的重構還不如做之前多規劃。

3、內存管理的優化,其實不需要代碼做出優化修改,發布的時候鏈接下特定庫就行,無需人工參與和修改代碼,對開發者基本是透明的。

4、不過不是好的東西就容易推,要打破現有或者歷史結構,在哪個項目都不是件容易的事情,大部分情況下,只能互相妥協。和生活中很多事情一樣,做事情之前,首先要取得別人的信任,否則多半是做不成的。
  回復  更多評論
  
# re: 項目開發中的一些思考[未登錄]
2012-02-19 10:27 | 楊粼波
模塊啊,接口這些,技術肯定是成熟的。問題是你如何去實施。這些關鍵是你如何去劃分功能,如何去設計接口,難度在這里,而不是說為了用而用。這需要很好的設計能力,掌控力。如果是掌控不了的東西,不如不用。其實對于游戲這種應用,很多時候,也不必要去做這樣的設計,只要把低耦合做好了,一樣好使。

重構對于大部分項目來說,是不可能的任務,如果開發者能力還可以,那倒是無所謂,如果不好,連正常跑都是個問題,那會死得很難看,就更不要說什么應對變更的需求了。如果項目的核心有很好的管理和技術上的掌控,就不會有太多的問題,即便是在很緊迫的開發時間下。

內存管理上,你是用內存池,還是用對象池,這需要開發者的選擇的。服務器還需要考慮到多線程情況下的應用。有些特定情況下,加了反而會適得其反。

合適的就是最好的。  回復  更多評論
  
# re: 項目開發中的一些思考
2012-02-19 16:29 | feixuwu
在游戲開發領域,按照組件開發這種模式,在很多項目都實施過了,本人也參與過一些。不是理論上的泛泛而談,實施上和設計上都不存在難點了。

游戲領域的需求變更是常事,基本上每幾天一變都可能,甚至還沒做完就在變了,這個和傳統項目完全不同,對開發者是有一定要求的。

內存管理這塊通用的內存優化方案確實是不需要開發者參與了(當然,也固定了優化模式,不可能是對象池),無論是多線程還是單線程,性能都會有很大的提升。  回復  更多評論
  
<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

文章轉載請注明出處

常用鏈接

留言簿(11)

隨筆分類

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲天堂免费观看| 国产一区二区精品久久99| 亚洲日本一区二区| 亚洲高清自拍| 欧美日韩国产成人在线观看| 宅男噜噜噜66一区二区66| 亚洲经典在线看| 国产精品久久久久久久午夜 | 国产精品日韩精品| 欧美一区二区啪啪| 久久久另类综合| 亚洲经典在线| 一区二区三区波多野结衣在线观看| 欧美日韩国产专区| 欧美在线视频不卡| 免费亚洲一区| 亚洲欧美日韩国产中文| 久久天堂精品| 一区二区三区视频免费在线观看| 中文欧美日韩| 亚洲国产一区二区三区青草影视 | 亚洲伊人伊色伊影伊综合网| 国产欧美日韩亚洲一区二区三区| 麻豆精品国产91久久久久久| 欧美日本一区二区三区| 久久成人18免费网站| 欧美国产精品日韩| 午夜精品在线观看| 美女脱光内衣内裤视频久久网站| 亚洲欧美激情视频在线观看一区二区三区| 欧美专区18| 一区二区三区国产盗摄| 久久九九99视频| 午夜亚洲性色福利视频| 免费在线亚洲欧美| 久久国产精品电影| 欧美视频在线观看免费| 你懂的视频一区二区| 国产精品久久一区主播| 亚洲精品国产精品乱码不99| 激情伊人五月天久久综合| 亚洲国产视频直播| 亚洲三级电影全部在线观看高清| 亚洲一区久久| 亚洲视频在线看| 麻豆精品国产91久久久久久| 久久久噜噜噜久久久| 国产精品乱码久久久久久| 亚洲国产婷婷综合在线精品| 极品av少妇一区二区| 亚洲欧美中文日韩在线| 亚洲午夜久久久| 欧美日本不卡| 亚洲欧洲一区二区在线观看 | 久久综合网色—综合色88| 欧美一区日韩一区| 国产精品久久久久久五月尺| 日韩亚洲欧美中文三级| 日韩午夜高潮| 欧美激情综合网| 亚洲日韩视频| 亚洲精选91| 欧美日韩视频专区在线播放 | 国产欧美日韩高清| 亚洲欧美日韩网| 欧美在线视频免费播放| 国产精品女同互慰在线看| 亚洲一区在线观看视频| 西西人体一区二区| 国产视频在线观看一区二区三区| 亚洲男女自偷自拍图片另类| 久久成人免费电影| 国产在线乱码一区二区三区| 久久精品首页| 亚洲国产一区二区a毛片| 日韩视频专区| 国产精品免费一区二区三区在线观看| 亚洲色在线视频| 久久精品夜色噜噜亚洲aⅴ| 韩国三级在线一区| 免费亚洲电影在线观看| 日韩一二三区视频| 香蕉精品999视频一区二区| 国产午夜亚洲精品羞羞网站| 久久精品国产91精品亚洲| 欧美成人精品在线观看| 99国产精品久久久久久久| 国产精品激情av在线播放| 亚洲自拍啪啪| 欧美国产精品人人做人人爱| 一本久道久久综合狠狠爱| 欧美日韩免费区域视频在线观看| 亚洲一区二区毛片| 嫩模写真一区二区三区三州| 99国产精品久久久久久久成人热| 欧美视频日韩视频| 午夜在线精品偷拍| 亚洲国产美女精品久久久久∴| 亚洲一区二区三区高清不卡| 国产主播一区| 欧美日韩亚洲一区二区三区在线观看 | 亚洲欧美视频一区| 一区二区欧美国产| 伊人精品成人久久综合软件| 久久综合999| 亚洲一区二三| 亚洲国产精品久久久久久女王| 亚洲欧美在线网| 亚洲精选大片| 精品成人免费| 国产精品麻豆成人av电影艾秋 | 亚洲国产一区在线观看| 久久久久国产精品午夜一区| 亚洲图片在线观看| 亚洲第一精品夜夜躁人人躁| 国产精品久久一区二区三区| 欧美大片免费观看| 久久激情视频久久| 中文一区字幕| 亚洲日产国产精品| 欧美国产丝袜视频| 久久成人资源| 亚洲欧美综合另类中字| 亚洲九九精品| 亚洲激情社区| 在线观看欧美视频| 国产精品亚洲不卡a| 欧美亚洲成人精品| 欧美日韩国产精品一区| 免费永久网站黄欧美| 久久夜色精品国产欧美乱极品| 亚洲午夜极品| 艳妇臀荡乳欲伦亚洲一区| 亚洲人成网站精品片在线观看| 欧美激情精品久久久久久免费印度| 久久精品国产久精国产爱| 欧美中文字幕不卡| 性欧美videos另类喷潮| 亚洲欧美视频在线观看| 亚洲免费影院| 性高湖久久久久久久久| 午夜日韩激情| 欧美一级艳片视频免费观看| 午夜精品久久一牛影视| 亚洲欧美视频在线| 欧美在线你懂的| 蜜桃伊人久久| 亚洲国产高清高潮精品美女| 亚洲国产精品成人综合色在线婷婷| 亚洲成色www久久网站| 亚洲国产精品高清久久久| 亚洲国产一区二区三区a毛片 | 欧美在线中文字幕| 久久精品亚洲一区二区| 久热精品在线| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品视屏| 国内久久精品视频| 亚洲福利视频免费观看| 日韩网站免费观看| 性色av一区二区三区在线观看| 欧美一区二区日韩| 欧美阿v一级看视频| 亚洲国产精品尤物yw在线观看| 日韩午夜在线视频| 亚洲综合成人在线| 久久久久综合网| 欧美伦理视频网站| 国产精品久久久久久久7电影| 国产婷婷色一区二区三区| 在线欧美日韩| 亚洲一区二区在线看| 久久久久一区二区三区四区| 亚洲电影免费观看高清完整版在线观看| 亚洲精品乱码视频 | 国产欧美大片| 一区二区三区在线视频观看| 亚洲精品国产精品国自产观看浪潮 | 欧美高清一区二区| 国产女精品视频网站免费 | 在线观看91精品国产入口| 91久久久亚洲精品| 欧美一区二区三区久久精品茉莉花 | 一区二区三区三区在线| 久久精品一二三| 欧美三级特黄| 91久久黄色| 久久电影一区| 99精品国产福利在线观看免费| 久久aⅴ乱码一区二区三区| 欧美日韩精品一区二区在线播放| 国产亚洲va综合人人澡精品| 亚洲免费av片| 欧美v国产在线一区二区三区| 国产精品99久久久久久白浆小说| 美女主播精品视频一二三四| 国产日产亚洲精品系列| 一区二区三区免费看| 欧美成人久久| 久久久久99|