MapleStory Porting
1.0.0
Pharaoh-Maplestory是MapleStory的工具集合,其中包含客戶端編輯器,文件瀏覽器和客戶端本身。它支持.wz文件(包括GMS KMS CMS )。
業務邏輯由LUA撰寫。
| Windows10 | 其他的 |
|---|---|

編輯器包含一個Maplestory-Filesystem-browser,因此您可以使用它找到資源並將其添加到遊戲場景中

除了統一,它支持腳本結合。因此,您可以將自己的腳本拖到一些特定的遊戲對象

如果您想添加自己的功能,請在文檔下閱讀更多的lua nativeapi。
此存儲庫中的那些代碼是LUA腳本。 C ++代碼將來會更新,因為它們現在是如此的混亂。
該引擎包括兩個部分,一個是用於編寫核心業務和編輯的LUA
在本機框架中,它支持基本的引擎功能,例如音頻,圖形等

在LUA框架中,它包括所有上部發動機組件(遊戲對象,場景,精靈,其他UI組件)


GameObject是一個容器和基本的可更新,可繪製的,可轉換的,Extable,可腳本化的對象。這是整個引擎中的根對象。它與引擎和編輯有密切的聯繫
Sprite是一個2D圖形對象,可以改變其顏色,變換(比例旋轉後等)

場景也是一個容器,負責管理整個遊戲業務邏輯和其他組件(例如Sprite and UI)的責任。您可以使用編輯器來創建它,並且可以輕鬆切換。
UI是用戶界面,這些組件是按鈕TextView Edittext 。
該按鈕實現了原始的MapLestory按鈕邏輯,因此您可以輕鬆地從斷言中添加按鈕。
TextView以本機中實現MapLestory Rich-Text 。

| 平台 | 視窗 | 蘋果 | Linux | 安卓 | ios | 轉變 |
|---|---|---|---|---|---|---|
| 基本渲染 | 完成(OpenGL 2.0) | - | - | 完成(OpenGL ES 2.0) | 完成(OpenGL ES 2.0) | - |
| 本地事件 | 完成(GLFW3) | |||||
| 聲音的 | xaudio | - | - | 打開 | 開放式 | - |
| 文件系統 | 完畢 | - | - | - | - | - |
| simd | SSE | SSE | SSE | 氖 | 氖 | 氖 |
| Lua包裝紙 | 專業 | |||||
| 編輯 | 專業 | |||||
| 腳本綁定 | 專業 | |||||
| 物理 | 未來 | |||||
| 粒子系統 | 未來 | |||||
| 遊戲業務 | 未來 |
矩陣對像是由本機創建的,因為它涉及大量計算。
-- create a zero matrix
local matrix = Matrix . new ()
-- or
local matrix = Matrix . new ({
1 , 0 , 0 , 0 ,
0 , 1 , 0 , 0 ,
0 , 0 , 1 , 0 ,
0 , 0 , 0 , 1
})
-- create an identity
local matrix = Matrix . identity ()
-- there are others apis for transform
function setTranslation ( x , y , z ) end
function setRotation ( Quaternion ) end
function setScale ( x , y , z ) end
function setOrthographic ( l , r , t , b , zNearPlane , zFarPlane ) end
-- get a inverse matrix
-- @ return a new matrix
function invert () end
-- matrix also support the mul operator
local m = Matrix . new () * Matrix . new ()
-- create a Quaternion
local q = Quaternion . new ()
-- or
local q = Quaternion . identity ()
-- set euler angle
function setEulerAngles ( x , y , z ) end
-- combine with matrix
local q = Quaternion . new ()
q : setEulerAngles ( x , y , z )
local rotationMatrix = Matrix . new ()
rotationMatrix : setRotation ( self . rotation ) -- get a wz-node under UI.wz/UIWindow.img/AdminClaim
-- @ return the WzNode which is a lua object
local node = WzFile . ui [ " UIWindow.img " ][ " AdminClaim " ][ " BtPClaim " ] local node = ......
-- create a sprite with given node
local sprite = Sprite . new ( node )
-- add into you scene
scene : addChild ( sprite )
-- parse the path resource
wz . flat ( string path ) -> table {
name -> WzNode ( lightuserdata ),
name2 -> WzNode ( lightuserdata )
.....
}
-- expand the rawPtr, get all sub node in it
wz . expand ( rawPtr ) -> table {
name -> WzNode ( lightuserdata ),
name2 -> WzNode ( lightuserdata )
.....
}
-- convert the current node into different data type
wz . toInt (@ lightuserdata rawPtr , default ) -> lua_number
wz . toReal (@ lightuserdata rawPtr , default ) -> lua_number
wz . toString (@ lightuserdata rawPtr , default ) -> lua_string
wz . toVector (@ lightuserdata rawPtr ) -> lua_number
音頻組件是一種本機引擎,可用於播放音樂和效果。
--- @param nodePath string
audio . playBGM ( nodePath )
--- @param node string or id ( which is pre-defined )
audio . playEffect ( node )
-- there are all pre-defined audio effects
audio . BUTTONCLICK ,
audio . BUTTONOVER ,
audio . SELECTCHAR ,
audio . GAMESTART ,
audio . SCROLLUP ,
audio . ATTACK ,
audio . ALERT ,
audio . JUMP ,
audio . DROP ,
audio . PICKUP ,
audio . PORTAL ,
audio . LEVELUP ,
audio . DIED ,
audio . INVITE ,
audio . BUY_SHOP_ITEM ,
audio . USE ,
audio . TRANSFORM ,
audio . QUEST_ALERT ,
audio . QUEST_CLEAR ,
audio . ENCHANT_FAILURE ,
audio . ENCHANT_SUCCESS ,
This file is part of the PharaohStroy MMORPG client
Copyright ?2020-2022 Prime Zeng
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http:www.gnu.org/licenses/>.