Pharaoh-Maplestory es una colección de herramientas para Maplestory, que contiene un editor de cliente, un navegador de archivos y el cliente en sí. Admite los archivos .wz (incluye GMS KMS CMS ).
La lógica de negocios está escrita por Lua.
| Windows10 | Otros |
|---|---|

El editor contiene un navegador MapLestory-Filesystem, para que pueda usarlo encontrar un recurso y agregarlo a la escena del juego

Además, admite la unión de script como Unity. para que puedas arrastrar tu propio script a un gameobject específico

Si desea agregar su propia función, lea más NativeApi para Lua en el documento.
Esos código en este repositorio son el script Lua. El código C ++ se actualizará en el futuro porque ahora están muy desordenados.
Este motor incluye dos piezas, una es la Lua que se utiliza para escribir negocios y editor centrales-plugin
En el marco nativo, admite la función básica del motor, como audio, gráficos, etc.

En el marco de Lua, incluye todos los componentes del motor superior (GameObject, Scene, Sprite, otros componentes de la interfaz de usuario)


GameObject es un contenedor y un objeto básico actualizable, dibujable, transformable, eventible, scriptable, serializable. Es el objeto raíz en todo el motor. Tiene una fuerte conexión con el motor y el editor
Sprite es un objeto gráfico 2D que puede cambiar su color, transformar (Posición de rotación de escala, etc.)

La escena también es un contenedor, que es responsable para administrar toda la lógica comercial del juego y otros componentes como Sprite y UI. Puede crearlo usando el editor y puede cambiar fácilmente.
UI es interfaz de usuario, estos son componentes como Button TextView EditText .
El botón implementa la lógica del botón Maplestory original, por lo que puede agregar el botón de afirmarlo fácilmente.
TextView implementa el texto rico de maplestory en nativo.

| Plataforma | Windows | Impermeable | Linux | Androide | iOS | Cambiar |
|---|---|---|---|---|---|---|
| Renderizado | Hecho (OpenGL 2.0) | - | - | Hecho (OpenGL es 2.0) | Hecho (OpenGL es 2.0) | - |
| Evento nativo | Hecho (GLFW3) | |||||
| Audio | Xaudio | - | - | Abense | Openal | - |
| Sistema de archivos | Hecho | - | - | - | - | - |
| Simd | SSE | SSE | SSE | NEÓN | NEÓN | NEÓN |
| Envoltura de lua | Programación | |||||
| Editor | Programación | |||||
| Enlace de script | Programación | |||||
| Física | Futuro | |||||
| Sistema de partículas | Futuro | |||||
| Negocio de juegos | Futuro |
El objeto matriz es creado por nativo porque implica una gran cantidad de cálculos.
-- 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
El componente de audio es un motor nativo que está desigrado para reproducir música y efecto.
--- @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/>.