Понедельник, 11 Ноября 2024, 08:15

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Карта для браузерной стратегии
ByrgerДата: Суббота, 01 Января 2011, 23:01 | Сообщение # 1
был не раз
Сейчас нет на сайте
Привет всем! С новым годом всех! biggrin
Я пишу браузерную стратегию на подобии травиана и других аналогов

И тут встал вопрос о реализации карты для игры, но так чтобы нагрузка на сервер была минимальна

Карта представляет из себя многоклеточное поле на котором есть ландшафт (озера, леса, горы) и игроки ну и пустоты

Для реализации карты пока было решение сделать так
Сделать флеш клиент карты, ландшафт подгружать из XML файлов которые лежат на сервере
А игроков подгружать по средствам AJAX через php

Дак вот представим что в клиенте отображается кусок карты 7*7
На этом куске видно 15 игроков а остальное ландшафт
А теперь представляем если игрок начинает быстро пролистывать карту, и это создает огромную нагрузку на серв
Куча запросов отправляется в БД чтоб достать всех игроков которые попадают в поле зрения

Как решить данную проблему? Как лучше реализовать чтоб сервер мог держать большой онлайн игроков?

cougraAccДата: Суббота, 01 Января 2011, 23:36 | Сообщение # 2
Яркая личность GD
Сейчас нет на сайте
Byrger, переводи список игроков в текстовый файл... или же оптимизируй запросы.., ограничь пролистывание... на 2-3 секунды
ByrgerДата: Суббота, 01 Января 2011, 23:39 | Сообщение # 3
был не раз
Сейчас нет на сайте
Ограничить? smile что за игра такая тогда, бред уже получится
В текстовый фаил не катит, надо именно работу с БД, ну или по крону дергать игроков из БД
vladkisДата: Суббота, 01 Января 2011, 23:43 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Quote
Куча запросов отправляется в БД чтоб достать всех игроков которые попадают в поле зрения

Смотря какую БД используешь.
Quote
Byrger, переводи список игроков в текстовый файл.

Пользы мало.
Травиан держат не на одном сервере.
У гугла десятки тысяч серверов.

Добавлено (01.01.2011, 23:43)
---------------------------------------------

Quote
В текстовый фаил не катит, надо именно работу с БД, ну или по крону дергать игроков из БД

БД как ни как глючить будет, но если хорошо подумать... Может кеш использовать?
ByrgerДата: Суббота, 01 Января 2011, 23:49 | Сообщение # 5
был не раз
Сейчас нет на сайте
Кэш можно, но игроки развиваются, данные на карте о них меняются часто
БД MySQL
vladkisДата: Суббота, 01 Января 2011, 23:52 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Quote
MySQL

Может надо заменить на SQlite? Или PostGreSQL?

Добавлено (01.01.2011, 23:52)
---------------------------------------------

Quote
Кэш можно, но игроки развиваются, данные на карте о них меняются часто

Можно о каждом игроке информацию в отдельном файле держать? Хотя глупо...
LumineSky@FiДата: Воскресенье, 02 Января 2011, 00:00 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Quote (Byrger)
подгружать по средствам AJAX через php

Блин это как? аякс этоже js


Гильдия людей поклоняющихся "ТРАНСФОРМАТОРАМ".
Гильдия людей которые видели как "Крабы" едят "Кошек".
ByrgerДата: Воскресенье, 02 Января 2011, 10:38 | Сообщение # 8
был не раз
Сейчас нет на сайте
Ладно не по средствам Аякс а по средствам AS во флеше, получается

БД менять не буду

Сообщение отредактировал Byrger - Воскресенье, 02 Января 2011, 10:40
1nfernoДата: Воскресенье, 02 Января 2011, 19:46 | Сообщение # 9
был не раз
Сейчас нет на сайте
А что если загружать карту большими частями?
Например разбить весь игровой мир на куски 50х50 и подгружать их, а отображать теже поля 7х7.
Тоесть понадобится загружать карту редко, но очень тяжелыми частями (прикинул - поле 50х50 порядка 100-200 кбайт в JSON, в XML соответственно тяжелее будет)
Базу данных по идее в итоге будет грузить меньше, ведь мы это можем извлеч одним запросом.


Сообщение отредактировал 1nferno - Воскресенье, 02 Января 2011, 19:46
cougraAccДата: Понедельник, 03 Января 2011, 05:33 | Сообщение # 10
Яркая личность GD
Сейчас нет на сайте
А что если запрашивать как описал 1инферно и кэшировать, потом получать из кеша данные нагрузки действительно меньше
BOOMДата: Понедельник, 03 Января 2011, 09:36 | Сообщение # 11
I am the creator of ADE
Сейчас нет на сайте
Я бы заменил базу на SQLite, или подобную (в которой оптимизированы системы запросов и поиска).
В противном случае, устроил бы такую систему:
Организовал бы кеш систему на файле. Для этого можно использовать PHP DB (в сети их много, или можно свою реализовать запросто).
Когда игрок заходит, скрипт бы загонял информацию из Базы данных MySQL в PHP DB. Это бы уменьшило многократно запросы к БД. Но есть замечания:
Если код PHP DB не оптимизирован, то интерпретатор PHP может "разорваться". Поэтому, код должен быть максимально оптимизирован.
Так же, передача информации должна быть минимальной, дабы не нагружать жесткий диск сервера.

А когда игрок бы выходил из игры, сделал так, что бы данные перемещались в MySQL.

Конечно, в такой системе есть множество нюансов и неудобств. Но которые можно, в принципе, исправить.


______________________________
Я вернулся, и это чудо.
______________________________
webstrict666Дата: Вторник, 11 Января 2011, 08:46 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
хм а не проще делать как я , карта MYSQL обработчик php jquery а остальное города и объекты тоже в базе (:
XML лучше для FLESH FD а для PHP AJEX лучше MYSQL и использовать надо как VKONTAKTE разные таблицы на разных серверах smile


http://GAMESKROL.RU
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально !
  • Страница 1 из 1
  • 1
Поиск:

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