Pharaoh-Maplestory는 클라이언트 편집자, 파일 브라우저 및 클라이언트 자체를 포함하는 Maplestory를위한 도구 모음입니다. .wz 파일 ( GMS KMS CMS 포함)을 지원합니다.
비즈니스 논리는 LUA가 작성합니다.
| Windows10 | 기타 |
|---|---|

편집기에는 maplestory-filesystem-browser가 포함되어 있으므로 리소스를 찾아 게임 장면에 추가 할 수 있습니다.

게다가, 그것은 Unity와 같은 스크립트 바인딩을 지원합니다. 그래서 당신은 자신의 스크립트를 특정 GameObject로 드래그 할 수 있습니다.

자신의 기능을 추가하려면 문서 아래에서 LUA에 대한 더 많은 Nativeapi를 읽으십시오.
이 저장소의 코드는 LUA 스크립트입니다. C ++ 코드는 지금 너무 지저분하므로 향후 업데이트 될 것입니다.
이 엔진에는 두 부분이 포함되어 있습니다. 하나는 핵심 비즈니스 및 편집기 플러그 인 핵심 비즈니스를 작성하는 데 사용되는 LUA입니다.
기본 프레임 워크에서는 오디오, 그래픽 등과 같은 기본 엔진 기능을 지원합니다.

LUA 프레임 워크에는 모든 상단 엔진 구성 요소 (GameObject, 장면, 스프라이트, 기타 UI 구성 요소)가 포함됩니다.


GameObject는 컨테이너 및 기본 업데이트 가능, 드로우 가능, 변형 가능, 이벤트 가능, 스크립트 가능, 직렬화 가능한 객체입니다. 전체 엔진의 루트 객체입니다. 엔진 및 편집기와 밀접한 관련이 있습니다
Sprite는 색상, 변환 (스케일 회전 위치 등)을 변경할 수있는 2D 그래픽 객체입니다.

장면은 또한 컨테이너이며 전체 게임 비즈니스 로직 및 Sprite 및 UI와 같은 다른 구성 요소를 관리하는 데 책임이 있습니다. 편집기를 사용하여 만들 수 있으며 쉽게 전환 할 수 있습니다.
UI는 사용자 인터페이스이며 Button TextView EditText 와 같은 구성 요소입니다.
버튼은 원래 Maplestory 버튼 로직을 구현하므로 Asserts에서 버튼을 쉽게 추가 할 수 있습니다.
TextView는 Maplestory Rich-Text를 기본적으로 구현합니다.

| 플랫폼 | 창 | 스코틀랜드 사람 | 리눅스 | 기계적 인조 인간 | iOS | 스위치 |
|---|---|---|---|---|---|---|
| 기본 렌더 | 완료 (OpenGL 2.0) | - | - | 완료 (OpenGl es 2.0) | 완료 (OpenGl es 2.0) | - |
| 기본 이벤트 | 완료 (GLFW3) | |||||
| 오디오 | Xaudio | - | - | 오픈 | 개방형 | - |
| 파일 시스템 | 완료 | - | - | - | - | - |
| 심 | SSE | SSE | SSE | 네온 | 네온 | 네온 |
| 루아 포장지 | 진보 | |||||
| 편집자 | 진보 | |||||
| 스크립트 바인딩 | 진보 | |||||
| 물리학 | 미래 | |||||
| 입자 시스템 | 미래 | |||||
| 게임 사업 | 미래 |
매트릭스 객체는 많은 수의 계산이 포함되어 있기 때문에 네이티브에 의해 생성됩니다.
-- 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/>.