В предыдущей PnP версии "НавьМор" не было иллюстраций. Совсем.
Точнее, иллюстраций была куча - в Миджорни, цифровом артбуке их было завались. Но печатать конечно же их я не мог, это жрало бы картридж как китайская девка гуидак
Однако, в новой 3.0 версии, желание проиллюстрировать карточки победило.
Вот что придумал (да, это просто) - с учетом, что надо 400+ изображений сделать быстрее, чем за полгода. Никаких сложных настроек
Вот так выкручиваем основные настройки - экспозицию, контраст. Делаем изображение ч/б (в Фигме это делается через -100% насыщенность) Если самый темный тон все еще слишком темный - можно еще подвигать точку черного теней.
и вот после печати как это выглядит, на мой вкус очень аккуратно, как набросок мягким карандашом
Всегда лучше с иллюстрациями, чем без них, так ведь?
Следите за разработкой хардкорного кроулера НавьМор в тг https://t.me/navmor
Всем привет! В общем наконец-то я созрел до публикации работы, которую делал в общей сложности около полу года. Стартанул 1 января.
Было сложно, цель была амбициозная - сделать целую улицу и иметь возможность прогуляться по ней, в целом я с этим справился, поэтому хочу показать вам, что у меня вышло.
Перешел к разработке и наполнению контента фаз, сейчас прописываю логику одной из самой многочисленной на возможности фазы, а именно действий сыщиков. Здесь они могут передвигаться, изучать улики, атаковать монстров, уклоняться от них, совершать обмен, копить деньги, изучать навыки, а также выполнять различные сценарые действия, открывающиеся по ходу сюжета.
Начал с действия Движение, как самого первого доступного. По правилам игры совершать каждое действие мы можем лишь один раз в фазу действия, то есть нельзя походить на три клетки игрового поля (две бесплатно, третья за деньги), а потом сделать еще один ход на 4 клетки (две бесплатно и еще две за бОльшие деньги).
Перед тем как продолжить, совсем забыл сказать, что еще успел реализовать жетоны сыщиков на игровом поле, передал им их параметры из файла состояния (урон и ужас, деньги, улики), сделал окна уведомлений при наведении на сами жетоны и легкую анимацию увеличения жетона. Кроме того, прописал на каждую область свою дополнительную объектную маску, теперь все сыщики на одной и той области района кучкуются рядом в своем месте, монстры будут появляться рядышком, жетоны безысходности выше, какие-нибудь еще жетоны в другом месте и т.д., ничто не будет друг другу мешать.
Вот они, шесть сыщиков, нижние трое изо всех сил закрывают надпись Вокзал - это я исправлю позже. При наведении на них отрабатывает всплывающее окно с главной информацией и жетон сыщика выделяется, как у Агнес Бейкер.
А здесь Майкл Макглен хотел бы расстрелять кого-то на улице из своей Чикагской пишущей машинки, но пока не умеет и не может...
В общем, касательно ходов. Есть файл состояния, который для каждого сыщика понимает, что с ним происходит в данный момент времени и глобально, например в данный момент времени это понимание того, сколько действий он уже совершил, например если походил - то в этом общем ходу у него еще осталось одно доступное действие, но второй раз походить он не сможет. А глобально это его жизни и ужас, жетоны улик и денег, навыков.
Этому файлу также передаются дополнительные эффекты различных карт, способностей и состояний. Например в видео выше вторым ходит сыщик Томми Малдун, у которого есть стартовая выбранная карта Мотоцикл. Карта Мотоцикл позволяет Томми ходить бесплатно не на две области, а на три, а уже на четвертую ходить за дополнительный доллар. На 5 областей ходить в игре никто не может (не считая телепортацию или другие механики), но тут я допустил небольшую ошибку и пока что менеджер ходов считает, что раз у Томми есть мотоцикл, то он бесплатно походит на три области, за доллар на четвертую и еще за доллар на пятую. К моменту написания поста я уже это пофиксил, и теперь он просто ходит на четвертую область за доллар.
В следующем видео уже подробно разобраны варианты действия Движение на примере одного сыщика Агнес Бейкер. Не обращайте внимание на завершение фазы - сейчас это заглушка, сбрасывающая счетчик совершенных действий для файла состояния. И то, что окно подтверждения действия находится в левом верхнем углу, сейчас оно уже по центру. Подтверждение нам нужно, чтобы случайно не кликнуть по карте и не походить туда, куда не хотели. Я пока не думал по поводу кнопки отмены последнего действия, это привнесет слишком много возможностей для игроков, скажем, не совсем честных, а подтверждение хода как раз является легальной возможностью не ошибиться с ходом.
Как устроены маршруты? По умолчанию, когда начался ход сыщика и он еще ничего не делал (действие Движение доступно), мы видим на карте белые точки возможных бесплатных ходов, в нашем случае это путь от области Вокзала до других смежных областей, улиц и областей соседних районов. Если же мы наводим курсор на интересующую нас область, то статические возможные маршруты пропадают и появляется активный анимированный. Можно провести дальнейший маршрут, увидев варианты хода за деньги (желтый третий шаг за 1$ или оранжевый четвертый шаг за суммарные 2$). А еще можно навести на центр района и увидеть все возможные пути от него, куда дотягивается игрок, либо же его максимальный кратчайший путь, который до этого района доведет (это если выбрать недосягаемый в данный момент район, как на 21 секунде в видео ниже).
Менеджер путей также рисует не один путь, а все возможные одинаковые, если их несколько, при чем если на одном из одинаковых по дальности путей будет стоять монстр - игра поведет сыщика по безопасному пути. Совершив действие никакие маршруты рисоваться не будут (тут увидел не совсем корректное поведение на видео, статический маршрут рисуется в момент выбора точки, куда хочет походить игрок, хотя его уже нужно убрать на моменте появления окна подтверждения хода - исправил это, а также добавил невозможность каких-либо действий при появлении окна подтврждения, кроме как согласия на ход или отмены), игроку остается только совершить другое действие, например атаковать монстр или изучить улицу, если у него еще остались очки действия, либо же закончить свой ход.
Сама же реализация ходов достаточно проста, у нас есть построенные графы связей всех областй, районов и улиц. Именно с помощью них мы и соединяли карту согласно сценарию. Основано всё на дискретной математике, граф это её классическая структура, а основан он на двух элементах - вершины (игровые области, районы и улицы) и рёбра (маршруты между ними). В игре граф неориентированный и невзвешенный, неориентированный это когда мы спокойно можем пройти от Вокзала до Аркхэмской лечебницы туда и обратно по одному маршруту, а невзвешенный это о, что мы можем делать это за одну стоимость в обе стороны (точнее расстояние у нас считается одинаковым в два шага).
В памяти игры все графы хранятся в созданном мной словаре, для каждого сценария он свой исходя из районов и их местоположений. Словарь же состоит из списка смежностей, который выглядит например вот так:
То есть вокзал у нас соседствует с областями Аркхэм Эдвертайзер и Лавкой древностей и улицами Нортсайд - Торговый район и Нортсайд - Даунтаун, а вот Лавка древностей соседствует всего-лишь с Вокзалом и Аркхэм Эдвертайзер. Благодаря этому словарю каждая вершина знает список своих прямых соседей и позволяет понимать движку куда можно сделать ход из текущей точки.
Поиск же кратчайших путей (или одинаковых) строится на классическом BFS (Breadth-First Search), он же Поиск в ширину - фундаментальный алгоритм теории графов, который обходит вершины по уровням.
G = (V, E) это наше игровое поле из неориентированного невзвешенного графа. Топология связей задается списком смежности моего словаря Adj(u), который возвращает множество соседних локаций для текущей вершины.
Он начинает с начальной точки и последовательно исследует всех её соседей, прежде чем перейти на следующий «уровень» удаления, гарантированно находя кратчайший путь в наших невзвешенных графах. Он берет стартовую точку сыщика и проверяет всех её ближайших соседей (это 1-й круг, дальность = 1 шаг). Затем он берет соседей этих соседей (2-й круг, дальность = 2 шага) и так далее. Тот путь, который первым доберется до целевой точки, гарантированно является самым коротким. Я только добавил возможность рисовать все найденные короткие маршруты как одинаковые альтернативы, не останавливаясь на первом найденном.
Описание формул не надоело?
Вот и всё с действием Движение! Дальше занимаюсь действими Изучение навыка, Изучение улики и Сбор средств, это будет намного быстрее и проще. Уже 8 подписчиков! Очень жду ваши комментарии и реакции, хочется по ходу разработки понимать где и что можно исправить или дополнить.