Среда, 20 Ноября 2024, 11:43

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Unity + Photon + PHP + MySQL
romeo98Дата: Среда, 01 Июля 2015, 22:59 | Сообщение # 1
участник
Сейчас нет на сайте
Добрый день!

Вопрос не совсем по Unity, но напишу сюда. Может потом еще вопросы будут, тогда спрошу здесь же.

Занимаюсь разработкой мультиплеерной игры. Первый интересующий меня на данный момент вопрос таков:

ВОПРОС ПРО СТРУКТУРУ БД
1) Есть таблица БД, где я храню всю главную / общую инфу о пользователе (ник, почта, пароль и тд). Добавил в игру систему встроенных скинов (покупка за игровую валюту). Как логичнее всего скомпановать информацию о купленных скинах в БД? Их может быть очень много. Может потом добавлю не только скины, но и вещи. У меня есть рабочий вариант. Есть еще 1 таблица. Там 1-ое поле - id, 2-ое поле - ник игрока, дальше идут булевые значения скинов (название поля - название скина, а содержание - состояние (куплен или нет)). Предполагаю, что можно и нужно сделать как-то подругому, но как? Или все правильно? Я просто представляю себе, когда скинов будет не 5, а 100 (повторюсь, все скины добавляю я, как разработчик). Я крупными сайтами и базами данных не занимался, может таблица со 100-нью полями это нормально?

Чтобы вы понимали, как выглядит это сейчас:


Добавлено (01 июля 2015, 22:59)
---------------------------------------------
Еще один вопрос появился)

ВОПРОС ПРО БЕЗОПАСНОСТЬ ДАННЫХ ИГРЫ
2) Больше всего меня сейчас волнует в моей игре призводительность и безопасность. Вообщем-то, меня абсолютно не волнует, если кто-то взломает клиент. Главное, чтобы этот взлом никак не повлиял на данные в БД (например, получение игровой валюты) или на игровой процесс других игроков. Я имею ввиду, что, если взломщик нарисует на своем клиенте бесконечные очки или поставит на своем клиенте скин, который он не купил - по барабану. Полностью про игровую безопасность спрашивать бессмыслено. На эту тему и книги, и лекции, и статьи. Спрошу про конкретные вещи. Если я правильно понимаю то, чтобы взломщик не заменил летящий с клиента на сервер(в моем случае на сайт в php скрипт) пакет поставив там те же бесконечные очки - используют хеширование. То есть, клиент создает хеш из связки никнейм+очки+секретное слово, например. Сервер делает то же самое, а потом сверяет эти значения. Как это работает? Допустим, если никакой защиты не делать, то игрок, насколько я понимаю, легко может найти и заменить переменную очков на клиенте (если, конечно, знает, что делает). Почему же он не может найти секретный ключ и сгенерировать свой запрос с ним? Это все делается только для того, чтобы сделать жизнь взломщика труднее, но никак не защищает игру? Еще кое-что по этому секретному ключу. Существует ли разница для безопасности приложения между тем, если хранить секретный ключ в приватной переменной скрипта и между тем, если хранить этот ключ в публичной константной переменной (Чтобы иметь возможность получить к нему доступ в нужное время из других скриптов. Я сейчас говорю про клиент на Unity)?


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Среда, 01 Июля 2015, 23:09
VinchensooДата: Четверг, 02 Июля 2015, 08:40 | Сообщение # 2
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Почитайте книжки по криптографии. Да и фотон для ПХП не нужен, хватит класса WWW.

seamanДата: Четверг, 02 Июля 2015, 09:27 | Сообщение # 3
старожил
Сейчас нет на сайте
По первому вопросу.
Между таблицами в базе данных могут быть разные связи. Есть связь - "многие к многим". Поэтому делаем базу скинов и делаем такую связь между таблицей пользователей и таблицей скинов.
Читаем http://kek.ksu.ru/EOS/mysql/
http://habrahabr.ru/post/193380/

Ну и такая "монументальная" вещь - http://citforum.ru/database/osbd/contents.shtml


Сообщение отредактировал seaman - Четверг, 02 Июля 2015, 09:41
VinchensooДата: Четверг, 02 Июля 2015, 10:09 | Сообщение # 4
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Еще заранее бесплатный совет- заранее подумайте про игровые алгоритмы. Если вам нужна строгая синхронизация(например, 2 игрока дубасят друг друга в онлайне одновременно, при этом оба управляют своими персонажами), то учтите, что реализовывать такое поверх http протокола(про пхп отдельный разговор) - это разработка таких костылей, которые вам и не снились.

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


romeo98Дата: Четверг, 02 Июля 2015, 12:11 | Сообщение # 5
участник
Сейчас нет на сайте
Vinchensoo,
Цитата Vinchensoo ()
Да и фотон для ПХП не нужен, хватит класса WWW.

Цитата Vinchensoo ()
реализовывать такое поверх http протокола(про пхп отдельный разговор) - это разработка таких костылей

Поэтому я и использую Photon. У меня динамическая игра, не пошаговая. Я сейчас пхп скрипты использую только, если нужно что-то изменить в БД и для системы регистрации / авторизации.

Добавлено (02 июля 2015, 12:11)
---------------------------------------------
seaman,

Цитата seaman ()
По первому вопросу

Большое спасибо! Кажется понял.


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Четверг, 02 Июля 2015, 12:06
VinchensooДата: Четверг, 02 Июля 2015, 12:49 | Сообщение # 6
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата romeo98 ()
Поэтому я и использую Photon. У меня динамическая игра, не пошаговая. Я сейчас пхп скрипты использую только, если нужно что-то изменить в БД и для системы регистрации / авторизации.

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


romeo98Дата: Четверг, 02 Июля 2015, 13:00 | Сообщение # 7
участник
Сейчас нет на сайте
Vinchensoo,
Цитата Vinchensoo ()
БД сразу в игрового сервера

Я наверное не уточнил, что использую Photon Unity Network (aka Cloud), а не Server. Он не предоставляет возможность изменять логику сервера. Все сервера лежат под контролем Exit Games (разрабы photon). То есть, мне не нужно платить за хостинг сервера, но и доступа к нему я не имею и изменять там ничего не могу.

Я во всем этом еще не сильно разбираюсь. Могу где-то ошибаться, так что извиняюсь.


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Четверг, 02 Июля 2015, 13:54
VinchensooДата: Четверг, 02 Июля 2015, 14:30 | Сообщение # 8
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата romeo98 ()
Я наверное не уточнил, что использую Photon Unity Network (aka Cloud), а не Server. Он не предоставляет возможность изменять логику сервера. Все сервера лежат под контролем Exit Games (разрабы photon). То есть, мне не нужно платить за хостинг сервера, но и доступа к нему я не имею и изменять там ничего не могу.

Понятно, я подумал, что у вас авторитарный сервер.

Почитайте про rest-API, если не знакомы с этим, будет интересно и полезно.


  • Страница 1 из 1
  • 1
Поиск:

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