Этого треда уже нет.
Это копия, сохраненная 19 августа 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
590ec6665bafe3fae7010a58.jpg28 Кб, 470x264
Сап, gd. Где можно узнать про архитектурные особенности 498518 В конец треда | Веб
Сап, gd. Где можно узнать про архитектурные особенности такой игры, как факторио? Как там хранится карта, как обрабатывается, какие алгоритмы и фичи используются - и все такое разное, позволяющее выдавать 60 фпс на некрожелезе с сотнями тысяч (если не миллионами) активных объектов на карте. Думаю, это не одному мне интересно будет.
2 498543
Исходников нету, сами разработчики ничего не пишут. Можно только догадываться.

Главная оптимизация, наверное - это кеширование всего, что можно и что нельзя. Чего не хватает, например, майнкрафту с его модами ic2, thermal expansion и т.д., где все считается чуть ли не напрямую и при средне-большой фабрике все уже может пойти по пизде.
3 498560
на самом деле у них прямо на сайте ебанистический блог о том че там как. иногда углубляются в детали, иногда нет.
4 498585
>>498518 (OP)

>позволяющее выдавать 60 фпс на некрожелезе с сотнями тысяч (если не миллионами) активных объектов на карте


Самописный движок на с++ вместо unyti, очевидно же.
5 498586
>>498543

>Главная оптимизация, наверное - это кеширование всего, что можно и что нельзя.


А ещё ленивые расчёты очень важны. Причем не сами по себе, а грамотное проектирование степени ленивости расчётов.
6 498742
>>498560

>на самом деле у них прямо на сайте ебанистический блог о том че там как. иногда углубляются в детали, иногда нет.


Я знаю, но там все не то. Они там пишут про мелкие фичи аля "переделали пар таким вот образом чтобы повысить производительность на 0,05%". Меня же интересуют более базовые архитектурные решения.

>>498585

>Самописный движок на с++ вместо unyti, очевидно же.


Ох уж эти обезумевшие школьники. А юнити - это не плюсы? А факторио не на луа? C++ - это не магический инструмент, которым хуйнул - и получил овер 9к быстродействия. Разница, конечно будет, но не на несколько порядков как ты себе вообразил.

>>498586

>А ещё ленивые расчёты очень важны. Причем не сами по себе, а грамотное проектирование степени ленивости расчётов.


Вот именно такие особенности реализации меня и интересуют.
7 498744
8 498746
>>498742
Тебе именно факторио нужно, или делать оптимальный код?
Помимо факторио есть куча ресурсов, книг, других игр, в которых можно что-то найти.
Основную часть быстродействия можно получить лишь за счет правильного применения алгоритмов и структур данных. Другую часть - за счет всяких трюков, аппроксимаций, использования кэша и прочее.
9 498761
Оп, а чему там, собственно, тормозить-то? В отличие от майнкрафта, там ты фабрики не из блоков строишь (да и 2д к тому же). Юнитов по сути нет, поиск пути не нужен. Играешь анимацию, приплюсовываешь инты по таймеру. Что именно там должно тормозить?
10 498915
>>498518 (OP)
Очередной ленивый и тупой уёбок, не способный в гугл. ОП, ты понимаешь хотя бы, насколько ты ленивый пидарас? Ты на официальный сайт заглядывать пробовал хоть раз? Видел там раздел Friday Facts? В котором разработчики еженедельно пишут о процессе разработки и особенностях движка(и где в том числе были ответы на твои вопросы).
11 498916
>>498761
Ответь мне честно - ты дебил?
12 498917
>>498915
Ты бы хоть тред прочитал, прежде чем обсираться.

>>498916
Нувыпонели.
13 498919
>>498916
вероятно ты переоцениваешь нагрузку от механа. в 2018 тормозит не механ а графен.
myfirstfactory.jpg14,4 Мб, 3840x2160
14 498921
>>498919
Ты диванный?
Если тупо пару тысяч спрайтов заставить в рандомных направлениях на экране двигаться, то конечно ничего тормозить не будет. Но в играх все несколько сложнее.
На пикче вообще как минимум 10к тайлов (видимых), объектов раза в 4 больше, объекты взаимодействуют с тайлами и между собой (всякие ресурсы на конвейере), для каждого завода нужно чекать ресурсы, таймеры, подавать сигнал манипуляторам, генерировать новые итемы, а это все питается от электросети, а электроэнергию производят соответствующие строения по определенным законам. Некоторые механики могут занимать сотню строк кода (по сравнению с простым x=x+vx это прилично утяжеляет один вызов апдейта). Еще помножь значения в несколько раз для потенциально большего размеры карты (объекты за пределами экрана тоже должны постоянно обновляться, и боты всякие там где-то еще должны гулять).
По чуть-чуть по чуть-чуть, и так набирается приличная масса. Учитывая, что на апдейт должно уходить от 15 до 30 мс, для 100к объектов это может обернуться проблемой. Тяп-ляп тут точно не получится сделать
15 498933
>>498921
Для современных процов миллиардные итерации - не проблема. Чтобы вообще не тормозило, надо распараллеливать игровую логику. И ещё, ты явно преувеличиваешь сложность механики игры.
16 498934
>>498933
Привет, говорящий диван!
17 498939
>>498934

>диван


На что триггернулся то, дебич? Хочешь подробно об особенностях игры прочитать, иди на форумы факторио. Тут тебе никто не ответит, а только догадки будут писать.
18 498953
>>498933
Миллиардные итерации? Да, но за сколько времени?
Возьмем честные 1ГГц, 10^9 операций проца за секунду. Причем эти операции должны быть простыми, чтобы за секунду можно было произвести миллиард таких. Так что сбавляем где-то порядок на то, чтобы сделать большую итерацию по одному объекту, и еще несколько порядков на то, чтобы успеть за те самые 0.016 - 0.033 секунды (30-60 фпс). Остается около миллиона. Окей, если у нас вся игра обрабатывается одним проходом (без квадратичных или nlogn алгоритмов), то да, миллион объектов мы должны успеть обработать. Но это потолок.
Распараллеливать - конечно хорошо, но для этого нужно подготовить архитектуру, причем еще не все вещи можно параллелить.
19 498958
>>498921

>Если тупо пару тысяч спрайтов заставить в рандомных направлениях на экране двигаться, то конечно ничего тормозить не будет.


А если эту пару тысяч спрайтов заставить двигаться по предрассчитанному пути, состоящему из горизонталей и вертикалей, то все внезапно начнет тормозить, я тебя правильно услышал?

>объекты взаимодействуют с тайлами и между собой (всякие ресурсы на конвейере)


Каким образом ресурс на конвеере взаимодействует "с тайлами и между собой"? По-твоему там физика с фрикциями рассчитывается, или что?

>для каждого завода нужно чекать ресурсы


>таймеры


Очень ресурсоемкие операции, анон.

>подавать сигнал манипуляторам, генерировать новые итемы


Очень ресурсоемкие операции, анон. А еще запуск анимации - это конечно очень механ и совсем не графен.

>а это все питается от электросети


Ну теперь убедил, точно! Из-за этого должно тормозить, да.
20 498959
>>498953

>Распараллеливать - конечно хорошо, но для этого нужно подготовить архитектуру, причем еще не все вещи можно параллелить.


Сейчас бы в 2018 подготавливать архитектуру для этого, ага. А 10к заводиков, приплюсовывающих инты, очень трудно распараллелить, ага.
21 498962
>>498958
>>498959
Что-то по делу можешь сказать, или только языком в лужу пукать?
22 498978
>>498962
Поднимай скиллуху в геймдеве и научись разбираться в игровых механиках прежде чем называть их сложными.
23 498983
>>498978
Разбирающийся, покажи что ты сложнее платформера с тремя объектами писал?
24 498987
>>498983
Я создатель Dwarf Fortress
25 498989
>>498987
Ну вот ты и слился, нубасик.
26 498990
>>498989
I can't understand, what're you saying. Speak English, please.

-Tarn Adams
27 498991
>>498990
Продолжай шутковать дальше, плюсователь интов. Игру с таким подходом ты не разработаешь.
28 498993
>>498962

>Куча аргументов


>что-то по делу можешь сказать?



Нахуй вы вообще с этим долбоебом общаетесь? У него мозгов больше чем тред создать все равно ни на что не хватит
29 498995
>>498993
Я хз, сижу подтралливаю его тут. Не понимаю, что он тут сидит, его давно послали на тематические форумы и в бложик разрабов.
30 498997
>>498993
У кого аргументы? У плюсователя интов?
>>498995

>Слился без аргументов


>Это я так подтралливаю))


Как скажешь.
31 498998
>>498997

>Как скажешь.


Долбаёб, ты бы радовался, что я бампаю твой тред.
А теперь в последний раз тыкаю тебя мордой

>тематические форумы


>бложик разрабов


Здесь тебе не клуб любителей и дрочеров факторио, никто тебе не поможет.
32 498999
>>498998
Ты какой-то глупый, школьник еще, видимо.
Я тебе просто пояснил в чем ты не прав, ты так ничего и не ответил по делу. К ОПу не имею никакого отношения, а ты зачем-то посылаешь меня на форум факторио.
sage 33 499000
Проиграл.

мимо->>498958-анон
34 499002
>>498999
Блять, ты реально умственно отсталый интернет-воен. Я тут два сообщения в треде оставил.
>>498987
>>498989
Ты мне говоришь, что я не прав в том, что Я ДАЖЕ НЕ ПИСАЛ БЛЯТЬ. И вообще интернет-борцун - не человек. Вымри.

>школьник еще, видимо.


Студент первого курса не палица
35 499004
>>499000
>>499002
Откуда у тебя столько рефлексии по поводу своего обсера, что такие маневры исполняешь, да еще и оправдываешься? Похоже на признаки слабости психики. Ну т.е. теория о школьнике подтверждается.
36 499005
>>499004

>рефлексии


>психики


Интернет психология - сигнал о толстоте. Кстати, ты не угадал ни с семёном, ни со школьником. Кормить я тебя больше не буду.
37 499006
>>499005

>сигнал о толстоте


>ты не угадал ни с семёном, ни со школьником


Ну ты там определись какой точки зрения придерживаешься, да. А то незрелость пока еще виднеется в твоих постах. Новизна студака как бы намекает.
38 499007
>>499005

> я не школьник ррряяяя


> пруфает студенческим, который еще и выглядит как первокурсника


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

мимо-дядя-30-лет
39 499008
>>499005

>Я уже не школота.


Ты студентота, что одно и то же.
40 499009
>>499006
>>499007
ne semeni pls

Покурил бложик факторио, загорелся запилить свой 3D клон. Надеюсь гдачеры одобрят
1291328762096.jpg89 Кб, 801x720
41 499010
>>499007
>>499008
лол, бугурт великовозрастных долблебов
42 499011
>>499009
Пили, главное чтобы не хуйня с плюсованием интов была.
sage 43 499012
>>499004
Продолжаю проигрывать.

мимо->>498958-анон
44 499013
>>499007

>который еще и выглядит как первокурсника


>>499006

>Новизна студака



Чуханчики, обложку на студак не пробовали купить? На моём ни пылинки за 4 года.
45 499014
>>499012
А отвечать когда будешь?
46 499015
>>499013

>На моём ни пылинки за 4 года.


И что тебе это дало? Однокурсники стали уважать? Однокурсницы стали давать?
47 499016
>>499015
Вопрос даунский конечно. Зачем ты носишь паспорт в обложке?
48 499017
>>499016
Вопрос даунский, конечно. Паспорт на более продолжительный срок дается, плюс более важный документ.
49 499018
>>499017
4-6 лет не длительный срок? В обложке студак не разъебывается в хлам и у него не расходятся края. Я вообще люблю беречь вещи.
50 499021
>>499018
Расходится в хлам, если ты криворукий чухан, не умеющий беречь вещи и который постоянно в джинсах дрочит этот студак.
51 499024
>>499021
Хорошо, ты прав, ты победил. Про новизну первый ты что-то спизданул.
Ты начинаешь холивары, когда кто-то тебя оскорбляет? Или просто так?
52 499030
>>499024

>Про новизну первый ты что-то спизданул.


Не новый и разъебанный - разные вещи. На не новом краска, естественно, слетает, и по мелочи что-то стирается в зависимости от интенсивности юзанья.

>Ты начинаешь холивары, когда кто-то тебя оскорбляет? Или просто так?


Только если настроение есть, в ответ на аналогичный троллинг.
53 499031
>>499030
Хорошо, анон. Надо быть добрее. и мне и тебе Просто злиться на посты в интернете - ебанутая хуйня.
54 499034
>>499031
Кто злиться-то? Вижу, что кто-то похуистично относится к аргументации, начинаю также, дабы не тратить лишние усилия, либо вообще забиваю, если лень.
55 499035
>>499034

>злиться


Злится, да
фикс
sage 56 499038
>>499014
На что отвечать? На визги местной школоты со сломанными детекторами я уже от души посмеялся.
57 499041
>>499034
Я уж точно. Другие аноны хуёво аргументируют, а я мимокрок по удар попадаю. Ну вообще, не стояло тебя оскорблять. Ты адекват
58 499042
>>499041
стоило
15038140519780.gif516 Кб, 200x148
59 499156
мимокрокожу мимо треда с крокодильным погромиздом-опом-студентотой-механоёбом, вижу опа хуя, вижу аргументы >>498958, срач по ГОСТу, бугуртом ОПа удовлетворён
60 499197
>>499156
Плюсую инты этому оральному оратору.
61 499309
пиздец программисты охуели че сложного то. инты приплюсовываешь, а межу этим условия всяие типо да/ нет. а разговоров то скольоко, так и я могу,
62 499411
>>498518 (OP)
В факторио нихуя сложного нет. Там стримится только рендер и начальная генерация чанков, как только чанк сгенерен - он тупо навсегда прописывается в оперативу, сгенеришь слишком много - пойдет по пизде. По рантайму ничем не отличается от TTD 94го блять года, можешь Опентытыдэ поковырять если интересует конкретика.

Самая захучанная ммо имеет более сложную архитектуру, всякий исходно-векторный кад/гео софт - еще более сложную.
sage 63 499489
>>499411

> он тупо навсегда прописывается в оперативу


Тупо прописал тебе залупой по губам
sage 64 499640
>>498586

>ленивые расчёты


Ребзи, че за ленивые расчеты? Есть ли что-то конкретное или это интуитивные решения. Например: вместо того чтобы просчитывать каждый предмет на конвейере, берется скорость поступления предметов на конвейер, а от расстояния получается время через которое предметы начнут появлятся на конечной точке?
sage 65 499641
>>499640
Сорян за сагу, случайно.
Еще, тут чел пишет про кучи предметов на конвейере. А ты змейку помнишь? Там убирается хвост и прибавляется голова, я уверен, на конвейерах так же но с небольшой анимацией.
Еще я думаю что при удалении камеры от группы рядом стоящих заводов, они упрощаются, их пространство не имеет особого значения. То есть, если к заводу подъсоединен конвейер с такойто скоростью поступления, то он производит вещи с такой то скоростью.
Если поставить рядом с конвейером манипулятор, то его выходная скорость уменьшиться и тд.
sage 66 499642
>>499641
О!, еще придумал. Стоят добывалки на шахтах, вместо того чтоб и итерировать уменьшение ресурса в рудниках, можно расчитывать время когда ресурс закончится, учитывая скорость добычи. Если наступило расчетное время, то скорость поступления на конвейер уменьшается. Если игрок пришел после расчетного времени на рудник, то проигрывать соответствующую анимацию.
Скорость конвейеров суммировать, если они пересекаются.

У конвейеров так же есть площадь, которую может занять определенное число ресурсов. Если места нету, то останавливать поступление.
67 499643
Да блин, тупая сага прицепилась, даже без галочки.
68 499644
бамп вместо саги
69 499645
бамп вместо саги
70 500032
>>498742

>Ох уж эти обезумевшие школьники.


Ну да, сборщик мусора, который будет релугярно проверять объекты никакого оверхеда не добавляет, так же как и N транзитных вызовов для каждого скрипта, которых, привязано N штук к КАЖДОМУ объекту и хуй знает как вообще там всё реализовано и как выглядит внутренний глобальный луп. Нет, ты конечно можешь сам загуглить, я не шарю в этих ваших юнитях.

>C++ - это не магический инструменткоторым хуйнул - и получил овер 9к быстродействия.


Вообще-то именно так и есть, если не писать как уебан офк.

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

Какие-нибудь не особо нужные или быстрые процессы можно вообще делать подконтрольно на свободное время, в террарии как-то так вода и реализована, судя по всему. Туда же объедение тайлов в чанки, и прочая хуйня.
sage 71 500104
>>500032

>сборщик мусора, который будет релугярно проверять объекты


Ох...
72 528240
Бамп
73 528430
>>498953
Ты походу путаешь игровые циклы и кадры в графике. На деле игровой мир там работает на каких-нибудь 10 фпс, нет ебаных объектов вообще (а тем более виртуализации), DDD во все поля, и еще меньшие фпсы для обработки удаленных регионов. Еще можно объединять плотные скопления механизмов (все карту все равно не застроишь чем-то сложным) и считать их отдельно от всей карты, а на статичную местность забить вообще.

И фактория таки лагает на моем атлоне x2 250.
74 529062
>>528430

> Ты походу путаешь игровые циклы и кадры в графике. На деле игровой мир там работает на каких-нибудь 10 фпс,


Нет, на 60.

> нет ебаных объектов вообще (а тем более виртуализации), DDD во все поля, и еще меньшие фпсы для обработки удаленных регионов.


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

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


Ты про что вообще? Статичная местность потому и статичная, что на ней ничего не происходит. Зачем ее просчитывать?

> И фактория таки лагает на моем атлоне x2 250.


Может, дело в видяхе, а не проце? Я себе лет 7 назад нищебук за 18к брал для учебы - на нем все норм работает, нужно до пизды огромную фабрику строить, чтобы начало тормозить. Пустая маленькая карта, по идее, вообще на любом проце не должна лагать, если видяха с отрисовкой справляется.
75 529100
>>500104

>Ох...


>Через пару месяцев юнитихолопы ебутся с сборщиком, который внезапно ТОРМОЗИТ, и всё это в соседнем треде


В голосину нахуй.
Тред утонул или удален.
Это копия, сохраненная 19 августа 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски