Web应用 活跃维护

NoahGameFrame

ketoo/NoahGameFrame

一个快速、可扩展的分布式游戏服务器引擎/框架,为 C 提供,包括 actor 库、网络库,可用作实时多人游戏引擎(MMO RPG/MOBA),支持 C#/Lua 脚本/Unity3d、Cocos2dx,并计划支持 Unreal。

4156
Stars 标星
1112
Forks 分支
325
Watchers 关注
25
Open Issues
C++
主要语言
Apache-2.0
开源协议
29.5 MB
仓库大小
3 年前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:ketoo/NoahGameFrame
git clone https://github.com/ketoo/NoahGameFrame.git
git clone git@github.com:ketoo/NoahGameFrame.git
README.md master

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

2021.7.9 在新西兰奥克兰的一场车祸中,ketoo 永远离开了我们。

2021年7月9日,ketoo在新西兰奥克兰的一起车祸中永远离开了我们。

由于mater有权限合并了, master-new 分支后续不再维护。 直接维护master即可,pr也提交到master即可

由于master有权限合并,master-new分支将不再维护。你可以直接维护master,PR也可以提交到master。

Noah游戏框架

  • 开发
  • 主分支
  • 聊天
QQ群:330241037

教程与文档

https://github.com/ketoo/NoahGameFrame/wiki

What is NoahGameFrame?

NoahGameFrame(NF)是一个轻量级、快速、可扩展、分布式的插件框架。NF 受 OGRE 和 Bigworld 的启发很大。

功能

  • 易于使用,面向界面的设计
  • 可扩展的插件框架,使应用程序快速轻松运行
  • 简洁、无杂乱的设计和稳定的引擎,已在多种商业产品中使用
  • 高性能的演员模型(由安全线程池提供支持)
  • 事件和属性驱动,使业务清晰且易于维护
  • 基于标准C 开发,确保跨平台支持
  • 现有的C 和C# 游戏客户端,用于快速开发
  • 跨平台支持

教程与文档

https://github.com/ketoo/NoahGameFrame/wiki

架构

应用架构:

服务器架构

获取源码:

git 克隆 https://github.com/ketoo/NoahGameFrame.git

或者

svn 检出 https://github.com/ketoo/NoahGameFrame

依赖项

  • libevent
  • 易日志记录
  • 谷歌 protobuf
  • hiredis
  • ajson
  • 并发队列
  • 快速XML
  • LuaIntf
  • 导航
  • 卢阿

教程与文档

https://github.com/ketoo/NoahGameFrame/wiki

如果你无法构建依赖项,请运行以下命令来设置环境:

  • sudo apt-get install g++
  • sudo apt-get 安装 cmake
  • sudo apt-get 安装 automake
  • sudo apt-get install zip unzip

支持的编译器

  • GCC >= 7(已在 Ubuntu 16.04 上测试)
  • MSVC >= VS2019(已在 Win10 上测试)

构建与安装

适用于 WINDOWS,MSVC >= 2019

  1. Git 拉取所有源代码
  2. Run the script file named build_dep.bat where located /Dependencies (墙内上网的同学请点击:墙内下载依赖库.bat)
  3. 构建解决方案(如果构建失败,请再次构建(不是重建所有))
  4. 通过 _Out/rund.bat 运行二进制文件

适用于 LINUX(UBUNTU、CENTOS)---- 请使用管理员权限(或 sudo)执行以下操作:

  1. Git 拉取所有源代码
  2. 运行 install4cmake.sh 构建 NF(或运行 cd /Dependencies ./build_dep.sh 然后运行 buildServer.sh)
  3. 通过 _Out/rund.sh 运行二进制文件

如果您所在的国家无法快速访问 GITHUB,请使用 VPN 构建 NF

如何运行 HELLO WORLD

https://github.com/ketoo/NoahGameFrame/wiki/How-to-run-the-Helloworld

如何使用 UNITY3D 进行调试

https://github.com/ketoo/NoahGameFrame/wiki/How-to-debug-with-unity3d

Unity 多人演示

网站: https://github.com/ketoo/NFUnitySDK

<REDIS 密码:NoahGameFrame>

教程与文档

https://github.com/ketoo/NoahGameFrame/wiki

许可

NFrame 项目目前在 Apache 许可证 下可用。

教程:

01-你好,世界,添加一个模块


// -------------------------------------------------------------------------
//    @FileName         :    HelloWorld1.h
//    @Author           :    ketoo
//    @Date             :    2014-05-01 08:51
//    @Module           :   HelloWorld1
//
// -------------------------------------------------------------------------

#ifndef NFC_HELLO_WORLD1_H
#define NFC_HELLO_WORLD1_H

#include "NFComm/NFPluginModule/NFIPluginManager.h"

class HelloWorld1
    : public NFIModule
{
public:
    HelloWorld1(NFIPluginManager* p)
    {
        pPluginManager = p;
    }

    virtual bool Init();
    virtual bool AfterInit();

    virtual bool Execute();

    virtual bool BeforeShut();
    virtual bool Shut();

protected:

};

#endif

#include "HelloWorld1.h"

bool HelloWorld1::Init()
{
    // Use this for initialization

    std::cout << "Hello, world1, Init" << std::endl;

    return true;
}

bool HelloWorld1::AfterInit()
{
    // AfterInit is called after Init

    std::cout << "Hello, world1, AfterInit" << std::endl;

    return true;
}

bool HelloWorld1::Execute()
{
    // Execute is called once per frame

    //std::cout << "Hello, world1, Execute" << std::endl;

    return true;
}

bool HelloWorld1::BeforeShut()
{
    //before final

    std::cout << "Hello, world1, BeforeShut" << std::endl;

    return true;
}

bool HelloWorld1::Shut()
{
    //final

    std::cout << "Hello, world1, Shut" << std::endl;

    return true;
}

02-你好,世界,测试数据驱动

  • 如何使用世界上最先进的数据引擎

03-你好世界,测试心跳和事件系统

  • 如何使用同步事件

04-你好演员,测试演员模型(异步事件系统)

  • 如何使用异步事件
  • 使用多核 CPU 获得高性能

如何创建新的 LuaScriptModule

步骤 1

创建一个 Lua 脚本文件,并且必须包含以下函数

  • 唤醒()

  • 初始化()

  • 准备执行()

  • 初始化后()

  • before_shut()

  • 关闭()

大致如下

test_module.lua

test_module = {}
register_module(test_module,"test_module");

function test_module.awake()

end

function test_module.init()
end

function test_module.after_init()
end

function test_module.ready_execute()
end

function test_module.before_shut()
end

function test_module.shut()
end

步骤 2 将你的 LuaScriptModule 信息添加到 scriptlist.lua 中

ScriptList={
    {tbl=nil, tblName="TestModule"},
    {tbl=nil, tblName="TestModule2"},
}

load_script_file(ScriptList)

热修复 在这里的 scriptreload.lua 中添加你的 lua 脚本文件名


未来的新功能:蓝图系统

演示:


令人惊叹的开源项目:

微风

gce

月亮

教程与文档

https://github.com/ketoo/NoahGameFrame/wiki

本站来源与版权声明
  • 本文标题:NoahGameFrame - 一个快速
  • 本文链接:https://cn121.com/webapp/ketoo-noahgameframe.html
  • 原项目:ketoo/NoahGameFrame 版权归原作者 ketoo 及贡献者所有
  • 收录信息:本站于 2026-10-05 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 Apache-2.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。本站对原文仅作排版与图片地址适配, 并保留原项目的 NOTICE 与署名要求。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 ketoo/NoahGameFrame。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。