Как вы используете CustomRoomData на Appwarps с cocos2d-x

Я только начал писать код в Appwarps, и у меня возникла проблема. У меня есть вестибюль с живыми комнатами, но я действительно не хочу показывать комнаты для матчей, которые уже начались. Я подумал, что буду использовать

void Client::setCustomRoomData(std::string roomId, std::string customData)

Но у меня есть некоторые сомнения относительно того, как его использовать. Как только игра начнется, я планирую отправить

SetCustomRoomData(roomId, "Closed");

уведомить сервер о том, что открытая рассадка закрыта. Однако, когда я проверяю свойства комнаты на другом устройстве, когда оно вызывает

void CCAppwarpDelegate::onGetLiveRoomInfoDone(AppWarp::liveroom revent)
{
CCLog("CustomData=%s",revent.customData.c_str());
...

возвращается пустым. Что мне здесь не хватает? Помимо того, что код не работает, я действительно задаюсь вопросом, что я не понимаю механику свойств. Как у вас есть несколько пользовательских свойств, так как вы не назначаете ему какой-либо индекс... или у комнаты есть только одно пользовательское свойство в любой момент времени?

1 ответ

Решение

Вам не нужно использовать customData и вместо этого использовать только свойства комнаты. Свойства комнаты - это набор пар ключ / значение, которые можно связать с комнатой.

Я рекомендую вам прочитать следующую ссылку http://appwarp.shephertz.com/game-development-center/matchmaking-basic-concept/

Таким образом, поток выглядит следующим образом -

  1. сначала вы создаете комнату с помощью API createRoom и передаете словарь свойств, содержащий <"closed", "false">.

  2. Затем, когда игра активна, вы используете API updateRoomProperties для комнаты и передаете <"closed", "true"> в API.

  3. Затем, когда вы хотите показать список, вы должны использовать getRoomWithProperties и передать <"closed", "false">. Это даст вам список комнат, которые еще не "закрыты".

Другие вопросы по тегам