Это копия, сохраненная 19 августа 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Главная оптимизация, наверное - это кеширование всего, что можно и что нельзя. Чего не хватает, например, майнкрафту с его модами ic2, thermal expansion и т.д., где все считается чуть ли не напрямую и при средне-большой фабрике все уже может пойти по пизде.
>позволяющее выдавать 60 фпс на некрожелезе с сотнями тысяч (если не миллионами) активных объектов на карте
Самописный движок на с++ вместо unyti, очевидно же.
>Главная оптимизация, наверное - это кеширование всего, что можно и что нельзя.
А ещё ленивые расчёты очень важны. Причем не сами по себе, а грамотное проектирование степени ленивости расчётов.
>на самом деле у них прямо на сайте ебанистический блог о том че там как. иногда углубляются в детали, иногда нет.
Я знаю, но там все не то. Они там пишут про мелкие фичи аля "переделали пар таким вот образом чтобы повысить производительность на 0,05%". Меня же интересуют более базовые архитектурные решения.
>>498585
>Самописный движок на с++ вместо unyti, очевидно же.
Ох уж эти обезумевшие школьники. А юнити - это не плюсы? А факторио не на луа? C++ - это не магический инструмент, которым хуйнул - и получил овер 9к быстродействия. Разница, конечно будет, но не на несколько порядков как ты себе вообразил.
>>498586
>А ещё ленивые расчёты очень важны. Причем не сами по себе, а грамотное проектирование степени ленивости расчётов.
Вот именно такие особенности реализации меня и интересуют.
Тебе именно факторио нужно, или делать оптимальный код?
Помимо факторио есть куча ресурсов, книг, других игр, в которых можно что-то найти.
Основную часть быстродействия можно получить лишь за счет правильного применения алгоритмов и структур данных. Другую часть - за счет всяких трюков, аппроксимаций, использования кэша и прочее.
Очередной ленивый и тупой уёбок, не способный в гугл. ОП, ты понимаешь хотя бы, насколько ты ленивый пидарас? Ты на официальный сайт заглядывать пробовал хоть раз? Видел там раздел Friday Facts? В котором разработчики еженедельно пишут о процессе разработки и особенностях движка(и где в том числе были ответы на твои вопросы).
вероятно ты переоцениваешь нагрузку от механа. в 2018 тормозит не механ а графен.
Ты диванный?
Если тупо пару тысяч спрайтов заставить в рандомных направлениях на экране двигаться, то конечно ничего тормозить не будет. Но в играх все несколько сложнее.
На пикче вообще как минимум 10к тайлов (видимых), объектов раза в 4 больше, объекты взаимодействуют с тайлами и между собой (всякие ресурсы на конвейере), для каждого завода нужно чекать ресурсы, таймеры, подавать сигнал манипуляторам, генерировать новые итемы, а это все питается от электросети, а электроэнергию производят соответствующие строения по определенным законам. Некоторые механики могут занимать сотню строк кода (по сравнению с простым x=x+vx это прилично утяжеляет один вызов апдейта). Еще помножь значения в несколько раз для потенциально большего размеры карты (объекты за пределами экрана тоже должны постоянно обновляться, и боты всякие там где-то еще должны гулять).
По чуть-чуть по чуть-чуть, и так набирается приличная масса. Учитывая, что на апдейт должно уходить от 15 до 30 мс, для 100к объектов это может обернуться проблемой. Тяп-ляп тут точно не получится сделать
Для современных процов миллиардные итерации - не проблема. Чтобы вообще не тормозило, надо распараллеливать игровую логику. И ещё, ты явно преувеличиваешь сложность механики игры.
>диван
На что триггернулся то, дебич? Хочешь подробно об особенностях игры прочитать, иди на форумы факторио. Тут тебе никто не ответит, а только догадки будут писать.
Миллиардные итерации? Да, но за сколько времени?
Возьмем честные 1ГГц, 10^9 операций проца за секунду. Причем эти операции должны быть простыми, чтобы за секунду можно было произвести миллиард таких. Так что сбавляем где-то порядок на то, чтобы сделать большую итерацию по одному объекту, и еще несколько порядков на то, чтобы успеть за те самые 0.016 - 0.033 секунды (30-60 фпс). Остается около миллиона. Окей, если у нас вся игра обрабатывается одним проходом (без квадратичных или nlogn алгоритмов), то да, миллион объектов мы должны успеть обработать. Но это потолок.
Распараллеливать - конечно хорошо, но для этого нужно подготовить архитектуру, причем еще не все вещи можно параллелить.
>Если тупо пару тысяч спрайтов заставить в рандомных направлениях на экране двигаться, то конечно ничего тормозить не будет.
А если эту пару тысяч спрайтов заставить двигаться по предрассчитанному пути, состоящему из горизонталей и вертикалей, то все внезапно начнет тормозить, я тебя правильно услышал?
>объекты взаимодействуют с тайлами и между собой (всякие ресурсы на конвейере)
Каким образом ресурс на конвеере взаимодействует "с тайлами и между собой"? По-твоему там физика с фрикциями рассчитывается, или что?
>для каждого завода нужно чекать ресурсы
>таймеры
Очень ресурсоемкие операции, анон.
>подавать сигнал манипуляторам, генерировать новые итемы
Очень ресурсоемкие операции, анон. А еще запуск анимации - это конечно очень механ и совсем не графен.
>а это все питается от электросети
Ну теперь убедил, точно! Из-за этого должно тормозить, да.
>Распараллеливать - конечно хорошо, но для этого нужно подготовить архитектуру, причем еще не все вещи можно параллелить.
Сейчас бы в 2018 подготавливать архитектуру для этого, ага. А 10к заводиков, приплюсовывающих инты, очень трудно распараллелить, ага.
Поднимай скиллуху в геймдеве и научись разбираться в игровых механиках прежде чем называть их сложными.
Продолжай шутковать дальше, плюсователь интов. Игру с таким подходом ты не разработаешь.
>Куча аргументов
>что-то по делу можешь сказать?
Нахуй вы вообще с этим долбоебом общаетесь? У него мозгов больше чем тред создать все равно ни на что не хватит
Я хз, сижу подтралливаю его тут. Не понимаю, что он тут сидит, его давно послали на тематические форумы и в бложик разрабов.
>Как скажешь.
Долбаёб, ты бы радовался, что я бампаю твой тред.
А теперь в последний раз тыкаю тебя мордой
>тематические форумы
>бложик разрабов
Здесь тебе не клуб любителей и дрочеров факторио, никто тебе не поможет.
Ты какой-то глупый, школьник еще, видимо.
Я тебе просто пояснил в чем ты не прав, ты так ничего и не ответил по делу. К ОПу не имею никакого отношения, а ты зачем-то посылаешь меня на форум факторио.
>рефлексии
>психики
Интернет психология - сигнал о толстоте. Кстати, ты не угадал ни с семёном, ни со школьником. Кормить я тебя больше не буду.
>сигнал о толстоте
>ты не угадал ни с семёном, ни со школьником
Ну ты там определись какой точки зрения придерживаешься, да. А то незрелость пока еще виднеется в твоих постах. Новизна студака как бы намекает.
> я не школьник ррряяяя
> пруфает студенческим, который еще и выглядит как первокурсника
Проигрываю просто люто в голосину, когда студенты считают себя в чём-то умнее школьников.
мимо-дядя-30-лет
Пили, главное чтобы не хуйня с плюсованием интов была.
>На моём ни пылинки за 4 года.
И что тебе это дало? Однокурсники стали уважать? Однокурсницы стали давать?
Вопрос даунский, конечно. Паспорт на более продолжительный срок дается, плюс более важный документ.
4-6 лет не длительный срок? В обложке студак не разъебывается в хлам и у него не расходятся края. Я вообще люблю беречь вещи.
Расходится в хлам, если ты криворукий чухан, не умеющий беречь вещи и который постоянно в джинсах дрочит этот студак.
Хорошо, ты прав, ты победил. Про новизну первый ты что-то спизданул.
Ты начинаешь холивары, когда кто-то тебя оскорбляет? Или просто так?
>Про новизну первый ты что-то спизданул.
Не новый и разъебанный - разные вещи. На не новом краска, естественно, слетает, и по мелочи что-то стирается в зависимости от интенсивности юзанья.
>Ты начинаешь холивары, когда кто-то тебя оскорбляет? Или просто так?
Только если настроение есть, в ответ на аналогичный троллинг.
Хорошо, анон. Надо быть добрее. и мне и тебе Просто злиться на посты в интернете - ебанутая хуйня.
Кто злиться-то? Вижу, что кто-то похуистично относится к аргументации, начинаю также, дабы не тратить лишние усилия, либо вообще забиваю, если лень.
На что отвечать? На визги местной школоты со сломанными детекторами я уже от души посмеялся.
Я уж точно. Другие аноны хуёво аргументируют, а я мимокрок по удар попадаю. Ну вообще, не стояло тебя оскорблять. Ты адекват
стоило
Плюсую инты этому оральному оратору.
В факторио нихуя сложного нет. Там стримится только рендер и начальная генерация чанков, как только чанк сгенерен - он тупо навсегда прописывается в оперативу, сгенеришь слишком много - пойдет по пизде. По рантайму ничем не отличается от TTD 94го блять года, можешь Опентытыдэ поковырять если интересует конкретика.
Самая захучанная ммо имеет более сложную архитектуру, всякий исходно-векторный кад/гео софт - еще более сложную.
>ленивые расчёты
Ребзи, че за ленивые расчеты? Есть ли что-то конкретное или это интуитивные решения. Например: вместо того чтобы просчитывать каждый предмет на конвейере, берется скорость поступления предметов на конвейер, а от расстояния получается время через которое предметы начнут появлятся на конечной точке?
Сорян за сагу, случайно.
Еще, тут чел пишет про кучи предметов на конвейере. А ты змейку помнишь? Там убирается хвост и прибавляется голова, я уверен, на конвейерах так же но с небольшой анимацией.
Еще я думаю что при удалении камеры от группы рядом стоящих заводов, они упрощаются, их пространство не имеет особого значения. То есть, если к заводу подъсоединен конвейер с такойто скоростью поступления, то он производит вещи с такой то скоростью.
Если поставить рядом с конвейером манипулятор, то его выходная скорость уменьшиться и тд.
О!, еще придумал. Стоят добывалки на шахтах, вместо того чтоб и итерировать уменьшение ресурса в рудниках, можно расчитывать время когда ресурс закончится, учитывая скорость добычи. Если наступило расчетное время, то скорость поступления на конвейер уменьшается. Если игрок пришел после расчетного времени на рудник, то проигрывать соответствующую анимацию.
Скорость конвейеров суммировать, если они пересекаются.
У конвейеров так же есть площадь, которую может занять определенное число ресурсов. Если места нету, то останавливать поступление.
>Ох уж эти обезумевшие школьники.
Ну да, сборщик мусора, который будет релугярно проверять объекты никакого оверхеда не добавляет, так же как и N транзитных вызовов для каждого скрипта, которых, привязано N штук к КАЖДОМУ объекту и хуй знает как вообще там всё реализовано и как выглядит внутренний глобальный луп. Нет, ты конечно можешь сам загуглить, я не шарю в этих ваших юнитях.
>C++ - это не магический инструменткоторым хуйнул - и получил овер 9к быстродействия.
Вообще-то именно так и есть, если не писать как уебан офк.
Хотя в принципе и на Юнити это всё напишется, если использовать оптимизации, которые отсекают максимальное количество ненужных проверок, если логика тайловая это в принципе не так уж и сложно. Плюс пулы объектов на каждый чих, чтобы тормознутое выделение памяти не делалось каждую итерацию и чтобы сборщик с ума не сошёл.
Какие-нибудь не особо нужные или быстрые процессы можно вообще делать подконтрольно на свободное время, в террарии как-то так вода и реализована, судя по всему. Туда же объедение тайлов в чанки, и прочая хуйня.
Ты походу путаешь игровые циклы и кадры в графике. На деле игровой мир там работает на каких-нибудь 10 фпс, нет ебаных объектов вообще (а тем более виртуализации), DDD во все поля, и еще меньшие фпсы для обработки удаленных регионов. Еще можно объединять плотные скопления механизмов (все карту все равно не застроишь чем-то сложным) и считать их отдельно от всей карты, а на статичную местность забить вообще.
И фактория таки лагает на моем атлоне x2 250.
> Ты походу путаешь игровые циклы и кадры в графике. На деле игровой мир там работает на каких-нибудь 10 фпс,
Нет, на 60.
> нет ебаных объектов вообще (а тем более виртуализации), DDD во все поля, и еще меньшие фпсы для обработки удаленных регионов.
Нет, все регионы на 60 работают, там происходящие на одной стороне карты может зависить от происходящего на другой, попросту нет возможности понижать частоту или вообще что-то замораживать. Вся карта всегда работает одинаково, вне зависимости от положения игрока.
>Еще можно объединять плотные скопления механизмов (все карту все равно не застроишь чем-то сложным) и считать их отдельно от всей карты, а на статичную местность забить вообще.
Ты про что вообще? Статичная местность потому и статичная, что на ней ничего не происходит. Зачем ее просчитывать?
> И фактория таки лагает на моем атлоне x2 250.
Может, дело в видяхе, а не проце? Я себе лет 7 назад нищебук за 18к брал для учебы - на нем все норм работает, нужно до пизды огромную фабрику строить, чтобы начало тормозить. Пустая маленькая карта, по идее, вообще на любом проце не должна лагать, если видяха с отрисовкой справляется.
>Ох...
>Через пару месяцев юнитихолопы ебутся с сборщиком, который внезапно ТОРМОЗИТ, и всё это в соседнем треде
В голосину нахуй.
Это копия, сохраненная 19 августа 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.