Skocz do zawartości

New Project


Rekomendowane odpowiedzi

  • 4 tygodnie później...
  • 5 tygodni później...
  • 2 miesiące temu...
  • 1 miesiąc temu...
  • 1 miesiąc temu...

t9-GX8-Ac-DVmw.jpg

Twórcy moda zapowiedzieli dodanie renderowania gry bezpośrednio do SDK. Umożliwiło to nie tylko wcześniejsze sprawdzenie, jak oświetlenie działa w grze, bez konieczności kompilacji lokacji, ale także jej zmianę w dowolnym momencie. Od teraz deweloperzy będą mogli pracować z oświetleniem, czyniąc je tak wiarygodnym, jak to tylko możliwe, zamiast "na oko", jak to miało miejsce w ostatnich latach.

Nowe funkcje SDK są częścią Rentgen-Luch, który jest wewnętrznym zestawem narzędzi ekipy. Z czasem zostanie udostępniony publicznie.

  • Źródło - [KLIK]
  • Dodatnia 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

9q4_ha56WX0.jpg

Autorzy moda rozpoczęli prace nad ostatnim, trzecim rozdziałem pierwszej części gry.

Sądząc po przedstawionym planie fabularnym, jego akcja będzie rozgrywać się na Agropromie. Modderzy starają się, aby ukończenie zadań było nieliniowe, pozostawiając co najmniej dwie opcje rozwoju historii.

  • Dodatnia 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • 1 miesiąc temu...

@ArNie ale patrząc na to jaki to duży projekt, ile powstaje lat stawiam złotówki przeciw orzechom, że skończy się na wydaniu pierwszej części moda i tyle, historia się urwie, drugiej i trzeciej części fabuły nie poznamy i mod nawet jeśli będzie fajny to przez to okaże się rozczarowaniem.

  • Dodatnia 1
Odnośnik do komentarza
Udostępnij na innych stronach

wa-deXW5YVU.jpg

Jeden z naczelnych liderów New Project o pseudonimie „Rafa” opublikował obszerny artykuł na temat swojej aktywności w społeczności, udziale w pracach nad Lost Alpha DC, a także uchylił „rąbka tajemnicy” na temat rozwoju obecnego projektu ekipy.

Dowiemy się o problemach, które modder pokonał, co osiągnął w czasie swojej działalności w społeczności i czym zajmuje się obecnie.

Nawet nieźle się rozpisał, ale można kiedyś przetłumaczyć. W końcu pracował nad LA DC. 

Odnośnik do komentarza
Udostępnij na innych stronach

Takie tam tłumaczenie tekstu "Rafy" (Raczej jego ksywka brzmi jak Rafał w zdrobnieniu):

Spoiler

Откровения разработчиков: Rafa

Rafa – лидер проекта, главный программист

Предыстория

Всех приветствую!

Меня зовут Рафаэль (rafa). Я один из лидеров разработки STALKER New Project. В команде я занимаю должность ведущего программиста.

Мой путь в моддинг начался в школьном возрасте с игры Warcraft 3. Мое любимое дело было «свалить» пораньше со школы и скорее засесть за редактор карт. Этот простой в освоении редактор помог мне понять базовые принципы построения игровых объектов и их скриптовое или событийное управление. Далее была краткосрочная попытка освоения движка Unity, когда он только начинал набирать популярность. На тот момент я не понимал язык C#, а это было необходимо для создания чего-то стоящего, по крайней мере в те времена. Да и программирование в целом меня не сильно интересовало. Мне хотелось побыстрее добиться результата в порыве своего юношеского энтузиазма.

После долгосрочной паузы (подростковые пьянки, гулянки и т.п.) я заинтересовался моддингом на игру Mount&Blade. И хотя я не участвовал в командных разработках – я дорабатывал готовые моды под себя. Между делом я немного освоил язык программирования Python, на котором были написаны модули к этой игре.

В какой-то момент я понял, что движок Mount&Blade, как и движок Warcraft 3, имеют один общий минус – это однопоточность исполнения игрового кода. Крупные баталии в первой или же супер гигантские карты во второй игре закономерно приводили к потере приемлемого для игры FPS или вовсе к периодическим фризам. Единственным способом решить эту проблему было распределить сложные вычисления на несколько кадров (апдейтов). Это снижало количество фризов, но общий FPS от каждой такой оптимизации так же снижался, а игровая логика, вызывавшая эти просадки и фризы, начинала работать с запозданием.

Так как исходный код этих игр никто не выкладывал в общий доступ, меня постоянно напрягала мысль, что продолжать работать над этими играми – это дорога в никуда. По крайней мере мне так казалось в виду моего бескомпромиссного на тот момент характера. Я не мог смириться с тем, что у меня нет возможности заняться более глубокой оптимизацией; что у меня нет возможности изменить какие-то игровые особенности, которые «зашиты» в движок игры. Что касается Unity – его освоение давалось мне с трудом, а разрабатывать на нём что-то с нуля казалось для меня чем-то невообразимым, хотя бы потому что у меня не было соответствующего опыта. Я искал проект, в котором я смогу заниматься моддингом самостоятельно или в команде с такими же энтузиастами. Главное условие – возможность работы с исходным кодом игры. К счастью, как раз в это время в новостях во всю гремел эпический слив билда самого долгожданного долгостроя – STALKER Lost Alpha.

Работанад Lost Alpha

Дорога в «большой моддинг» открылась для меня в 2016 году, когда я решил принять участие в разработке STALKER Lost Alpha DC (впрочем, как и для большинства моих товарищей по команде). Немного поковыряв самостоятельно то, что оказалось в общем доступе (в том числе и исходный код), я понял, что это мне подходит как ни что другое. Да и серия игр, моды и вселенная Сталкера мне всегда нравились. Я решил помочь проекту, тем самым, получив доступ к актуальной версии исходного кода и ресурсам этого народного аддона.

Я наконец-то получил доступ к исходному коду
Я наконец-то получил доступ к исходному коду

Влиться в работу было несложно, я начал быстро осваивать всё, что связано с кодом игры. Вначале мне дали доступ только к скриптам и ресурсам. После нескольких поручений по починке скриптов циклических заданий команда убедилась, что я действительно могу помочь в разработке. Мне дали доступ к вожделенному – актуальным исходникам движка этого проекта. Конечно, первые попытки модификации кода на C++ оставляли желать лучшего, так как лучшее что я умел – это делать неcложные вещи на Python и на уже забытом Jass (язык программирования, использованный в скриптах Warcraft 3). Мне помогали освоиться известные личности в сталкерском сообществе под никами SkyLoader, loxotron и Utak3r. Уже на начальном этапе мне удалось достигнуть неплохих результатов. Вот некоторые из них:

  • Портировал детекторы артефактов из ЗП и адаптировал их к артефактам на базе ТЧ
  • Починил циклические задания у Сидоровича и других торговцев.
  • Починил кучу вылетов в окне улучшений оружия
  • Сделал многопоточную загрузку текстур, что заметно ускорило загрузку уровня
  • Починил спавн артефектов
  • Добавил консольные команды для отключения вступительного ролика

В разработке Lost Alpha DC участвовало в общей сложности около 10-15 человек. Мы выпустили сам аддон, а также несколько дорабатывающих патчей. Но со временем как-то незаметно для всей команды от прежнего коллектива остались «не только лишь все». Разработка сильно застопорилась, ребята не знали, куда дальше двигаться. В какой-то момент мы занимались разработкой большого патча под кодовым именем Lost Alpha 1.5.0., но в публичный доступ он так и не попал (кстати, именно он стал базой для нашего New Project). Некоторые участники команды начали заниматься своими собственными проектами, наиболее известные из которых – Lost Alpha DC Extended, The Eternal Suffering и LADC Gunslinger Addon. В то же время оставшиеся в команде разработчики ясно осознавали, что настало время прощаться с Lost Alpha'ой и начать работу над совершенно новым проектом. Недолго думая его так и назвали – Новый проект, а новый модифицированный движок XRay – Рентген-Луч. Так Lost Alpha и её очередной патч тихо ушли в закат.

Оптимизация кода для New Project

В самом начале работы над НП в команде было совсем мало программистов. Лишь время от времени нам помогали участники других команд. Всё это стало причиной того, что я взял на себя роль ведущего программиста, и это развязало мне руки. Я давно вынашивал идею о реализации многопоточности в нашем движке. Так как времени на горизонте было много, а работа по остальным аспектам проекта в тот момент только набирала свои обороты, я уделил много времени внедрению частичной многопоточности рендера. Основная идея была в вынесении выборки объектов и их последующего куллинга в отдельные потоки. Этот этап рендеринга занимал до 50% от времени необходимого на всю фазу отрисовки. Были и другие моменты, которые попали в отдельные потоки. Например: инверсированная кинематика скелета и расчет hemi освещения динамических объектов. В целом я избавил движок от многих «бутылочных горлышек». Теперь где раньше движок выдавал 50 FPS – стало 80-90 FPS. Пришлось много раз ломать голову над тем как перестроить уже написанную логику под многопоточное исполнение. Я старался минимизировать использование мутексов в пользу фаз синхронизации потоков, так как многопоток, который постоянно застревает на доступе к защищенной мутексом памяти или логике перформит еще хуже, чем однопоток (надеюсь вы поняли, о чём я). Много раз хотелось всё бросить… и я бросал, но с N-ной попытки у меня наконец-то получилось. И даже несмотря на то, что реализация многопоточности вызвала много перекрестных проблем и потаённых ошибок в работе движка, которые пришлось долго исправлять, я остался доволен результатом.

Переезд на код Зова Припяти был тем ещё испытанием
Переезд на код Зова Припяти был тем ещё испытанием

Недавно нам наконец удалось доделать и отладить перенос расчета анимаций скелетов в отдельный поток. Это дало еще +10-15% к FPS в нагруженных НПС сценах. Еще была проведена различная работа по оптимизации времени кадра без использования многопоточности. Например, в рендере введена более грубая, но очень полезная обрезка отрисовки объектов, основанная на относительном размере объекта и его удалении от точки обзора. Данное изменение дало возможность практически отказаться от разделения геометрии на сектора. Мелкая геометрия теперь и так не попадает в рендер на большем расстоянии. Моделирование этих секторов, а затем расстановка соединяющих порталов в СДК… всё это занимало много времени и часто требовало пересборки уровня (левел-дизайнеры поймут). Теперь это всё в прошлом, разделение на сектора теперь применяется только на крупные здания и подземные помещения.

Кроме оптимизации кода, нам помогли перенести движок с 32-битных рельс на 64-битные (благодарим RedPanda, OpenXRay и OGSR). Теперь мы без опаски можем использовать 2K, 4K и даже 8K текстуры, для максимальной детальности игровых объектов. Проблема с ограниченностью по оперативной памяти преследовала нас еще с LostAlpha. Совокупность хорошей оптимизации и использования 64-битной базы дало нашим левел-дизайнерам возможность максимально качественно прорабатывать детализацию всех объектов уровня, как это видно из наших видео. Без всего этого игровой мир был бы намного более «скудным и лысым», как 10 лет назад.

Переезд на ЗП и другие работы по обновлению движка

В какой-то момент наша команда решила отказаться от базы SoC/LA в пользу инструментальной и движковой основы CoP. Нашей команде требовалось удобство в создании квестов и наполнении локиций, а самое главное – нужен был рабочий A-Life. Я сам давно ждал и хотел этого, хотя и понимал, что переносом буду заниматься лишь я один. Это был не совсем перенос, а скорее патч нашего кода тем, чего не хватало из CoP. Чтобы понять как все устроено в обеих платформах и склеить это все вместе мне понадобился почти год. Лишь когда я сравнил почти каждую строчку кода в GIT и каждое отличие SoC/LA от CoP мне удалось воплотить в жизнь эту непростую затею. Идея была так себе в плане реализации. Последующие тесты выявили множество проблем с игровыми логиками, не говоря уже о тонне убитого времени на не особо мозговитый труд. Много времени ушло на отладку и исправления, чтобы этот «Франкенштейн» заработал как нужно. Оглядываясь назад, я понимаю, что было бы намного проще сразу взять CoP или даже CoC за основу и точечно приклеить к новой базе функционал из нашей старой движковой базы. Более того со временем стало ясно, что из портированного функционала SoC/LA нам пригодилось чуть больше, чем ничего. Все же есть небольшой плюс в проделанной работе. В CoP были отключены некоторые фишки, которые были в SoC и сравнивая код, я это не упустил и оставил их в нашем движке. Например, вынесенный в отдельный поток расчет зрения AI.

При поддержке разработчиков из других команд мы сделали возможность рендерить «picture in picture». Это позволило нашим оружейникам использовать 3d прицелы. Тогда как в большинстве проектов эта фича вызывает сильную просадку FPS, у нас она не оказывает особого влияния на производительность. Мы основательно подошли к оптимизации как в плане CPU, так и GPU кода для этой фичи. Так же у оружия появилась более гибкая система аттачей, позволившая не впихивать все возможные модели прицелов в модель оружия, а просто использовать отдельный экземпляр модели самого прицела.

Логика поведения НПС так же подверглась изменению. В первую очередь, была переработана логика работы памяти персонажа. В оригинале, НПС часто читерил, использую реальную позицию противника в бою вместо той, что хранится в его памяти. Таким образом НПС мог знать где находится игрок или другой персонаж, даже не видя или слыша его. Отдельным пунктом хотел упомянуть, что мы исправили поломку стелса, после цикла Сохранения/Загрузки. В движке, просто-напросто выполнялся код, который так и называется – «make enemy visible after some time» (сделать противника видимым в какой-то момент). Именно он по совместительству выполняется и при перезагрузки уровня и ломан весь стелс. В итоге игрок испытывал дичайший подрыв задницы после очередной загрузки квик-сэйва при прохождении стелсом военной базы Агропрома в том же ТЧ.

Пойдем еще дальше. В оригинале во время боя вражеские НПС фокусируются в первую очередь на игроке. Подобный архаизм, который наверняка перекачивал еще из Oblivion Lost, нам тоже не нужен, и он был убран. В остальном поведение НПС такое же как в ЗП (перемещение в режиме A-Life, посиделки у костров), но с добавлением некоторых схем из CoC и немного измененной логикой боя.

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

СДК

Работа с редакторами началась еще в Lost Alpha DC, где я реализовал простой, но функциональный редактор погоды. Его можно запустить внутри игры, что позволяет максимально точно создавать погодные циклы. Что касается редактора уровней, то нам достался модифицированный СДК от команды Dezowave, который уже обладал некоторыми фиксами и изменениями. Главная проблема в модификации этого СДК была в том, что он собирался в Borland C++. Это очень старая среда разработки, которая сильно затрудняла процесс. Стояла задача перенести СДК на рельсы современной Visual Studio. Загвоздка была в том, что UI написанный на Borland нельзя просто взять и перенести в Visual Studio. По началу был сделан компромисс по обновлению среды разработки до RadStudio и патчем кода СДК для поддержки x64 сборки, c чем помог RedPanda. Однако, когда он покинул команду, желающих работать с этим инструментарием не было. СДК редко получал какие-либо обновления.

Старый SDK и редактор погоды

В какой-то момент к нам на помощь пришел программист под ником Lord. Он предложил взять WPF за UI основу. После полугода работы Lord так же покинул команду, а СДК в том состоянии еще не имел никакого функционала. Команда по-прежнему пользовалась старой версией. Так как WPF – это написание на C#, для соединения UI с оригинальным C++ функционалам приходилось пилить совершенно не удобную CLI прослойку. В какой-то момент я бросил эти попытки и начал пилить UI заново уже на wxWidgets (C++ UI библиотеке). Так как часть работы по переносу самого C++ кода все же уже была проведена, то вжатые сроки получилось сделать редактор, которым мы теперь и пользуемся. Благодаря нашему СДК мы можем создавать колоссальные по количеству объектов локации и собирать их без рандомных ошибок. Работает он так же гораздо быстрее, чем тот, что собирали в Borland. Более того мне удалось реализовать в нашем SDK внутриигровой рендер, который дал возможность нашим ребятам грамотно работать со светом и шейдерами. Объекты и общая картинка максимально приближены к игровой, что должно помочь уменьшить количество перекомпиляций локаций и заметно ускорить процесс разработки уровней.

Новый SDK

Заключение

На данный момент я по большому счёту занимаюсь фиксами ошибок кода и доработкой обновленного SDK. Движок Рентген-Луч вполне достаточно проработан и предоставляет уйму возможностей для разработки. Конечно, это не UE5, а всё тот же XRay, но с «прибомбасами». По своей части могу сказать, что игроки точно обратят внимание на следующие особенности:

  • Частичный многопоток и общая оптимизация.
  • 3d-сцена главного меню. Не пререндер, а действительно 3д уровень.
  • Множество изменений UI
  • Правки поведения NPC
  • Самопополняющийся лут в лагерях (на подобии того, как сделано в TES Skyrim)
  • Неисчислимое количество фиксов, правок, доведений до ума, которые уже стали неотъемлемой частью общего игрового процесса и воспринимаются как должное.

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

Время неумолимо летит. Поражает, сколько времени прошло с релиза последнего патча LADC. Но мы не стоим на месте, работа над New Project стабильно продолжается. Если вы пропустили, то пару лет назад мы выпускали бенчмарк с одной из наших локаций, как раз я занимался его разработкой. Разумеется, с тех пор она изменилась до неузнаваемости. Тем не менее буду рад, если вы запустите его.

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

Spoiler

Rewelacje deweloperów: Rafa Rafa – lider projektu, główny programista Tło Witam wszystkich! Nazywam się Rafael (rafa). Jestem jednym z liderów rozwoju Nowego Projektu STALKER. W zespole pełnię funkcję głównego programisty. Moja przygoda z modowaniem rozpoczęła się w wieku szkolnym od gry Warcraft 3. Najbardziej lubiłem wcześniej kończyć szkołę i pracować nad edytorem map. Ten łatwy do nauczenia edytor pomógł mi zrozumieć podstawowe zasady budowania obiektów gier oraz zarządzania ich skryptami i wydarzeniami. Potem była krótkotrwała próba opanowania silnika Unity, kiedy dopiero zaczynał on zyskiwać na popularności. W tamtym czasie nie rozumiałem języka C#, a to było konieczne, aby stworzyć coś wartościowego, przynajmniej w tamtych czasach. A programowanie w ogóle mnie nie interesowało. Chciałem szybko osiągać rezultaty w przypływie młodzieńczego zapału. Po dłuższej przerwie (picie nastolatków, imprezy itp.) zainteresowałem się modowaniem gry Mount&Blade. I choć nie brałem udziału w rozwoju zespołu, to sam modyfikowałem gotowe mody. W międzyczasie poznałem trochę język programowania Python, w którym zostały napisane moduły do tej gry. W pewnym momencie zdałem sobie sprawę, że silnik Mount&Blade, podobnie jak silnik Warcrafta 3, ma jedną wspólną wadę – jednowątkowe wykonywanie kodu gry. Duże bitwy w pierwszej grze lub super gigantyczne mapy w drugiej grze w naturalny sposób prowadziły do utraty akceptowalnej liczby klatek na sekundę w grze, a nawet do okresowych zawieszeń. Jedynym sposobem rozwiązania tego problemu było rozłożenie skomplikowanych obliczeń na kilka klatek (aktualizacje). Zmniejszyło to liczbę zawieszeń, ale ogólny FPS z każdej takiej optymalizacji również spadł, a logika gry, która spowodowała te spadki i zawieszenia, zaczęła działać z opóźnieniem. Ponieważ nikt nie udostępnił publicznie kodu źródłowego tych gier, nieustannie stresowała mnie myśl, że dalsza praca nad tymi grami to droga donikąd. Przynajmniej tak mi się wydawało, biorąc pod uwagę moją ówczesną bezkompromisowość. Nie mogłem pogodzić się z faktem, że nie miałem możliwości przeprowadzenia głębszej optymalizacji; że nie mam możliwości zmiany jakichkolwiek funkcji gry, które są „wbudowane” w silnik gry. Jeśli chodzi o Unity, opanowanie go było dla mnie trudne, a stworzenie na nim czegoś od zera wydawało mi się niewyobrażalne, choćby dlatego, że nie miałem odpowiedniego doświadczenia. Szukałem projektu, w którym mógłbym zająć się modowaniem samodzielnie lub w zespole z podobnymi pasjonatami. Głównym warunkiem jest umiejętność pracy z kodem źródłowym gry. Na szczęście właśnie w tym momencie głośno było w wiadomościach o epickim wycieku wersji najbardziej długo oczekiwanego, długoterminowego projektu budowlanego - STALKER Lost Alpha. Pracuję nad Zaginioną Alfą Droga do „wielkiego moddingu” otworzyła się przede mną w 2016 roku, kiedy zdecydowałem się wziąć udział w tworzeniu STALKER Lost Alpha DC (jak również większości moich kolegów z drużyny). Po samodzielnym poszperaniu, aby dowiedzieć się, co jest w domenie publicznej (w tym kod źródłowy), zdałem sobie sprawę, że pasuje mi to jak nic innego. A ja zawsze lubiłem serie gier, modów i uniwersum Stalkera. Postanowiłem wspomóc projekt, uzyskując w ten sposób dostęp do aktualnej wersji kodu źródłowego i zasobów tego popularnego dodatku. Wreszcie udało mi się uzyskać dostęp do kodu źródłowego Wreszcie udało mi się uzyskać dostęp do kodu źródłowego Nie było trudno zaangażować się w pracę; szybko zacząłem opanowywać wszystko, co było związane z kodem gry. Na początku dostałem dostęp jedynie do skryptów i zasobów. Po kilku zadaniach mających na celu naprawę cyklicznych skryptów zadań, zespół był przekonany, że naprawdę mogę pomóc w rozwoju. Otrzymałem dostęp do tego co chciałem - aktualnego kodu źródłowego silnika dla tego projektu. Oczywiście pierwsze próby modyfikacji kodu w C++ pozostawiały wiele do życzenia, gdyż najlepsze, co mogłem zrobić, to proste rzeczy robić w Pythonie i zapomnianym już Jassie (języku programowania używanym w skryptach Warcraft 3). Znane osobistości w społeczności stalkerów pod pseudonimami SkyLoader, loxotron i Utak3r pomogły mi zaaklimatyzować się. Już na początkowym etapie udało mi się osiągnąć dobre rezultaty. Tutaj jest kilka z nich: Przeniesiono detektory artefaktów firmy ZP i dostosowano je do artefaktów opartych na PM Naprawiono cykliczne zadania dla Sidorowicza i innych handlarzy. Naprawiono kilka awarii w oknie aktualizacji broni Dokonano wielowątkowego ładowania tekstur, co znacznie przyspieszyło ładowanie poziomów Naprawiono pojawianie się artefaktów Dodano polecenia konsoli umożliwiające wyłączenie filmu wprowadzającego W sumie w tworzeniu Lost Alpha DC brało udział około 10-15 osób. Wydaliśmy sam dodatek, a także kilka dodatkowych poprawek. Ale z biegiem czasu, jakoś niezauważeni przez cały zespół, „nie tylko wszyscy” pozostali z poprzedniego zespołu. Rozwój został znacznie zatrzymany, chłopaki nie wiedzieli, gdzie dalej się poruszać. W pewnym momencie pracowaliśmy nad dużą łatką o nazwie kodowej Lost Alpha 1.5.0., ale nigdy nie stała się ona publicznie dostępna (swoją drogą to właśnie ona stała się podstawą naszego Nowego

Se teraz każdy może poczytać i czekać cierpliwie na nowego moda. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.