開源游戲框架相關(guān)文章
摘要: 最新的OGF 0.8.1版,已修正上一版已知的BUG,并加入了更多的功能。另外,已在此版本的基礎(chǔ)上,開發(fā)了一個休閑游戲,已證明該框架的可行性,穩(wěn)定性方面仍需后期的使用反饋才能能到確認(rèn)。(記得以前提及會用一個游戲來逐步講解使用OGF開發(fā)游戲的過程,所以游戲的代碼可繼續(xù)關(guān)注我的BLOG,將會陸續(xù)放出)
閱讀全文
摘要: 試用過OGF的朋友,應(yīng)該會發(fā)現(xiàn)GameFrame在鼠標(biāo)消息處理時,都會搜索當(dāng)前鼠標(biāo)坐標(biāo)下的對象,以實(shí)現(xiàn)對像的MouseMove,MouseOver, MouseIn, MouseOut四個事件,但效率非常之差。現(xiàn)打算進(jìn)行調(diào)整,以加快每幀的處理速度,大致方案如下:
1、按FLASH的模式,默認(rèn)不提供對象的MouseMove, MouseOver, MouseIn, MouseOut事件,GameFrame只負(fù)責(zé)將MouseMove的消息轉(zhuǎn)發(fā)至GameBody,用戶要實(shí)現(xiàn)要上述4個事件,則必須重載GameBody的OnMouseMove來實(shí)現(xiàn)(GameBody可能會提供一個默認(rèn)的對象分發(fā)過程,由用戶調(diào)用或GameFrame的Setting中帶一個標(biāo)志開發(fā)以確定是否分發(fā)至對象);
2、在GameLayer層加入一個是否允許處理鼠標(biāo)消息的標(biāo)志(默認(rèn)為false),當(dāng)為否則不檢測,減少FindObject()函數(shù)的判斷次數(shù);
3、在對象中增加一個是否允許處理鼠標(biāo)消息的標(biāo)志(默認(rèn)為false),減少FindObject()函數(shù)中用對象區(qū)域判斷的次數(shù);
<
閱讀全文
摘要: 原本打算趕在9月上旬放出來的,但CSDN的博客老是出錯,于是當(dāng)天就來申請CPPBLOG,今天就將近期更新后的版本放上來,希望大家繼續(xù)支持!
OGF 0.81 debug版代碼下載:
http://www.shnenglu.com/Files/lwq49/GameFrame%200.8.rar
閱讀全文
摘要: 本范例主要是介紹圖形對象及對象中新增的Region屬性.首先要說明圖形對象并不是用于繪制,而是圖形的封裝,一個圖形實(shí)例只對應(yīng)一種圖形,若想創(chuàng)造復(fù)雜的圖形則只能通過多個單個圖形組合.范例運(yùn)行后會在屏幕中顯示一幅帶有邊框的圖片,當(dāng)按鍵盤的左/右鍵,圖片會逆/順時針旋轉(zhuǎn),這時邊框會根據(jù)圖片的新區(qū)域重繪(將以圖片的最小X和Y點(diǎn)為左上角,以圖片當(dāng)前的最大X和Y點(diǎn)為右下角).
閱讀全文
摘要: 網(wǎng)絡(luò)服務(wù)器的編寫相對客戶端的網(wǎng)絡(luò)應(yīng)用較為復(fù)雜,既要實(shí)現(xiàn)單個客戶端的功能,也要實(shí)現(xiàn)其管理,包括應(yīng)答,讀/寫數(shù)據(jù)的線程開啟/回收,多線之間的數(shù)據(jù)互斥等.(管理方面是采用了一個非開源項(xiàng)目的代碼,所以代碼暫不便公開,將以LIB方式提供大家使用.)為方便后臺服務(wù)的開發(fā),因此采用了MFC框架.范例中代碼較為多不一一進(jìn)行說明,只從大體上簡單介紹每個類的作,并針對網(wǎng)絡(luò)相關(guān)部分進(jìn)行相關(guān)說明.
范例是實(shí)現(xiàn)一個消息管理服務(wù).提供群發(fā)或定向發(fā)送文本消息至客戶端,并帶有服務(wù)啟動/關(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ì)時器或動作引擎沒有太大的差異,無非創(chuàng)建了一個空窗口與SOCKET進(jìn)行綁定,然后將SOCKET消息發(fā)送隊(duì)列后再分發(fā).除此之外,提供了簡單的數(shù)據(jù)加/解密的支持,提供了SOCKET代理模式的支持.
閱讀全文
摘要: 游戲開發(fā)其中一環(huán)就是非常枯燥的資源加載及布局,大多數(shù)大型游戲都會有編輯器,對自己的游戲中用到的層場進(jìn)行可視化編輯,但創(chuàng)建這樣一個引擎對中小型游戲來說,反而是開發(fā)比例不對稱,所以O(shè)GF內(nèi)置了場景布局器,方便中小型游戲方便地從XML文件中加載,而生成XML的界面編輯器也會優(yōu)先開發(fā)出來,以簡化這方面排版的時間消耗.
布局器是一條處理鏈,鏈中可能有多個不同性質(zhì)的布局處理器,例如:處理資源的,處理環(huán)節(jié),場景,場的,還有是處理對象的等.用戶也可自行擴(kuò)展XML的內(nèi)容,但要求自己編寫布局處理器,然后注冊到系統(tǒng)中使用即可.
Sample07
簡介:布局器
該示例會以一個以前做過的游戲背景為基礎(chǔ),顯示了如何按OGF.xml中的內(nèi)容進(jìn)行布局.
閱讀全文
摘要: 這個范例將會介紹OGF框架另一個擴(kuò)展功能--物件動作引擎.作為一個游戲必然會涉及到一些對象動作,例如簡單的直線移動,旋轉(zhuǎn),漸變等,高級的話,可能要做貝塞爾的曲線運(yùn)動或作物理的慣性移動,物件動作引擎專門針對這些動作進(jìn)行處理(隨著推廣和改進(jìn),相信會有你所需要的動作添加進(jìn)來).看回一些新手寫的程序,總會將這些處理寫在渲染函數(shù)體內(nèi),控制物體位置的判斷:switch,if語句占了N多行代碼,為此想起寫這么一個引擎,將這些動作的處理更為簡單方便.例如你讓指定物件從A坐標(biāo)移動至B坐標(biāo),OGF會自動在另一線程中幫你處理,你的代碼只需是告訴OGF要做什么動,目標(biāo)是什么就可以了,具體看看下述的示例.
Sample06
簡介:對象動作.
本范例會示范一個隨機(jī)的直線運(yùn)動.運(yùn)行并點(diǎn)擊"Start"按鈕后,Sample05的時間計(jì)時器會隨機(jī)在屏幕上移動,直至程序關(guān)閉.
閱讀全文
摘要: 游戲中離不開計(jì)時器,多多少少需要定時處理某些事情,例如:倒計(jì)時,進(jìn)度條,AI控制等.OGF框架內(nèi)置了一個計(jì)時器系統(tǒng),提供了一個獨(dú)立線程去處理這些任務(wù),間隔最少可達(dá)到5毫秒.
Sample05
簡介:計(jì)時器.
該范例運(yùn)行后會先顯示"Start"按鈕,點(diǎn)擊后會在屏幕中心顯示一個秒數(shù)計(jì)數(shù)器,每秒遞增1,一直至程序結(jié)束為至.
閱讀全文
摘要: 我對游戲開發(fā)的看法是要盡量將游戲細(xì)化,最基本的是將游戲劃分為多個環(huán)節(jié),每個環(huán)節(jié)盡可能獨(dú)立處理本環(huán)節(jié)的事情,所以於生出“CGameSection”這個類模板。在OGF中,當(dāng)處于某一環(huán)節(jié)內(nèi),其它環(huán)節(jié)是不會收到任何消息的并且其內(nèi)的物件也不會渲染,這使環(huán)節(jié)變得相對地獨(dú)立。
Sample04
簡介:游戲環(huán)節(jié)
使用游戲環(huán)節(jié)對游戲進(jìn)行分階段管理.使用環(huán)節(jié)控制可以將整個游戲流程劃分為多個環(huán)節(jié),例如:SFLASH窗口環(huán)節(jié),菜單環(huán)節(jié),游戲環(huán)節(jié),結(jié)束環(huán)節(jié)等,具體視游戲大小而定.在此例中,會創(chuàng)建兩個環(huán)節(jié):CMenuSection, CMainSection,開始時會停留在MenuSection階段,有一個"Start"文本,當(dāng)點(diǎn)擊后會轉(zhuǎn)換至CMainSection環(huán)節(jié),并實(shí)現(xiàn)Sample03的效果.
閱讀全文
摘要: Sample03
簡介:
鍵盤,鼠標(biāo)事件的演示。
鍵盤、鼠標(biāo)是游戲中主要的輸入設(shè)備,往往會要求獲取當(dāng)前鼠標(biāo)對象、鼠標(biāo)坐標(biāo)等。該例展示了OGF框架的事件處理機(jī)制,并介紹如何運(yùn)用。
閱讀全文
摘要: 該例子非常簡單,也曾考慮過是否有必要作為例子,但作為OGF介紹的一部分,最終還是寫上了。
Sample02
簡介:
系統(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),所以,希望讀者能耐心地看完所有示例介紹,望能從中找到你需要的功能。
注:以下每個示例均基于上一示例基礎(chǔ)上修改,為此,相同部分不再重復(fù)。
Sample01
簡介:
Hello World!
該例范展示了OGF框架的最基本架構(gòu)及如何基于OGF創(chuàng)建你的游戲項(xiàng)目,運(yùn)行后會在屏幕中心顯示一段經(jīng)典的"Hello World!"字樣。
閱讀全文
摘要: OGF游戲框架是一個基本MPL開源協(xié)議的開源項(xiàng)目。它是針對2D游戲普遍的執(zhí)行流程而提出的框架,而并非一個圖形引擎(內(nèi)核圖形引擎是基于HGE)。除了為游戲提供整套的管理規(guī)范及流程外,同時提供經(jīng)常用到的計(jì)時器、動作引擎等附助功能;并以組件的形式提供,有利于獨(dú)立擴(kuò)展,減少組件的重復(fù)開發(fā),加快開發(fā)進(jìn)度。
此版本已實(shí)現(xiàn)整個游戲框架,能按暨定的思路運(yùn)行,但個別設(shè)想的組件仍未實(shí)現(xiàn),例如:網(wǎng)絡(luò)、數(shù)據(jù)庫及更多的對象庫等(現(xiàn)已努力寫代碼中)。希望以此拋磚引玉,引入其他有興趣的朋友共同參與開發(fā)。
感謝BEN、Randy對基礎(chǔ)部分的開發(fā)作出的貢獻(xiàn)!
閱讀全文