遊戲伺服器的架構設計

   

控制台下輸出漢字字元和CString字元

    我們在控制台下可能需要輸出漢字字串或是CString類型的字串,可是直接輸出顯然不行,嘗試了下,使用如下方法可正常輸出:#include <iostream>#include <afx.h>using namespace std;int main(){wchar_t str[] = L"你好!漢字!";wcout.imbue(locale("CHS")); // 控制台輸出漢字wcout<<str[3]<<endl;wstring str1

GameBryo中全視角第三人稱攝像機的實現

全視角的攝像機大致需要以下功能1 平移——拉近,縮放    這個應該是攝像機最簡單的功能了,在操作上體現在玩家直接滾動滑鼠滾輪來拉近和放大攝像機的距離。該操作的本質是平移攝像機。具體做法可捕獲滑鼠滾輪訊息,然後在該方向上進行平移(簡單的座標加減即可)2 跟隨主角      在主角進行移動的時候觸發該功能,這個也比較簡單,平移攝像機位置即可3 旋轉——俯仰,偏航     

網路編程基礎(一)——使用TCP

  網路編程中最基本的是TCP/UDP協議,而目前比較流行的是使用已經非常成熟socket庫來處理。   下面舉例說明:首先必須在使用socket的地方包含庫,這裡使用微軟封裝好的winsocket庫:#include <winsock2.h>#pragma comment(lib, "WS2_32.lib") 用戶端代碼:int TCPSocket::TCPSocketClient(){#pragma region 初始化通訊端WSADATA wsaData;int

網路編程基礎(二)——使用UDP

這次使用UDP,同樣上代碼說明:在需要使用的地方包含socket庫,這裡使用winsocket2的庫,微軟封裝處理。#include <winsock2.h>#pragma comment(lib, "WS2_32.lib") 伺服器端代碼:int StartUDPSrv(){#pragma region 初始化通訊端庫WSADATA wsaData;int iResult = WSAStartup(MAKEWORD(1, 1), &wsaData); //版本1.1if (

我的電影收藏曆程

喜歡看碟,當初網路還不發達的時候,沒條件上網DOWN片子看,那時可能也沒有,只有買VCD回家看。從來不去租,因為租來的碟子上面都是劃痕,心疼光碟機。不知不覺,VCD已放滿了幾抽屜,一開始買的片子還有不少是槍版,後來跟老闆關係好了,老闆都會實話實說,評價碟子品質,基本就很少買到槍版了,因此都算精品,有不少朋友問我借。後來結婚,布置新房,買了一套音響,裝修時就考慮到了5.1聲道問題,因此牆裡預留了音響線,一套環繞聲的家庭影院系統就架了起來,當然就開始買DVD碟片了,那時還不知道DVD有D5和D9之分

關於MenuHelp的使用

很多程式都是有菜單和狀態列,當用滑鼠點開菜單移動選擇各功能表項目的時候,會在狀態列顯示關於該功能表項目的說明。這個功能MFC是封裝好的,用嚮導產生即可,但用API編程就得自己編寫代碼了,查了一下MSDN,有個MenuHelp函數可以做到,函數原型為:void MenuHelp(    UINT uMsg,     WPARAM wParam,     LPARAM lParam,     HMENU hMainMenu,     HINSTANCE hInst,     HWND

DVD點滴:D5和D9

程式員可能沒多少時間看碟,不過喜歡看是肯定的,周圍的同事朋友很多都是從網上DOWN,不管槍版及畫面品質,看的都很帶勁。也有自己買碟看的,不過跟他們談起版本,還真很少有知道D5和D9的,很多都是問一句:D9是什麼東西?因此這裡胡亂侃一下,只是憑記憶,沒去找資料,說錯了請大家指正。DVD的碟片按規格有幾種,其中最常見的就是D5,單面單碟,容量4.7G左右,隨便挑一家碟店,那種5,6塊錢一張的片子就是了。D9是單面雙碟,就是把兩張D5面朝下疊放在一起再焊起來,當然工藝不是說得那麼簡單。容量因此也就是D

API編程:給對話方塊加上背景圖案

 給對話方塊加上背景圖案應該怎麼做?Load一個BITMAP進來,WM_PAINT訊息裡面橫向和豎向兩個迴圈,BitBlt圖案鋪滿整個對話方塊?其實有一個很簡單的方法,初始化對話方塊的時候建立一個畫刷:HBITMAP bmp = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP));static HBRUSH brush =

鬱悶的Loki::SmartPtr

最近做的項目,需要在多線程中管理資源,很自然就想到使用智能指標搭配引用計數的技術構造垃圾收集回收機制。首先考慮的是採用loki中的SmartPtr,並且已經在項目中運作,現在才發現Loki::SmartPtr並不是想象中的靈活好用。問題在於SmartPtr的建構函式(用原始指標構造出智能指標對象):  SmartPtr(const StoredType& p) : SP(p)        {                         SmartPtrGuard KPGuard(*

奇怪的問題,InvalidateRect最後一個參數在XP下無效

一直用的WIN2K系統,寫的一個程式在本機正常,到XP系統的機器運行發現調整視窗大小時介面閃得厲害,程式比較大,而且這種閃爍還不好調試,因為單步調試沒有閃爍效果,只能排除法找原因,最後以為找到原因了,就寫了一個測試程式,就是用VC6嚮導自動產生API的Hello

RingSDK技術文檔:如何?ListView列的隱藏

想實現ListView在詳細資料視圖下列的隱藏,網上搜了一下實現方法,發現不外乎兩種方法,一種是刪除列,這是真正的隱藏,但是得記錄刪除的每一個儲存格的內容,以備該列再次需要顯示時把內容回填。相當於把ListView原來記錄的東西自己儲存了,隱藏的列越多,要記錄的東西越多。而如果使用者要修改已隱藏的儲存格的內容,這就麻煩了。因為既然說“隱藏”,你就得允許修改已隱藏的內容,而實際上刪除了,就得自己提供修改機制。不想這麼麻煩。 於是看第二種方法:把列寬設為0,這樣看上去是隱藏了,也沒有修改儲存格內容的

解決多重繼承中函數同名方案

當兩個介面中有相同的函式宣告名,比如:interface IA{    virtual void Fun()=0;};interface IB{    virtual void Fun()=0;};類CD繼承這兩個介面:class CD : public IA,public IB{public:    void Fun();};如果要實現這樣的效果:針對IA和IB的介面函數Fun有不同的實現,就涉及到多重繼承函數同名的問題.經典的解決方案是ARM中提出的引入中間類:class IAImpl :

多線程編程(一)——CreateThread

  作業系統提供的SDK API CreateThread原型如下:HANDLE WINAPI CreateThread( __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in LPVOID lpParameter, __in

多線程編程(三)——AfxBeginThread

    在MFC中,我們可以用到的一個API是AfxBeginThread,它的函式宣告原型如下:CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES

ADO串連使用者級加密的ACCESS資料庫

 最近做個項目需要串連到一個第3方軟體用到的MDB資料庫,該MDB檔案是使用者級加密,雖然合作方給了使用者名稱,說沒有密碼,但是卻無法用ADO進行查詢,報沒有許可權。用ACCESS開啟也是一樣,無法看到表裡的資料。於是到網上去搜,結果只搜到如何用ACCESS對MDB進行加密和開啟加密檔案,這個跟編程無關,就沒細看。關於ADO串連加密MDB,卻只有如何串連設定了密碼的MDB,都是以預設的管理員登入,沒有如何更改使用者登入的說明,而使用者級加密的MDB一般都是不給管理員任何許可權的。這下只好自己摸索

把自訂控制項整合到Qt Designer中

要想在Qt Designer中使用自訂控制項,必須要使Qt Designer能夠知道我們的自訂控制項的存在。有兩種方法可以把新自訂控制項的語音總機給Qt Designer:“升級(promotion)”法和外掛程式法。升級法最為簡便快捷。顧名思義,升級法就是把Qt自有的控制項進行升級改造一番。選一個Qt自有的控制項,如果它和我們新加的自訂控制項有著相似的API,那麼只要在Qt Designer的對話方塊裡面完成有關新控制項的資訊就一切大吉,新控制項就可以用在Qt

讓你的程式更加適用——使用ANSI和UNICODE匯出函數

    繼前兩篇文章之後,我們更加關心的問題是,我們可能為了方便他人的使用,需要提供ANSI和UNICODE版本的函數,此時,我們可以模仿Windows的作法,我們只編寫UNICODE版本的函數,然後在ANSI版本的函數中,我們把多字元轉換成UNICODE字串,然後調用UNICODE版本的函數,完成之後,再把他還原成多字元集的字串。   此處,引用樣本,逆轉字串中所有字元的函數:BOOL StringReverseW(PWSTR pWideCharStr, DWORD

跨平台網路程式庫的設計

         近期在開發一個跨平台的網路程式庫,其目的是為了封裝網路底層細節,對外提供一個簡易的介面,在這裡記載一下設計思路。     網路遊戲伺服器通常需要2種網路IO:一種是面向大量用戶端串連的高串連數的網路IO,一種是伺服器間的低串連數,高輸送量的網路IO,後一種網路IO比較簡單,可採取阻塞或者非同步網路IO模型。第一種通常需要採用IOCP,epoll等支援高並發的網路模型。 開發目標1:封裝網路底層細節及複雜性2:提供足夠簡單且靈活的介面3:至少能在windows和linux下使用 

D3D修改浮點數精度

前幾天策劃要求給任務系統加上日常任務的功能,這個需求很簡單:象wow一樣,日常任務在每天某個時候定時重新整理。在思考添加這個功能時,很直接想到的方案是伺服器取出3個時間:任務上次完成時間(pre),目前時間(now)和當天重新整理時間(refresh),然後經過一些較複雜的邏輯完成(此處省略xx字)。由於該方案需要涉及一些時間操作,而在lua和c++裡面做日期時間的操作又是比較麻煩的一件事。水古給出了一個解法,很好的解決了這個問題:首先用目前時間(比如現在是18:00)減去當天重新整理時間(比如

總頁數: 61357 1 .... 19056 19057 19058 19059 19060 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.