# Kingdom (v 1.0) ## Раскачка Вместо текущей прокачки(получаешь опыт к навыку => лвл апает при достижении отметки) Будут "пути" развития ### Путь воина - Лучник Повышенный урон со стрел + что-то - Воин Повышенный урон с руки и сопротивление урону ### Путь рабочего - Шахтер Повышение шансов на добычу ресурсов - Древоруб Повышение шансов на добычу ресурсов + капитатор ### Путь ремесленника - Кузнец Переплавка, инструменты, броня и штуки - Плотник Крафт деревянных штук ### Путь еды(трол кал) - Фермер Повышение шансов на урожай с ростков - Рыбак (?) Ускорение ловли (?) Переделать, что дропается только рыба? ### Путь чародея - Алхимик Шансы на варку зелий - Зачарователь Шансы на зачарования (?) либо анлокать уровни зачарования либо делать на 2,3 уровни енчанта коэффициент енчанта ### Енфорс пути Коэффициенты для опыта "путей" считаются так: 1) Сортируем пути по количеству опыта Коэффициенты для путей в порядке убывания опыта: 1) 1.0 (самый опытный путь) 2) 0.6 3) 0.4 4) 0.2 5) 0.1 При получении опыта он умножается на коэффициент соотвествующего пути При совершении действий(ломание блока, крафт, варение, енчант и т.д.) добавляется опыт в пул "пути"(референс на смежные навыки). При лвлапе пути показывается окошко, где ты выбираешь, что качать "на пути"(на каждом навыке написано при ховере че дает и какой шанс был/стал) Каждый навык увеличивает шансы на успех при совершении соответствующих действий. При достижении последнего уровня навыка все действия имеют 100% шанс Например Шахтер: - Базовый шанс = шанс с уровнем навыка 0 Базовый шанс добыть алмаз: 1% Базовый шанс добыть булыгу: 50% N = базовый шанс совершить действие x = уровень Z = максимальный уровень Шанс совершить действие: N + (x / Z) * (1 - N) Пример шансов для N = 1%, Z = 20 ![](https://i.imgur.com/QPuHJ9m.png) Соотвественно, на 10 уровне шанс добыть алмаз - ~50% Формула шанса еще не утверждена, возможно будет использоваться что-то пораболическое для смещения центра важности уровней ## Мир ### Время - Использовать как базу систему погод и сезонов с прошлой версии - Добавить полный функционал внутреннего времени(год месяц день и тд) - На основе прошлой версии определить оптимальную длительность года - Добить систему сезонов(весна должна полностью реверсить эффекты зимы) - Для сезонов сделать глобальные эффекты ### Королевства Объекты: 1) Деревня 2) Город 3) Королевство - Внедрить королевства и субъекты как игровой объект - Как понять, что что-то = деревня/город? Идеи: 1) "Счет" объекта: на основе фич(кол-во кроватей, хитмапа, тропинки, кол-во печек и верстаков) Алгоритм: 1) Пробегать по чанкам/NхN надчанкам 2) Считать центроид по атрибутам(печки, кровати, тропинки, верстаки) 3) Как понять, что деревня не NPC: использовать хитмапу 4) Если счет > счета деревни, расширять область поиска(город же больше деревни по размеру) 5) Если счет в новой области > счета деревни, то это город 6) Как идентифицировать город? при перерасчете фичи поменяются Идеи: 1) Для города/деревни определять центроид, а после перерасчета смотреть ближайший центроид из прошлого сета, если расстояние <= радиус города, то мердж - При каких условиях создается королевство? Идеи: Событие "новый город" - когда мы рассчитали город и не нашли центроида, либо нашли, но это был центроид деревни - Как оформить создание королевства? Кто будет отвественный за создание королевства? Мысли: 1) Побочный навык лидерства(Draft) 2) Механизм голосования? 3) Выбирать рандомно? 4) Как ваще понять в каком городе живет челикс(хитмапа)(нужно ли это ваще?) 5) Сделать изначальный набор королевств(как сделать чтобы город стал из одного королевства другим?) - (?) Явная принадлежность к королевству ## Общие элементы - Региональный текстовый чат остается таким же(кластер алгоритм вроде DBSCAN) ### Войсчат: Полная переработка войсчата - Голосовые комнаты не создаются динамически в рандомных местах. - Голосовые комнаты привязаны к "точкам" (центр таверны, центр чьего-то дома, центр рынка) - "Точки" имеют радиус и координаты(фактически циллиндр/сфера еще не решил) - "Точки" задаются ебаным алгоритмом который я еще не придумал ### Идеи для определения комнат - По хитмапам(точка = центроид хитмапы) - Полу-вручную: центр обозначается игроком(например, ставится баннер или табличка в специальном формате), а радиус считается уже автоматически - Вручную(самый нежелательный способ) - Авторизация через /register с опциональной одноразовой привязкой дискорда