<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM的多人對戰(zhàn)游戲平臺

          基于ARM的多人對戰(zhàn)游戲平臺

          作者: 時間:2013-12-04 來源:網(wǎng)絡(luò) 收藏

            游戲不僅能開發(fā)人的智力,使人頭腦反應(yīng)靈敏,還能滿足人的精神需求(如冒險、創(chuàng)造力、情感等),極具娛樂性和趣味性,深受人們的喜愛。隨著消費類電子產(chǎn)業(yè)的蓬勃發(fā)展,越來越多的嵌入式電子產(chǎn)品走進了千家萬戶,催生出了諸如GBA(Game Boy Advance)、PSP(Play-Station Portabk)以及最近才在我國上市的iPad等一大批專業(yè)的并且銷量驚人的明星級移動娛樂游戲設(shè)備。

            然而上述游戲平臺通常造價昂貴,且不具有開放性。例如備受推崇的PSP,開發(fā)授權(quán)問題和昂貴的專用開發(fā)套件(軟硬件)使得PSP游戲的開發(fā)門檻很高。這在很大程度上限制了這些游戲平臺的普及。如果利用通用的處理器和常用的嵌入式操作系統(tǒng)(如WinCE、Linux等)構(gòu)建一種基于以太網(wǎng)或者無線以太網(wǎng)的便攜式的游戲機。則可以吸引大量熟悉C/C++嵌入式編程的工程師或發(fā)燒友制作出各種精彩的游戲,這必將極大地推動這種游戲平臺的普及。而且將平臺進行功能裁剪和批量生產(chǎn)后成本較低,對于中低收入人群來說將是極佳選擇,市場潛力無窮。

            本文詳述了這種游戲平臺的硬件構(gòu)建、互聯(lián)對戰(zhàn)游戲開發(fā)框架和流程,以及從Win32到WinCE進行代碼移植的整個開發(fā)過程,并記錄了開發(fā)過程中積累的經(jīng)驗,具有很高的借鑒價值。

            1 硬件平臺

            硬件平臺架構(gòu)如圖1所示。

          基于ARM的多人對戰(zhàn)游戲平臺

            是Samsung公司推出的16/32位RISC處理器,為手持設(shè)備和一般類型應(yīng)用提供了低價格、低功耗、高性能小型微控制器的解決方案。

            采用了arm920T內(nèi)核,0.18μm工藝的CMOS標(biāo)準(zhǔn)宏單元和存儲器單元。它的低功耗、精簡和出色的全靜態(tài)設(shè)計特別適用于對低成本和功耗敏感的應(yīng)用。arm920T實現(xiàn)了MMU,AMBA BUS和Harvard高速緩沖體系結(jié)構(gòu)。這一結(jié)構(gòu)具有獨立的16 kB的指令Cache和16 kB數(shù)據(jù)Cache,每個都由8字長的行構(gòu)成。

            2 套接字編程

            2.1 WinSock基礎(chǔ)

            WinSock是Windows Sockets的縮寫,是Windows環(huán)境下廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口規(guī)范。這里主要使用TCP/IP協(xié)議族實現(xiàn)通信。

            基于TCP/IP的套接字有流式套接字(SOCK_STREAM)、數(shù)據(jù)報式套接字(SOCK_DGRAM)、原始式套接字(SOCK_RAW)3種類型,如圖2所示。

          基于ARM的多人對戰(zhàn)游戲平臺

            TCP協(xié)議是面向連接的網(wǎng)絡(luò)協(xié)議,它的連接步驟較多,而且當(dāng)檢測到數(shù)據(jù)包丟失或錯誤時,會要求發(fā)送端重新發(fā)送,這樣一來就不可避免地引起了傳輸延時。

          基于ARM的多人對戰(zhàn)游戲平臺

            UDP協(xié)議面向無連接服務(wù),每個分組都攜帶有完整的目的地址,操作簡單,且無傳輸延遲,比較適合要求不高的游戲通信。它的通信時序如圖3所示。

            2.2 應(yīng)用程序接口函數(shù)

            1)加載套接字庫AfxSocketlnit()

            布爾型,參數(shù)缺省值為NULL,在程序結(jié)束前自動調(diào)用WSACleanup清除套接字。

            2)創(chuàng)建套接字socket()

            用于創(chuàng)建指定類型的套接字,流式(TCP協(xié)議)SOCK_STREAM或數(shù)據(jù)報式(UDP協(xié)議)SOCK_DGRAM。

            3)綁定本地地址bind()

            將套接字地址(包括本地主機地址和本地端口地址)與所創(chuàng)建的套接字號聯(lián)系起來,即將名字賦予套接字,以指定本地半相關(guān)。

            4)接收recvfrom()

            在套接字指定的已連接的數(shù)據(jù)報或流套接字上接收輸入數(shù)據(jù)。

            5)發(fā)送sendto()

            在套接字指定的已連接的數(shù)據(jù)報或流套接字上發(fā)送輸出數(shù)據(jù)。

            3 Win32下五子棋程序設(shè)計

            3.1 游戲設(shè)計思路

            游戲開始前有一系列引導(dǎo)步驟,讓用戶選擇游戲模式,并作相應(yīng)的初始連接,如圖4所示。這些引導(dǎo)步驟可通過添加一系列對話框資源來實現(xiàn)。完成之后進入選擇的游戲模式。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();