Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.02.2015, 22:50
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 11  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Об оперативной разумеется)
В общем возвразаясь к теме первого вопроса. 100 запросов в секунду при работе с проиндексированной таблицей - это не много. Но в целом, затрагивая вопрос архитектуры игры - такой подход не правильный.

Старый 02.02.2015, 23:12
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 12  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
А чем он неправильный?)) Я просто не пойму. Вот человек играет. Собирает одну монетку, посылаем запрос из флешки, серверу. Сервер же обрабатываем полученные данные и делает запрос в бд, дабы записать, что вот этот игрок собрал одну монетку и если он сейчас выйдет из игры, покинет браузер и вернется на следующий день, то у него будет та самая монетка, которую он вчера получил) В чем неправильность?) Ну будет не один, а 500 таких игроков, которые собирают монетки, 500 запросов в в бд и то не факт что в секунду, кто-то может в это время не собирать монетки, а заниматься чем-то другим. Как будет правильно тогда?)

Старый 02.02.2015, 23:16
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 13  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Хорошо, для игры где нужно кликать по монетками - это подходит идеально)
Для более сложных игр - нет. Если приведете пример более реальной игры - объясню чем.
Для любой игры где нужен мультиплеер - ваш вариант не подходит.

Старый 02.02.2015, 23:25
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 14  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
А чем эта игра не реальная? В любой игре, используются одни и те же запросы в БД. Select, insert, update - основные запросы. Они не куда не денутся в другой игре) К примеру, давай возьмем такую игру. Есть чувак, который переходит по локациям, каждая локация имеет свой уникальный id, соответственно при переходе в другую локацию - update в одну таблицы и insert в другую. К примеру, в каждой локации есть монеты, которые игрок может собрать. При сборе монеты update одной таблицы, insert в другую. Помимо всего прочего, персонаж может нарваться на неприятности, например на него кто-то напал неведомый. Опять же идет запрос в бд, мол этот игрок вступил в бой и чтобы когда он вышел/вернулся в игру, то мог продолжить бой. В бою также, при каждом ударе идет запрос в бд, чтобы отслеживать сколько осталось хитов у оппонентов и тп, при этом запросы не к одной таблице, а к нескольким. К примеру. Объясняй)

Старый 03.02.2015, 00:50
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 15  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Странно вы как то выделяете сущности.. Почему локация таблица в которую инсертится игрок?
Таблица локаций может представлять собой id, name, preview, background, walls
Таблица игрока id, currentLocationId, coins
При переходе игроков на локацию будет апдейтится поле в его таблице. Это что касается вашего примера.
Я еще раз говорю, он имеет право быть. Но представьте что у вас на локации другие живые игроки. как вы будете узновать их координаты? Опрашивать базу каждую секунду?
Игра может иметь сложные состояния, не все из которых можно представить в виде таблиц.

Старый 03.02.2015, 09:00
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 16  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
А чем он неправильный?)) Я просто не пойму. Вот человек играет. Собирает одну монетку, посылаем запрос из флешки, серверу. Сервер же обрабатываем полученные данные и делает запрос в бд, дабы записать, что вот этот игрок собрал одну монетку и если он сейчас выйдет из игры, покинет браузер и вернется на следующий день, то у него будет та самая монетка, которую он вчера получил) В чем неправильность?) Ну будет не один, а 500 таких игроков, которые собирают монетки, 500 запросов в в бд и то не факт что в секунду, кто-то может в это время не собирать монетки, а заниматься чем-то другим. Как будет правильно тогда?)
Поднимаете сокет-сервер на php. Клиент коннектится, собирает монетку, вы в оперативной памяти в переменной состояния типа coins_amount делаете инкремент. Когда клиент отваливается (пропадает инет, или пользователь закрывает браузер), сервер ловит это событие и по нему записывает переменную в базу, либо делает это по другому событию. Таким образом, у вас не будет дергания базы на каждый клик.

Чем плохо дергать базу каждый клик. Во-первых, если есть возможность этого не делать, то зачем нагружать базу лишними запросами. Во-вторых, 500 запросов в бд в секунду не так уж и много, но мы же все хорошие программисты и сразу пишем под хайлоад В-третьих, не хотите поднимать сокет-сервер, используйте для хранения монеток redis, и синхронизируйте раз в час собранные им данные в базу.

Добавлено через 1 минуту
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
А чем эта игра не реальная? В любой игре, используются одни и те же запросы в БД. Select, insert, update - основные запросы.
как раз таки в любой нормальной игре на каждый пук от клиента база не дергается, всё хранится в оперативной памяти в переменных состояния и сохраняется в бд только по определенным событиям.

Старый 03.02.2015, 15:58
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 17  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
А у вас есть пример реализации? И где гарантия того, что к примеру читер не изменит значение переменной сoins_amount и когда придет время отправки в бд запись, то там не будет триллион монет)

Старый 03.02.2015, 16:05
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 18  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
как он изменит coins_amount в оперативнйо памяти сервера?
Практически каждая игра топа вк - пример такой реализации

Старый 03.02.2015, 16:40
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 19  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Ладно, а есть документации какие-нибудь по такой реализации? Ибо пока я еще не особо понял, как это применять на деле.

Старый 03.02.2015, 18:01
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 20  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Можно и "как бы" писать в базу, а для кэширования использовать memcached
__________________
Отряд Котовскага

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.