|
08.04.2013, 00:50
|
#166
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
выйти в гараж не работает.
здоровье при сбитии часто бывает меньше 100
зато исчезли глюки с неначислением фрагов!
хотелось бы чтобы показывали в каких комнатах играют друзья по контакту.
хотелось бы чтобы при сбитии чувака писалось кто и кого сбил.
новая комната - рульная!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 07:08
|
#167
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от HolyDel
хотелось бы чтобы показывали в каких комнатах играют друзья по контакту.
|
С облаком без собственного сервера вроде бы такое не провернуть... единственный вариант - в открытые параметры комнаты записывать строку с id пользователей через запятую и обновлять, но если будет много комнат, то будет тяжелый пакет со списком комнат...
Последний раз редактировалось pax, 08.04.2013 в 09:40.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 14:02
|
#168
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от pax
С облаком без собственного сервера вроде бы такое не провернуть... единственный вариант - в открытые параметры комнаты записывать строку с id пользователей через запятую и обновлять, но если будет много комнат, то будет тяжелый пакет со списком комнат...
|
Можно сделать записи в бд, где ID будет сам ID пользователя в VK. И далее вся инфа о статусе.
Далее когда запрашиваешь друзей, тут зависит, в facebook можно получить список пользователей которые тоже пользовались приложением. Такой список имеет ID пользователей, делаем простой запрос в БД с "ID IN (id_пользователей)". Таким образом получим список и статусы.
Но если нету возможности получить список друзей связанных с игрой, то тут проблема в том что будет либо слишком много ID для запросов - и нужно как-то оптимизировать.
Можно сделать автономный кеш, и держать список друзей у себя где-то, так можно будет сделать.
Такая фича очень положительно скажется на рентабельности игроков, особенно если иметь возможность приглашения друга в бой по одному клику.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 14:12
|
#169
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Получить друзей, играющих в приложение с помощью апи вконтакта легко, проблема в том, что если писать это дело в базу, то база сильно опухнет, да и запрашивать это постоянно надо будет.
Фотон имеет открытые поля для комнат, которые можно задать при создании и в дальнейшем изменить. Эти открытые поля доступны в списке комнат, принятых с облака. Я правда не знаю, как повлияет на обновление списка комнат такое поле со списком id игроков. И как часто фотон рассылает список комнат.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 16:07
|
#170
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от pax
Получить друзей, играющих в приложение с помощью апи вконтакта легко, проблема в том, что если писать это дело в базу, то база сильно опухнет, да и запрашивать это постоянно надо будет.
Фотон имеет открытые поля для комнат, которые можно задать при создании и в дальнейшем изменить. Эти открытые поля доступны в списке комнат, принятых с облака. Я правда не знаю, как повлияет на обновление списка комнат такое поле со списком id игроков. И как часто фотон рассылает список комнат.
|
Зачем эти данные держать постоянно? Обнуляем их смело при выходе игрока из игровой сессии, и если есть какая-то нестабильность - то периодически (дневной скрипт), для чистки старых данных.
Таблица никогда не вырастит больше чем в день отыграет игроков.
Тем более она будет ужасно мелкой.
Если на стороне сервера запросы в VK API по запросу списка игроков будет не блокирующим (асинхронно), то не вижу никакой проблемы, подгружать такие данные как виджет. Ни с точки зрения нагрузки, ни с точки зрения производительности.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 16:40
|
#171
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Я не знаю, полностью ли ты понимаешь какая технология выбрана:
1. Данные на сервере хранятся с помощью php+mysql.
2. При заходе в игру клиент подключается к лобби в облаке фотона, в котором на сервере вообще никакой логики нельзя добавить.
3. Сервера независимые.
Ты предлагаешь записывать в базу через php/mysql при создании боев подключаемых к ним пользователей. И с помощью того-же php/mysql запрашивать эти данные при каждом обновлении списка комнат?
Тут ситуация такая - клиент может выйти ничего не сказав php серверу об этом. И игрок останется в базе в какой-то комнате. Ну и остальные "преимущества" с этим связанные.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 17:35
|
#172
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от pax
Я не знаю, полностью ли ты понимаешь какая технология выбрана:
|
Это не с технологией связано, а архитектурой.
Сообщение от pax
1. Данные на сервере хранятся с помощью php+mysql.
|
Это ок. Запрос с даже 50 ID по Primary Key с IN оператором - очень быстрая операция.
Сообщение от pax
2. При заходе в игру клиент подключается к лобби в облаке фотона, в котором на сервере вообще никакой логики нельзя добавить.
|
Это при заходе в онлайн в саму игру, а не конкретный матч?
То есть на сервере нету никакой области логики "при коннекте клиента"? Ни при соединении ни при отключении?
Сообщение от pax
3. Сервера независимые.
|
Это ничего не меняет.
Если #2 всё же возможен. Тогда всё что нужно - это отослать простой HTTP запрос на PHP мелкий скрипт (только игровой сервер может слать естественно), или если игровой сервер имеет прямой доступ к бд - так даже лучше естественно. При подсоединении к бд - создаём запись: "user_id, 0", где 0 - это id матча. Т.к. мы в лобби он 0.
Далее когда начинается матч (подсоединяемся к игровой инстанции), обновляем запись, ставим id матча заместо 0.
По окончанию матча - обнуляем снова.
При выходе из игры (полностью), трём запись.
Если нету возможностей оперировать данными на уровне lobby, тогда делаем только для матчей. Ну или если уж совсем хочется, можно сделать и простой "ping-pong" с php скриптом, раз в минуту, от клиента.
И иметь процесс, каждые например 3 минуты, что будет тереть все записи с timestamp старее 3 минут.
Индексировать по timestamp естественно тоже нужно, чтобы скорость поиска была приемлемой.
Два варианта, оба вполне реальны. Первый естественно лучше. Но как понимаю нету центрального "Мастера", следственно с фотоном такое будет не просто и прийдётся извращаться, как во втором варианте.
Сообщение от pax
Ты предлагаешь записывать в базу через php/mysql при создании боев подключаемых к ним пользователей. И с помощью того-же php/mysql запрашивать эти данные при каждом обновлении списка комнат?
|
Записывать данные в бд при создании матча - да.
Но вот получение списка, я бы минимализировал на стороне клиента по времени. Не каждое обновление списка, а по таймеру. Чаще чем каждые 3 минуты клиенту не нужен обновлённый список кто в онлайне.
Сообщение от pax
Тут ситуация такая - клиент может выйти ничего не сказав php серверу об этом. И игрок останется в базе в какой-то комнате. Ну и остальные "преимущества" с этим связанные.
|
Поэтому нужен скрипт на сервере для сборки старых данных - это нормальная процедура если у тебя нету ответственной точки контроля данного списка и зависимостей записей с источником (матч серверами).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 18:23
|
#173
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от MoKa
То есть на сервере нету никакой области логики "при коннекте клиента"? Ни при соединении ни при отключении?
|
Нету, сервер только рассылает пакеты.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 19:07
|
#174
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от pax
Нету, сервер только рассылает пакеты.
|
Тогда второй вариант - имхо, единственная возможность иметь список "кто-онлайн".
А вообще я бы написал node.js процесс в 150 строк, который бы в памяти хранил бы хэшь таблицу пользователей, сам бы таймером это дело и обчищал, и имел бы 3 REST запроса: PUSH, DELETE, GET.
Матч сервер кидает ID матч сервера и ID пользователя.
При выходе DELETE с ID пользователя - почистит пользователя.
И GET - с ID пользователя. Это заставит процесс сделать запрос в VK API для получения списка друзей приложения, далее при получении ответа, соберёт массив из хеш таблицы по ID пользователей. Чаще всего конечно он будет пустым :D.
И выдаст ответом.
Ну и простой интервал - раз в минуту почистить хеш таблицу.
Такой процесс будет очень эффективен, за счёт node.js асинхронности и не блокируемости запросов, также не нужна БД, т.к. хеш таблица в памяти.
Сотни тысяч пользователей - вполне простая задача для такого процесса.
Это по сути всё то же что я описал ранее как второй вариант, только проще, шустрее и эффективнее.
Очевидно - что это ну должно быть зависимой туулзой - а лишь nice-to-have, и клиент при неудачном запросе на получение списка друзей - не должен валиться, очевидно и для PHP + MySQL так же.
ЗЫ,
Могу даже написать такой мелкий процесс, и дать инструкции как это дело запустить будет на сервере (если он конечно позволяет ставить и запускать что хотите, а не тупо виртуальный).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.04.2013, 22:54
|
#175
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Я думаю nodejs у Сереги нет возможности сейчас запустить, так что возможно потом. Проще в параметры комнаты записывать список игроков.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.04.2013, 00:57
|
#176
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Overpower Changelist:
- 100% жизней после рееспавна.
- После смерти противника, ракеты не перенаводятся на его новую позицию.
- Горящие обломки самолетов с использованием физики.
- Должны показываться ники игроков.
- Кнопка при выходе из карты поправлена.
- Теперь есть респавн в 5 секунд.
- Враг, который сбил вас теперь виден на экране. Также можно посмотреть что у него стоит из апгрейдов.
- Переделан свет на карте 01 ( Город )
- Добавлен обсерв скрин.
- Новый, читабельный шрифт.
- Переработана часть интерфейса.
- Улучшены эффекты.
- Добавлена новая тестовая карта, тестим переходы на новые карты.
- Ракеты, от которых увернулись больше не активны.
- Добавлены первые характеристики корабля
- Смена карты работает в лоббии.
- Чуть снижена музыка.
- Работает отображение хп противника.
- Сервер переехал, теперь он может выдержать больше игроков.
- Ракеты, пули больше не пролетают сквозь дома.
- Оптимизация по эффектам
- Сортировка вещей в магазине
- Нормальная подсветка чата
- Ребаланс GAU-16 более быстрые снаряды, больше урона
- Исправлена коллизия на уровне. По идее самолет больше не должен уничтожатся при облете препятствий.
- Звуки порезаны, новые звуки на смене предметов.
- Новые предметы:
1) Ракеты М301
2) Пушка GAU-16
3) Расцветка "Боевая" и "Черный ястреб"
- Исправлен баг с незачислением убийств.
- Добавлена кнопка выхода. Для выхода нужно зажать TAB и нажать на кнопку "Выйти"
- Оптимизации по базе данных.
- Подправлены ценники в магазинах.
- Ребаланс некоторых ракет и пушек.
- Ребаланс ценников за фраг.
- Теперь вы подсвечиваетесь в скорборде зеленым цветом.
- Исправлено налезание текста друг на друга в магазине.
- Добавлен счетчик серверов в лобби экране.
- Исправлена потеря подключения на переходах в меню и уровнях.
Остается большая не решенная задача:
Как сделать выборку топ лучших из базы данных и все это вставить в юнити? По пониманию в пхп я испытываю проблемы довольно сильные.
Знаю, что запрос должен выглядеть примерно так:
SELECT `name`, `frags` FROM `users` ORDER by `frags` DESC LIMIT 50
Только как должен выглядеть пхп скрипт я не представляю И как это потом в json отправить. Может кто-нибудь сможет помочь?
И еще небольшое непонимание, как получить NetworkPlayer.name, зная только PhotonView?
Спасибо!
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
|
|
09.04.2013, 01:36
|
#177
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Метод friends.getAppUsers для получения друзей с сервера вызвать нельзя.. Хрень блин.
Нужен AOuth либо SID для запроса. Какой способ посоветуете? SID - выглядит весьма защищёно.
Получается есть другой способ - получаем всех друзей пользователя и сравниваем с зарегенными пользователями - и такой список храним, и обновляем периодически, туповато если честно.
Встречный вопрос - на клиенте, можешь делать клиентские запросы, JS в идеале?
|
(Offline)
|
|
09.04.2013, 02:05
|
#178
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Серег, какой mysqlapi ты используешь? Стандартный? PDO? Самый простой вариант - вернуть из php echo json_encode($response); где response это то что вернут твой sql запрос и обработанный с помощью FetchAll. Ответ можно на клиенте распарсить с помощью JSON библиотеки.
МоКа, на клиенте любой js вызывается без проблем из Unity. К тому же у Сереги было мое решение, получающее друзей в игре и выводящее их аватары.
|
(Offline)
|
|
09.04.2013, 02:53
|
#179
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Сообщение от pax
МоКа, на клиенте любой js вызывается без проблем из Unity. К тому же у Сереги было мое решение, получающее друзей в игре и выводящее их аватары.
|
Проку от этих данных на клиенте никаких, т.к. серверу нужно их знать. Теоретически их может быть слишком много, и не влезть в HTTP запрос если слать на сервер, плюс - даверять ли?
А практически, можно сделать и так. Но это имхо не стабильно как-то?
|
(Offline)
|
|
09.04.2013, 07:09
|
#180
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Black Bird (Unity Project Web Version)
Почему не влезть в HTTP запрос? Что-то я потерял нить.
Имея id друзей на клиенте самое простое - можно выделить бои, созданные друзьями, если комнате добавить id создателя, либо комнату называть по id создателя. Это на половину решит задачу и достаточно просто.
Последний раз редактировалось pax, 09.04.2013 в 09:16.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:19.
|