LINUX.ORG.RU
ФорумGames

ogame.ru


0

0

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

Как работает движок? Т.е. как происходит расчет ресурсов и битв?

Мои соображения: расчет ресурсов:

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

2. Можно написать отдельное ядро, допустим на Си(++), которое раз в секунду все это просчитывает и заносит в базу, а пхп скрипт просто выбирает данные из базы.

По-моему второй вариант целесообразнее. Как вы думаете?

anonymous

Если состояние игры должно изменятся не зависимо от того, когда игрок загружал страницу последний раз, то генерация страни и игровой движок стоит разнести. Будет 2 независимых блока - сервер-демон, обсчитывающий игру (по классическим принципам гейм-дева) и скрипты, рисующие странички юзерам. Само собой, юзер, субмитя формы (или еще как) иницирует определенные события, очередь которых постоянно обрабатывает игровой сервер.

AngryElf ★★★★★
()
Ответ на: комментарий от AngryElf

Я еще не знаю, как лучше сделать. Если сделать отдельное ядро для этого - то по-моему большая нагрузка на БД будет каждую секунду для нескольких тысяч (в перспективе) игроков высчитывать ресурсы. А как идея на счет того, чтобы высчитывать все это при необходимости? Т.е. если кто-то запрашивает кол-во ресурсов у такого то юзера - посмореть сколько времени прошло с последнего подсчета и высчитать заново. Тогда все это будет делать пхп-скрипт.

anonymous
()
Ответ на: комментарий от anonymous

Скорее наоборот, один сервис будет грузить базу меньше, чем сотня-другая (сколько юзеров предполагается?) php-скриптов параллельно. Да и большая часть этих процессов будет считать одно и то же.

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

AngryElf ★★★★★
()
Ответ на: комментарий от AngryElf

По-моему вы сильно переоцениваете подобные глюкалки:-) Просто элементарный timestamp последнего обращения сохраняется в базе. При новом обращении вычисляется разница прошедшего времени => дописывается расход\увеличение ресурсов. Писать standalone сервер для этого глупо (ИМХО), ибо в купе с парой тысяч клиентов это накернит БД моментально.

Anoxemian ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.