MMORPG Базис
Добавлено: Вт май 10, 2016 11:43 pm
Страница Базиса с некоторым контентом, разработанным на данный момент: http://basis.blackstrip.ru
Название игры из этой темы viewtopic.php?f=9&t=109 , но сюжет будет не такой =) но о сюжете позже. А сначала
Механика
Создание серьезной ММОРПГ с клиентом и сервером - дело хлопотное и трудное, бесконечное общение сервера с клиентами, падения и автовставания сервера, лаги на больших нагрузках. Поэтому можно сделать проще - "браузерка с клиентом". Лежит себе PHP скрипт (а ля сервер), никого не трогает. К нему лезет игра логиниться - он ее залогинивает (по БД сравнивает логин/шифрованный пароль и отдает идентификатор ID, а сам себе запоминает идентификатор ID и IP клиента).
Ну а дальше игра ему говорит "перс с идентификатором ID идет на клетку Х:Y", скрипт отвечает "окей, потребуется 10 мин на переход, ибо дорога долгая". Игра себе отсчитывает эти 10 минут плавно, анимируя как перс старается бежит из клетки в клетку. А сервер запоминает только время старта действия, чтобы потом по текущему времени отсчитать сколько уже прошло времени и закончилось ли действие.
И тут игрок выходит из игры. Чего сидеть, когда можно чего нибудь еще поделать пока что...
Потом игрок заходит снова через 8 минут. Залогинивается аналогично вышеописанному алгоритму. И игра спрашивает у скрипта-сервера "статус какой?", скрипт отвечает "перс бежит из X1:Y1 в X2:Y2, всего времени требуется N, прошло времени M", игра у себя отрисовывает как перс старается бежит уже ближе к конечной точке. Аналогичными длинными задержками скриптуется масса дел персонажа, копание сокровищ в клетке, крафт предметов, обыск клетки на предмет мобов/врагов, бой с мобами/врагами, рыбалка в озере, лежание в госпитале с целью подлечить раны и т.д.
Бой тоже пассивный - перс с ростом своего уровня учит кучу абилок и они валяются в книге заклинаний. И вот игрок выставляет, например, в 5 ячеек абилок конкретные абилки "1-кастануть щит на себя,2-фаерболл,3-фаерболл,4-пригнуться,5-армагеддон".
У мобов свои наборы абилок (рандомные в последовательности, но специфичные для каждого из типов мобов). Поэтому при бое с мобом сервер автоматом (уже на старте боя) просчитывает весь ход событий "1-щит кастанул игрок,1-моб куснул игрока,2-фаерболл кастанул игрок,2-моб кастанул берсерка на себя,3-фаерболл кастанул игрок,3-моб куснул игрока", и на каждом шаге просчитываются все статы, криты, что произошло и сколько жизней осталось до тех пор, пока кто нибудь из воюющих не сдохнет.
Потом сервер долго отвечать будет клиенту "идет бой, еще N минут". А по окончании выдаст статус "бой окончен" и лог боя. А клиент красочно и анимированно отрисует ход всего боя и покажет лог.
Если бой с игроком - то происходит дело так: ваш перс в клетку пришел, а потом нажал "обыскать", по окончании обыска ему показывают в клетке "волк 3 уровня, волк 5 уровня, ВасянЛолПро воин 10 уровня". И игрок выбирает "биться с Васяном", тогда, исходя из выставленных Васяном абилок, проходит бой с ним как с мобом и в конце выдаются какие нибудь особенные плюшки за "пвп" бой. Тут надо придумать что делать со злоупотреблениями (типа "пвп не чаще чем N раз в M минут/часов" хотя бы).
Далее еще запихиваем каким либо образом квесты в игру, чтоб убийства волков/Васянов еще засчитывались в квестлоге при наличии соответствующего квеста.
Ну и все. Бегаем по клеткам, фармим шмотки и реагенты, крафтим шмот и оружие, рыбачим, ищем сокровища, качаем уровни и еще чего нибудь делаем (можно много чего придумать). Причем игру надо делать в комповском и мобильном виде, чтобы можно было с мобилы выставлять задания и изредка заходить их переставлять.
Соответственно берем Delphi 7 для комповской версии, ну и любую среду чистой андроид-разработки для мобильной версии.