天天看點

免内置mysql和用戶端媒體的kbengine demo,kbengine通用版

關鍵字:kbengine換外部mysql資料源和外部用戶端托管位址,kbengine js demo外部托管 黑屏,kbengine外置mysql

kbengine的引擎意義

kbengine是一個優秀的遊戲服務端邏輯引擎 大于 其作為遊戲伺服器引擎存在的意義(假設遊戲應用域架構首先按CS這個粒度來分脫離不了服務端用戶端之分的話 — 當然并不排除更廣泛的遊戲方案域抽象将CS視為低級抽象),它為遊戲APP定義了一個appstack。就像GAME界的WEBAPP一樣,開發遊戲就是開發一些gameapp(人類總是要研究終極之道),你也可以叫它WEBGAME engine.

然而此WEBGAME指的并不是用戶端富網頁技術和微端釋出那些,而側重指的是其使用了WEB的開發釋出模式,是GAME界的“WEBGAME引擎”(對GAME這個東西方案域和程式域開發釋出通觀的總抽象),首先要說的是它運用了廣為流行的CS和BS架構,

1,它分開了遊戲C端和S端,使得不同終端平台上的C端可以共享一個伺服器,而伺服器上,可以同時共存很多遊戲。你可以叫他們assert,mod或其它什麼東西,呆會詳解

2,其次,它隐藏了開發者需要從0開始面對的所有東西,它封裝了協定,甚至最終的遊戲邏輯定義,它并不提倡直接對引擎開發,開發者僅需要定義遊戲領域邏輯。它透露給開發者立馬可工作産生一個遊戲的那些方面(服務端的遊戲編輯器,當然帶點開發)

3,重點在這裡——它封裝的程度是使使用者(包括非專業的)隻需要作換裝和UGC就可以開發出一個遊戲的功能,就像用戶端的gamestudio一樣,而且kbe是遊戲容器。它像WAMP架構一樣,負責運作,整個開發釋出就像WEB界成熟的那些架構和應用伺服器一樣。當然還有開發範式。

談到UGC,這其實也是WEB應用的方式。WEB是開發更是應用,它使使用者直接參與程式(内容)建設。

總之,mod+ugc,這一切,使遊戲程式設計有了終極遊戲程式設計的味道。這也是當今所有領域程式設計最終要達到和到達的境界。

什麼是終極程式設計,程式設計的最高境界是什麼

終極程式設計真的存在,然而并不需要是類似程式設計葵花寶典之類的東西,我們可以了解讓程式設計展現為适可而止,有止境的境界,在工程上(程式設計上讓事情變得越來越容易最後不需投入或極少投入再學習成本),通往其的方法可以有很多種,但一種無疑是那種直到腳本和可視編輯器的封裝。就像WEB前端,以及上面的GAME MOD開發一樣。

如果程式設計方法可以歸結為一門最終的哲學,學者可以利用它舉一反三,完成自舉學習,那麼這種元性質的哲學,就是終極。

圖形界面的出現和DLL API機制,VB可視化,在這個意義上都是偉大的鋪墊作品,面向對象也是一種終極程式設計,它在語言内在抽象接近平民,各種OO範式,PME,再後來,架構容器,都是使程式設計變得終極的方法和基礎工作。

kbengine隻是運用了所有這些(當然還有更多,比如接下提到的持久機制)。

kbengine的程式技術

在程式技術上,KBE使用到了分布式架構和傳統伺服器多載的方式,它的各個部件可以分布式存在不同實體機甚至程序中,擴充負載,本身作為分布式雲存在。

然而,以上所有這些,都不是重點,KBE對“服務端遊戲邏輯”的應用抽象,才是它的根本。它将一切抽象為實體,空間,等等,它首次提出了對遊戲邏輯->世界的抽象,這種方式下,它完全可以視RPG/RTS為同一個遊戲(準備地說是遊戲虛拟世界)。因為可以共享一個服務端的世界。産生差別的僅是用戶端。可以産生混合的遊戲世界。

其次,它對于協定處理,資料定義,這些方面也有自己的創新。特别是它對元件和XML持久資料的應用。這些都是讓遊戲程式設計變得終極的方法(硬要給點提示的話:持久化和XML語義化=使資料與邏輯對接,讓資料化代碼轉領域邏輯的終極手段,将不可見的黑箱邏輯變得可編輯hook到使用者可視化操作,跟腳本變量,資料庫,ORM等,都有異曲同工之妙)

未來會專門詳細一篇文章分析其架構。

修改kbengine使得mysql和用戶端可外置外部托管

原KBE引擎python,js,cpp都是大小寫敏感的,作為混合編制的程式體系,一個kbe demo要處理這些,kbengine官方的方法是強制驗證大小寫。規定mysql.ini大小寫。這使得對mysql環境有限制,這裡談的即是讓kbengine換外部資料源和外部用戶端媒體檔案托管位址的方法。

這裡所用到的是0.9.4的kbegine src和js demo.

1,首先cpp src端要處理一下,在srclibdb_interfacedb_interface.cpp中将如下三行注釋:

//if(ret)
// {
// ret = pdbi->checkEnvironment();
// }           

2,在kbegine asserts設定檔案中,server.xml中,強制外網IP為某個IP:

115.28.103.100

3,改動最大的地方,.py中有大量大小寫要改。media js中要改。

首先,Main.js,IP換成外網位址,然後将client media放到外部托管環境中發現大部分加載黑屏是因為JS大小寫敏感擷取不到正确的類名:

方法:在chrome F12下,不斷測試,找出monster.js,npc.js,avatar.js,gate.js,account.js中的KBEngine.xxx中的xxx要改成小寫,注意檔案名中的大小寫不用處理

以下是最終能運作的測試圖,

下載下傳位址及相關msyscuione程式包見原貼,之是以不發具體位址是因為位址經常會失效。隻能維護在原貼了,原貼也有本文新增内容及錯誤堪正方面的修改。

以後demo釋出類帶下載下傳的文章基本也會這樣是以第一時間找不到資源請去官網謝謝。

(此處不設回複,掃碼到微信參與留言,或直接點選到原文)

免内置mysql和用戶端媒體的kbengine demo,kbengine通用版