Сап, gd. Где можно узнать про архитектурные особенности такой игры, как факторио? Как там хранится карта, как обрабатывается, какие алгоритмы и фичи используются - и все такое разное, позволяющее выдавать 60 фпс на некрожелезе с сотнями тысяч (если не миллионами) активных объектов на карте. Думаю, это не одному мне интересно будет.
Исходников нету, сами разработчики ничего не пишут. Можно только догадываться. Главная оптимизация, наверное - это кеширование всего, что можно и что нельзя. Чего не хватает, например, майнкрафту с его модами ic2, thermal expansion и т.д., где все считается чуть ли не напрямую и при средне-большой фабрике все уже может пойти по пизде.
на самом деле у них прямо на сайте ебанистический блог о том че там как. иногда углубляются в детали, иногда нет.
>>498518 (OP)>позволяющее выдавать 60 фпс на некрожелезе с сотнями тысяч (если не миллионами) активных объектов на картеСамописный движок на с++ вместо unyti, очевидно же.
>>498543>Главная оптимизация, наверное - это кеширование всего, что можно и что нельзя.А ещё ленивые расчёты очень важны. Причем не сами по себе, а грамотное проектирование степени ленивости расчётов.
>>498560>на самом деле у них прямо на сайте ебанистический блог о том че там как. иногда углубляются в детали, иногда нет.Я знаю, но там все не то. Они там пишут про мелкие фичи аля "переделали пар таким вот образом чтобы повысить производительность на 0,05%". Меня же интересуют более базовые архитектурные решения.>>498585>Самописный движок на с++ вместо unyti, очевидно же.Ох уж эти обезумевшие школьники. А юнити - это не плюсы? А факторио не на луа? C++ - это не магический инструмент, которым хуйнул - и получил овер 9к быстродействия. Разница, конечно будет, но не на несколько порядков как ты себе вообразил.>>498586>А ещё ленивые расчёты очень важны. Причем не сами по себе, а грамотное проектирование степени ленивости расчётов.Вот именно такие особенности реализации меня и интересуют.
>>498742Тебе именно факторио нужно, или делать оптимальный код?Помимо факторио есть куча ресурсов, книг, других игр, в которых можно что-то найти.Основную часть быстродействия можно получить лишь за счет правильного применения алгоритмов и структур данных. Другую часть - за счет всяких трюков, аппроксимаций, использования кэша и прочее.
Оп, а чему там, собственно, тормозить-то? В отличие от майнкрафта, там ты фабрики не из блоков строишь (да и 2д к тому же). Юнитов по сути нет, поиск пути не нужен. Играешь анимацию, приплюсовываешь инты по таймеру. Что именно там должно тормозить?
>>498518 (OP)Очередной ленивый и тупой уёбок, не способный в гугл. ОП, ты понимаешь хотя бы, насколько ты ленивый пидарас? Ты на официальный сайт заглядывать пробовал хоть раз? Видел там раздел Friday Facts? В котором разработчики еженедельно пишут о процессе разработки и особенностях движка(и где в том числе были ответы на твои вопросы).
>>498919Ты диванный?Если тупо пару тысяч спрайтов заставить в рандомных направлениях на экране двигаться, то конечно ничего тормозить не будет. Но в играх все несколько сложнее.На пикче вообще как минимум 10к тайлов (видимых), объектов раза в 4 больше, объекты взаимодействуют с тайлами и между собой (всякие ресурсы на конвейере), для каждого завода нужно чекать ресурсы, таймеры, подавать сигнал манипуляторам, генерировать новые итемы, а это все питается от электросети, а электроэнергию производят соответствующие строения по определенным законам. Некоторые механики могут занимать сотню строк кода (по сравнению с простым x=x+vx это прилично утяжеляет один вызов апдейта). Еще помножь значения в несколько раз для потенциально большего размеры карты (объекты за пределами экрана тоже должны постоянно обновляться, и боты всякие там где-то еще должны гулять).По чуть-чуть по чуть-чуть, и так набирается приличная масса. Учитывая, что на апдейт должно уходить от 15 до 30 мс, для 100к объектов это может обернуться проблемой. Тяп-ляп тут точно не получится сделать
>>498921Для современных процов миллиардные итерации - не проблема. Чтобы вообще не тормозило, надо распараллеливать игровую логику. И ещё, ты явно преувеличиваешь сложность механики игры.
>>498934>диванНа что триггернулся то, дебич? Хочешь подробно об особенностях игры прочитать, иди на форумы факторио. Тут тебе никто не ответит, а только догадки будут писать.
>>498933Миллиардные итерации? Да, но за сколько времени?Возьмем честные 1ГГц, 10^9 операций проца за секунду. Причем эти операции должны быть простыми, чтобы за секунду можно было произвести миллиард таких. Так что сбавляем где-то порядок на то, чтобы сделать большую итерацию по одному объекту, и еще несколько порядков на то, чтобы успеть за те самые 0.016 - 0.033 секунды (30-60 фпс). Остается около миллиона. Окей, если у нас вся игра обрабатывается одним проходом (без квадратичных или nlogn алгоритмов), то да, миллион объектов мы должны успеть обработать. Но это потолок. Распараллеливать - конечно хорошо, но для этого нужно подготовить архитектуру, причем еще не все вещи можно параллелить.
>>498921>Если тупо пару тысяч спрайтов заставить в рандомных направлениях на экране двигаться, то конечно ничего тормозить не будет.А если эту пару тысяч спрайтов заставить двигаться по предрассчитанному пути, состоящему из горизонталей и вертикалей, то все внезапно начнет тормозить, я тебя правильно услышал?>объекты взаимодействуют с тайлами и между собой (всякие ресурсы на конвейере)Каким образом ресурс на конвеере взаимодействует "с тайлами и между собой"? По-твоему там физика с фрикциями рассчитывается, или что?>для каждого завода нужно чекать ресурсы>таймерыОчень ресурсоемкие операции, анон.>подавать сигнал манипуляторам, генерировать новые итемыОчень ресурсоемкие операции, анон. А еще запуск анимации - это конечно очень механ и совсем не графен.>а это все питается от электросетиНу теперь убедил, точно! Из-за этого должно тормозить, да.
>>498953>Распараллеливать - конечно хорошо, но для этого нужно подготовить архитектуру, причем еще не все вещи можно параллелить.Сейчас бы в 2018 подготавливать архитектуру для этого, ага. А 10к заводиков, приплюсовывающих инты, очень трудно распараллелить, ага.
>>498962Поднимай скиллуху в геймдеве и научись разбираться в игровых механиках прежде чем называть их сложными.
>>498962>Куча аргументов>что-то по делу можешь сказать?Нахуй вы вообще с этим долбоебом общаетесь? У него мозгов больше чем тред создать все равно ни на что не хватит
>>498993Я хз, сижу подтралливаю его тут. Не понимаю, что он тут сидит, его давно послали на тематические форумы и в бложик разрабов.
>>498993У кого аргументы? У плюсователя интов?>>498995>Слился без аргументов>Это я так подтралливаю))Как скажешь.
>>498997>Как скажешь.Долбаёб, ты бы радовался, что я бампаю твой тред. А теперь в последний раз тыкаю тебя мордой >тематические форумы>бложик разрабовЗдесь тебе не клуб любителей и дрочеров факторио, никто тебе не поможет.
>>498998Ты какой-то глупый, школьник еще, видимо.Я тебе просто пояснил в чем ты не прав, ты так ничего и не ответил по делу. К ОПу не имею никакого отношения, а ты зачем-то посылаешь меня на форум факторио.
>>498999Блять, ты реально умственно отсталый интернет-воен. Я тут два сообщения в треде оставил. >>498987>>498989Ты мне говоришь, что я не прав в том, что Я ДАЖЕ НЕ ПИСАЛ БЛЯТЬ. И вообще интернет-борцун - не человек. Вымри.>школьник еще, видимо.Студент первого курса не палица
>>499000>>499002Откуда у тебя столько рефлексии по поводу своего обсера, что такие маневры исполняешь, да еще и оправдываешься? Похоже на признаки слабости психики. Ну т.е. теория о школьнике подтверждается.
>>499004>рефлексии >психикиИнтернет психология - сигнал о толстоте. Кстати, ты не угадал ни с семёном, ни со школьником. Кормить я тебя больше не буду.
>>499005>сигнал о толстоте>ты не угадал ни с семёном, ни со школьникомНу ты там определись какой точки зрения придерживаешься, да. А то незрелость пока еще виднеется в твоих постах. Новизна студака как бы намекает.
>>499005> я не школьник ррряяяя> пруфает студенческим, который еще и выглядит как первокурсникаПроигрываю просто люто в голосину, когда студенты считают себя в чём-то умнее школьников.мимо-дядя-30-лет
>>499006>>499007ne semeni plsПокурил бложик факторио, загорелся запилить свой 3D клон. Надеюсь гдачеры одобрят
>>499007>который еще и выглядит как первокурсника>>499006>Новизна студака Чуханчики, обложку на студак не пробовали купить? На моём ни пылинки за 4 года.
>>499013>На моём ни пылинки за 4 года.И что тебе это дало? Однокурсники стали уважать? Однокурсницы стали давать?
>>499016Вопрос даунский, конечно. Паспорт на более продолжительный срок дается, плюс более важный документ.
>>4990174-6 лет не длительный срок? В обложке студак не разъебывается в хлам и у него не расходятся края. Я вообще люблю беречь вещи.
>>499018Расходится в хлам, если ты криворукий чухан, не умеющий беречь вещи и который постоянно в джинсах дрочит этот студак.
>>499021Хорошо, ты прав, ты победил. Про новизну первый ты что-то спизданул. Ты начинаешь холивары, когда кто-то тебя оскорбляет? Или просто так?
>>499024>Про новизну первый ты что-то спизданул. Не новый и разъебанный - разные вещи. На не новом краска, естественно, слетает, и по мелочи что-то стирается в зависимости от интенсивности юзанья.>Ты начинаешь холивары, когда кто-то тебя оскорбляет? Или просто так?Только если настроение есть, в ответ на аналогичный троллинг.
>>499030Хорошо, анон. Надо быть добрее. и мне и тебе Просто злиться на посты в интернете - ебанутая хуйня.
>>499031Кто злиться-то? Вижу, что кто-то похуистично относится к аргументации, начинаю также, дабы не тратить лишние усилия, либо вообще забиваю, если лень.
>>499034Я уж точно. Другие аноны хуёво аргументируют, а я мимокрок по удар попадаю. Ну вообще, не стояло тебя оскорблять. Ты адекват
мимокрокожу мимо треда с крокодильным погромиздом-опом-студентотой-механоёбом, вижу опа хуя, вижу аргументы >>498958, срач по ГОСТу, бугуртом ОПа удовлетворён
пиздец программисты охуели че сложного то. инты приплюсовываешь, а межу этим условия всяие типо да/ нет. а разговоров то скольоко, так и я могу,
>>498518 (OP)В факторио нихуя сложного нет. Там стримится только рендер и начальная генерация чанков, как только чанк сгенерен - он тупо навсегда прописывается в оперативу, сгенеришь слишком много - пойдет по пизде. По рантайму ничем не отличается от TTD 94го блять года, можешь Опентытыдэ поковырять если интересует конкретика.Самая захучанная ммо имеет более сложную архитектуру, всякий исходно-векторный кад/гео софт - еще более сложную.
>>498586>ленивые расчётыРебзи, че за ленивые расчеты? Есть ли что-то конкретное или это интуитивные решения. Например: вместо того чтобы просчитывать каждый предмет на конвейере, берется скорость поступления предметов на конвейер, а от расстояния получается время через которое предметы начнут появлятся на конечной точке?
>>499640Сорян за сагу, случайно. Еще, тут чел пишет про кучи предметов на конвейере. А ты змейку помнишь? Там убирается хвост и прибавляется голова, я уверен, на конвейерах так же но с небольшой анимацией. Еще я думаю что при удалении камеры от группы рядом стоящих заводов, они упрощаются, их пространство не имеет особого значения. То есть, если к заводу подъсоединен конвейер с такойто скоростью поступления, то он производит вещи с такой то скоростью.Если поставить рядом с конвейером манипулятор, то его выходная скорость уменьшиться и тд.
>>499641О!, еще придумал. Стоят добывалки на шахтах, вместо того чтоб и итерировать уменьшение ресурса в рудниках, можно расчитывать время когда ресурс закончится, учитывая скорость добычи. Если наступило расчетное время, то скорость поступления на конвейер уменьшается. Если игрок пришел после расчетного времени на рудник, то проигрывать соответствующую анимацию. Скорость конвейеров суммировать, если они пересекаются.У конвейеров так же есть площадь, которую может занять определенное число ресурсов. Если места нету, то останавливать поступление.
>>498742>Ох уж эти обезумевшие школьники. Ну да, сборщик мусора, который будет релугярно проверять объекты никакого оверхеда не добавляет, так же как и N транзитных вызовов для каждого скрипта, которых, привязано N штук к КАЖДОМУ объекту и хуй знает как вообще там всё реализовано и как выглядит внутренний глобальный луп. Нет, ты конечно можешь сам загуглить, я не шарю в этих ваших юнитях.>C++ - это не магический инструменткоторым хуйнул - и получил овер 9к быстродействия.Вообще-то именно так и есть, если не писать как уебан офк.Хотя в принципе и на Юнити это всё напишется, если использовать оптимизации, которые отсекают максимальное количество ненужных проверок, если логика тайловая это в принципе не так уж и сложно. Плюс пулы объектов на каждый чих, чтобы тормознутое выделение памяти не делалось каждую итерацию и чтобы сборщик с ума не сошёл.Какие-нибудь не особо нужные или быстрые процессы можно вообще делать подконтрольно на свободное время, в террарии как-то так вода и реализована, судя по всему. Туда же объедение тайлов в чанки, и прочая хуйня.
>>498953Ты походу путаешь игровые циклы и кадры в графике. На деле игровой мир там работает на каких-нибудь 10 фпс, нет ебаных объектов вообще (а тем более виртуализации), DDD во все поля, и еще меньшие фпсы для обработки удаленных регионов. Еще можно объединять плотные скопления механизмов (все карту все равно не застроишь чем-то сложным) и считать их отдельно от всей карты, а на статичную местность забить вообще.И фактория таки лагает на моем атлоне x2 250.
>>528430> Ты походу путаешь игровые циклы и кадры в графике. На деле игровой мир там работает на каких-нибудь 10 фпс,Нет, на 60.> нет ебаных объектов вообще (а тем более виртуализации), DDD во все поля, и еще меньшие фпсы для обработки удаленных регионов.Нет, все регионы на 60 работают, там происходящие на одной стороне карты может зависить от происходящего на другой, попросту нет возможности понижать частоту или вообще что-то замораживать. Вся карта всегда работает одинаково, вне зависимости от положения игрока.>Еще можно объединять плотные скопления механизмов (все карту все равно не застроишь чем-то сложным) и считать их отдельно от всей карты, а на статичную местность забить вообще.Ты про что вообще? Статичная местность потому и статичная, что на ней ничего не происходит. Зачем ее просчитывать?> И фактория таки лагает на моем атлоне x2 250.Может, дело в видяхе, а не проце? Я себе лет 7 назад нищебук за 18к брал для учебы - на нем все норм работает, нужно до пизды огромную фабрику строить, чтобы начало тормозить. Пустая маленькая карта, по идее, вообще на любом проце не должна лагать, если видяха с отрисовкой справляется.
>>500104>Ох...>Через пару месяцев юнитихолопы ебутся с сборщиком, который внезапно ТОРМОЗИТ, и всё это в соседнем тредеВ голосину нахуй.