Русский
Русский
English
Статистика
Реклама

Концепция проекта

Microspace project

14.08.2020 22:08:54 | Автор: admin
Концепция игры жанра jrpg, в сеттинге сюрреалистического космоса. В качестве героев выступают разумные звездолётики. Они летают по миру маленьких планет, перевозят различных персонажей и грузы, помогают планеткам развиваться.




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

Герои




Wanderer/Скиталец

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

У космических корабликов есть уровни, но их скорее всего будет немного (максимальный десятый, например).
Тип указывает на природу звездолёта, всего их четыре эволюционный, божественный, магический и технологический.
От класса зависит характер героя и то, как он привык обращаться с энергией. Классов тоже четыре излучатель, пожиратель, аккумулятор и трансформатор.
Способности кораблика базируются на сочетании типа и класса, но здесь всё упирается в конкретную реализацию самих этих способностей и ответа на вопрос, насколько способности кораблей будут уникальными и как появляются. То есть зашиты ли они внутрь самого носителя, и каким именно образом. Либо они полностью или частично могут быть получены любым звездолётиком. Может быть способности вовсе целиком и полностью определяются текущим составом экипажа.


Maiden Yaga. Концепт экрана инвентаря

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

Гостевые персонажи по-своему капризные могут заболеть и временно ослабить свои эффекты, устать и отказываться применять способности, не понимать устройство данного типа корабля, спешить по делам на какую-либо планету и отказываться до тех пор пересесть в другой корабль. Среди таких персонажей могут быть органические либо неорганические представители (различные разбиения по типам, даже простые, всегда дают некоторую пищу для геймдизайна, потому как появляются некие новые элементы, вокруг которых можно строить новые механики или обогащать ими уже существующие), которые будут по разному реагировать на всевозможные вражеские воздействия. У гостей, вероятно, можно будет пробудить и какие-то скрытые до поры силы, привозя их на определённые планеты, взяв определённый груз или собрав их на одном корабле с другими персонажами.

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

Сражения




Концепт экрана сражения

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

У каждого кораблика есть прочность (здоровье, зелёная полоска), запас сил (степень усталости, желтая полоска), энергия (аналог маны, синяя полоска).

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

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

Планетки





Тут следовало бы ожидать подхода, скажем так, а ля Master of Orion захватываем планеты, строим на них всякое, развиваем свою межзвёздную империю и так далее. Тем более что в данной игре я хотел частично воссоздать атмосферу мира маленьких планет из своей настольно-ролевой системы Малая космическая симфония, где героями были сами планеты.

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

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

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

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

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

Прочее



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

Например, можно реализовать разные виды урона и защит или же добавить переключатель режимов атак (прицельный, не прицельный). Также есть отдельная система идентификаторов, которую хотелось бы привязать к планетам, но можно распространить и на участников сражения, тогда в бою появится другая интересная система уязвимостей, которая может стать как основной, так и дополнительной (например, на ней могут быть основаны исключительно способности членов экипажа, но не самого звездолёта).

Бонусом ещё немного концептуальных картинок:











Что ещё можно почитать в продолжение темы:

Малая космическая симфония
Настольно-ролевая игра про мир маленьких планет, дающая чуть более полное представление о сеттинге. Описаны принципы и можно прочесть саму книгу правил.

Монстробой
Краткий разбор основных моментов куда более тяжеловесной тактической настольно-ролевой системы, принципы которой частично можно использовать в jrpg.

Вычисляемый сюжет или настольно-ролевая зараза
Варианты системы генерации сюжета через взаимодействие идентификаторов различных объектов мира. Хотелось частично использовать этот способ в вышеизложенной концепции.
Подробнее..

Итеративный геймдизайн, Godot и мир маленьких планет

01.09.2020 20:19:15 | Автор: admin

Итеративный подход

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

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

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

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

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

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

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

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

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

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

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

Прототипирование Microspace project в Godot engine

Итак, некоторое время назад я в общих чертах сформулировал концепцию rpg-игры, в которой можно собрать партию разумных звездолётиков и летать по секторам местного космоса, участвуя в жизни маленьких планеток. Подробнее тут:

Таким образом, требовалось собрать прототип, в котором на самом элементарном уровне были бы реализованы какие-то классические ингредиенты jrpg-жанра - режим глобальной карты, режим сражений. Чем я и занялся.

В качестве движка был выбран Godot engine, а конкретнее версия 3.2.1, язык GDScript и gles3 рендер. В целом данный проект относится к категории достаточно код-интенсивных, всё-таки это далеко не аркада, где можно обойтись вобще без программирования. Выбор GDScript'а не особо принципиален, просто на нём быстрее писать внутри редактора, без открытия лишних окон, а так - вся логика без каких-то особых проблем переносится на тот же C#. Gles3 тоже не принципиален, но я взял более мощный рендер в качестве целевой платформы, а на упрощённом всегда можно собрать отдельную версию, только потребуется переработать частицы.

Началось всё с набросков карты сектора и написания контроллера, чтобы добавить модель кораблика и полетать по получившемуся "космосу" (попутно придумалась музыкальная композиция для глобальной карты):

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

Прописывая скрипт для определения столкновений с планетками я подумал, что перед визитом будет сначала всплывать окошко с общими параметрами планеты (или прочего объекта, доступного для посещения), где можно согласиться на посещение либо пролететь мимо.

Подготавливая приблизительные иконки с персонажами/предметами для инвентаря я завёл пару текстурных атласов в формате png, размерами 512 на 512. Таким образом в каждом можно держать по 64 иконки размерами 64 на 64. Godot, кстати, сам умеет сшивать несколько выбранных картинок в атлас, но у меня почему-то эта его функция не срабатывает, поэтому набросал заготовки в графическом редакторе.

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

В следующем ролике уже можно более явно разглядеть очертания планируемой концепции, хотя кроме моментов самого процесса тут есть перебивки на работу в редакторе:

Следующее обновление принесло ещё один важный момент, которого не хватало - собственно, партию героев, к основному звездолётику Wanderer добавились Spira и Vanguard. Появились новые враги, отображение получаемого урона, самописный ориентировочный трек сражения, доработки инвентаря и специальная станция, где можно отправить одного из героев с основного корабля на задние, а потом забрать его, после истечения срока.

Архитектура приложения

Теперь немного о том, как всё это устроенно за кадром. Godot представляет всё в виде иерархически связанных элементов, которые являются различными узлами либо сценами, в которые завёрнуты другие узлы и/или сцены. То есть, у нас, допустим, есть общая "сцена-океан", в которой содержится "узел-солнце" и "сцены-острова", в каждом из которых расклонированы "сцены-деревья" и так далее.

Собственно, про некоторые особенности движка Godot и я рассказывал вот в этой статье:

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

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

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

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

В Godot предусмотрена возможность заводить в отдельном окошке синглтоны, которые будут доступны глобально. Я использую один такой для простого хранения глобальных переменных и массивов.

Где брать идеи

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

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

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

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

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

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

В плане разработки стоит сосредоточиться на том, что вы реально сможете сделать сами, хотя планировать и задумывать можно и довольно сложные конструкции. Но лучше быть реалистами и именно в реализацию на практике брать что-то, хотя бы частично и в общих чертах, достигаемое. То есть не говорить что "вот был бы у меня движок А, а не Б", или "вот сделают мне ролики и крутые модели, тогда я и сваяю нетленку". А просто взять и что-то сделать. Хотя бы в тетрадке нарисовать, хотя бы приблизительно, хотя бы общий план. Нарисовать одного персонажа, а не триста. Написать не рассказ, но диалог. Это всё вроде бы мелкие и незначительные шаги, но они раз за разом формируют новые условия, от которых можно оттолкнуться ещё дальше, ещё дальше и ещё дальше.

Вот нам нужна игра про партию героев, которые сражаются с врагами, исследуют различные города, имеют систему развития, разные предметы... Начните с одного героя. Одного врага. Сражение с одной только опцией - удар. Вместо города несколько примитивов изображающих дом. Отображение пустого окошка с информацией о герое. И так далее. Потом героев станет два. В статистике появится имя. Врагов станет двое. Кроме ударить, появится вторая опция, пусть она даже сначала не работает. Коробок-домов станет несколько. Появится отображение содержимого сумки, пусть сначала только одна ячейка. Затем героев станет три, и можно будет менять их местами. Враги станут попадаться группами по 2 или 3. Появятся ещё боевые опции. Появится вторая область с "домиками", до которой можно добраться. Итак далее.

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

Время от времени переключаться на разные виды деятельности - тоже немаловажно. Так сохраняется нужный уровень интереса и процесс не превращается в скучную рутину. В конце концов мысли и состояния приходят определёнными циклами и ритмами - если неудержимо тянет именно сейчас отвлечься от первостепенных задач и поработать над чем-то не таким важным, но более интересным, то почему бы и нет, пока есть желание.

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

Н

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru