{"id":13419935,"url":"https://github.com/ketoo/NoahGameFrame","last_synced_at":"2025-03-15T06:30:51.404Z","repository":{"id":17078777,"uuid":"19843809","full_name":"ketoo/NoahGameFrame","owner":"ketoo","description":"A fast, scalable, distributed game server engine/framework for C++, include the actor library, network library, can be used as a  real time multiplayer game engine ( MMO RPG/MOBA ), which support C#/Lua script/ Unity3d, Cocos2dx and plan to support Unreal.","archived":false,"fork":false,"pushed_at":"2023-02-25T06:55:21.000Z","size":30166,"stargazers_count":3983,"open_issues_count":25,"forks_count":1099,"subscribers_count":328,"default_branch":"master","last_synced_at":"2024-10-29T15:17:32.678Z","etag":null,"topics":["architecture","game","game-development","game-engine","game-server","gamedev","gameserver","mmo","mmorpg","server-architecture","unity","unity3d"],"latest_commit_sha":null,"homepage":"https://github.com/ketoo/NoahGameFrame/wiki","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ketoo.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":"2014-05-16T03:41:33.000Z","updated_at":"2024-10-29T15:15:34.000Z","dependencies_parsed_at":"2023-10-20T22:01:01.847Z","dependency_job_id":null,"html_url":"https://github.com/ketoo/NoahGameFrame","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ketoo%2FNoahGameFrame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ketoo%2FNoahGameFrame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ketoo%2FNoahGameFrame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ketoo%2FNoahGameFrame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ketoo","download_url":"https://codeload.github.com/ketoo/NoahGameFrame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243482901,"owners_count":20297902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["architecture","game","game-development","game-engine","game-server","gamedev","gameserver","mmo","mmorpg","server-architecture","unity","unity3d"],"created_at":"2024-07-30T22:01:23.146Z","updated_at":"2025-03-15T06:30:51.398Z","avatar_url":"https://github.com/ketoo.png","language":"C++","readme":"# 2021.7.9 在新西兰奥克兰的一场车祸中，ketoo 永远离开了我们。\r\n# On July 9, 2021, ketoo left us forever in a car accident in Auckland, New Zealand.\r\n# 由于mater有权限合并了， master-new 分支后续不再维护。 直接维护master即可，pr也提交到master即可\r\n# Since mater has permission to merge, the master-new branch will no longer be maintained. You can directly maintain the master, and the pr can also be submitted to the master\r\n# NoahGameFrame\r\n\r\n\r\n- develop\r\n[![Build Status](https://travis-ci.org/ketoo/NoahGameFrame.svg?branch=develop)](https://travis-ci.org/ketoo/NoahGameFrame)\r\n- master\r\n[![Build Status](https://travis-ci.org/ketoo/NoahGameFrame.svg?branch=master)](https://travis-ci.org/ketoo/NoahGameFrame)\r\n- chat\r\n[![Join the chat at https://gitter.im/ketoo/NoahGameFrame](https://badges.gitter.im/ketoo/NoahGameFrame.svg)](https://gitter.im/ketoo/NoahGameFrame?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\r\n\r\n#####QQ群：330241037 [![NF开源服务器引擎2群](https://pub.idqqimg.com/wpa/images/group.png)](https://shang.qq.com/wpa/qunwpa?idkey=17ce92a5aacdec7b1c5ef0ff99bc84ca39c927fbd4ec7a3a83449e96afa63899)\r\n\r\n## Tutorial \u0026\u0026 Documents\r\n\r\nhttps://github.com/ketoo/NoahGameFrame/wiki\r\n\r\n\r\n## What is NoahGameFrame?\r\n\r\nNoahGameFrame (NF) is a lightweight, fast, scalable, distributed plugin framework. NF is greatly inspired by OGRE and Bigworld.\r\n\r\n## Features\r\n- Easy-to-use, interface-oriented design\r\n- An extensible plugin framework that makes getting your application running quick and easy\r\n- A clean, uncluttered design and stable engine that has been used in several commercial products\r\n- A high performance actor model (by a safe thread pool)\r\n- Event and attribute-driven, making it clear and easy to maintain your business\r\n- Based on standard C++ development, ensuring cross-platform support\r\n- An existing C++ and C# game client for rapid development\r\n- Cross-platform support\r\n\r\n\r\n## Tutorial \u0026\u0026 Documents\r\n\r\nhttps://github.com/ketoo/NoahGameFrame/wiki\r\n\r\n## Architecture\r\n\r\n### App Architecture:\r\n![App Architecture](https://github.com/ketoo/NoahGameFrame/wiki/images/architecture/NF_app_arch.png)\r\n\r\n### Server Architecture\r\n![Server Architecture](https://github.com/ketoo/NoahGameFrame/wiki/images/architecture/NF_server_arch.png)\r\n\r\n## Get the Sources:\r\n\r\ngit clone https://github.com/ketoo/NoahGameFrame.git\r\n\r\nor\r\n\r\nsvn checkout https://github.com/ketoo/NoahGameFrame\r\n\r\n\r\n## Dependencies\r\n\r\n- libevent\r\n- easylogging++\r\n- google protobuf\r\n- hiredis\r\n- ajson\r\n- concurrentqueue\r\n- RapidXML\r\n- LuaIntf\r\n- navigation\r\n- lua\r\n\r\n## Tutorial \u0026\u0026 Documents\r\n\r\nhttps://github.com/ketoo/NoahGameFrame/wiki\r\n\r\n## IF YOU CAN NOT BUILD THE DEPENDENCIES THEN PLEASE RUN THE CMDS BELOW TO SET UP THE ENVIRONMENT:\r\n\r\n* sudo apt-get install g++\r\n* sudo apt-get install cmake\r\n* sudo apt-get install automake\r\n* sudo apt-get install zip unzip\r\n\r\n## Supported Compilers\r\n\r\n* GCC \u003e= 7 (**Tested on Ubuntu 16.04**)\r\n* MSVC \u003e= VS2019 (**Tested on Win10**)\r\n\r\n## Build and Install\r\n### FOR WINDOWS, MSVC \u003e= 2019\r\n\r\n1. Git pull all source\r\n2. Run the script file named **build_dep.bat** where located /Dependencies\r\n(墙内上网的同学请点击：墙内下载依赖库.bat)\r\n3. Build the solution(if u build failed, please build again(**not rebuild all**))\r\n4. Run the binary file by **_Out/rund.bat**\r\n\r\n### FOR LINUX(UBUNTU, CENTOS) ---- please use administrator(or sudo) to do these:\r\n1. Git pull all source\r\n2. Run **install4cmake.sh** to build NF (or run cd /Dependencies  ./build_dep.sh then run buildServer.sh)\r\n3. Run the binary file by **_Out/rund.sh**\r\n\r\n### IF YOU LIVING IN A COUNTRY CANNOT ACCESS GITHUB FASTLY PLZ BUILD NF WITH VPN\r\n\r\n### HOW TO RUN HELLO WORLD\r\nhttps://github.com/ketoo/NoahGameFrame/wiki/How-to-run-the-Helloworld\r\n\r\n### HOW TO DEBUG WITH UNITY3D\r\nhttps://github.com/ketoo/NoahGameFrame/wiki/How-to-debug-with-unity3d\r\n\r\n### Unity Multiplayer Demo\r\nWebSite:  https://github.com/ketoo/NFUnitySDK\r\n# \u003cPassword for REDIS:NoahGameFrame\u003e\r\n![Showcase](https://github.com/ketoo/NoahGameFrame/wiki/images/showcase/unity3d.gif)\r\n\r\n\r\n## Tutorial \u0026\u0026 Documents\r\n\r\nhttps://github.com/ketoo/NoahGameFrame/wiki\r\n\r\n## License\r\nThe NFrame project is currently available under the [Apache License](https://github.com/ketoo/NoahGameFrame/blob/develop/LICENSE).\r\n\r\n\r\nTutorial:\r\n-------------------\r\n### [01-Hello world, add a module](https://github.com/ketoo/NoahGameFrame/tree/master/Tutorial/Tutorial1)\r\n\r\n\r\n```cpp\r\n\r\n// -------------------------------------------------------------------------\r\n//    @FileName      \t:    HelloWorld1.h\r\n//    @Author           :    ketoo\r\n//    @Date             :    2014-05-01 08:51\r\n//    @Module           :   HelloWorld1\r\n//\r\n// -------------------------------------------------------------------------\r\n\r\n#ifndef NFC_HELLO_WORLD1_H\r\n#define NFC_HELLO_WORLD1_H\r\n\r\n#include \"NFComm/NFPluginModule/NFIPluginManager.h\"\r\n\r\nclass HelloWorld1\r\n    : public NFIModule\r\n{\r\npublic:\r\n    HelloWorld1(NFIPluginManager* p)\r\n    {\r\n        pPluginManager = p;\r\n    }\r\n\r\n    virtual bool Init();\r\n    virtual bool AfterInit();\r\n\r\n    virtual bool Execute();\r\n\r\n    virtual bool BeforeShut();\r\n    virtual bool Shut();\r\n\r\nprotected:\r\n\r\n};\r\n\r\n#endif\r\n\r\n\r\n#include \"HelloWorld1.h\"\r\n\r\nbool HelloWorld1::Init()\r\n{\r\n    // Use this for initialization\r\n\t\r\n    std::cout \u003c\u003c \"Hello, world1, Init\" \u003c\u003c std::endl;\r\n\r\n    return true;\r\n}\r\n\r\nbool HelloWorld1::AfterInit()\r\n{\r\n    // AfterInit is called after Init\r\n\t\r\n    std::cout \u003c\u003c \"Hello, world1, AfterInit\" \u003c\u003c std::endl;\r\n\r\n    return true;\r\n}\r\n\r\nbool HelloWorld1::Execute()\r\n{\r\n    // Execute is called once per frame\r\n\t\r\n    //std::cout \u003c\u003c \"Hello, world1, Execute\" \u003c\u003c std::endl;\r\n\r\n    return true;\r\n}\r\n\r\nbool HelloWorld1::BeforeShut()\r\n{\r\n    //before final\r\n\t\r\n    std::cout \u003c\u003c \"Hello, world1, BeforeShut\" \u003c\u003c std::endl;\r\n\r\n    return true;\r\n}\r\n\r\nbool HelloWorld1::Shut()\r\n{\r\n    //final\r\n\t\r\n    std::cout \u003c\u003c \"Hello, world1, Shut\" \u003c\u003c std::endl;\r\n\r\n    return true;\r\n}\r\n\r\n```\r\n\r\n\r\n-------------------\r\n### [02-Hello world, test data driver](https://github.com/ketoo/NoahGameFrame/tree/master/Tutorial/Tutorial2)\r\n\r\n* how to use the world's most advanced data engine \r\n\r\n-------------------\r\n### [03-Hello world, test heartbeat and event system](https://github.com/ketoo/NoahGameFrame/tree/master/Tutorial/Tutorial3)\r\n\r\n* how to use the synchronous events\r\n\r\n-------------------\r\n### [04-Hello actor, test actor model(async event system)](https://github.com/ketoo/NoahGameFrame/tree/master/Tutorial/Tutorial4)\r\n\r\n* how to use the asynchronous events\r\n* use multiple cpus to get high performance\r\n\r\n### How to Create a New LuaScriptModule\r\n\r\n## Step 1\r\nCreate a Lua Script File, and Must Contain following functions\r\n- awake()\r\n- init()\r\n- ready_execute()\r\n- after_init()\r\n\r\n- before_shut()\r\n- shut()\r\n\r\nMostly like this\r\n# [test_module.lua](https://github.com/ketoo/NoahGameFrame/blob/master/_Out/NFDataCfg/ScriptModule/game/test_game_module.lua)\r\n\r\n```lua\r\ntest_module = {}\r\nregister_module(test_module,\"test_module\");\r\n\r\n\r\nfunction test_module.awake()\r\n\r\nend\r\n\r\nfunction test_module.init()\r\nend\r\n\r\nfunction test_module.after_init()\r\nend\r\n\r\nfunction test_module.ready_execute()\r\nend\r\n\r\nfunction test_module.before_shut()\r\nend\r\n\r\nfunction test_module.shut()\r\nend\r\n\r\n```\r\n\r\n##Step 2\r\nAdd your LuaScriptModule Infomation into [script_list.lua](https://github.com/ketoo/NoahGameFrame/blob/master/_Out/NFDataCfg/ScriptModule/game/script_list.lua)\r\n\r\n\r\n```lua\r\nScriptList={\r\n    {tbl=nil, tblName=\"TestModule\"},\r\n    {tbl=nil, tblName=\"TestModule2\"},\r\n}\r\n\r\nload_script_file(ScriptList)\r\n```\r\n\r\n\r\n\r\n##Hot fix\r\nAdd your lua script file name on here [script_reload.lua](https://github.com/ketoo/NoahGameFrame/blob/master/_Out/NFDataCfg/ScriptModule/game/script_reload.lua)\r\n\r\n-------------------\r\nNew Feature in future: Blue Print System\r\n\r\nDemo:\r\n\r\n![Showcase](https://github.com/ketoo/NoahGameFrame/wiki/images/showcase/blueprint_add.gif)\r\n\r\n\r\n-------------------\r\n\r\n### Amazing  open source projects:\r\n**breeze**\r\n* Auther: zsummer\r\n* Github: https://github.com/zsummer/breeze\r\n* Description:A fast, scalable, distributed game server framework for C++\r\n\r\n\r\n**gce**\r\n* Auther: nousxiong\r\n* GitHub: https://github.com/nousxiong/gce\r\n* Description: The Game Communication Environment (GCE) is an actor model framework for online game development.\r\n\r\n**moon**\r\n* Auther: bruce\r\n* GitHub: https://github.com/sniper00/moon.git\r\n* Description: A  cross-platform,lightweight,scalable game server framework  written in C++, and suport Lua Script.\r\n\r\n\r\n## Tutorial \u0026\u0026 Documents\r\n\r\nhttps://github.com/ketoo/NoahGameFrame/wiki\r\n\r\n\r\n\r\n\r\n","funding_links":[],"categories":["TODO scan for Android support in followings","C++","Open Source Game Server","Engines"],"sub_categories":["fake data"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fketoo%2FNoahGameFrame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fketoo%2FNoahGameFrame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fketoo%2FNoahGameFrame/lists"}