英文原文正文为项目原始 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
- Git 拉取所有源代码
- Run the script file named build_dep.bat where located /Dependencies (墙内上网的同学请点击:墙内下载依赖库.bat)
- 构建解决方案(如果构建失败,请再次构建(不是重建所有))
- 通过 _Out/rund.bat 运行二进制文件
适用于 LINUX(UBUNTU、CENTOS)---- 请使用管理员权限(或 sudo)执行以下操作:
- Git 拉取所有源代码
- 运行 install4cmake.sh 构建 NF(或运行 cd /Dependencies ./build_dep.sh 然后运行 buildServer.sh)
- 通过 _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 脚本文件名
未来的新功能:蓝图系统
演示:
令人惊叹的开源项目:
微风
- 作者:zsummer
- Github: https://github.com/zsummer/breeze
- 描述:一个快速、可扩展的分布式C语言游戏服务器框架
gce
- 作者:nousxiong
- GitHub: https://github.com/nousxiong/gce
- 描述:游戏通信环境(GCE)是一个用于在线游戏开发的演员模型框架。
月亮
- 作者:bruce
- GitHub: https://github.com/sniper00/moon.git
- 描述:一个跨平台、轻量级、可扩展的C语言游戏服务器框架,支持Lua脚本。
教程与文档
- 本文标题:NoahGameFrame - 一个快速
- 本文链接:https://www.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 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。