Неделя 41-42 (август 1 – август 2): Передача параметров, доска заказов и третий пак контента

Прошлая неделя у меня закончилась на том, что я доделал весь возможный крафт: собственно крафт, обучение персонажей и улучшение построек. У меня осталось еще буквально 2 или 3 механики, которые можно было бы перенести на сервер.

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

Август 1 – Инвентарь и передача ролевых параметров

С одеванием предметов получилось даже немного скучно. Я дольше с интерфейсом провозился чем с переносом логики. Все-таки еще на клиенте я сделал довольно удачный алгоритм, который даже при переносе на богопротивный JS все равно работает хорошо и надежно.

А вот с начислением ролевых параметров пришлось повозиться. Пристально посмотрев на имевшийся у меня алгоритм, я нашел в нем несколько совсем не хороших дыр. Дело в том, что предмет не хранит в себе конкретное значение бонуса, который будет начислен персонажу, а персонаж хранит. Мой старый алгоритм просто начислял и вычитал значения, рассчитанные на основании параметров предмета (коэффициенты зависящие от уровня, редкости и бонусов предмета) и его артикула (базовые значения). Так вот если бы я захотел например изменить какие-то базовые значения предмета на уровне конфигов, то имел бы риск вычесть больше чем начислил.

Я решил не страдать фигней и просто пересчитывать ролевые параметры персонажа с нуля при необходимости. Но и тут все не совсем просто. Так исторически сложилось что ролевые параметры всех типов (скилы, которым персонаж обучается, и собственно ролевые параметры, которые персонаж получает от шмоток) у меня хранятся одним списком. Я не знаю зачем. Когда-то мне это казалось удобным. Ведь действительно рецепту обучения или шмотке совершенно не важно какой ролевой параметр модифицировать. С другой стороны, если способ начисления и вычитания ролевого параметра не надежный, значит с точки зрения дизайна я не могу позволить начислять шмоткой скилл – я не смогу вычесть его значение обратно не навредив значению заработанному обучением.

С третьей стороны я могу это сделать фишкой: шмотку которая временно дает бонус скилу но при этом приводит к деградации скила при снятии.

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

Август 2 – Доска заказов

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

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

Чтобы разобраться с системой заказов нужна какая-то документация. Ну или хотя бы обретший вид текста поток мыслей. В общем я написал обзор на Trade Island. А потом решил что надо перенести то что есть на сервер и заодно узнать что там не так. Если коротко, то все оказалось так.

Суть механизма я описал еще на 24й неделе. И оказалось что в нем вообще ничего менять не надо. А все что может понадобиться, можно будет потом со временем нарастить. Например, различные таймеры, необходимые, например, для сброса заказа в базовой доске заказов (в Trade Island там пятиминутный таймер, обнуляющийся за алмазы).

Немного забавно то, что еще на 23й неделе, я догадался что можно модифицировать работу доски заказов, ставя на работу персонажей. Я изначально хотел чтобы персонажи выступали у меня в качестве заказчиков, этот механизм я подглядел в Shop Heroes, но я не догадался что персонаж может модифицировать например доход получаемый от заказа.

В общем, когда придет время тут будет хорошая площадка для всяких новых идей. Очень хочется сделать что-нибудь веселое сейчас, но определенно не время.

Оглавление