Четверг, 28 Ноября 2024, 00:26

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Браузерные Real-Time игры
dima9595Дата: Понедельник, 30 Июня 2014, 09:35 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Всем привет. На днях загорелся идеей создать браузерную онлайн игру с элементами real-time. Но мне, к сожалению не понятен алгоритм подсчёта, да и ни когда не сталкивался с этим. Сейчас всё объясню на примере:
Допустим, у нас есть игрок. Он что-либо начинает делать (например, строить здание) и через какое-то время (время на постройку берётся, например, из БД) оно будет построено.
И как всё это посчитать? Какой примерный алгоритм и какая БД должна быть? Больше волнует как я должен записывать данные и как считывать. Буду использовать - PHP, MySQL + JS (если потребуется).
Пожалуйста, объясните. Если нужно что-либо описать поподробней - напишу.




Сообщение отредактировал dima9595 - Понедельник, 30 Июня 2014, 10:14
lvovandДата: Понедельник, 30 Июня 2014, 10:34 | Сообщение # 2
старожил
Сейчас нет на сайте
с php конечно поизголяться придется для реал-тайма, но в принципе реализуемо,
при начале строительства пишешь в базу время начала и рассчитанное время окончания,
аяксом периодически дергаешь сервер и сравниваешь текущее время на сервере со временем завершения строительства, ну и при обновлении страницы тоже сравниваешь это время,
а пользователю можно и простой счетчик с обратным отсчетом на джаваскрипте повесить, которому при загрузке странице отдаешь остаток времени до завершения


Разработка и продвижение сайтов. Дизайн
dima9595Дата: Понедельник, 30 Июня 2014, 12:15 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Цитата lvovand ()
аяксом периодически дергаешь сервер и сравниваешь текущее время

А не сильная ли нагрузка будет на сервер? Есть ли ещё способы?


VinchensooДата: Понедельник, 30 Июня 2014, 16:49 | Сообщение # 4
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата dima9595 ()
А не сильная ли нагрузка будет на сервер? Есть ли ещё способы?

WebSocket. Только это никому не нужно. Такие вещи делаются, как описал lvovand.
Хранится время начала постройки в БД, аналогично храним, сколько по времени нужно строить.
Обновляем остаток в двух случаях:
1. Пользователи хотят видеть прогресс(если у нас оставшееся время отражается где-нить далеко не на главной странице, смысл дергать сервер постоянно и проверять остаток? Когда юзер зайдет посмотреть, сколько осталось- тогда и покажем)
2. Переодически проверяем, завершилось или нет. Тут период нужно подобрать по времени постройки. Если Дом строится в течение 10 дней, то можно спокойно проверять на завершенность раз в минуту- такая задержка будет незаметна.

Делать либо аяксом, либо веб-сокеты, либо планировщик. Я бы выбрал первый вариант, ибо дешево и сердито, да и работать будет.


dima9595Дата: Понедельник, 30 Июня 2014, 17:13 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Vinchensoo, понятно. Спасибо. Теперь появился ещё 1 вопрос:
Допустим, за постройку здания требуется очки работы. Я хотел что бы они восстанавливались раз в 5 минут. Лучше же воспользоваться планировщиком, или есть ещё способы!?


VinchensooДата: Понедельник, 30 Июня 2014, 17:16 | Сообщение # 6
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата dima9595 ()
Допустим, за постройку здания требуется очки работы. Я хотел что бы они восстанавливались раз в 5 минут. Лучше же воспользоваться планировщиком, или есть ещё способы!?

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

Я не знаю, как это делается на пхп, на джаве я бы взял планировщик и задал ему событие, раз в 5 минут обновлять данные по всем очкам работы. Вот.


dima9595Дата: Понедельник, 30 Июня 2014, 18:38 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Ещё раз всем спасибо. В первый раз сталкиваюсь с этим)

VinchensooДата: Понедельник, 30 Июня 2014, 19:04 | Сообщение # 8
Злобный социопат с комплексом Бога
Сейчас нет на сайте
dima9595, я еще что-то затупил немного, прошу прощения, есть еще более каноничный способ, если вы более-менее разбираетесь в базах данных. Можно сделать триггер. Но тут вопрос логики: должны ли бонусы начислятся только за время работы сервера или постоянно, даже если он в оффлайне. Но способ, наверное, наиболее подходящий.

Yashko3Дата: Понедельник, 30 Июня 2014, 19:20 | Сообщение # 9
Господин Ведущий
Сейчас нет на сайте
Цитата dima9595 ()
Допустим, за постройку здания требуется очки работы. Я хотел что бы они восстанавливались раз в 5 минут. Лучше же воспользоваться планировщиком, или есть ещё способы!?

Для этого используется cron.
Более оптимальных способов, насколько мне известно, нет.





старый профиль
php <3


Сообщение отредактировал Yashko3 - Понедельник, 30 Июня 2014, 19:21
VinchensooДата: Понедельник, 30 Июня 2014, 20:05 | Сообщение # 10
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата Yashko3 ()
Более оптимальных способов, насколько мне известно, нет.

Тригеры норм. У нас на некоторых проектах по 50-70% бизнес-логики написано на хранимых процедурах. Но у нас- не игры. Cron- это вроде как раз планировщик? Я далек от мира пхп)


dima9595Дата: Понедельник, 30 Июня 2014, 20:08 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата Vinchensoo ()
Cron- это вроде как раз планировщик?

Да, Cron и есть планировщик.
Цитата Vinchensoo ()
Можно сделать триггер

Поискал информацию о триггерах - интересный метод. Почитаю попозже поподробней.
Цитата Vinchensoo ()
У нас на некоторых проектах

Не будет ли ссылочки? Интересно посмотреть...


VinchensooДата: Понедельник, 30 Июня 2014, 20:35 | Сообщение # 12
Злобный социопат с комплексом Бога
Сейчас нет на сайте


dima9595Дата: Вторник, 01 Июля 2014, 09:56 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
Цитата Vinchensoo ()
А так- ссылки ничего не дадут

Мне просто интересно)


DinoieraДата: Четверг, 17 Июля 2014, 16:16 | Сообщение # 14
участник
Сейчас нет на сайте
Цитата dima9595 ()
Всем привет. На днях загорелся идеей создать браузерную онлайн игру с элементами real-time. Но мне, к сожалению не понятен алгоритм подсчёта, да и ни когда не сталкивался с этим. Сейчас всё объясню на примере:
Допустим, у нас есть игрок. Он что-либо начинает делать (например, строить здание) и через какое-то время (время на постройку берётся, например, из БД) оно будет построено.
И как всё это посчитать? Какой примерный алгоритм и какая БД должна быть? Больше волнует как я должен записывать данные и как считывать. Буду использовать - PHP, MySQL + JS (если потребуется).
Пожалуйста, объясните. Если нужно что-либо описать поподробней - напишу.


Алгоритм. Создается БД - Temp Build к примеру- она нужна, чтобы в ней появился обратный отсчет. На примере зданий - все здания имеют сначала уровень 0. и условие такое в build.php.. что уровень здания X=+1
Алгоритм простой. По истечению времени стройки, уровень здания X повышается на 1


Помогаю чем могу и прошу взаимной помощи)
DCH - сайт разработчиков игр(новый проект)
  • Страница 1 из 1
  • 1
Поиск:

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