На полпути к Фульгоре электричество кончилось, потому что печки стоило выключить. Кончилось электричество – лазеры умерли. Второй ряд пулеметов не справился с задачей. Но .. один лазер потребляет до 3.9 мегаватт. Одна солнечная батарея выдает всего 0.18 мегаватт в космосе на Nauvis. 22 панели на лазер будьте добры поставить. Всего 60 киловатт на батарею Nauvis. Всего 72 киловатта на орбите Fulgora. Причем вокруг Fulgora астероидов летает – мама дорогая. Зато на Вулкане жарит, держите крепче.
Итого про боевую баржу Оказалось, что 20 лазеров уровня 7 и 10 пулеметов уровня 6 – недостаточно. Потому что лазеры нафиг не нужны. Потому что 10 пулеметов уровня 7 или 8 разносят астероиды, только успевай подбирать куски. ЛАЗЕРЫ НИНУЖНЫ.
Попутно оказалось, что: Ремень для подштанников теперь можно получить, только имея сельхоз науку. Синий динамит теперь делается только с металлургической наукой, то есть надо куда-то лететь. Модули эффективности 2 стоило прокачать, спасибо за напоминание.
Попутно оказалось, что: У пулеметов (gun turret) максимальная прокачка Speed 7 Physical Damage 8 (за 2000 науки)
У лазеров максимальный уровень прокачки «на Nauvis» Laser speed 7 (и это максимум) Laser damage 6, а потом сразу 10 (за 8000 науки!. Или я что-то не так смотрел)
Сейчас на скрине выкачано вроде Weapon speed 5, Physical Damage 6, laser damage 6, laser shooting speed 7
Что дает с обычными патронами 21 выстрел в секунду, по 20 damage, 400 damage per second и для лазера выходит 4.8 \сек по 108, итого 518.4. Казалось бы, нужны и те и другие, но пулеметы надо прокачать до максимума. Но оказалось что нет. Я не был уверен, стоит ли набивать баржу бронебойными, и тем более, урановыми патронами, хотя у них убойная сила выше. Потому что обычные патроны на барже делать можно, а бронебойные пока нельзя. Но оказалось, что пулеметы в космосе работают просто отлично!
Заключение
Пулеметы в космосе полезнее лазеров, если в космосе нет реактора. И в целом полезнее, только как их заправлять не вручную, я не понял. Но по сотке патронов в каждый прокачанный до "сколько смог" , 10 штук с носа и по 4 штуки по бокам, хватает до Вулкана. А там только успевай хватить металлические астероиды. Патронами и ремонтными модулями лучше запастись на домашней орбите. До Фульгоры я долетел с четвертого раза, прокачав вооружение, но что-то никакой радости. Заодно, оказалось что я забил весь карго отсек – карбоном, но его можно выкинуть на ленту погрузчиком, а с ленты выкинуть в космос, если погрузчик поставлен кидать в космос. Судя по скринам, можно построить труЪ Warhammer баржу, огородив ее забором. Интересно, насколько забор стоек против астероидов и сколько весит. Зато как только выкинул лазеры, и набил все пулеметами, КАК ПОПЕРЛО!
Один нюанс: загрузка или вручную, или все равно через подачу на ленте. ПЕЧАЛЬ БЕДА.
Для лиги лени: Игра отличная, обучение к космонавтике отсутствует. Если кто-то не знает, чем занять себя в выходные – это оно.
На Реддите полно чертежей, готовых схем, в том числе и есть гигантские платформы по 250 тысяч тонн, и маленькие транспортные платформы. Но какой интерес играть с такими читами? Надо сделать самому, убого и коряво, потом пойти читать и переделывать!
На первой платформе я ставил опыты, как можно, как нельзя. Заодно, пока проводил эксперименты, перевел наземную базу в почти автономный режим. Как смог. В Space Age поставили открытие Covarex процесса после космонавтики, без него сложно получить доступ к почти неограниченной энергии мирного, и не мирного атома. Так что я обошелся на земле по минимуму – построил три реактора, соорудил поля на солнечной энергетике (шаблонами), набил наземные турели и податчики к ним патронами под завязку, и пошел готовить ближний космос.
Проблемы ВТОРОЙ платформы. Энергетика. Это на Земле Nauvis, если нет энергии – сделал еще реактор и турбин. В космосе с этим сложнее, поначалу нет меди. Вода из астероидов есть, но сколько той воды?
Логистика. В Cargo bay ничего загружать нельзя, из Cargo bay ничего выгружать нельзя. Обсуждали на форуме, нельзя. Зато можно зацепить Cargo bay к landing pad на Nauvis. Как таскать грузы между платформами – я не понял. В FAQ пишут: нельзя таскать груз напрямую между платформами. There is no way to transfer items between platforms directly. (Frequently Asked Questions about Factorio 2.0 and Space Age - Read before posting). Есть обсуждение на форуме.
Медь. На компоненты платформы нужна медная проволока, а меди поначалу в космосе нет. Только углерод, лед и железо.
Управление. Очень желательно разобраться с сумматорами и проводами управления до космонавтики. Я не стал, а зря, очень зря. Потому что это сэкономило бы мне кучу времени для организации логистики
Заброс всякого в космос. Поскольку там нормально что-то сделать сложно, то возникает вопрос, нужно ли забрасывать в космос Express transport belt или сразу сделать Turbo transport belt. То же самое касается заводов и скорости. Нужно ли забрасывать в космос заводы Assembling machine 3, или хватит и вторых? Забрасывать ли Speed module 3, учитывая что они не так эффективны, как постройка еще одного завода. Делать ли Epic или Legendary quality версии тех же заводов вручную (не пробовал), или не использовать их вообще ?
Столько вопросов, и без ответов.
И сундуки ставить нельзя в космосе! И энергетику не видно, не тащить же мне в космос столб, только чтобы посмотреть, что там по энергетике! А нет, можно. Пишут нам: В меню хаба есть значок молнии, но я также обычно размещаю на платформе один-два столба электропередач, чтобы было на что легко нажать. Точно, можно!
Остается что? Остается сначала пробовать и пробовать на первой производственной платформе, сбросив вниз все нажитое непосильным трудом – три стека стали, три блока углерода, транспортную ленту (три) ..
Еще нашелся какой-то странный баг, что при сносе дробилки астероидов, она куда-то теряется, и я не понял, теряется, слетает на первую платформу, или слетает вниз, или я просто обсчитался.
Первая платформа была перестроена в мелкое производство космической науки. Оказывается, вполне реально поставить красный подземный ход под Cargo, чтобы по ленте ездили полезности. И еще лучше - поставить синий подземный ход, тогда (он длиной 9 блоков) можно и под двумя блоками все протащить! И трубы тоже!
С второй платформой вышло сложнее. Пришлось два раза, может и три раза, с нее все снести, перед тем как организовать там хоть какое-то производство. Попутно сделал себе скафандр Mark2, набил его полезными вещами типа лазеров и батарей.
Собрал вот такой сухогруз .. (не достроен)
Вот такой полный вид .. только потом дошло, что надо было строить наоборот, центральные выше - боковые ниже, так схема проще. Перестрою ..
И на 130 км\сек платформу моментально разнесло астероидами. Я даже блюпринт не сохранил.
Для лиги лени: Игра отличная, дополнение тоже. Обучение к космонавтике отсутствует. Если кто-то не знает, чем занять себя в выходные – это оно.
Про что это, для тех, кто не в теме (что вряд ли, я же в сообщество пишу)
21 октября 2024 вышло огромное дополнение к игре Factorio. Для тех, кто не играл, кратко рассказываю «часть первую без дополнений». Изначальная Factorio взяла идею из книги Эдем (Лема), где вы играете за мега-инженера, разбившего свой корабль на какой-то планете (Nauvis). Сначала у вас есть пистолет (застрелиться нельзя), кирколопата, и Garden of Eden Creation Kit. То есть, конечно, Standard Template Construct (STC). Справочник «как сделать вообще все из спичек и желудей». Местное население представляет из себя жуков двух видов. Оба хотят пожрать и вас, и постройки, и все, что нажито непосильным трудом: три завода, три турели, три электростанции.. В оригинальной игре было отличное руководство «чего куда», а до остального можно было более (или менее) дойти в процессе прохождения самой игры. Великолепная игра, сколько часов в ней просажено, сколько медалей за угнетение экологии получено! Игра полезная, очень рекомендую сначала попробовать именно оригинал, без дополнений. Игра к ресурсам была не очень требовательная, я в нее играл еще на ноутбуке 2014 года, с 4 Гб памяти и Intel Celeron. Разработчики большие молодцы, оптимизация такого количества «всего вообще» - надо постараться.
Год назад вышло добавление - Factorio Space Age. Я еще летом 2025 им обзавелся, как только обновил ноутбук, так сразу и поставил (то есть в сентябре), и наконец, в эти выходные между Рождеством и новым годом, у меня дошли руки в него поиграть.
Что изменилось в Factorio Space Age Изменилось дерево технологий, теперь чуть-чуть другой порядок открытий, часть технологий убрали. В целом все то же. Убрали подъёмные краны с фильтрами как отдельный класс, теперь фильтры есть в любом подъёмном кране. В целом все то же. Переставили местами атомные технологии, теперь так просто технологию «сделать еще больше урана» не получить, без космонавтики. Добавили новых технологий «качества», но до них я еще не дошел. Добавили новые конвейеры, но я, пока, обошелся классическими. И, добавили продвинутую космонавтику. Новые планеты, новые ресурсы. В исходной версии у вас была ракета и спутник, и на этом все. После этого можно было строить огромные пушки, устраивать жукам геноцид, хотя и до этого для жуков строилась резервация, совмещенная с крематорием.
Про космонавтику
С непривычки космонавтика вызывает некоторую оторопь. Возможность использовать чертежи и прочие массовые постройки была и до дополнений, но я ей почти не пользовался. Тут же я переделал массу ненужных действий, перед тем как сдался, и пошел читать, что там пишут в интернете.
Предметы космонавтики. Теперь в космонавтике есть: Базовые запчасти для платформы (Space platform foundation) Сама платформа (Platform hub), автоматически собирающаяся на орбите после запуска Space platform starter pack. Отсеки хранения (Cargo bay) вместо ящиков. 59 единиц хранения – сама база, 20 единиц хранения – каждый Cargo bay. МАЛО! Сборщик астероидов (Asteroid collector) Дробилка астероидов (Crusher)
И еще по мелочи, в том числе двигатели.
Работает это все очень необычно.
Передам слово автору с reddit
АвтоПеревод !
Factorio — Космическая Эра — Строим Первую Станцию
Я уже это прошёл, но оставляю заметку для будущих поколений, может, кто-нибудь найдёт в Гугле и это ускорит им дело.
Когда вы выводите свою первую станцию на орбиту, нужно использовать "E", чтобы выбрать рецепты для постройки на станции, включая базовые плиты станции. Станция строит всё это автоматически, когда вы размещаете детали. Это нелогично по сравнению со всем, что было до станции.
Вам не нужно лететь на космическую станцию, чтобы это сделать. Если вы туда полетите, вы не сможете выйти со станции. Вам не нужно отправлять дронов для строительства. Да, правда, до этого момента вам приходилось строить всё самому или с помощью дронов. Сама станция — это по сути дрон. Она строит и разбирает всё сама.
Я не нашёл никаких подсказок или записей в Factoriopedia, которые бы это объясняли.
У меня было ужасных 5-10 минут бессмысленного тыканья в кнопки и ощущения себя полным идиотом, прежде чем я полез в Гугл, и даже тогда правильный ответ было трудно найти. Я очень сильно чувствовал, что это был тест на мой интеллект, и я провалил его.
Приношу свои извинения моим товарищам-энтузиастам фабрик, если это где-то было явно написано. Насколько я мог понять, это было похоже на то, как если бы пришлось спуститься в подвал библиотеки, зайти в заброшенный туалет с висящей на нём табличкой "Осторожно, леопард!", а потом найти это в запертом шкафу.
*Edit: Возможно, этот режим называется "Дистанционное Строительство", и так можно строить на трёх разных мирах одновременно, не посещая каждый из них. Эту функцию можно также использовать, чтобы отдавать дронам приказы о размещении предметов в зданиях или их извлечении. Тред
Как это работает, но другими словами
Перед тем, как играть в Space Age, очень стоит пройти оригинал, без дополнений. Это существенно облегчит игру.
Когда вы дошли до космонавтики, то
1 Строим поточную линию сборки ракет. Ничего сложного, просто берем и делаем.
2 Строим поточную линию сборки Space platform foundation. Они работают примерно так же, как «земля для засыпки водоемов» в оригинале, то есть их нужно много, очень много.
3 Собираем Space platform starter pack. Он нужен один, весит тонну, то есть всю нагрузку ракеты. Запускаем. Он сам соберется на орбите в Platform hub. Выходим в режим карты (M). В левом верхнем углу появится Remote View, и там наша МКС. Имя можно набрать самому, как на станциях железной дороги.
Можно сразу ткнуть на собранный hub – внутри будет 10 блоков Space platform foundation, и попробовать построить блок.
4 Сохраняемся (если жмоты, как я), и собираем посылки на МКС: одну солнечную батарею, один аккумулятор, один лазер (не нужен на начальном этапе), немного запчастей Space platform foundation (сколько влезет). Можно сунуть пару кранов и пару желтых конвейерных лент. Можно сунуть пару заводов. Засовываем в ракету и отправляем на МКС. Дроидов отправлять не надо, это не те дроиды. Следующими рейсами затаскиваете Cargo bay, Asteroid collector, Crusher (3 штуки), краны, заводы, и конвейерную ленту (десяток). Это проще, чем строить что-то с ноля на орбите, тем более меди там нет.
5 Самому лететь никуда не надо, все дистанционное (я, пока учился методом тыка, конечно слетал)
6 В Remote View открываем МКС, жмем E. Вылезает меню Set ghost cursor, аналогичное тому, как строить «на земле». Выбираем в нем Space platform foundation, и жмем внизу справа чекбокс – E
7 Выбираете где строить, оно строится. Когда построится, втыкаете на построенном пространстве все остальное – солнечную батарею, аккумулятор, лазер, сборщики, дробилки. Электрификация не нужна. Ручное перемещение (без кранов) между постройками есть, но слегка неочевидное, по той же схеме – выбрать завод, выбрать что в него добавить.
Потом разберетесь, куда, чего, и как. Пока моя станция летает, собирает астероиды.
8 Сброс стройки с курсора – q, разборка – правой кнопкой мыши (как на земле)
9 Я пока не понял, как так, но возвращаемые модули выглядят как бесконечные. И я не понял, где автоматизация отгрузки космической науки на землю. Руками я, конечно, скинул.
PS. Чтобы не потерять, оригинальный текст с Reddit Factorio - Space Age - Building First Station
I've already overcome this, but am leaving a note for future generations to maybe find in a Google Search so it speeds them up.
When you get your first station into orbit, you need to use "E" to select recipes to build on the station, including the station base tiles. The station builds these automatically for you when you place them. This is counterintuitive to how everything before the Station worked.
You do not need to travel to the space station to do this. You won't be able to exit the station when you get there if you do. You do not need to send Drones to build for you. Yes, it's true that up until that point you had to build things yourself or with drones. The Station itself is basically a drone. It builds and tears down all the things.
There are no tool tips or entries in the Factoriopedia that I could find that discussed this.
I had an infuriating 5-10 minutes of button mashing frustration and feeling like an idiot before I did a Google Search and even then the right answer was difficult to find. I felt very much like this was a test of my intelligence and I failed.
My apologies to my fellow factory enthusiasts if this was clearly posted somewhere. As far as I could tell, it was analogous to having to go to the basement of the library and into a disused lavatory with a sign hanging on it that reads "Beware of the Leopard" and then find it in a locked filing cabinet.
*Edit: This view may be called "Remote Build" and is how you can build on three different worlds at once without having to visit each one. You can also use this feature to order drones to place items into buildings or take them out.
COIExtended.CoreMain Расширение игрового контента, новый уровень исследований, новые руды, новый уровень техники и.т.д COIExtended.Automation Сортировщик с приоритетами и сортировщики 2х4 3х3 COIExtended.Cheats Читы + максимальная скорость игры до х15 COIExtended.Difficulty Расширение настроек сложности COIExtended.ItemSink Еще одни читы COIExtended.Sanitizer Позволяет загружать сейвы игнорируя мод-лист сейва(можно продолжить ванильный сейв с модами) COIExtended.StoragePlus Расширенные настройки складов COIExtended.Tweaks Свободная камера, отключение тумана, инструменты посадки деревьев и прочие визуальные настройки
Инструкция по установке там же К сожалению доступен пока только на английском языке и техническая возможность перевода отсутствует(но сообщество активно требует, так что вероятно это будет первый переведенный мод)
Некоторые фичи мода:
Рыбная промышленность
На большинстве производств теперь есть ползунок позволяющий регулировать скорость производства и затраты на него
Здравствуйте и добро пожаловать на 52-ю страницу «Капитанского дневника». Я капитан Марек, и на этой неделе я поделюсь некоторыми подробностями о своей недавней работе по оптимизации транспортных средств и симуляции океана. Это немного более техническая тема, поэтому вкратце скажу, что из-за проблем с амфибийными транспортными средствами мы оптимизировали транспортные средства и симуляцию океана, и теперь вы сможете наслаждаться игрой с частотой кадров на 10–15 % выше! Читайте дальше, если хотите узнать, как были достигнуты эти успехи и какое отношение это имеет к амфибийной технике.
Рендеринг транспортных средств
Транспортные средства в Captain of Industry смоделированы в 2D. Для этого есть много причин, в основном связанных с производительностью и сложностью реализации (поиск пути в 3D становится очень сложным и происходит очень быстро). Однако игра выполнена в 3D, поэтому для каждого кадра необходимо вычислять высоту и 3D-ориентацию всех транспортных средств на основе их 2D-положения.
Расчёт положения транспортного средства не представляет особой сложности:
Вычислите двумерные координаты четырёх «угловых точек» транспортного средства на основе его двумерной позы (положения и поворота). Эти четыре точки обычно находятся там, где расположены колёса или где заканчиваются гусеницы.
Преобразуйте эти двумерные точки в трёхмерные, вычислив высоту рельефа в каждой точке. При этом учитываются такие исключения, как пандусы для транспортных средств, где транспорт движется по альтернативной поверхности, а не по рельефу.
Проведите трёхмерную плоскость через эти точки.
Вычислите трёхмерную позу (положение и поворот) на основе полученной трёхмерной плоскости.
Проблема с амфибийными транспортными средствами
Когда мы разрабатывали машины-амфибии, одним из препятствий, очевидно, был океан! Я имею в виду возможность того, что машины будут плавать по волнам. Дело в том, что наш океан полностью смоделирован на графическом процессоре (подробнее об этом в выпуске № 35), и центральный процессор вообще ничего не знает о поверхности океана.
На столе лежали два решения:
Загружайте сгенерированные текстуры океанских волн из памяти графического процессора в каждом кадре и заставляйте центральный процессор вычислять высоту океанских волн в четырёх угловых точках каждого транспортного средства. Это довольно просто реализовать, но передача данных из графического процессора в центральный требует немалых затрат, а работа центрального процессора, необходимая для вычисления высоты волн, значительна (сотни инструкций).
Пусть графический процессор вычисляет высоту океанских волн в точках расположения транспортных средств. Центральный процессор загружает в графический процессор список двумерных точек интереса, а вычислительный шейдер эффективно вычисляет соответствующую высоту океанских волн. Это будет значительно быстрее, чем предыдущее решение.
Зная, что первое решение приведёт к значительной дополнительной нагрузке на процессор, мы выбрали второе решение, и я за него взялся.
Когда я писал вычислительный шейдер для оценки высоты волн, мне пришло в голову, что у нас уже есть текстура высоты рельефа на графическом процессоре для рендеринга рельефа. Почему бы не использовать её? И почему бы не создать ещё одну текстуру высоты для специальной поверхности транспортного средства и не использовать её? Это позволило бы нам полностью отказаться от выборки высоты транспортного средства на центральном процессоре.
И это, друзья мои, то, что мы часто называем «кроличьей норой». Из задачи, на которую отводился один день, внезапно вырастает проект, на который уходит целая неделя!
Но прежде чем я прыгнул в эту кроличью нору, я выполнил домашнее задание и проанализировал производительность вычисления положения транспортного средства на центральном процессоре. Я подумал, что если на это уходит менее 1 % времени обновления симуляции, то оптимизировать это не стоит. Я провёл анализ и, держитесь крепче, вычисление положения транспортного средства заняло около 10 % времени симуляции!
Снимок экрана из инструмента профилирования, показывающий, что обновление 217 грузовиков заняло 1 мс, а всех транспортных средств — 1,4 мс, что составляет около 14 % от общего времени моделирования.
Увидев этот результат, я понял, что оптимизация этого кода определённо стоит дополнительных усилий. Поэтому я написал код, который позволяет эффективно хранить текстуру поверхности транспортного средства на графическом процессоре и использовать её вместе с текстурами океана и ландшафта для полного преобразования 2D-поз транспортных средств в 3D на графическом процессоре. Последний вычислительный шейдер принимает 2D-позы и смещения углов транспортных средств для всех транспортных средств и вычисляет окончательные 3D-позы.
Тестирование показало, что вычисление положения 270 транспортных средств занимало около 1 мс, а теперь на центральном процессоре это происходит практически мгновенно (требуется лишь скопировать в память небольшой массив).
Снимок экрана инструмента профилирования, показывающий, что оптимизация вычисления положения транспортного средства сократила время обновления транспортного средства с 1,4 мс до 0,4 мс
И самое приятное то, что вычисление 200 поз на графическом процессоре требует так мало ресурсов, что мы можем вычислять в 10 раз больше обновлений транспортных средств без замедления работы, в то время как центральный процессор будет линейно замедляться с каждым дополнительным транспортным средством.
Возможно, вам интересно, почему процессор работает так «медленно». Дело в том, что каждое транспортное средство выбирает четыре точки, а для интерполяции каждой точки требуется четыре значения высоты, то есть 16 значений для каждого транспортного средства. Поверхность транспортного средства хранится в словаре, поэтому добавьте к этому 16 обращений к словарю и множество операторов if и вызовов методов. Кроме того, используются тригонометрические функции и множество арифметических операций. Для более чем 200 транспортных средств это даёт значительный результат. Очевидной неэффективности не было, просто много обращений к памяти и математических вычислений (я почти уверен, что узким местом была память).
Стоит отметить, что из-за задержек при передаче данных с центрального процессора на графический транспортные средства теперь отстают на несколько тактов моделирования. Я написал интеллектуальную систему минимизации задержек, поэтому, если ваш компьютер обрабатывает результаты достаточно быстро, задержка может составлять всего один такт, а в худшем случае — до четырёх тактов.
Оптимизация океана
Транспортные средства-амфибии создавали ещё одну проблему, связанную с океаном. Теперь, когда мы можем моделировать транспортные средства, «парящие над волнами», в настройках рендеринга появилась возможность отключить реалистичную симуляцию океана и просто использовать плоскость с анимированными текстурами. Проблема в том, что, хотя анимированные текстуры придают низкодетализированному океану некоторую глубину, трёхмерная сетка представляет собой просто плоскую поверхность. Как только вы размещаете на ней транспортные средства, иллюзия глубины исчезает, и она выглядит как плоская поверхность.
Плавучие средства на старой и плоской версии океана.
Итак, у нас было два варианта:
Просто смиритесь с этим, в любом случае это низкокачественный вариант. Добавьте возможность полностью отказаться от вычисления волн в вычислительном шейдере, который оценивает положение транспортного средства.
Попробуйте оптимизировать смоделированный океан и убрать из игры опцию «плоский океан».
Вам это не напоминает кроличью нору? Проблему с потенциально высокой сложностью и неопределёнными результатами? Да, и что мы делаем перед тем, как нырнуть в кроличью нору? Анализируем! Я хотел узнать, насколько медленнее работает смоделированный океан.
Согласно моим тестам, на рендеринг смоделированного океана уходило в 10 раз больше времени, а на менее мощных графических процессорах этот показатель мог быть ещё выше.
Когда я представил свои выводы на совещании и сказал, что, по моему мнению, стоит стремиться к более высоким показателям, Джереми мягко напомнил мне, что мою реализацию симуляции океана, безусловно, можно оптимизировать, и дал мне несколько советов. Так что все за работу, мы выбираем второй вариант!
Я не хочу вдаваться в технические подробности, но должен упомянуть, что наш океан использует так называемое обратное быстрое преобразование Фурье (ОБПФ) для эффективного моделирования и суммирования сотен синусоидальных волн различной частоты и амплитуды. Кстати, эту же технологию используют в кино и так называемых «ААА»-играх.
IFFT должен выполняться в несколько этапов, в нашем случае 8, и моя первоначальная реализация вызывала вычислительный шейдер для каждого этапа. Это естественная вещь, поскольку каждый этап должен завершиться до начала следующего. Однако, как указал Джереми, эти этапы могут быть “объединены” в один вызов вычислительного шейдера. Это возможно благодаря функции GroupMemoryBarrierWithGroupSync , которая позволяет всем потокам в группе потоков ожидать друг друга, чтобы их промежуточные результаты могли быть повторно использованы на следующем этапе. Как вы можете себе представить, синхронизация групп потоков выполняется намного быстрее, чем вызов нового вычислительного шейдера.
Скриншоты из профилировщика графического процессора
Объединённые ядра IFFT позволили нам ускорить работу в 4–5 раз, но я чувствовал, что можно добиться большего. Моей второй целью было сократить объём работы на кадр. Мы по-прежнему выполняли четыре IFFT на кадр, а это большой объём работы. Я хотел реже выполнять фактическое моделирование и просто использовать линейную интерполяцию между кадрами — по сути, то же самое, что мы делаем для моделирования игры, но для океанских волн.
Я не буду вдаваться в технические подробности, но отмечу, что я решил моделировать океан 10 раз в секунду и просто интерполировать промежуточные значения. С точки зрения реализации мы храним три набора данных: два интерполируемых и один вычисляемый, и они чередуются циклически. Организовать всё это было непросто, но и не так сложно, как может показаться.
Самым большим преимуществом этого метода является то, что отдельные вычисления IFFT могут быть вызваны в разных кадрах, что дополнительно снижает нагрузку на каждый кадр в 3-4 раза. Что еще более удивительно, так это то, что чем больше кадров в секунду вы получите, тем меньше будет нагрузка на каждый кадр. Для систем, которые запускают COI со скоростью 40 + кадров в секунду, будут кадры, в которых IFFT даже не выполняется на графическом процессоре.
Вот окончательные результаты тестирования. Если рассматривать только нагрузку на вычислительное ядро графического процессора, то старое IFFT занимало 0,8 мс на кадр, а после всех оптимизаций — 0,05 мс на кадр. Это ускорение в 16 раз!
Снимок экрана из профилировщика графического процессора, на котором показана итоговая нагрузка на вычислительные шейдеры океана (фиолетовые прямоугольники) за кадр — около 0,05 мс.
Я протестировал это на пустой карте Нью-Хейвена, и старый плоский океан выдавал 352 кадра в секунду, старый причудливый океан — 301 кадр в секунду, а тот же океан после оптимизации — 343 кадра в секунду. Таким образом, новый океан не такой дешёвый, как старый, но разница невелика, поэтому мы решили убрать старую опцию из игры.
Окончательный ориентир
Подводя итог, можно сказать, что для того, чтобы машины-амфибии заработали, мы оптимизировали расчёт положения транспортных средств и рендеринг океана. В конце игры на McRib с 270 транспортными средствами общий FPS вырос с 54,8 до 61,5, то есть на 12%! Вот более подробные цифры:
Результаты тестирования: время синхронизации сократилось с 3,29 до 3,03 мс (на 8 % быстрее), время обновления симуляции — с 11,5 до 9,65 мс (на 16 % быстрее), а время обновления рендеринга — с 3,58 до 3,14 мс (на 12 % быстрее).
Путевые точки поездов
В обновлении 4 появятся облегчённые железнодорожные станции, также известные как путевые точки! Мы учли ваши отзывы о том, что зоны ожидания и вспомогательные станции, не требующие погрузочных модулей, занимают слишком много места.
Зал ожидания с продуманным расположением станций для экономии места. Тем не менее более 50 % пространства не используется.
Путевая точка поезда работает точно так же, как станция, с точки зрения расписания поездов, но к ней нельзя прикрепить модули. Однако для неё не нужно больше места, чем для самого железнодорожного пути, поэтому её можно построить на параллельных путях без дополнительного пространства. Более того, путевые точки можно размещать даже на эстакадах. Путевая точка будет доступна в базовой игре.
Зона ожидания с точками маршрута поезда позволяет более эффективно использовать пространство.
Атомный локомотив
В последнем выпуске «Капитанского дневника» я вкратце упомянул, что в грядущем дополнении «Поезда» появятся новые локомотивы, и многие обсуждали самый необычный из них — ядерный локомотив. Я видел много предположений о том, насколько он будет большим и будет ли ему нужно топливо или вода, поэтому позвольте мне прояснить ситуацию.
Атомный локомотив состоит из трёх частей: служебного вагона (часть A), вагона с ядерным реактором и турбиной (часть B) и вагона-конденсатора (часть C). Длина всего локомотива составляет 25 плиток (50 метров), что эквивалентно пяти тепловозам первого уровня.
Атомный локомотив, трёхсекционный гигант. Он очень тяжёлый, очень мощный и очень редко нуждается в дозаправке.
В блоке A находится экипаж из двух человек. В блоке B расположен защищённый ядерный реактор и паровая турбина, которая вырабатывает электричество для всех ведущих осей. Чтобы локомотив был автономным и не нуждался в дозаправке водой, в блоке C происходит конденсация отработанного пара с возвратом воды в реактор.
Поскольку вода циркулирует по замкнутому контуру, единственное, что нужно дозаправлять, — это ядерное топливо. Для этого необходимо заменить весь реактор. Самое интересное, что реактор нужно менять только раз в 100 лет!
А если по какой-то причине вам недостаточно локомотива, состоящего из трёх секций, можно присоединить несколько пар секций B-C к одной секции A.