1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/JimmyH-JMEGame

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

JMEGame

Используется JMEngine для создания серверной части MMORPG, включает следующие компоненты:

Все тестовые скрипты пропущены.

while (true)
{
    string cmd;
    cin >> cmd;
    if (!cmd.compare("quit"))
    {
        break;
    }
}

Модуль распределения сообщений

DispatchHandler.h
#include "JME_Dispatcher.h"
typedef JMEngine::game::JME_Dispatcher<int, google::protobuf::Message*> MessageDispatcher;

class DispatchHandler :
    public MessageDispatcher
{
public:
    static void init();
private:
    static void requestLogin(int net, const google::protobuf::Message* params);
};

DispatchHandler.cpp
#include "DispatchHandler.h"

void DispatchHandler::init()
{
    regMessageHandler(10002, boost::bind(&DispatchHandler::requestLogin, _1, _2));
}

void DispatchHandler::requestLogin(int net, const google::protobuf::Message* params)
{
}

Модуль игровых событий

main.cpp
#include "JME_GameEventCenter.h"

void cb3(const string& evt, JMEngine::game::GameEventCenter<string>::Observer::EventConnectorPtr conn)
{
    cout << "Событие [" << evt << "] обратный вызов 3" << endl;
    conn->disconnect();
}

int main()
{
    auto game_mgr = new JMEngine::game::GameEventCenter<string>;
    auto cb1 = [](const string& evt) { cout << "Событие [" << evt << "] обратный вызов 1" << endl; };
    auto cb2 = [](const string& evt) { cout << "Событие [" << evt << "] обратный вызов 2" << endl; };

    game_mgr->regEventHandler("test", cb1);
    game_mgr->regEventHandler("test", cb2);

    JMEngine::game::GameEventCenter<string>::Observer::EventConnectorPtr conn(new JMEngine::game::GameEventCenter<string>::Observer::EventConnector);
    game_mgr->regEventHandler("test", boost::bind(cb3, _1, conn), conn);

    game_mgr->eventCallback("test");
    game_mgr->removeEventHandler("test", cb1);
    game_mgr->eventCallback("test");
    game_mgr->removeEventHandler("test", cb2);
    game_mgr->eventCallback("test");

    return 0;
}

результат выполнения:
Событие [test] обратный вызов 1
Событие [test] обратный вызов 2
Событие [test] обратный вызов 3
Событие [test] обратный вызов 2

Функции работы со временем Модуль таймера```cpp main.cpp #include "JME_TimerTask.h"

void cb4(boost::shared_ptrboost::asio::deadline_timer dt, const string& para) { LOGT("%s callback", para); };

int main() { LOGT("=============================="); }

JMEngine::game::JME_TimerTaskCenter::callbackFromNow(20, boost::bind(cb4, _1, "callbackFromNow"));
JMEngine::game::JME_TimerTaskCenter::callbackAtTime(time(NULL) + 20, boost::bind(cb4, _1, "callbackAtTime"));
JMEngine::game::JME_TimerTaskCenter::callbackByInterval(5, boost::bind(cb4, _1, "callbackByInterval"));
return 0;
}
run result:
[2015-Nov-05 11:35:24] [f:\work\jmengine\testservers\client\src\main.cpp:101:main:00F88670] [TRACE] ==============================
[2015-Nov-05 11:35:29] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
[2015-Nov-05 11:35:34] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
[2015-Nov-05 11:35:39] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
[2015-Nov-05 11:35:44] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackAtTime callback
[2015-Nov-05 11:35:44] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackFromNow callback
[2015-Nov-05 11:35:44] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback

Общее пространство памяти
```

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Используя JMEngine, написать фреймворк для сервера онлайн-игр, который будет включать в себя: * модуль рассылки сообщений; * модуль игровых событий; * функции, связанные со временем; * модуль таймера; * общую память; * управление RPC, канал RPC. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/JimmyH-JMEGame.git
git@api.gitlife.ru:oschina-mirror/JimmyH-JMEGame.git
oschina-mirror
JimmyH-JMEGame
JimmyH-JMEGame
master