Страница 1 из 1

Чем занимается Горлум за закрытыми дверями?

Добавлено: 17 фев 2016, 00:28
Gorlum
tl;dr
Перепиливает флоты. От слова "совсем".

МНОГАБУКОВ

Уже очень давно меня терзает желание перепилить кишочки движка. При чём именно самые глубокие, внутренние и я бы не побоялся сказать базовые подсистемы. То, что являет собой суть игры, а не относительно поверхностные подсистемы типа авторизации.

Спору нет - подсистема авторизации очень важна для работы движка. С недавних пор - она еще и несёт функцию расчёта ММ. Однако к движку она привязана весьма слабо и работает очень недолго - фактически, она полностью отрабатывает на старте работы страницы, определяет по пачке критериев игрока, который вошел в игру, отдаёт эти данные в движок и дальше курит бамбук. Изредка отвлекаясь на то, что бы провести операцию с ММ. Хотя, конечно, архитектурно и идеологически это неверно - подсистема работы с ММ должна находится отдельно от системы авторизации. Но - шо получилось то получилось. В общем - хотя авторизация и очень важна, но она не составляет суть игры. Вообще тут стоит остановится и выяснить - а что же относится к основным системам движка, а что так - наносное и отдельно стоящее?

Для начала давайте определимся с терминологией. Я часто кидаюсь словами "система движка", "подсистема движка" и подобными. Но нигде их не раскрываю. Сделаю это сейчас.

Итак - "система движка": это относительно слабо связанная с остальной игрой часть кода, которая отвечает за отдельный аспект игры. В идеальной игре все системы должны быть связаны между собой. Т.е. каждый аспект игры должен внутри влиять на остальные. Написал фигню в чате? БАМЦ! - получил пенальти к производству. Взял не того в друзья? БУМ! - получил штраф на защиту. Помог союзнику? ПУМЦ! - получил бонус к атаке. И так далее.

Проблема в том, что далеко не все связи легко формализуемы. Например, все три вышеописанных случая в игре отрабатываются внешними по отношению к движку связями. Послал кого-то в чате матом? БАМЦ! - получил бан, т.е. пенальти на производство и на многое другое. Взял не шпиона в друзья и тем самым открыл ему свой статус онлайна? БУМ! - тебя будут атаковать когда ты оффлайн. Помог союзнику? ПУМЦ! - союзник поможет тебе отбить атаку или полетит с тобой в САБ. Собственно, такие связи потому и называются "внешними", что не энфорсятся движком и дальше мы их рассматривать не будем. А будем мы рассматривать только то, что закодировано в коде и обрабатывается внутри движка - т.е. "внутренние" связи.

Далеко не всегда очевидно - является ли связь внешней или внутренней. Такая важная вещь, как баланс игры является связью... внешней! Движку, в целом, всё равно какие числа перемалывать, как начислять ресурсы, обсчитывать бои итд. Т.е. весьма неплохой баланс СН является внешней связью между системами движка, поскольку обеспечивается не самим движком, а исключительно усилиями разработчика. Это - один из очевидных неочевидных простых случаев. Есть и более сложные варианты связи - например, ивенты. Но мы их в рамках данного поста рассматривать не будем.

Как должно быть понятно из вышесказанного, не все связи одинаково равноправны, равно как и не все системы движка одинаково важны. Связи между системами движка могут быть "сильными" и "слабыми". Системы движка могут быть "базовыми" и "второстепенными". Здесь будет уместно обратиться к примерам.

Начнём с чего-нибудь простого. Например - флоты, раз уж с неё начали данный пост. Система флотов - очень крупная и важная часть игры. Она относится к ядру (или по-буржуйски "core") движка. Эта система производит взлёт и приземление флотов, а так же обеспечивает менеджмент миссий - т.е. обсчитывает флоты в полёте и в нужный момент передаёт управление системе миссий. Но при этом её внутренние связи с движком слабые. "Как так?!" - спросит изумлённый читатель, - "Ведь сражения - это основа боевой части игры!" И покажет полное непонимание понятия "система игры"!
По сути, система флотов обеспечивает лишь задержку при перемещении юнитов между локациями игры (планетами, лунами, неисследованным пространством и обломками) и не более. В принципе чисто теоретически - ничто не мешает выкинуть её из игры. В итоге - все действия с флотами станут мгновенными: моментальные атаки сразу после клика мышкой после выбора количества юнитов, сейсекундое начало Исследований пустого пространства, перемещение ресурсов между планетами без задержек. Правильно ведь? Нет, неправильно! Так же при этом исчезнет само понятие "флотов" - отправить в миссию можно будет только все корабли с планеты/луны! И поскольку у нас не будет описания внутреннего состояния планеты на момент начала миссии - при определении результата Экспедиции, например, будут участвовать все флоты, что есть на момент её окончания. Т.е. никаких полумер в виде группы кораблей - только "всё или ничего".
Самое парадоксальное, что этим изменения в игре и ограничатся! Да, это окажет значительное влияние на геймплей и я бы даже сказал, что принципиально его изменит. Пожалуй, из игры исчезнет только один параметр - скорость корабля. Действительно - зачем она нужна, если перемещение "флотов" станут моментальными? А вот всё остальное останется на месте. Даже "потребление топлива" и завязанные на него технологии движков. А останутся они, потому что ёмкость трюмов в совокупности с потреблением (которое вытекает из уровня соответствующей техи) определяет максимальную дальность полёта флота.
Поскольку мы в рамках данного поста говорим только о связях внутри движка и используем систему флотов исключительно в качестве примера, я не буду сильно усложнять повествование полным раскрытием всех связей. Только замечу на полях, что выбрасывание системы флотов так же потребует ребаланса юнитов, что бы их цена соответствовала изменившимся условиям игры. Но поскольку баланс - это внешняя связь, я не буду на ней здесь останавливаться. А ребаланс чего-бы то ни было в "живой" игре - это вообще отдельная (и очень больная) тема.
Как-то не очень просто получилось... уж извините. При рассмотрении комплексных супер-систем так обычно и бывает. Давайте всё-таки что-нибудь полегче возьмем для примера. Мммм... Вот! Чат!

Внутриигровой чат - это отдельная и достаточно крупная (в относительной доле кода среди всего движка) система. Однако, при своём объеме чат является всего лишь второстепенной системой игры (или "плюшкой" в моей личной терминологии). Его связь с остальными системами игры - чисто символическая. Фактически, чат берет из движка только список игроков с атрибутами. К ним относятся имя игрока, его пол, родной мир, уровень доступа в игре и принадлежность игрока к Альянсу и... всё. При чём на функциональность чата влияют исключительно два последних атрибута игрока. Уровень доступа в игре определяет количество доступных функций игрока (бан, мьют итд), а Альянс определяет возможность входа в чат отдельно взятого Альянса. Всё остальное влияет на чат чисто косметически. Будет или нет отображаться Родной Мир и пол игрока? Как он будет виден другим - под своим именем или абстрактным "игрок-в-чате-номер-такой-то".
В игру чат на уровне движка не приносит НИ-ЧЕ-ГО! Мьюты - это исключительно внутрисистемный механизм самого чата. Баны, выдаваемые в чате - это чисто внешняя связь, обеспечиваемая усилиями АД-ии.
Да, бесспорно - наличие в игре чата в определенной мере оживляет игру и добавляет бонусов межигроковому взаимодействию в частности и социальной составляющей игры в целом. Но мы уже договорились, что в рамках данного поста мы говорим только о связях внутри движка. И с этой точки зрения чат может быть выпилен из игры абсолютно безболезненно.

И здесь я понял, что на часах - пол-первого, а завтра... простите, сегодня с утра - на работу в офис. Продолжение может будет - а может и нет. У меня и так из текста висит в загашниках неоконченная статья о медицине, заготовка статьи о щитах, начатая история о изобретении ионного оружия, начало фэнтези-повести и еще несколько готовых идей для статей в УГ. Не говоря уже о движке, который нужно писать.

Начало интеграции

Добавлено: 18 сен 2016, 10:41
Gorlum
Итак, то, о чём давно говорила АД-ия, происходит прямо сейчас!

А именно - происходит поэтапная интеграция написанного за пол-года работы кода в живую ветку.

К сожалению, процесс это очень непростой и муторный - много изменений было сделано для улучшения игры. Серъезно изменена архитектура игры, переписаны огромные куски. При этом далеко не всё, что уже написано, готово к интеграции. Поэтому хотя обе ветки работают так, как предполагается, при интеграции старого кода в новый возможны определенные нестыковки. А если учесть, что в процессе менялся не только PHP-код, но и местами менялся JS и HTML/CSS - то должно быть понятно, что сложность интеграции чрерзвычайно велика.

Я и admin стараемся тщательно тестировать интегрированный код, но из-за описанных причин возможна регрессия кода на разных этапах интеграции, т.е. появление странных багов в раннее оттестированном коде.

Прошу игроков отнестись с пониманием и по мере сил участвовать в тестировании улучшенного кода.

Re: Чем занимается Горлум за закрытыми дверями?

Добавлено: 18 сен 2016, 10:48
ebeltov
Теперь понятно, почему высвечивалась со вчерашнего вечера вот такая штука: Происходит обновление сервера - пожалуйста, подождите... Proishodit obnovlenie servera - pozhalujsta, podozhdute... Server upgrading now - please wait... Admin link Benchmark 0.0077989101409912s, memory: 1,195,992, DB time: 0.00093793869018555ms

И мой алл не мог даже общаться. Надеюсь обновление крутое! Кстати, а будет ли изменён сам геймплей и добавлено что-то новое? Или мы, игроки, этих изменений не заметим?

Re: Чем занимается Горлум за закрытыми дверями?

Добавлено: 18 сен 2016, 11:00
Gorlum
ebeltov писал(а):Теперь понятно, почему высвечивалась со вчерашнего вечера вот такая штука: Происходит обновление сервера - пожалуйста, подождите... Proishodit obnovlenie servera - pozhalujsta, podozhdute... Server upgrading now - please wait... Admin link Benchmark 0.0077989101409912s, memory: 1,195,992, DB time: 0.00093793869018555ms

И мой алл не мог даже общаться. Надеюсь обновление крутое! Кстати, а будет ли изменён сам геймплей и добавлено что-то новое? Или мы, игроки, этих изменений не заметим?
В первой фазе будут интегрированы изменения движка.
Когда эти изменения устаканятся - скорее всего я буду заниматься переработкой интерфейса для большего удобства игры на мобильных устройствах. Увы, фишки в игру не завлекают - множество людей просто не может разобраться в устаревшем интерфейсе и уходят даже не попробовав поиграть. Так что игроки, однозначно, увидят изменения.
Хотя, конечно, есть и планы по изменениям игромеханики. Что, как и когда будет добавлятся - это я не готов сейчас сказать.