{"id":39906357,"url":"https://github.com/flwmxd/MapleStory-Porting","last_synced_at":"2026-01-27T04:00:45.395Z","repository":{"id":111210382,"uuid":"264421774","full_name":"flwmxd/MapleStory-Porting","owner":"flwmxd","description":"MapleStory implementation build with early stage MapleEngine","archived":false,"fork":false,"pushed_at":"2020-09-25T09:28:13.000Z","size":31584,"stargazers_count":122,"open_issues_count":5,"forks_count":21,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-10-19T19:41:10.047Z","etag":null,"topics":["android","client","cpp","editor","game","game-engine","game-engine-2d","ios","lua","maplestory","opengl","opengl-es","opengl2","switch","windows"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flwmxd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-05-16T11:27:30.000Z","updated_at":"2023-10-19T20:22:13.281Z","dependencies_parsed_at":"2023-10-19T21:26:16.789Z","dependency_job_id":null,"html_url":"https://github.com/flwmxd/MapleStory-Porting","commit_stats":null,"previous_names":["flwmxd/pharaohstroy"],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/flwmxd/MapleStory-Porting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flwmxd%2FMapleStory-Porting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flwmxd%2FMapleStory-Porting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flwmxd%2FMapleStory-Porting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flwmxd%2FMapleStory-Porting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flwmxd","download_url":"https://codeload.github.com/flwmxd/MapleStory-Porting/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flwmxd%2FMapleStory-Porting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28800877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T03:44:14.111Z","status":"ssl_error","status_checked_at":"2026-01-27T03:43:33.507Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","client","cpp","editor","game","game-engine","game-engine-2d","ios","lua","maplestory","opengl","opengl-es","opengl2","switch","windows"],"created_at":"2026-01-18T16:00:22.321Z","updated_at":"2026-01-27T04:00:45.305Z","avatar_url":"https://github.com/flwmxd.png","language":"Lua","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"\n# Pharaoh MapleStory\n\nPharaoh-MapleStory is a collection of tools for MapleStory, which contains a client-editor, a file-browser and the client itself. It support the **.wz** files(include **GMS KMS CMS**).\n\nThe business logic are written by lua.\n\n\n\n|Windows10|Others|\n| ----|------|\n[![Build status](https://img.shields.io/badge/build-pass-green.svg)]()|[![Build Status](https://img.shields.io/badge/porting-fail-red.svg)]()\n\n\n\u003cimg src=\"img/map.png\"\u003e\n\n# Usage \n\nThe editor contains a MapleStory-FileSystem-Browser, so you can use it find a resource and add it into game scene\n\n\n\n\u003cimg src=\"img/add-sprite.gif\"\u003e\n\nBeside, it support script-binding like Unity. so you can drag your own script to some specific GameObject \n\n\n\u003cimg src=\"img/drag-script.gif\"\u003e\n### Others\n\nif you want to add your own function,please read more NativeAPI for lua under the document.\n\n\n# Dependency\n\n* [glfw3](https://github.com/glfw/glfw) \n* [glew](https://github.com/nigels-com/glew) \n* [freetype2](https://www.freetype.org/) \n* [iconv](http://www.gnu.org/software/libiconv/) \n* [lua](http://www.lua.org/) \n* [openal](www.openal.org/) \n* [zlib](www.zlib.net/) \n* [imgui](https://github.com/ocornut/imgui)\n* [WzTools](https://github.com/flwmxd/WzTools)\n\n# Main features\n\n* Language: C++ 17, with Lua, and lower dependency on os\n* High quality code and modern game engine architecture\n* Use own editor can be easily to create UI layer\n* Basic Buttons,EditText TextView (Supprot maplestory rich-text)\n* Smart memory management\n* Support SIMD\n* Support ImGui\n* Support for .ttf fonts\n* Support UTF-8 and UTF-16 and none-ascii characters\n\n# Current Code\n\nThose code in this repository are lua script. the C++ code will be updated in the future because they are so messy now.\n\n# Architecture\n\nthis engine include two parts, one is the lua which is used to write core business and editor-plugin\n\nin the native framework, it support the basic engine function such as Audio,Graphics,etc\n\n\u003cimg src=\"img/Architecture.png\"\u003e\n\n## Engine Architecture \n\nin lua framework, it include all upper engine components (GameObject,Scene,Sprite,Other UI components)\n\n\u003cimg src=\"img/lua-framework.png\"\u003e\n\n## Processing Graph\n\n\u003cimg src=\"img/processing.png\"\u003e\n\n# Some Concepts\n\n\n## GameObject \n\nGameObject is a container and basic updatable, drawable, transformable, eventable,scriptable,serializable object. it's the root object in whole engine. it has a strong connection with engine and editor\n\n\n## Sprite\nSprite is a 2d graphic object which can change its color, transform(scale rotation postion,etc)\n\n\u003cimg src=\"img/sprite.png\"\u003e\n\n## Scene\n\nScene is also a container, which is responsibilty for managing the whole game business logic and others components like sprite and UI . you can create it by using editor and can be switch easily. \n\n\n## UI\n\nUI is user interface, these are components like **Button**  **TextView** **EditText**. \n\nThe **Button** implements the original maplestory button logic, so you can add button from asserts easily.\n\nThe **TextView** implements the maplestory **Rich-Text** in native.\n\n\u003cimg src=\"img/text.gif\"\u003e\n\n\n# Roadmap\n\nPlatform | Windows | Mac | Linux | Android | iOS | Switch\n:-: | :-: | :-: | :-: | :-: | :-: | :-:\nBasic Render | Done(OpenGL 2.0) | - | - | Done(OpenGL ES 2.0) | Done(OpenGL ES 2.0) | -\nNative Event | Done(glfw3)\nAudio | XAudio | - | - | OpenSLES | OpenAL | -\nFileSystem | Done |  - | - |  - | - | - |\nSIMD | SSE | SSE | SSE | NEON | NEON | NEON\nLua Wrapper | Progrssing\nEditor | Progrssing\nScript Binding | Progrssing\nPhysics | Future\nParticle System | Future\nGame Business | Future\n\n# Some Native Api for Lua\n\n* Matrix  (Native)\n\nthe matrix object is created by native because it involve a large number of calculation.\n\n##### Example : \n``` lua \n--create a zero matrix\n    local matrix = Matrix.new()  \n-- or \n    local matrix = Matrix.new({\n        1,0,0,0,\n        0,1,0,0,\n        0,0,1,0,\n        0,0,0,1\n    })  \n-- create an identity \n    local matrix = Matrix.identity()\n\n-- there are others apis for transform\n\n    function setTranslation(x,y,z) end\n    function setRotation(Quaternion) end\n    function setScale(x,y,z) end\n    function setOrthographic(l,r,t,b,zNearPlane,zFarPlane) end\n\n-- get a inverse matrix\n-- @return a new matrix\n    function invert() end\n-- matrix also support the mul operator\n    local m =  Matrix.new() *  Matrix.new()\n\n```\n\n* Quaternion (Native)\n\n\n##### Example : \n``` lua \n-- create a Quaternion\n    local q = Quaternion.new()\n--or\n    local q = Quaternion.identity()\n-- set euler angle \n    function setEulerAngles(x,y,z) end\n\n--combine with matrix\n    local q = Quaternion.new()\n    q:setEulerAngles(x,y,z)\n    local rotationMatrix = Matrix.new()\n    rotationMatrix:setRotation(self.rotation)\n```\n\n\n\n#### Example : \n``` lua\n-- get a wz-node under UI.wz/UIWindow.img/AdminClaim\n-- @return the WzNode which is a lua object\nlocal node = WzFile.ui[\"UIWindow.img\"][\"AdminClaim\"][\"BtPClaim\"]\n```\n* if the current node is a sprite type, which can be used to init a sprite\n\n``` lua\n\nlocal node = ......\n--create a sprite with given node\nlocal sprite = Sprite.new(node)\n-- add into you scene\nscene:addChild(sprite)\n\n```\n\n\n* WzNode (Native)\n\n```lua\n-- parse the path resource\nwz.flat(string path) -\u003e table {\n    name -\u003e  WzNode(lightuserdata),\n    name2 -\u003e WzNode(lightuserdata)\n    .....\n}\n\n-- expand the rawPtr, get all sub node in it\nwz.expand(rawPtr) -\u003e table {\n    name -\u003e  WzNode(lightuserdata),\n    name2 -\u003e WzNode(lightuserdata)\n    .....\n}\n\n-- convert the current node into different data type \nwz.toInt(@lightuserdata rawPtr,default) -\u003e lua_number\n\nwz.toReal(@lightuserdata rawPtr,default) -\u003e lua_number\n\nwz.toString(@lightuserdata rawPtr,default) -\u003e lua_string\n\nwz.toVector(@lightuserdata rawPtr) -\u003e lua_number\n\n```\n\n* Audio (Native)\n\nAudio component is a native engine which is desigined for play music and effect.\n\n```lua\n--- @param nodePath string\naudio.playBGM(nodePath)\n\n--- @param node string or id(which is pre-defined)\naudio.playEffect(node)\n\n-- there are all pre-defined audio effects\naudio.BUTTONCLICK,\naudio.BUTTONOVER,\naudio.SELECTCHAR,\naudio.GAMESTART,\naudio.SCROLLUP,\naudio.ATTACK,\naudio.ALERT,\naudio.JUMP,\naudio.DROP,\naudio.PICKUP,\naudio.PORTAL,\naudio.LEVELUP,\naudio.DIED,\naudio.INVITE,\naudio.BUY_SHOP_ITEM,\naudio.USE,\naudio.TRANSFORM,\naudio.QUEST_ALERT,\naudio.QUEST_CLEAR,\naudio.ENCHANT_FAILURE,\naudio.ENCHANT_SUCCESS,\n\n```\n\n\n# License\n\n```\n\n This file is part of the PharaohStroy MMORPG client                      \n Copyright ?2020-2022 Prime Zeng                                          \n                                                                          \n This program is free software: you can redistribute it and/or modify     \n it under the terms of the GNU Affero General Public License as           \n published by the Free Software Foundation, either version 3 of the       \n License, or (at your option) any later version.                          \n                                                                          \n This program is distributed in the hope that it will be useful,          \n but WITHOUT ANY WARRANTY; without even the implied warranty of           \n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            \n GNU Affero General Public License for more details.                      \n                                                                          \n You should have received a copy of the GNU Affero General Public License \n along with this program.  If not, see \u003chttp:www.gnu.org/licenses/\u003e.    \n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflwmxd%2FMapleStory-Porting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflwmxd%2FMapleStory-Porting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflwmxd%2FMapleStory-Porting/lists"}