摘要: 網(wǎng)絡(luò)服務(wù)器的編寫相對(duì)客戶端的網(wǎng)絡(luò)應(yīng)用較為復(fù)雜,既要實(shí)現(xiàn)單個(gè)客戶端的功能,也要實(shí)現(xiàn)其管理,包括應(yīng)答,讀/寫數(shù)據(jù)的線程開啟/回收,多線之間的數(shù)據(jù)互斥等.(管理方面是采用了一個(gè)非開源項(xiàng)目的代碼,所以代碼暫不便公開,將以LIB方式提供大家使用.)為方便后臺(tái)服務(wù)的開發(fā),因此采用了MFC框架.范例中代碼較為多不一一進(jìn)行說明,只從大體上簡(jiǎn)單介紹每個(gè)類的作,并針對(duì)網(wǎng)絡(luò)相關(guān)部分進(jìn)行相關(guān)說明.
范例是實(shí)現(xiàn)一個(gè)消息管理服務(wù).提供群發(fā)或定向發(fā)送文本消息至客戶端,并帶有服務(wù)啟動(dòng)/關(guān)閉,日志記錄的功能.
閱讀全文
摘要: 最近幾天的閉關(guān)修練,終于把OGF的網(wǎng)絡(luò)部分給補(bǔ)充完了,這樣大家就方便開發(fā)自己的網(wǎng)絡(luò)游戲.網(wǎng)絡(luò)應(yīng)用方面分為客戶端與服務(wù)器端,上集我們先介紹客戶端的使用,下集再介紹服務(wù)器端的的開發(fā).
客戶端的消息分發(fā)采用原有的隊(duì)列調(diào)配模式,機(jī)制上與計(jì)時(shí)器或動(dòng)作引擎沒有太大的差異,無非創(chuàng)建了一個(gè)空窗口與SOCKET進(jìn)行綁定,然后將SOCKET消息發(fā)送隊(duì)列后再分發(fā).除此之外,提供了簡(jiǎn)單的數(shù)據(jù)加/解密的支持,提供了SOCKET代理模式的支持.
閱讀全文
摘要: 游戲開發(fā)其中一環(huán)就是非常枯燥的資源加載及布局,大多數(shù)大型游戲都會(huì)有編輯器,對(duì)自己的游戲中用到的層場(chǎng)進(jìn)行可視化編輯,但創(chuàng)建這樣一個(gè)引擎對(duì)中小型游戲來說,反而是開發(fā)比例不對(duì)稱,所以O(shè)GF內(nèi)置了場(chǎng)景布局器,方便中小型游戲方便地從XML文件中加載,而生成XML的界面編輯器也會(huì)優(yōu)先開發(fā)出來,以簡(jiǎn)化這方面排版的時(shí)間消耗.
布局器是一條處理鏈,鏈中可能有多個(gè)不同性質(zhì)的布局處理器,例如:處理資源的,處理環(huán)節(jié),場(chǎng)景,場(chǎng)的,還有是處理對(duì)象的等.用戶也可自行擴(kuò)展XML的內(nèi)容,但要求自己編寫布局處理器,然后注冊(cè)到系統(tǒng)中使用即可.
Sample07
簡(jiǎn)介:布局器
該示例會(huì)以一個(gè)以前做過的游戲背景為基礎(chǔ),顯示了如何按OGF.xml中的內(nèi)容進(jìn)行布局.
閱讀全文
摘要: 這個(gè)范例將會(huì)介紹OGF框架另一個(gè)擴(kuò)展功能--物件動(dòng)作引擎.作為一個(gè)游戲必然會(huì)涉及到一些對(duì)象動(dòng)作,例如簡(jiǎn)單的直線移動(dòng),旋轉(zhuǎn),漸變等,高級(jí)的話,可能要做貝塞爾的曲線運(yùn)動(dòng)或作物理的慣性移動(dòng),物件動(dòng)作引擎專門針對(duì)這些動(dòng)作進(jìn)行處理(隨著推廣和改進(jìn),相信會(huì)有你所需要的動(dòng)作添加進(jìn)來).看回一些新手寫的程序,總會(huì)將這些處理寫在渲染函數(shù)體內(nèi),控制物體位置的判斷:switch,if語句占了N多行代碼,為此想起寫這么一個(gè)引擎,將這些動(dòng)作的處理更為簡(jiǎn)單方便.例如你讓指定物件從A坐標(biāo)移動(dòng)至B坐標(biāo),OGF會(huì)自動(dòng)在另一線程中幫你處理,你的代碼只需是告訴OGF要做什么動(dòng),目標(biāo)是什么就可以了,具體看看下述的示例.
Sample06
簡(jiǎn)介:對(duì)象動(dòng)作.
本范例會(huì)示范一個(gè)隨機(jī)的直線運(yùn)動(dòng).運(yùn)行并點(diǎn)擊"Start"按鈕后,Sample05的時(shí)間計(jì)時(shí)器會(huì)隨機(jī)在屏幕上移動(dòng),直至程序關(guān)閉.
閱讀全文
摘要: 游戲中離不開計(jì)時(shí)器,多多少少需要定時(shí)處理某些事情,例如:倒計(jì)時(shí),進(jìn)度條,AI控制等.OGF框架內(nèi)置了一個(gè)計(jì)時(shí)器系統(tǒng),提供了一個(gè)獨(dú)立線程去處理這些任務(wù),間隔最少可達(dá)到5毫秒.
Sample05
簡(jiǎn)介:計(jì)時(shí)器.
該范例運(yùn)行后會(huì)先顯示"Start"按鈕,點(diǎn)擊后會(huì)在屏幕中心顯示一個(gè)秒數(shù)計(jì)數(shù)器,每秒遞增1,一直至程序結(jié)束為至.
閱讀全文
摘要: 我對(duì)游戲開發(fā)的看法是要盡量將游戲細(xì)化,最基本的是將游戲劃分為多個(gè)環(huán)節(jié),每個(gè)環(huán)節(jié)盡可能獨(dú)立處理本環(huán)節(jié)的事情,所以於生出“CGameSection”這個(gè)類模板。在OGF中,當(dāng)處于某一環(huán)節(jié)內(nèi),其它環(huán)節(jié)是不會(huì)收到任何消息的并且其內(nèi)的物件也不會(huì)渲染,這使環(huán)節(jié)變得相對(duì)地獨(dú)立。
Sample04
簡(jiǎn)介:游戲環(huán)節(jié)
使用游戲環(huán)節(jié)對(duì)游戲進(jìn)行分階段管理.使用環(huán)節(jié)控制可以將整個(gè)游戲流程劃分為多個(gè)環(huán)節(jié),例如:SFLASH窗口環(huán)節(jié),菜單環(huán)節(jié),游戲環(huán)節(jié),結(jié)束環(huán)節(jié)等,具體視游戲大小而定.在此例中,會(huì)創(chuàng)建兩個(gè)環(huán)節(jié):CMenuSection, CMainSection,開始時(shí)會(huì)停留在MenuSection階段,有一個(gè)"Start"文本,當(dāng)點(diǎn)擊后會(huì)轉(zhuǎn)換至CMainSection環(huán)節(jié),并實(shí)現(xiàn)Sample03的效果.
閱讀全文
摘要: Sample03
簡(jiǎn)介:
鍵盤,鼠標(biāo)事件的演示。
鍵盤、鼠標(biāo)是游戲中主要的輸入設(shè)備,往往會(huì)要求獲取當(dāng)前鼠標(biāo)對(duì)象、鼠標(biāo)坐標(biāo)等。該例展示了OGF框架的事件處理機(jī)制,并介紹如何運(yùn)用。
閱讀全文
摘要: 該例子非常簡(jiǎn)單,也曾考慮過是否有必要作為例子,但作為OGF介紹的一部分,最終還是寫上了。
Sample02
簡(jiǎn)介:
系統(tǒng)屬性設(shè)置
目的是修改游戲框架的系統(tǒng)屬性.在基于Sample01范例的基礎(chǔ)上,我們來看看在您的游戲項(xiàng)目中如何調(diào)整框架的屬性,例如:運(yùn)行窗口的標(biāo)題,每秒幀數(shù)....由于框架屬性必須在游戲運(yùn)行前設(shè)置完畢,所以我們要重載在框架運(yùn)行前調(diào)用的GameInit()事件,在該事件內(nèi)就可以設(shè)置框架提供的屬性接口.
閱讀全文
摘要: 游戲框架的示例,我確實(shí)不知如何寫才能引人入勝,因?yàn)樗鼘?shí)在是一些框框條條的東西,并不像圖形引擎哪樣注重效果的表現(xiàn),所以,希望讀者能耐心地看完所有示例介紹,望能從中找到你需要的功能。
注:以下每個(gè)示例均基于上一示例基礎(chǔ)上修改,為此,相同部分不再重復(fù)。
Sample01
簡(jiǎn)介:
Hello World!
該例范展示了OGF框架的最基本架構(gòu)及如何基于OGF創(chuàng)建你的游戲項(xiàng)目,運(yùn)行后會(huì)在屏幕中心顯示一段經(jīng)典的"Hello World!"字樣。
閱讀全文
摘要: 期待已久的LEGO智能風(fēng)暴系列,終于得償所愿入手了。早在05年的時(shí)候就看上了舊的RCX套裝,當(dāng)時(shí)2,000大洋,未能狠心買下,今天終于用上了32位的NXT,看來還是值得的。
回來后,足足花了一個(gè)半小時(shí)(大部分時(shí)間是在找零件)按說明書上的范例,搭起了第一臺(tái)三輪車。由于8527沒有配電池,只能出去家樂福買了6個(gè)充電池和充電器,又忍受了8小時(shí)的充電。終于第二天按范例寫了一個(gè)使距離探測(cè)器的程序(雖然運(yùn)行不太正常)并下載運(yùn)行測(cè)試。
閱讀全文