• <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>

            大規(guī)模高性能網(wǎng)絡(luò)服務(wù)器編程 大型游戲服務(wù)器編程


            大規(guī)模高性能網(wǎng)絡(luò)服務(wù)器編程 大型游戲服務(wù)器編程 完成端口模型 TCP UDP P2P 網(wǎng)絡(luò)編程

                       C++博客 | 首頁(yè) | 發(fā)新隨筆 | 發(fā)新文章 | 聯(lián)系 | 聚合 | 管理

                          

                 摘要: 這里設(shè)計(jì)了一個(gè)類,通過4個(gè)字節(jié)存儲(chǔ)日期,8個(gè)字節(jié)存儲(chǔ)DateTime,并添加了一些跟時(shí)間日期相關(guān)的函數(shù), 如:星期幾查詢,特定日期之后多少天是幾號(hào), 兩個(gè)日期之間相隔多少天等等。對(duì)于一般的用途,基本上夠用了頭文件: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter....  閱讀全文
            posted @ 2010-09-02 16:28 iKusamba 閱讀(1957) | 評(píng)論 (4)編輯 收藏
            導(dǎo)讀:國(guó)產(chǎn)網(wǎng)游正在漫漫成長(zhǎng)起來,這其中,有很多具有代表性的國(guó)產(chǎn)網(wǎng)游特色的設(shè)定,雖然表面上看是方便玩家,但深究起來,這些設(shè)定也有可能是毀掉國(guó)產(chǎn)網(wǎng)游毒瘤。  

                  一、自動(dòng)尋路
            說到最具代表性的中國(guó)特色的網(wǎng)游設(shè)定,自動(dòng)尋路當(dāng)仁不讓。這一設(shè)定美其名曰是簡(jiǎn)化玩家操作、完善游戲體驗(yàn),實(shí)則對(duì)游戲是種很大的傷害。一般來說,網(wǎng)游 多是MMORPG,這種游戲旨在構(gòu)建一個(gè)架空世界,玩家從中獲取一種異樣人生的體驗(yàn)。對(duì)這個(gè)世界的探索,照理來說應(yīng)是游戲樂趣的一大來源,但趕路和找人確 實(shí)件煩人的事情。國(guó)外的設(shè)計(jì)師們?yōu)榱私鉀Q這一問題,就把游戲地圖探索變得更有趣,把游戲中的移動(dòng)變得更多樣化,以此來彌補(bǔ)玩家的枯燥旅途。但中國(guó)設(shè)計(jì)師明 顯要聰明得多,所以他們做出來了“自動(dòng)尋路”這樣的設(shè)置——只不過這種做法,實(shí)際上是在鼓吹玩家急功近利的浮躁心態(tài),和踐踏游戲原本的樂趣。

                 二、自動(dòng)打怪
            有時(shí)候你不得不承認(rèn)中國(guó)是片神奇的土地,無論看起來多么不可思議的事情,在這里都有可能發(fā)生。比如說外掛,本來是所有游戲廠商應(yīng)該深惡痛絕并必欲除之 而后快的,但在中國(guó),游戲廠商們自己開發(fā)起了外掛,為了以示區(qū)分,這種由廠商自己開發(fā)的掛機(jī)系統(tǒng)被稱之為“內(nèi)掛”。當(dāng)然中國(guó)的策劃們是不會(huì)這么直白地叫的 ——人嘛,畢竟都要點(diǎn)臉面的——他們將此功能演示成“自動(dòng)打怪”,真是光明正大極了。
            網(wǎng)游跟單機(jī)的一大區(qū)別就是,網(wǎng)游最大的樂趣在于交流,這個(gè)交流不光是指玩家之間的聊天,包括如組隊(duì)、偶遇甚至是搶怪等各種交互行為,都是交流。但自動(dòng)打怪出來后,你在游戲里再也看到的不是再是一個(gè)活生生的人,而是臨時(shí)性的NPC。這對(duì)國(guó)產(chǎn)游戲,能有什么好處?

                三、替身寶寶
            判斷一款網(wǎng)游優(yōu)劣的標(biāo)準(zhǔn)很簡(jiǎn)單,就是看它有沒有賣替身寶寶,如果有,那么你應(yīng)立即放棄它。所謂替身寶寶,就是指即便玩家的角色下線了,也可以利用這個(gè) 寶寶來繼續(xù)練級(jí),仍然可以獲得經(jīng)驗(yàn)。每個(gè)游戲?qū)@種設(shè)定的叫法不一樣,但有一點(diǎn)卻是共同,那就是肯定要花錢。因此從這個(gè)意義上來說,替身寶寶,實(shí)際上就是 游戲官方在赤裸裸地賣經(jīng)驗(yàn)值,賣人物等級(jí)。
            運(yùn)營(yíng)商自己出售人物經(jīng)驗(yàn)值,這么匪夷所思的事情竟然也能想得出來,實(shí)在叫人佩服中國(guó)網(wǎng)游策劃的絕頂聰明。

                  四、開箱子
            “開箱子”不必多說,這個(gè)就是個(gè)賭博系統(tǒng)。據(jù)說在這系統(tǒng)出來之后,澳門人后悔不迭:早知道還開什么賭場(chǎng)。開箱子已經(jīng)是被國(guó)家明令禁止的設(shè)定,現(xiàn)在又有死灰復(fù)燃之勢(shì),只不過現(xiàn)在開的不再是箱子,而是襪子包子什么的了,總之只要你給錢,就是讓開游戲策劃的腦子他們也肯做。

                  五、無限制PK
            PK,絕對(duì)是網(wǎng)游中最重要的系統(tǒng)之一。與人競(jìng)技的樂趣,總是能刺激玩家們的分泌出新鮮的腎上腺激素。但并不意味著,PK可以是無限制的,可以是隨心所 欲的。國(guó)外主流網(wǎng)游中,對(duì)PK都或多或少有一定的限制,比如最經(jīng)典的設(shè)定“紅名”,你在殺人的同時(shí),你自己也將成為追殺的對(duì)象。但國(guó)產(chǎn)網(wǎng)游的主流卻似乎是 在鼓勵(lì)玩家這樣做,至少說,看不到什么限制。很多國(guó)產(chǎn)網(wǎng)游,允許一個(gè)高等級(jí)的玩家,闖入低等級(jí)玩家的活動(dòng)區(qū),肆無忌憚地大開殺戒。這種對(duì)PK不加任何限制 的設(shè)定,實(shí)際上是在鼓勵(lì)玩家濫殺無辜欺凌弱小,以方便游戲商趁機(jī)出售這種“恃強(qiáng)凌弱”的權(quán)力。
            這樣的游戲,會(huì)培養(yǎng)出什么樣的玩家?這樣的玩家,會(huì)造就一個(gè)什么樣的游戲環(huán)境?這樣的游戲環(huán)境,能為國(guó)產(chǎn)游戲帶來什么樣的希望?

                 六、結(jié)婚系統(tǒng)
            雖然說中國(guó)有3700萬(wàn)光棍,但我依然認(rèn)為在網(wǎng)游里開設(shè)一個(gè)虛擬的“結(jié)婚”系統(tǒng),是最為不能接受的設(shè)定。網(wǎng)游或許本來就是個(gè)交友平臺(tái),但你不能把它做 成一個(gè)婚介所!如果說僅僅是為玩家提供一個(gè)虛擬的游戲內(nèi)的結(jié)婚儀式也就罷了,可恨的是有些網(wǎng)游還推出夫妻才有的技能、坐騎、道具……等等等等,簡(jiǎn)直就是逼 著玩家去泡女生,哪怕是人妖也行。現(xiàn)在不少網(wǎng)游更進(jìn)一步,推出了“結(jié)婚生子”系統(tǒng),這只能稱之為腦殘了。
            結(jié)婚、生子,這些設(shè)定讓國(guó)產(chǎn)網(wǎng)游散發(fā)出一股濃重的荷爾蒙味。

                七、仇人名單
            仇人系統(tǒng)也是國(guó)產(chǎn)網(wǎng)游的一大特色,它與“無限制PK”是兄弟:假如你被人殺了,系統(tǒng)會(huì)自動(dòng)將其加入你的仇人名單。加進(jìn)來做什么?肯定不是叫你提防著對(duì) 方,而是要玩家牢記這個(gè)“仇人”,等將來等級(jí)高了好復(fù)仇。這基本上就是在挑撥玩家之間的人際關(guān)系,是在強(qiáng)化仇恨和報(bào)復(fù)。明顯的是,游戲商會(huì)從玩家的復(fù)仇行 為中獲取不少利潤(rùn),比如說出售一種道具,能把你傳送到你仇人的身邊,這樣無論他逃到哪里,你都能對(duì)其進(jìn)行鍥而不舍的追殺。
            但這樣一來,游戲環(huán)境勢(shì)必惡化,因?yàn)橄到y(tǒng)本身是在放大玩家的陰暗面。更何況,挑撥和教唆他人就是作惡,而我還沒見過誰(shuí)作了惡,還敢稱自己賺的錢是干凈的。
            posted @ 2010-09-01 17:47 iKusamba 閱讀(390) | 評(píng)論 (2)編輯 收藏

            代碼:uniobj.h
             1 /************************************************************************
             2 *
             3 * Created by kusamba@126.com at 2009-2-12 16:37
             4 */
             5 
             6 #ifndef _uniobj_23593953_h_
             7 #define _uniobj_23593953_h_
             8 
             9 #include <WTypes.h>
            10 #include <assert.h>
            11 
            12 /**
            13 * Universal Object Declare
            14 */
            15 #define UNIOBJ_DECL(theClass)                \
            16   public:                                    \
            17   static theClass* Get()                     \
            18   {                                          \
            19     assert(NULL != ms_pk##theClass);         \
            20     return ms_pk##theClass;                  \
            21   }                                          \
            22   static theClass* Create()                  \
            23   {                                          \
            24     assert(NULL == ms_pk##theClass);         \
            25     return ms_pk##theClass = new theClass(); \
            26   }                                          \
            27   static void Destroy()                      \
            28   {                                          \
            29     if (NULL != ms_pk##theClass)             \
            30     {                                        \
            31       delete ms_pk##theClass;                \
            32       ms_pk##theClass = NULL;                \
            33     }                                        \
            34   }                                          \
            35   publicbool Initialize();                 \
            36   private:                                   \
            37     theClass();                              \
            38     virtual ~theClass();                     \
            39     static theClass* ms_pk##theClass;
            40 
            41 /**
            42 * Universal Object Implement
            43 */
            44 #define UNIOBJ_IMP(theClass)                \
            45     theClass* theClass::ms_pk##theClass = NULL;
            46 
            47 
            48 #endif//_uniobj_23593953_h_

            如何使用:
            頭文件:
            1#include "uniobj.h"
            2
            3class ATestSingleTon
            4{
            5public:
            6
            7UNIOBJ_DECL(ATestSingleTon)
            8}

            cpp文件:
            1UNIOBJ_IMP(ATestSingleTon)
            2
                 ATestSingleTon::ATestSingleTon()
                {}

                ATestSingleTon::~ATestSingleTon()
                {}

            3bool ATestSingleTon::Initialize()
            4{
            5    return true;
            6}

            main.cpp
             1int main()
             2{
             3  ATestSingleTon* pk = ATestSingleTon::Create();
             4  if (NULL == pk)
             5  {
             6    return 0;
             7  }

             8
             9  //mainloop
            10
            11  ATestSingleTon::Destroy();
            12}

            分析:
            1,singleton的構(gòu)建在程序入口,析構(gòu)在程序的結(jié)尾,可以避免相當(dāng)多的多線程問題
            2,這里的singleton對(duì)象均為程序必須要用到的對(duì)象,跟傳統(tǒng)singleton定義有些出入
            3,定義了initialize()函數(shù)只為對(duì)象的初始化提供一個(gè)接口,如果不需要可以直接return true


            PS:可以參考看看如下資料
            1,細(xì)說Singleton模式:創(chuàng)建、多線程與銷毀 http://developer.51cto.com/art/200908/143492.htm
            posted @ 2010-08-31 15:56 iKusamba 閱讀(1489) | 評(píng)論 (10)編輯 收藏


            _MSC_VER 定義編譯器的版本。

            下面是一些編譯器版本的_MSC_VER值
             
              MS VC++ 9.0 _MSC_VER = 1500
                 MS VC++ 8.0 _MSC_VER = 1400   
                    MS VC++ 7.1 _MSC_VER = 1310   
                    MS VC++ 7.0 _MSC_VER = 1300   
                    MS VC++ 6.0 _MSC_VER = 1200   
                    MS VC++ 5.0 _MSC_VER = 1100

            給一段跟編譯器相關(guān)的代碼:

             1char* UStrcpy(char* pcDest, size_t stDestSize, const char* pcSrc)
             2{
             3#if _MSC_VER >= 1400
             4    strcpy_s(pcDest, stDestSize, pcSrc);
             5    return pcDest;
             6#else // #if _MSC_VER >= 1400
             7
             8    _ASSERT(stDestSize != 0);
             9
            10    size_t stSrcLen = strlen(pcSrc);
            11    _ASSERT(stDestSize > stSrcLen); // > because need null character
            12
            13    size_t stWrite;
            14
            15    if (stDestSize <= stSrcLen) // stDestSize < stSrcLen + 1
            16        stWrite = stDestSize;
            17    else 
            18        stWrite = stSrcLen + 1;
            19
            20    char *pcResult = strncpy(pcDest, pcSrc, stWrite);
            21    pcResult[stDestSize - 1= '\0';
            22    return pcResult;
            23#endif // #if _MSC_VER >= 1400
            24}

             

            說明:
            Visual C++ 1.0,集成了MFC 2.0,是Visual C++第一代版本,1992年推出,可同時(shí)支持16位處理器與32位處理器版,可算是Microsoft C/C++ 7.0的更新版本。

            Visual C++ 1.5,集成了MFC 2.5,增加了“目標(biāo)文件鏈接嵌入 (OLE)2.0和支持MFC的開放式數(shù)據(jù)庫(kù)鏈接(ODBC)。這個(gè)版本只有16位的,也是第一個(gè)以CD-ROM為軟件載體的版本。這個(gè)版本也沒有所謂“標(biāo)準(zhǔn)版”。它是最后一個(gè)支持16位軟件編程的軟件,也是第一個(gè)支持基于x86機(jī)器的32位編程軟件。

            Visual C++ 2.0,集成了MFC 3.0,第一個(gè)只發(fā)行32位的版本。這個(gè)版本提前發(fā)行了,幾乎成了一個(gè)“丟失的版本”。這是因?yàn)槟莻€(gè)時(shí)候Windows 95(開發(fā)代碼為"Chicago")還沒有發(fā)行,而Windows NT又只占有很小的市場(chǎng)份額。該版本用戶可以通過微軟公司的訂閱服務(wù)(Microsoft Subscription Service)升級(jí)至2.1和2.2版本。微軟公司在這個(gè)版本中集成并升級(jí)了Visual C++ 1.5,作為2.0版本(Visual C++ 1.5升級(jí)后版本號(hào):1.51)以及2.1版本(Visual C++ 1.5升級(jí)后版本號(hào):1.52)的一部分。Visual C++ 2.x附帶了16位和32位版本的CDK,同時(shí)支持Win32s的開發(fā)。Visual C++ 2.2及其后續(xù)版本不再升級(jí)Visual C++ 1.5(盡管它一直被集成至Visual C++ 4.x)。盡管出生的比Windows 95早,這個(gè)版本的發(fā)行日期還是非常接近Windows 95,可是當(dāng)Windows 95發(fā)行時(shí),Visual C++ 4.0也已經(jīng)發(fā)行了。因此很多程序開發(fā)者直接從1.x過渡到4.0,把2.x跳過去了。

            Visual C++ 4.0,集成了MFC 4.0,這個(gè)版本是專門為Windows 95以及Windows NT設(shè)計(jì)的。用戶可以通過微軟公司的訂閱服務(wù)(Microsoft Subscription Service)升級(jí)至4.1和4.2版本(此版本不再支持Win32s開發(fā))。

            Visual C++ 5.0,集成了MFC 4.21,是4.2版以來比較大的一次升級(jí)。

            Visual C++ 6.0,集成了MFC 6.0,于1998發(fā)行。發(fā)行至今一直被廣泛地用于大大小小的項(xiàng)目開發(fā)。但是,這個(gè)版本在Windows XP下運(yùn)行會(huì)出現(xiàn)問題,尤其是在調(diào)試模式的情況下(例如:靜態(tài)變量的值并不會(huì)顯示)。這個(gè)調(diào)試問題可以通過打一個(gè)叫“Visual C++ 6.0 Processor Pack”的補(bǔ)丁來解決。奇怪的是,這個(gè)網(wǎng)頁(yè)強(qiáng)調(diào)用戶也必須運(yùn)行Windows 98、Windows NT 4.0、或Windows 2000。

            Visual C++ .NET 2002(也即Visual C++ 7.0),于2002年發(fā)行,集成了MFC 7.0,支持鏈接時(shí)代碼生成和調(diào)試運(yùn)行時(shí)檢查。這個(gè)版本還集成了Managed Extension for C++,以及一個(gè)全新的用戶界面(與Visual Basic和Visual C#共用)。這也是為什么Visual C++ 6.0仍然被廣泛使用的一個(gè)主要原因。

            Visual C++ .NET 2003(也即Visual C++ 7.1),集成了MFC 7.1,于2003年發(fā)行,是對(duì)Visual C++ .NET 2002的一次重大升級(jí)。
            eMbedded Visual C++,用于Windows CE操作系統(tǒng)。Visual C++作為一個(gè)獨(dú)立的開發(fā)環(huán)境被Microsoft Visual Studio 2005所替代。

            Visual C++ 2005(也即Visual C++ 8.0),集成了MFC 8.0,于2005年11月發(fā)布。這個(gè)版本引進(jìn)了對(duì)C++/CLI語(yǔ)言和OpenMP的支持。

            Visual C++ 2008(也即Visual C++ 9.0),于2007年11月發(fā)布。這個(gè)版本支持.NET 3.5。

            Visual C++ 2010(也即Visual C++ 10.0),于2010年發(fā)布,是目前最新的版本。Visual C++開發(fā)團(tuán)隊(duì)考慮使用SQL Server Compact格式的數(shù)據(jù)庫(kù)來存儲(chǔ)源碼的相關(guān)信息[1].本版也加入了現(xiàn)代化的C++并行運(yùn)算庫(kù)-Parallel Patterns Library,部分支持C++0x。本版建構(gòu)于.NET 4.0之上,但仍支持機(jī)器碼的編譯。

            posted @ 2010-08-31 15:25 iKusamba 閱讀(1409) | 評(píng)論 (0)編輯 收藏

            makefile在windows之外的系統(tǒng)中廣泛使用,大多數(shù)程序員依賴于vs的IDE; 掌握使用makefile,對(duì)于自動(dòng)化構(gòu)建很有用

            vs使用nmake.exe作為構(gòu)建的工具,有別于linux的make

            nmake.exe在vs的安裝目錄下,

            vs2005的默認(rèn)目錄是:C:\Program Files\Microsoft Visual Studio 8\VC\bin 或者 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin (通常情況下這兩個(gè)目錄下該文件為同一個(gè))
            vs2003的默認(rèn)目錄是:C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin 或者 C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin

            打開DOS窗口,輸入nmake,可能會(huì)出現(xiàn)如下錯(cuò)誤提示:


            這是因?yàn)樵趘s的安裝過程中,沒有注冊(cè)vs的環(huán)境變量,可以通過如下方法查看自己是否已經(jīng)注冊(cè)好vs的環(huán)境變量:

            在DOS窗口中輸入set path, 則會(huì)看到如下提示:


            我這邊已經(jīng)注冊(cè)好環(huán)境變量了,如果你沒有看到,可以將vs的bin目錄添加到系統(tǒng)環(huán)境目錄的path里


            重新打開DOS窗口,輸入nmake,如果提示如下,則說明環(huán)境目錄注冊(cè)成功:


            這時(shí),可以開始我們的編譯了,打開DOS窗口,導(dǎo)航到源代碼目錄,執(zhí)行nmake,注意nmake對(duì)應(yīng)的編譯為makefile(無后綴名)

            如果你系統(tǒng)里面有好幾個(gè)vs版本,建議不要將環(huán)境變量添加到path里,我的做法是這樣的:
            1,在C:\下面新建目錄utils,并將該目錄添加到path的環(huán)境變量中
            2, 將vs2005的bin目錄下的vcvars32.bat和vs2003的vcvars32.bat分別copy到C:\Utils目錄下,重命名為vc8.bat和vc7.bat
            3,執(zhí)行nmake前先執(zhí)行vc7.bat(使用vs2003編譯)或者vc8.bat(使用vS2005編譯)

            posted @ 2010-08-26 17:34 iKusamba 閱讀(10936) | 評(píng)論 (1)編輯 收藏
            僅列出標(biāo)題
            共4頁(yè): 1 2 3 4 

            公告

            導(dǎo)航

            隨筆分類

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            国内精品久久国产| 91久久成人免费| 久久精品国产亚洲AV嫖农村妇女| 久久亚洲AV成人无码国产| 曰曰摸天天摸人人看久久久| 色综合合久久天天给综看| 久久精品亚洲日本波多野结衣 | 久久久久久久免费视频| 久久久精品人妻一区二区三区蜜桃 | 久久超碰97人人做人人爱| 国产一区二区精品久久岳| 亚洲av日韩精品久久久久久a| 国产精品成人久久久久三级午夜电影| 久久久亚洲精品蜜桃臀| AAA级久久久精品无码片| 久久综合久久综合亚洲| 国产成人综合久久精品尤物| 欧洲人妻丰满av无码久久不卡| 久久久精品久久久久特色影视| 久久久国产精品福利免费| 久久婷婷激情综合色综合俺也去| 2021久久精品免费观看| 久久亚洲电影| 久久青青草原精品国产不卡| 亚洲一本综合久久| 日本久久久久久中文字幕| 97久久香蕉国产线看观看| 久久精品aⅴ无码中文字字幕重口| 久久天天躁狠狠躁夜夜avapp| 久久久久九九精品影院| 精品无码人妻久久久久久| 93精91精品国产综合久久香蕉| 欧美伊香蕉久久综合类网站| 欧美久久综合性欧美| 国产精品永久久久久久久久久| 热久久国产精品| 91麻精品国产91久久久久| 久久久青草青青国产亚洲免观| 久久久久久国产精品免费免费| 中文字幕精品久久| 久久久久久人妻无码|