![]() |
Ответ: Black Bird (Unity Project Web Version)
выйти в гараж не работает.
здоровье при сбитии часто бывает меньше 100 зато исчезли глюки с неначислением фрагов! хотелось бы чтобы показывали в каких комнатах играют друзья по контакту. хотелось бы чтобы при сбитии чувака писалось кто и кого сбил. новая комната - рульная! |
Ответ: Black Bird (Unity Project Web Version)
Цитата:
|
Ответ: Black Bird (Unity Project Web Version)
Цитата:
Далее когда запрашиваешь друзей, тут зависит, в facebook можно получить список пользователей которые тоже пользовались приложением. Такой список имеет ID пользователей, делаем простой запрос в БД с "ID IN (id_пользователей)". Таким образом получим список и статусы. Но если нету возможности получить список друзей связанных с игрой, то тут проблема в том что будет либо слишком много ID для запросов - и нужно как-то оптимизировать. Можно сделать автономный кеш, и держать список друзей у себя где-то, так можно будет сделать. Такая фича очень положительно скажется на рентабельности игроков, особенно если иметь возможность приглашения друга в бой по одному клику. |
Ответ: Black Bird (Unity Project Web Version)
Получить друзей, играющих в приложение с помощью апи вконтакта легко, проблема в том, что если писать это дело в базу, то база сильно опухнет, да и запрашивать это постоянно надо будет.
Фотон имеет открытые поля для комнат, которые можно задать при создании и в дальнейшем изменить. Эти открытые поля доступны в списке комнат, принятых с облака. Я правда не знаю, как повлияет на обновление списка комнат такое поле со списком id игроков. И как часто фотон рассылает список комнат. |
Ответ: Black Bird (Unity Project Web Version)
Цитата:
Таблица никогда не вырастит больше чем в день отыграет игроков. Тем более она будет ужасно мелкой. Если на стороне сервера запросы в VK API по запросу списка игроков будет не блокирующим (асинхронно), то не вижу никакой проблемы, подгружать такие данные как виджет. Ни с точки зрения нагрузки, ни с точки зрения производительности. |
Ответ: Black Bird (Unity Project Web Version)
Я не знаю, полностью ли ты понимаешь какая технология выбрана:
1. Данные на сервере хранятся с помощью php+mysql. 2. При заходе в игру клиент подключается к лобби в облаке фотона, в котором на сервере вообще никакой логики нельзя добавить. 3. Сервера независимые. Ты предлагаешь записывать в базу через php/mysql при создании боев подключаемых к ним пользователей. И с помощью того-же php/mysql запрашивать эти данные при каждом обновлении списка комнат? Тут ситуация такая - клиент может выйти ничего не сказав php серверу об этом. И игрок останется в базе в какой-то комнате. Ну и остальные "преимущества" с этим связанные. |
Ответ: Black Bird (Unity Project Web Version)
Цитата:
Цитата:
Цитата:
То есть на сервере нету никакой области логики "при коннекте клиента"? Ни при соединении ни при отключении? Цитата:
Если #2 всё же возможен. Тогда всё что нужно - это отослать простой HTTP запрос на PHP мелкий скрипт (только игровой сервер может слать естественно), или если игровой сервер имеет прямой доступ к бд - так даже лучше естественно. При подсоединении к бд - создаём запись: "user_id, 0", где 0 - это id матча. Т.к. мы в лобби он 0. Далее когда начинается матч (подсоединяемся к игровой инстанции), обновляем запись, ставим id матча заместо 0. По окончанию матча - обнуляем снова. При выходе из игры (полностью), трём запись. Если нету возможностей оперировать данными на уровне lobby, тогда делаем только для матчей. Ну или если уж совсем хочется, можно сделать и простой "ping-pong" с php скриптом, раз в минуту, от клиента. И иметь процесс, каждые например 3 минуты, что будет тереть все записи с timestamp старее 3 минут. Индексировать по timestamp естественно тоже нужно, чтобы скорость поиска была приемлемой. Два варианта, оба вполне реальны. Первый естественно лучше. Но как понимаю нету центрального "Мастера", следственно с фотоном такое будет не просто и прийдётся извращаться, как во втором варианте. Цитата:
Но вот получение списка, я бы минимализировал на стороне клиента по времени. Не каждое обновление списка, а по таймеру. Чаще чем каждые 3 минуты клиенту не нужен обновлённый список кто в онлайне. Цитата:
|
Ответ: Black Bird (Unity Project Web Version)
Цитата:
|
Ответ: Black Bird (Unity Project Web Version)
Цитата:
А вообще я бы написал 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 так же. ЗЫ, Могу даже написать такой мелкий процесс, и дать инструкции как это дело запустить будет на сервере (если он конечно позволяет ставить и запускать что хотите, а не тупо виртуальный). |
Ответ: Black Bird (Unity Project Web Version)
Я думаю nodejs у Сереги нет возможности сейчас запустить, так что возможно потом. Проще в параметры комнаты записывать список игроков.
|
Ответ: 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? Спасибо! |
Ответ: Black Bird (Unity Project Web Version)
Метод friends.getAppUsers для получения друзей с сервера вызвать нельзя.. Хрень блин.
Нужен AOuth либо SID для запроса. Какой способ посоветуете? SID - выглядит весьма защищёно. Получается есть другой способ - получаем всех друзей пользователя и сравниваем с зарегенными пользователями - и такой список храним, и обновляем периодически, туповато если честно. Встречный вопрос - на клиенте, можешь делать клиентские запросы, JS в идеале? |
Ответ: Black Bird (Unity Project Web Version)
Серег, какой mysqlapi ты используешь? Стандартный? PDO? Самый простой вариант - вернуть из php echo json_encode($response); где response это то что вернут твой sql запрос и обработанный с помощью FetchAll. Ответ можно на клиенте распарсить с помощью JSON библиотеки.
МоКа, на клиенте любой js вызывается без проблем из Unity. К тому же у Сереги было мое решение, получающее друзей в игре и выводящее их аватары. |
Ответ: Black Bird (Unity Project Web Version)
Цитата:
А практически, можно сделать и так. Но это имхо не стабильно как-то? |
Ответ: Black Bird (Unity Project Web Version)
Почему не влезть в HTTP запрос? Что-то я потерял нить.
Имея id друзей на клиенте самое простое - можно выделить бои, созданные друзьями, если комнате добавить id создателя, либо комнату называть по id создателя. Это на половину решит задачу и достаточно просто. |
Часовой пояс GMT +4, время: 17:58. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot