Skip to content

joyfish/NoahGameFrame

 
 

Repository files navigation

NoahGameFrame

#####交流QQ群:341159815

What is it?

NF is a lightweight, fast, scalable, distributed plugin framework.Greatly inspired by OGRE and Bigworld.

Features

  • it is 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

Introduction

English PDF / English PPT

中文简体 PDF / 中文简体 PPT

Architecture

App Architecture:

App Architecture

Server Architecture

Server Architecture

Event Driver:

Event Driver

Get the Sources:

git clone https://github.com/ketoo/NoahGameFrame.git

or

svn checkout https://github.com/ketoo/NoahGameFrame

Dependencies

Need build sub librares:

  • Boost.System
  • Boost.Chrono
  • Boost.Thread
  • libevent-2.0.21-stable
  • protobuf-2.5.0
  • redis-cplusplus-client
  • Theron-6.00.01
  • easylogging++

Supported Compilers

  • GCC >= 4.8
  • VC >= 9.0 (sp1)

Build and Install

Windows[VS2012]

  1. Download all source;
  2. Extract nessasery lib: Dependencies/boost_1_53_0.zip to Dependencies/
  3. Extract nessasery lib: Dependencies/lib.zip to Dependencies/
  4. Open the solution: NoahFrame.sln
  5. Build the solution
  6. Run the binary file by _Out/Server/Debug/Run.bat

Linux[CodeBlock 13.1]

  1. Download all source;
  2. Extract nessasery lib: Dependencies/boost_1_53_0.zip to Dependencies/
  3. Extract nessasery lib: Dependencies/lib.zip to Dependencies/
  4. Open the solution with CodeBlocks: NF.workspace
  5. Add c++11 optional for every project of this solution
  6. Build library: NFNet, NFCore, NFEventTriggerPlugin, NFKernelPlugin, Theron, libprotocolbuf[libprotocolbuf-lite], NFLogPlugin, NFPluginLoader
  7. Build all other plugin
  8. Run the binary file by _Out/Server/Debug/Run.sh

Documents & Tutorial

English

中文简体

License

The NFrame project is currently available under the Apache License.

Tutorial:

// -------------------------------------------------------------------------
//    @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(const float fLasFrametime, const float fStartedTime);

    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( const float fLasFrametime, const float fStartedTime )
{
    // 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;
}

  • how to use the world's most advanced data engine

  • how to use the synchronous events

  • how to use the asynchronous events
  • use multiple cpus to get high performance

About

A fast, scalable, distributed game server framework for C++, include actor library, network library,can be used as a real time mutliplayer game engine ( MMO RPG ) .

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 67.8%
  • C# 23.1%
  • Makefile 4.1%
  • HTML 1.7%
  • XSLT 1.2%
  • Protocol Buffer 0.8%
  • Other 1.3%