Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 2 3 4 5 [6] 7 8 9 вперед Ctrl→ все |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
После таких громких заявлений остаётся только удивляться почему эти игры имеют системные требования, превосходящие размер кэша на пару-тройку порядков. Posted via ActualForum NNTP Server 1.5 |
||
23 янв 21, 13:59 [22268126] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Не переживай. Про авторитетность — это был обычный литературный приём русского языка. С уголовными авторитетами не имеет ничего общего. Хотя и жаль, что я тогда, в 90-х, не был среди них. ![]() |
||||||||
23 янв 21, 14:05 [22268127] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
Я ванговал смерть ООП различными доводами 20908037. Но ты просто переплюнул меня ![]() |
||||
23 янв 21, 14:38 [22268134] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Просто кое-кто настолько ушёл в эмпиреи, что не в курсе, что синтаксис foo.bar() это просто сахар для bar(&foo)... Posted via ActualForum NNTP Server 1.5 |
23 янв 21, 14:41 [22268136] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
)) прикольная тема) |
||||||||
23 янв 21, 14:51 [22268140] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
Придётся отдельно звать init_pig(), в доках писать, чтобы не забыли позвать init_pig(), придумывать deinit_pig() и прочий гемор... зачем? Когда есть классы. А компилятор всю твою писанину всё равно разложит по простейшим функциям. Это всё только для людей. |
||||||||
23 янв 21, 14:55 [22268143] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
вряд ли именно эти игры тема то рабочая ну и от кач-ва разрабов же ещё зависит параллелить игры тоже надо уметь Сообщение было отредактировано: 23 янв 21, 14:51 |
||||||
23 янв 21, 14:57 [22268145] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
А, ну то есть в теории DoD работает, а на практике никем никогда не используется. Ок... Posted via ActualForum NNTP Server 1.5 |
||
23 янв 21, 15:05 [22268150] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
Это просто чудесно. Самое забавное что этот-же тезис приводился и на лекциях по Haskell. |
||||
23 янв 21, 15:06 [22268151] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
да, вообще никем не используется
ну так везде компиляторы раскладывают в асм, а там ооп нет, там всё элементарно Сообщение было отредактировано: 23 янв 21, 16:32 |
||||||||||||||
23 янв 21, 16:39 [22268173] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
работает так быстро потому что в ней использовали дод". Хоть что-нибудь из этого использует дод? И если нет, то почему? Сообщение было отредактировано: 23 янв 21, 16:43 |
||
23 янв 21, 16:47 [22268176] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
Сорцы Doom https://github.com/id-Software/DOOM |
23 янв 21, 17:29 [22268180] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
ну вот же на ютубе видео есть его с конфы он пока не очень распространён, это надо понимать, потому что парадигма совсем другая и все движки надо переписывать да и знатоков пока мало так а ты что, не согласен с тем, что процу приятнее SoA ? Сообщение было отредактировано: 23 янв 21, 17:40 |
||||||
23 янв 21, 17:47 [22268187] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Не так давно тут кое-то топил за "Вулкан - лучший движок во вселенной, который убьёт все остальные". Вулкан использует ДоД? И если нет, то почему?
Я не согласен с тем, что игровые данные могут влезть в кэш. Posted via ActualForum NNTP Server 1.5 |
||||
23 янв 21, 17:53 [22268188] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
Сильно сомневаюсь что нам предоставят возможность смотреть сорцы современных игр. Игры - это дорогое ноу-хау. И разрабы не хотят давать возможность конкурентам копи-пастить их идеи и быстро внедрять. Реверс-инжинеринг наверное возможен но по срокам скорее всего не уложится в бизнес-планы современного геймдева. Иногда недостаточно даже сорцов. Нужна сопроводительная документация и ответы на вопросы от создателей. Что уж тут говорить о реверсе. Однако мы можем посмотреть в игровые движки. Они - достаточно современные и среди них есть опенсорцные. И по ним тоже сделать какие-то суждения о DoD. Вот тут я 5 штук нашел https://dzone.com/articles/top-5-free-and-open-source-game-engines-you-should |
||||
23 янв 21, 18:39 [22268193] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
А они и не влезают никогда. В кеш вообще ничего не влезает. Но мы в топике скорее говорим о проценте или о процентиле удачных попаданий чтения-записи кеш-линий игровым алгоритмом настолько, что дальнейшее например удвоение кеша - не удваивало-бы перформанс. А это означает что на кривой оптимизации мы вышли на тот уровень когда уже "можно остановится". |
||||
23 янв 21, 18:42 [22268194] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Забавно, что Вулкана-то между ними как раз нет. Posted via ActualForum NNTP Server 1.5 |
||
23 янв 21, 18:57 [22268198] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
Вулкан это не то. Это еще более LowLevel. Насколько я понимаю это аналог OpenGL/Direct3d. И все игровые движки дёргают API этого вулкана а он уже дергает конкретные методы драйвера видеокарты чтоб положить в конвейер 3D модельки. |
||||||
23 янв 21, 19:00 [22268199] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Тут скорее Сибиряков имеет в виду, что ДоД хорош в теоритических задачах. Типа в массиве структур посчитать сумму одного поля. Мы переделываем массив структур на структуру массивов и вуаля — рост в шесть раз! Но на практических задачах разработки игр это не работает. Нет таких алгоритмов. |
||||||||
23 янв 21, 19:01 [22268200] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Если я правильно понял, этот ДоД вообще узко специфическая вещь. Если у нас есть данные о миллионе звёзд и на каждую звезду по сотне характеристик. И нам нужно пробежаться по одной характеристике для всех звёзд, то, конечно, ДоД хорош. Более того, эти массивы характеристик и на винчестере тогда должны лежать отдельно, а не структурами. Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока? |
23 янв 21, 19:19 [22268207] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
он замена directX для линух |
||||
23 янв 21, 19:23 [22268209] Ответить | Цитировать Сообщить модератору |
tip78 Member Откуда: Москва Сообщений: 1266 |
не теми категориями мыслишь... за 1 секунду 60 раз надо картинку просчитать за 1 секунду она будет фактически статичная а технически она и 2-3-5-10 секунд будет иметь повторяющиеся элементы Сообщение было отредактировано: 23 янв 21, 19:20 |
||||
23 янв 21, 19:25 [22268210] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51018 |
petrav, да. Я знаком с Data-Oriented-Design не со стороны геймдева а со стороны баз данных или BigData. Например если у нас есть бизнес-аналитика по fundamentals крупных компаний то выгрузка такой аналитики будет представлять собой очень широкие и разрежённые таблицы (порядка 500-1000 колонок) и в традиционном способе хранения (если их хранить как data-rows) - выборка будет неэффективной. Примерно так-же как со звездами. Дата-аналитик может запросить например 1-ю колонку и 500-ю и 900-ю. Специально для таких хитрых запросов данные разворачивают в векторы примитивов (по сути поворачивают таблицу набок) и сжимают чем-то вроде Gzip/Snappy и далее - уже считывают с диска сегменты 1/500/900 колонок. И вместо например 1 Терабайта спокойно обрабатывают 1 Гигабайт что само по себе в тыщу раз быстрее. Для этого есть спецом форматы хранения Apache Parquet, Apache ORC. И форматы эти на 99% read-only. Тоесть их 1 раз создают чтобы хранить всю жизнь без модификаций. Тоесть они - не для транзакций. А просто для сбора сведений и всяких там машинных обучений и поиска закономернойстей между колонками. В базах данных (Oracle 11g) тоже была введена попытка такого колончатого хранения инфы но я к тому времени уже не админил ораклы и не успел с этой техникой плотно поработать. Поэтому как оно там щас работает - я не знаю. Так что не только геймдевом одним дышит DoD. Вообще мне кажется DoD - это не про С++ а просто про оптимизацию доступа к данным. |
23 янв 21, 19:36 [22268217] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Ты бы пример алгоритмов привёл. А так я даже не понял про какую категорию ты говоришь. PS: Когда я серьёзно играл в WoW пинг 30 миллисекунд считался критическим. Как-то к нам в гильдию чувак написал резюме. Его спросили: под вами загорелась лужа, за какое время вы из неё выберитесь учитывая ваш класс? Он ответил за 0.3 секунды. Ему сказали: вы что с ума сошли, нужно отвечать мгновенно, в приёме отказано. А у вас целую секунду картинка статическая. ![]() |
||||||||
23 янв 21, 19:38 [22268220] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Что там приводить? Это было даже до шейдеров. Вся отрисовка в OpenGL происходит так: 1. фаза - создание меша или массива точек фигур в видеокарту glVertexPointer(3, GL_FLOAT, 0, Mesh.GLMeshLines); 2. фаза - команды отрисовки всего что отправили через glDrawArrays: procedure(mode: GLenum; first: GLint; count: GLsizei); stdcall; Какой тут нафиг ООП? |
||||
23 янв 21, 20:23 [22268232] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 2 3 4 5 [6] 7 8 9 вперед Ctrl→ все |
Все форумы / C++ | ![]() |