GameCenter - с учетом покупок в приложении - PullRequest
3 голосов
/ 08 октября 2010

Мне кажется, что Apple немного спешила внедрить GameCenter.Может быть, я что-то упускаю из виду.

Если вы создаете игру, в которой вы хотите предлагать покупки в приложении (например, вы хотите продавать дополнительные карты или дополнения), есть ли вообще способ сопоставить игроков, которые разделяютодни и те же карты (множественное число) с использованием GKMatchRequest?т.е. чьи покупки в приложении пересекаются, но не совпадают.

Или, может быть, вы хотите продавать автомобили в гоночной игре.Как вы можете сопоставить игроков, которые разделяют некоторые из своих автомобилей, не обязательно все из них?Я думаю, что вы не можете, потому что свойство playerGroup в GKMatchRequest сравнивается, только если пользователи принадлежат к той же группе.

Так, если один пользователь покупает карту A и карту B, а другой пользователь покупает карту B и карту C,нет никакого способа сопоставить их, хотя они могли бы играть на карте B вместе.Конечно, вы могли бы реализовать свой интерфейс, чтобы пользователи могли указать, на какой карте они хотят играть.Но есть и другие сценарии, в которых покупка в приложении может не быть вопросом или вопросом, но может быть объединена в игре (например, если вы можете купить разных типов солдат в боевой игре, а затем сопоставить игроков, которые разделяют часть своего солдататипы ... в самой игре вы могли бы затем реализовать логику, чтобы исключить те типы, которые игроки не разделяют).

Кто-нибудь может придумать решение, которое работает?

Ответы [ 3 ]

1 голос
/ 08 октября 2010

В случае карты, я думаю, вам понадобится , чтобы позволить пользователю сначала выбрать карту.В противном случае, скажем, вы подходите двум игрокам, и у них есть общие карты B, C и E.Теперь им нужен способ договориться о том, на какой карте играть.Возможно, игрок 1 намеревался разыграть карту B, а игрок 2 хотел карту E. Даже если они делят подмножество, теперь вам нужно выполнить работу, которая могла бы быть выполнена в процессе сопоставления.

В случае с автомобилямиЯ думаю, вам нужно спросить, почему вы хотите сравнивать игроков таким образом.Если это просто несправедливо (так что вы не сравниваете кого-то с мощными автомобилями против новичка), то вы можете создать «уровень», основанный на максимальной скорости автомобиля.Возможно, вы будете подбирать людей с разными наборами машин, но они могут быть равномерно сопоставлены.

Наконец, если игрокам абсолютно необходимо иметь подходящую вещь, сделайте все возможное, используя предыдущее предложение, и если они этого не сделаютне появляется сообщение: «Эй, у тебя нет подходящих машин. Хочешь купить этот, чтобы играть вместе?»Предложите купить его сейчас или найдите другого игрока.Вы могли бы сделать некоторые продажи таким образом.


PS Извините, что я проповедую, но нечестно сказать, что Apple проделала полдурянную работу.Game Center - это система, которая должна охватывать миллионы пользователей, которые хотят более или менее быстро находить совпадения.Попытка сопоставления с помощью перекрывающихся подмножеств привела бы к значительному усложнению системы, и я не думаю, что вы оцените стоимость такого проекта.

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

0 голосов
/ 24 февраля 2011

В «Руководстве по программированию игрового комплекта> Многопользовательская игра> Группы игроков» они заявляют, что «как правило, ваша игра должна иметь собственный пользовательский интерфейс, позволяющий игроку выбирать параметры, которые используются для вычисления номера группы игроков».Я предполагаю, что они не планировали разрешить такого рода ограничения, которые вам нужны.

Я вижу только четыре варианта:

  1. Используйте «демонстрационную версию» карты (то есть, еслипользователь купил карту A, это позволит ему "разместить" матч на A, где бы ни покупали гостевые игроки A или нет).Если ваша игра также может играть в одиночную игру, она может использоваться в качестве рекламы для гостей.
  2. Создайте свой собственный сервер.Это зло и неясно, но я думаю, что вы можете создать любое правило соответствия таким образом.
  3. «Отклонить» игрока, который не купил карту (никогда не проверял, но, думаю, это будет неприятно дляотвергнутый игрок).
  4. Создание «групп карт».На примере автомобиля (адаптированного для мотоциклов) может быть группа 100 куб. См, группа 250 куб. См и т. Д.Люди могли «А» (100 куб. См) и конкурировать с игроками, которые купили «Б» (также 100 куб. См).С картами могут быть «водные карты», «зимние карты» и т. Д.Это увеличит стоимость покупки и облегчит нам задачу.Но я предполагаю, что это также потребует некоторого кодирования пользовательского интерфейса.

Учитывая, что максимальное количество игроков составляет всего 4, я не думаю, что Apple подготовила Game Center для размещения сложных игр.Возможно, это так же, как OpenGLES: отличный инструмент, но вы должны быть супер-хардкор-разработчиком, чтобы сделать что-то супер-крутое, как Epic Citadel Unreal Engine (недоступно в бразильском App Store - к сожалению).

0 голосов
/ 25 октября 2010

Вот еще одна дилемма с поддержкой как внутриигровых покупок, так и Game Center (пожалуйста, ответьте в комментариях).

Скажем, моя игра включает в себя внутриигровые покупки для десяти отдельных пакетов головоломок, а моя игра также включает в себя бесплатнуюмногопользовательский режим с использованием Game Center.В любое время на одном устройстве iOS есть учетная запись iTunes store, и эта учетная запись используется для определения статуса всех покупок в приложении для моего приложения.Если пользователь выходит из своей учетной записи iTunes store на одном устройстве, а новый пользователь входит в свою учетную запись iTunes store на том же устройстве (используя вкладку «Магазин» в приложении настроек), то состояние покупок в приложении длямое приложение будет обновлено для только что вошедшего в iTunes пользователя магазина.Отлично!Что произойдет, если мое приложение использует Game Center, чтобы разные пользователи могли использовать одно и то же приложение?Кажется, вдруг у вас есть два разных типа учетных записей пользователей для одного приложения.Одна учетная запись для Game Center и одна учетная запись для магазина iTunes, правильно?Например, если пользователь1 вошел в мое приложение с помощью Game Center и купил три пакета головоломок, то эти пакеты головоломок будут списываться с любой учетной записи iTunes, которая в данный момент зарегистрирована на устройстве.Если пользователь user1 выходит из Game Center, а пользователь user2 входит в Game Center, не останется ли учетная запись iTunes, которая в данный момент вошла в систему, такой же, что означает, что user2 будет иметь доступ к пакетам головоломок, купленным пользователем 1?Разве это не значит, что user2 может приобрести дополнительные пакеты головоломок под той же учетной записью iTunes, которую использовал user1?

Что еще хуже, что если я захочу создавать достижения Game Center на основе завершения приобретенного пакета головоломок?Внезапно разные пользователи Game Center получат достижения для пакетов головоломок, которые они не решают, поскольку они находятся в одном и том же состоянии пакета головоломок, верно?

...