Четверг, 26 Декабря 2024, 15:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Авторизация, подобно Clash of Clans? Как она работает?
robertonoДата: Суббота, 24 Сентября 2016, 11:33 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Здравствуйте

Меня интересует как работает авторизация, к примеру в такой игре как Clash of Clans.
Онлайн там на сервере около 5 миллионов игроков.
Игра не требует никакой авторизации: установил - играй.
В настройках есть возможность привязать учетку к аккаунту Google или Facebook или GameCenter (iOS), но это ведь просто привязка, как на каком нибудь сайте, чтобы заходить не только по обычному логину/паролю.

Меня интересует как именно работает эта авторизация без указания данных ? Игра не требует никакой авторизации через Google Play Services / Game Center, что бы играть по интернету. Но ведь как то же авторизация происходит ?

Конечно это может быть какой нибудь Telephony.DeviceID / ANDROID_ID / Mac Adress - уникальный (но не гарантирующий это) ИД устройства. Но если всё так просто, то кто то мог бы сгенерировать тысячи аккаунтов (ибо для авторизации нужен только этот ид).
Или другой вариант: никакой ID устройства тут не используется, просто сервер присылает какой нибудь уникальный UUID при первом запуске, что и будет токеном для входа.
Но что опять же мешает тогда нарегать тысячи аккаунтов ?

Интересуюсь потому, что собираюсь делать игру на мобильные устройства, и хочу узнать есть ли смысл разбираться с подобной авторизацией, или просто сделать обязательную регистрацию в игре при первом запуске, через Google / Play Services / Facebook / Game Center. Просто если кто то будет регать тысячи аккаунтов, то сервер ляжет в конечном счете, там точно должно быть что то посложнее.

Заранее спасибо !
1nt3g3rДата: Суббота, 24 Сентября 2016, 11:45 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Присоединяюсь к вопросу. Пилю что-то похожее, tower defense из серверной частью. Пока что реализовал следующую схему: при первом входе в игру регистрация - логин+пароль. После этого сервер отсылает клиенту уникальный ID, и авторизация происходит по этому ID (до лог аута). Но интересно - как именно без email/password сделать это. И сразу еще такой момент - если у игрока есть два устройства (android и ios), и он играет и там, и там - как обеспечить подключение к одинаковому аккаунту с обеих устройств? Если логин+пароль, то все понятно, а как в этом случае?

Нужно писать такие игры, чтобы в них было интересно играть самому
robertonoДата: Суббота, 24 Сентября 2016, 12:06 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
Вопрос очень важен, поскольку игроки вообще не любят всякие там регистрации и авторизации, это его не интересует. Он хочет поскорее приступить к игре.

1nt3g3r, подключение к одному аккаунту с разных устройств реализовано через привязку аккаунта: в android можно привязать к facebook и google, в ios к gamecenter и facebook.
maker-rusДата: Суббота, 24 Сентября 2016, 13:57 | Сообщение # 4
Гений
Сейчас нет на сайте
robertono, генерируешь уникальный индентификатор сессии, присваиваешь его игроку, записываешь в базу и работаешь с ним так же, как и с парой логин/пароль. Я думал, это очевидно, не понимаю, какие сложности тут могут возникнуть :)

Сообщение отредактировал maker-rus - Суббота, 24 Сентября 2016, 13:58
robertonoДата: Суббота, 24 Сентября 2016, 15:38 | Сообщение # 5
Чокнутый Кот
Сейчас нет на сайте
maker-rus, это вариант с выдачей UUID, про который я писал выше.

А насчет сложностей - их я тоже описал в первом сообщении:
Это значит, что игроку достаточно тупо подключиться к серверу, вот и готова новая запись в бд. Что мешает отправить тысячи таких запросов на сервер, и в итоге сломать его ?
В Clash of Clans я не слышал, чтобы регали такое, иначе бы сервера запросто положили.
NightLordДата: Воскресенье, 25 Сентября 2016, 02:14 | Сообщение # 6
участник
Сейчас нет на сайте
robertono, твои сложности надуманы. Никому нафиг не нужны нулевые акки в игре. Сервера просто так не положишь, регистрация ничем не отличается от любого другого запроса. А массовые запросы к серверу называются DDoS атака. Для них нужно иметь громадный ботнет. Так же, я более чем уверен, что можно найти гораздо тяжелее запрос, чем регистрация пустышки.

Как правило копится масса пустых акков и без хакерских аттак. Достаточно делать метку пустого аккаунта и убирать записи из базы через время.


Часто стоишь в пробке или очереди? Эта игра поможет скоротать время 7Bricks - головоломка с цифрами.
TymonrДата: Воскресенье, 25 Сентября 2016, 04:05 | Сообщение # 7
With OpenSource forever
Сейчас нет на сайте
Высылается уникальный идентификатор, да. Плюс, вероятно, все свежие аккаунты, активность на которых не регистрируется какое-то время удаляются. Ну и IP, вероятно, сохраняется, что бы не проходило слишком много регистраций с какой-либо одной точки

Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
robertonoДата: Воскресенье, 25 Сентября 2016, 19:04 | Сообщение # 8
Чокнутый Кот
Сейчас нет на сайте
Цитата NightLord ()
твои сложности надуманы. Никому нафиг не нужны нулевые акки в игре

Да, возможно. Просто если создать новый аккаунт так просто, то ничего не мешает сделать из них целую армию ботов в игре. В итоге ботов станет больше чем реальных игроков (или их кол-во будет достаточным, для достижения цели). На первых уровнях это ничего не даст, но когда откроется возможность отправлять виртуальные деньги друг другу, все эти боты могут скинуть деньги на один аккаунт. Вот чего я беспокоюсь.

Но как упомянул Tymonr , всё же стоит сохранять IP, чтобы с него одного не было запредельно много регистраций (думаю сначала его нужно просто сохранять на будущее, не стоит сразу банить если больше 10 акков, мало ли что там у пользователя).
NightLordДата: Воскресенье, 25 Сентября 2016, 20:00 | Сообщение # 9
участник
Сейчас нет на сайте
Цитата
На первых уровнях это ничего не даст, но когда откроется возможность отправлять виртуальные деньги друг другу, все эти боты могут скинуть деньги на один аккаунт. Вот чего я беспокоюсь.

А не нужно этого делать, это дыра в безопасности. А в случае с мобильными сторами можно словить банхамером по голове.
Опять же, а что помешает тупо удалить прилку и заного поставить? Или просто сбросить прогресс? В том же Clash of Clans на одном девайсе может быть множество игровых сессий. Банально сменяется аккаунт гугла. производится авторизация через гуглигры - вуаля, у нас новый аккаунт. Аналогично и с геймцентром.

Цитата
Но как упомянул Tymonr , всё же стоит сохранять IP, чтобы с него одного не было запредельно много регистраций

Бедные игроки. В эпоху ограниченности IPv4 все обширнее будет наблюдаться такое явление как NAT. Это когда пол города с десятка ипишников сидит.

Я повторюсь. Вы высасываете проблему из пальца. Нужно геймплейно продумывать все так, что-бы не было рентабельно клонировать аккаунты. Если будет профит - никакие махинации не остановят жуликов. Да и зачем мне создавать пачку аккаунтов, ради жалкой горстки валюты, когда гораздо проще подделать запрос на покупку в сторе и получить нужное количество паков без заморочек и потери денег? Вы бы лучше подумали о том, как защитить логику добавления денег в игру, а не бороться с мультиакками.


Часто стоишь в пробке или очереди? Эта игра поможет скоротать время 7Bricks - головоломка с цифрами.
robertonoДата: Воскресенье, 25 Сентября 2016, 20:51 | Сообщение # 10
Чокнутый Кот
Сейчас нет на сайте
Цитата NightLord ()
А не нужно этого делать, это дыра в безопасности.

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

Цитата NightLord ()
А в случае с мобильными сторами можно словить банхамером по голове.

Игроку или разработчику игры ?

Цитата NightLord ()
Опять же, а что помешает тупо удалить прилку и заного поставить? Или просто сбросить прогресс? В том же Clash of Clans на одном девайсе может быть множество игровых сессий. Банально сменяется аккаунт гугла. производится авторизация через гуглигры - вуаля, у нас новый аккаунт. Аналогично и с геймцентром.

Ну это уже немного другое, но если приписывать это к "решению с помощью блокировок по IP (или подобным)", то да, это решение не подходит абсолютно (да может и не нужно).

Цитата NightLord ()
подделать запрос на покупку в сторе и получить нужное количество паков без заморочек и потери денег

Этот вариант исключен, поскольку можно проверить реально ли была сделана покупка IAP.

Цитата NightLord ()
Вы бы лучше подумали о том, как защитить логику добавления денег в игру, а не бороться с мультиакками.

Да, с этим я полностью согласен, но что мне делать, если виртуальная экономика это то, вокруг чего развернута игра ?
NightLordДата: Воскресенье, 25 Сентября 2016, 23:26 | Сообщение # 11
участник
Сейчас нет на сайте
Цитата
Пока что не вижу других вариантов реализации этой функции, ведь игра сетевая, и экономическая составляющая по сути является основой игры, поэтому денежные переводы виртуальных денег обязательны.

Допустим. Разберем с другой стороны. Создал я акк, играю себе. Мой прогресс увеличивается и количество финансов растет. Какой смысл мне тратить время на создания доп. акка, качать его до нужного уровня (переводы же не сразу доступны?), что-бы получить Х монеток? А не лучше потратить это же время на развитие своего текущего? Или там будут закручены гайки до упора, что развивать свой акк будет не рентабельно? оО

Цитата
Игроку или разработчику игры ?

Разработчику. Ни гугл ни эппл не любят, когда виртуальная валюта меняется вне покупок за инапы. Понятное дело, что добавить фичу можно, и никто не забанит. Но постоянно жить в страхе, что одно малейшее нарушение и всевидящее око начнет разглядывать прилки. Да ну нафиг) А гугл очень любит банить акки, тем самым лишая бедных разработчиков способа заработать.

Цитата
Этот вариант исключен, поскольку можно проверить реально ли была сделана покупка IAP.

Особенно у эппла) Проверить то можно, ага. Но могу сразу сказать, что это все настолько "быстро" работает, что игрок успеет как минимум передумать и отвалиться, если не состариться :)

Добавлено (25 сентября 2016, 23:26)
---------------------------------------------

Цитата
Да, с этим я полностью согласен, но что мне делать, если виртуальная экономика это то, вокруг чего развернута игра ?

Ну тут два варианта:
1) Делать авторитарный сервер. На клиенте только отображение. Нажали кнопку - запрос на сервер. Зашли в меню - запрос на сервер.
2) Забить, сделать игру и попытаться ее расскрутить.

По моему опыту, все пытаются делать первый вариант. Либо полностью, либо частично. При этом забывают основную проблему. Игру мало сделать, ее еще нужно продать (читай найти аудиторию). Я знаю прилично проектов, которые делали правильно, тратили кучу времени и денег на проект, а на выходе получался пшик. Потому что игра не интересна. Потому что заморочки с сервером добавляют лишних проблем, задержек, гемороя не только разработчику, но и игроку. Мобилка и сервер вещи слабо совместимые. Если у вас нет пару лямо баксов рекламного бюджета конечно. В противном случае на игру угрохается туча времени, а результат будет не достаточно хорошим. Ну это все мое ИМХО)


Часто стоишь в пробке или очереди? Эта игра поможет скоротать время 7Bricks - головоломка с цифрами.
robertonoДата: Понедельник, 26 Сентября 2016, 19:18 | Сообщение # 12
Чокнутый Кот
Сейчас нет на сайте
Цитата NightLord ()
Допустим. Разберем с другой стороны. Создал я акк, играю себе. Мой прогресс увеличивается и количество финансов растет. Какой смысл мне тратить время на создания доп. акка, качать его до нужного уровня (переводы же не сразу доступны?), что-бы получить Х монеток? А не лучше потратить это же время на развитие своего текущего? Или там будут закручены гайки до упора, что развивать свой акк будет не рентабельно? оО

Разные игроки есть. Есть программисты - игроки, кто приходит что нибудь поломать, код посмотреть. Конечно таких 1 %, но всё же. Не оставлять же дыру в безопасности. Ещё есть всякие сайты, куда в итоге выкладывается разлоченный под кучу денег APK. Такие релизы появляются быстрее, чем боты.

Цитата NightLord ()
Разработчику. Ни гугл ни эппл не любят, когда виртуальная валюта меняется вне покупок за инапы. Понятное дело, что добавить фичу можно, и никто не забанит. Но постоянно жить в страхе, что одно малейшее нарушение и всевидящее око начнет разглядывать прилки. Да ну нафиг) А гугл очень любит банить акки, тем самым лишая бедных разработчиков способа заработать.

А мы точно об одних и тех же вещах говорим ? Не совсем понимаю, если честно..
К примеру игры про строительство городов, где игрок постоянно получает "прибыль" с каждого здания. Или же аркадки, где за прохождение дают монетки. Можно купить экстрамонетки за IAP. Я не понимаю вас, если честно.

Цитата NightLord ()
Особенно у эппла) Проверить то можно, ага. Но могу сразу сказать, что это все настолько "быстро" работает, что игрок успеет как минимум передумать и отвалиться, если не состариться

Это ведь просто запрос на их сервер, у google и apple есть свой API. Этот процесс не займет больше минуты.

Цитата NightLord ()
1) Делать авторитарный сервер

Так и собирался, в общем то. А как вы представляли отправку средств друг другу без авторитарного сервера ? Там же планировали делать проверку рецептов от IAP.
Storm54Дата: Вторник, 27 Сентября 2016, 09:49 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Нормальной авторизацией можно заняться в самом конце. Просто сделайте логин по ID пользователя без всяких паролей и прочих усложнений. Человек скачивает APK, вводит ID и играет за аккаунт, привязанный к этому идентификатору.
Такой подход поможет быстрее отлаживать проект и сосредоточиться именно на игровой логике.

Проблема кучи твинков обычно решается балансом. В том же Clash Of Clans новичок не в состоянии как-то повлиять на экономику всей игры.

Насчет авторизации в Clash Of Clans: скорее всего, там действительно генерируется UUID и отправляется на клиент.
А привязка осуществляется для того, чтобы была возможность вновь воспользоваться этим аккаунтом, если UUID будет утерян (например при смене девайса)

P.S. Как писали выше: регистрация нового аккаунта - это обычная запись в базу и существуют транзакции куда более требовательные к ресурсам, такие как, запрос на выставление предмета на аукцион.


Сообщение отредактировал Storm54 - Вторник, 27 Сентября 2016, 10:04
NightLordДата: Среда, 28 Сентября 2016, 15:46 | Сообщение # 14
участник
Сейчас нет на сайте
Цитата
Разные игроки есть. Есть программисты - игроки, кто приходит что нибудь поломать, код посмотреть. Конечно таких 1 %, но всё же. Не оставлять же дыру в безопасности. Ещё есть всякие сайты, куда в итоге выкладывается разлоченный под кучу денег APK. Такие релизы появляются быстрее, чем боты.

Ну это уже другая проблема, с авторизацией мало связанная. Изначально же вопрос возник по поводу защиты от жуликов, которые будут создавать 100500 аккаунтов для накрутки денег.

Код
А мы точно об одних и тех же вещах говорим ? Не совсем понимаю, если честно..
К примеру игры про строительство городов, где игрок постоянно получает "прибыль" с каждого здания. Или же аркадки, где за прохождение дают монетки. Можно купить экстрамонетки за IAP. Я не понимаю вас, если честно.

Нет, тут то все нормально. Я говорил про передачу денежных средств между игроками. Т.е. когда все в рамках одного девайсе. А вот когда начинаются манипуляции с балансом игрока вне девайса, тут могут возникнуть проблемы. Наприер эппл плохо относится к переносу баланса в игру на iOS из игры на Android. Даже если это один и тот же игрок. Казалось бы, в чем тут проблема, игрок купил на андроиде голды, захотел продолжить в другой игре, а вот не нравится им и все тут. Конечно, можно найти кучу примеров, где баланс успешно переносится с девайса на девайс. Но во первых - далеко не факт, что другим разрешат, во вторых - все эти игры зарабатывают тучу бабла, они просто ровнее других. И если с эпплом есть диалог и можно договорится, то с гуглом противоположная ситуация. Там если что-то не нарвится, прилка баниться, а если разработчик слишком смелый и начинает писать в саппорт и качать права, банится весь аккаунт, без права зарегистрировать новый. И поверте, гугл умеет определять мультиакки.

Цитата
Это ведь просто запрос на их сервер, у google и apple есть свой API. Этот процесс не займет больше минуты.

Вы играете в игры? Будуте ждать в магазине 1-2 минуты, пока пройдет покупка? Допустим мы начисляем деньги сразу, дабы пользователь не ждал. Что делать, если он мухлюет и сервер инапов вернул отсутствие платежа?
У вас есть девайс эппла?) Вы вкурсе насколько "шустро" работает их магазин? А это наминуточку площадка для продажи игр с большими бюджетами. Так вот, сервер подтверждения инапов работает аналогично магазину.

Цитата
Насчет авторизации в Clash Of Clans: скорее всего, там действительно генерируется UUID и отправляется на клиент.
А привязка осуществляется для того, чтобы была возможность вновь воспользоваться этим аккаунтом, если UUID будет утерян (например при смене девайса)

Все верно, кланы выдают уникальный идентификатор девайсу и после авторизации просто устанавливают связь с аккаунтом, если же с аккаунтом уже есть связанная сессия, то игроку предлагают выбрать, либо юзать текущую, либо использовать сохраненную, с потерей текущей.

Ну и раз таки очень хочется набить шишек с сервером. То обратите в первую очередь на синхронизацию прогресса. Вот где зарыта мина замедленного действия. Есть множество ситуаций, когда прогресс будет рассинхронизирован на двух разных устройствах, причем обе сессии могут содержать критически важные изменения. Как правило этого можно добиться отключением интернета (эмуляция плохого интернета) и игры на 2-3 девайсах одновременно.
Не забывайте, это не ПК, это мобилка. У них интернет не постоянное явление, а довольно таки периодическое. Запрещать играть без интернета очень плохая идея, не те времена нынче, чтобы ограничивать игрока.

Добавлено (28 сентября 2016, 15:46)
---------------------------------------------
Одним словом - нинада :)
вы пытаетесь защититься от пиратов и читеров - они в любом случае денег не заплатят. Так зачем на них тратить время? Не лучше его потратить на шлифовку гемплея и действительно важных процессов? А то сначала занимаются пол года фигней, пытаясь защитить продукт (который в любом случае сломают за пару часов), а игра с багами выходит, ибо на нормальное тестирование времени не осталось. Как думаете, рядовой игрок чему расстроится больше, читеру ваське, который будет хвастаться в школе или падению приложения из-за нехватки памяти?


Часто стоишь в пробке или очереди? Эта игра поможет скоротать время 7Bricks - головоломка с цифрами.
robertonoДата: Среда, 28 Сентября 2016, 17:26 | Сообщение # 15
Чокнутый Кот
Сейчас нет на сайте
Цитата NightLord ()
Вы играете в игры? Будуте ждать в магазине 1-2 минуты, пока пройдет покупка? Допустим мы начисляем деньги сразу, дабы пользователь не ждал. Что делать, если он мухлюет и сервер инапов вернул отсутствие платежа?
У вас есть девайс эппла?) Вы вкурсе насколько "шустро" работает их магазин? А это наминуточку площадка для продажи игр с большими бюджетами. Так вот, сервер подтверждения инапов работает аналогично магазину.


А разве есть возможность сделать иначе ? Игра не одиночная, проверка на валидность обязательно ведь должна быть, т.к. экономика в игре очень сильно зависит от виртуальных денег в игре.

Цитата NightLord ()
Нет, тут то все нормально. Я говорил про передачу денежных средств между игроками. Т.е. когда все в рамках одного девайсе. А вот когда начинаются манипуляции с балансом игрока вне девайса, тут могут возникнуть проблемы. Наприер эппл плохо относится к переносу баланса в игру на iOS из игры на Android. Даже если это один и тот же игрок. Казалось бы, в чем тут проблема, игрок купил на андроиде голды, захотел продолжить в другой игре, а вот не нравится им и все тут. Конечно, можно найти кучу примеров, где баланс успешно переносится с девайса на девайс. Но во первых - далеко не факт, что другим разрешат, во вторых - все эти игры зарабатывают тучу бабла, они просто ровнее других. И если с эпплом есть диалог и можно договорится, то с гуглом противоположная ситуация. Там если что-то не нарвится, прилка баниться, а если разработчик слишком смелый и начинает писать в саппорт и качать права, банится весь аккаунт, без права зарегистрировать новый. И поверте, гугл умеет определять мультиакки.


А как эту проблему тогда лучше решить ? Хотелось бы иметь кроссплатформенный мультиплеер.
В целом, можно и не делать возможность покупки денег через IAP вовсе. Или же запретить их передачу между iOS/Android.
Вместо этой IAP может быть и другая: допустим покупка каких нибудь рубинов, которые пересылать нельзя вообще, и использовать только для своего персонажа.
P.S. Почитав правила Google Play и приложений, на что либо подобное не наткнулся; так же поискал в гугле, найти ничего похожего не смог.

NightLord, по самой теме, описанной в первом сообщении, в принципе понятно. Постараемся сильно не усложнять задачу.


Сообщение отредактировал robertono - Среда, 28 Сентября 2016, 17:26
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг