NoahGameFrame
http://www.noahframe.com
Copyright ©#####QQ Group:341159815
What is it?
NF is a lightweight, fast, scalable, distributed plugin framework.Greatly inspired by OGRE and Bigworld.
Features
- Easy to use interface oriented design minimise the effort
- Extensible plugin framework makes getting your application running is quick and simple
- Clean, uncluttered design, stable engine used in several commercial products
- Using the actor model has very high performance(by Theron)
- Based on the event-driven and attribute-driver can make business more clearly and easy to maintenance
- Based on the standard c + + development, cross-platform support
- With existing c++, c# game client for rapid development
- Cross-platform
FAQ
Unity3D client
Architecture
App Architecture:
Server Architecture
Get the Sources:
git clone https://github.com/ketoo/NoahGameFrame.git
or
svn checkout https://github.com/ketoo/NoahGameFrame
Dependencies
- libevent 2.0.22
- easylogging++ 9.80
- mysql++ 3.2.2
- google protobuf 2.5.0
- pybind11 1.2
- redis-cpp-client
- Theron 6.00.01
- curl 7.37.1
Supported Compilers
- GCC >= 4.8 (Tested in Ubuntu 15.04)
- MSVC >= VS2015 (Tested in Win7/10)
Build and Install
MSVC >= 2015
- Git pull all source
- Run install.bat
- Open the solution: NoahFrame.sln
- Build the solution
- Run GenerateConfigXML.bat to generate configuration files
- Run the binary file by _Out/Server/Debug/Run.bat
CodeBlocks >= 13.1(Only in linux)
- Git pull all source
- Run install.sh
- Open the solution with CodeBlocks: NF.workspace
- Check C++11 option in CodeBlocks compiler setting
- Build NF.workspace
- Run sh ./GenerateConfigXML.sh to generate configuration files
- Run the binary file by _Out/Server/Debug/rund.sh
CMake
- Git pull all source
- Install cmake[>= 2.8] please choose options for installing: Add CMake to the system PATH for all users and restart your computer
- Install VS2015 or gcc[>= 4.8]
- Run install.bat or install.sh to build NF
- Run the binary file by _Out/Server/Debug/run.bat or _Out/Server/Debug/rund_cmake.sh
- (Optional)For Release Version, after above, run BuildNF.VS2015.Release.X64.bat or BuildNF.CMake.Release.sh, then run the binary file by _Out/Server/Release/run.bat or _Out/Server/Release/run_cmake.sh
JAVA Project
WebSite: https://github.com/NFGameTeam/NFrame-java
C# Project
WebSite: https://github.com/ketoo/NFrame
Documents & Tutorial
License
The NFrame project is currently available under the Apache License.
Tutorial:
01-Hello world, add a module
// -------------------------------------------------------------------------
// @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 NFILogicModule
{
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-Hello world, test data driver
- how to use the world's most advanced data engine
03-Hello world, test heartbeat and event system
- how to use the synchronous events
04-Hello actor, test actor model(async event system)
- how to use the asynchronous events
- use multiple cpus to get high performance
About The Author
- Mail: 342006@qq.com
- GitHub: https://github.com/ketoo
Amazing open source projects:
breeze
- Auther: zsummer
- Github: https://github.com/zsummer/breeze
- Description:A fast, scalable, distributed game server framework for C++
gce
- Auther: nousxiong
- GitHub: https://github.com/nousxiong/gce
- Description: The Game Communication Environment (GCE) is an actor model framework for online game development.