Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты на Unity

Ответ
 
Опции темы
Старый 08.04.2013, 00:50   #166
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Black Bird (Unity Project Web Version)

выйти в гараж не работает.
здоровье при сбитии часто бывает меньше 100
зато исчезли глюки с неначислением фрагов!
хотелось бы чтобы показывали в каких комнатах играют друзья по контакту.
хотелось бы чтобы при сбитии чувака писалось кто и кого сбил.
новая комната - рульная!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 07:08   #167
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Black Bird (Unity Project Web Version)

Сообщение от HolyDel Посмотреть сообщение
хотелось бы чтобы показывали в каких комнатах играют друзья по контакту.
С облаком без собственного сервера вроде бы такое не провернуть... единственный вариант - в открытые параметры комнаты записывать строку с id пользователей через запятую и обновлять, но если будет много комнат, то будет тяжелый пакет со списком комнат...
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 08.04.2013 в 09:40.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 14:02   #168
moka
.
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 14:12   #169
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Black Bird (Unity Project Web Version)

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

Фотон имеет открытые поля для комнат, которые можно задать при создании и в дальнейшем изменить. Эти открытые поля доступны в списке комнат, принятых с облака. Я правда не знаю, как повлияет на обновление списка комнат такое поле со списком id игроков. И как часто фотон рассылает список комнат.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 16:07   #170
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Black Bird (Unity Project Web Version)

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

Фотон имеет открытые поля для комнат, которые можно задать при создании и в дальнейшем изменить. Эти открытые поля доступны в списке комнат, принятых с облака. Я правда не знаю, как повлияет на обновление списка комнат такое поле со списком id игроков. И как часто фотон рассылает список комнат.
Зачем эти данные держать постоянно? Обнуляем их смело при выходе игрока из игровой сессии, и если есть какая-то нестабильность - то периодически (дневной скрипт), для чистки старых данных.
Таблица никогда не вырастит больше чем в день отыграет игроков.
Тем более она будет ужасно мелкой.

Если на стороне сервера запросы в VK API по запросу списка игроков будет не блокирующим (асинхронно), то не вижу никакой проблемы, подгружать такие данные как виджет. Ни с точки зрения нагрузки, ни с точки зрения производительности.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 16:40   #171
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 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 серверу об этом. И игрок останется в базе в какой-то комнате. Ну и остальные "преимущества" с этим связанные.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 17:35   #172
moka
.
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 18:23   #173
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Black Bird (Unity Project Web Version)

Сообщение от MoKa Посмотреть сообщение
То есть на сервере нету никакой области логики "при коннекте клиента"? Ни при соединении ни при отключении?
Нету, сервер только рассылает пакеты.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 19:07   #174
moka
.
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 08.04.2013, 22:54   #175
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Black Bird (Unity Project Web Version)

Я думаю nodejs у Сереги нет возможности сейчас запустить, так что возможно потом. Проще в параметры комнаты записывать список игроков.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (09.04.2013)
Старый 09.04.2013, 00:57   #176
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 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?

Спасибо!
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
Amatsu (09.04.2013), HolyDel (09.04.2013), moka (09.04.2013), pax (09.04.2013), Radnk (09.04.2013)
Старый 09.04.2013, 01:36   #177
moka
.
 
Регистрация: 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
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 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. К тому же у Сереги было мое решение, получающее друзей в игре и выводящее их аватары.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.04.2013, 02:53   #179
moka
.
 
Регистрация: 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
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Black Bird (Unity Project Web Version)

Почему не влезть в HTTP запрос? Что-то я потерял нить.

Имея id друзей на клиенте самое простое - можно выделить бои, созданные друзьями, если комнате добавить id создателя, либо комнату называть по id создателя. Это на половину решит задачу и достаточно просто.
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 09.04.2013 в 09:16.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:19.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com