Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

Цитата

Уважаемые... Наверное, многие сталкивались с необходимостью изменить аи-сетку. Собственно при работе с уже существующим спавном - помогает universal_acdc -update. А что делать со скриптовым create()? Вариант - переснимать координаты - не подходит, ибо когда таких объектов 100 - это еще реально. А вот когда 9000 - это жестоко. Кто нибудь пытался облегчить решение этой проблемы со стороны движка?

Сначала с пеной у рта доказывали всем, что all.spawn - жуткое зло, и только скриптовый спавн спасет всех от этого кошмарного пережитка, доставшегося нам от ПЫСов. А теперь: "... когда 9000 - это жестоко". Мда...

Хотя, уже давно как-бы разобрались, что при скриптовом спавне движок использует только координаты и гейм-вертекс, по которому определяет локацию на которой спавнить. А левел-вертекс ему пофиг...

Ссылка на комментарий

9000 одних только курьеров неписей - вот в олспавне им самое место, да. (+хотя-бы один ствол, +пачка патронов, +фонарик) == 36000 объектов. Я не знаю, прочитается ли этот олспавн чем-нибудь вообще как файл, но вот запустится ЭТО - вряд-ли.

Ссылка на комментарий

@Dennis_Chikin, что такое аллспавн - это геймграф 95% и 5 % спавн (ЗП) - не вижу проблем. Хотя 65000 объектов никогда не спавнил. Это же напрямую оператива и буфер обмена. :biggrin: Чем массивнее железо, тем больше шансов проскочить момент ступора (до 4Г - ЗП и 2Г - ТЧ - дальше все равно кирдык).

 

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
15 часов назад, UnLoaded сказал:

 А левел-вертекс ему пофиг...

-1 предполагается?

 

 

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

В ЗП под id объекта отведено 32 бита ?

Ну а в ТЧ - 16.

 

Кроме неписей наверняка есть живность и всякие костры/лампочки...

Ссылка на комментарий

https://www.youtube.com/watch?v=PGrwjtUOpps

Сейчас только на видео заметил в Нео Аксис движке есть солнечные лучи.

А движок не выше dx9? Прикольно, но почему в сталкере лучи появились с dx10?

 

Сам и отвечу: Фаркрай-3 dx9 - есть солнечные лучи.

Логично, что в ТЧ можно было добавить лучи, даже не прибегая к таким правкам как в Лост-Альфа.

 

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

a97be252078397cfffaefc0c5e0f50f61fadf228

 

Никаво себе рендер на dx9. Звезда в шоке. Спрашивается - зачем делали dx10. Тестирую двиг бесплатный.

 

Лучи солнца и бампы появились с dx9. А что принёс dx10 - капли дождя? И то не факт, что это не было в dx9.

Короче, разрабы Сталкера нас развели с dx10 по полной. Смыла не вижу в нём, они и dx9 до ума не довели.

 

Траки гусениц (пиксельный шейдер) появились еще наверно с dx8 или dx3 - мимо. А кому это надо? Если надо было бы реализовали. Полуфабрикат x-ray.

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@Zagolski , спорная ситуация. Зачем хранить в видеопамяти - она стоит дороже. Или там что то с быстротой реакции лучше.

Оптимизировать надо лучше локации и не надо так извращаться с текстурами. Опять мой любимый ФарКрай 3 вспомним dx9 и остров (даже два), как вся трилогия Сталкера в кучу - тянет и не пищит.

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

По оперативной предел 2 гига, дальше пойдут вылеты по нехватке. Отгрузив все текстуры в видеопамять по сути в неограниченном кол-ве, мы редко когда за 1.5 перевалим даже на огромных локах (обычно 1.1-1.2). И никаких х64 не нужно. Особенно на больших модах хорошо заметно, иногда очень быстро игра валится из-за забивания оперативки на дх9, как раз именно текстурами в большинстве случаев. На дх10/11 этой проблемы нет даже близко.

  • Согласен 1
Ссылка на комментарий

Почему производители процессоров существенно завышают реальное быстродействия. Реальные тесты показывают существенно меньшие быстродействия.
https://ru.wikipedia.org/wiki/FLOPS
Вот реальный тест вычисления умножения матрицы. Реальный код из XRay, функция mul_43.
https://yadi.sk/d/vVm-Y5Fm3NBuaC
Что у меня получилось, ну во первых, сам тест может не очень корректный, но какой есть, всё равно покажет какое быстродействие.
А меня AMD Athlon II X4 640 3.01 ГГц.
FPU тест: 138 тактов
SSE тест: 56 тактов, если сделать инлайн код, то 49-50 тактов.
Далее подсчитаем сколько float операций было сделано:
36 умножений и 27 сложений float для FPU
36+27=63/138*3.01e9=1.37 ГФлопс на ядро.
А для SSE всего выполняется: 12 mulps, 9 addps что соответствует 12*4 = 48 умножений и 9*4 = 36 сложений = 84 операций float.
48+36=84/50(инлайн код)*3.01e9=5.057 ГФлопс на ядро.
Хотя полезное быстродействие немного меньше (3.7926 ГФлопс).
И всё равно реальное быстродействие существенно меньше заявленного, зависит от кода и так от компилятора, лишь хороший понимающий программист совместно с хорошим компилятором может создать код, который может выдавать быстродействие близкое к пиковому, но обычно никогда его не достигающий. А если использовать древние компиляторы(Delphi 6, 7(оптимизация для 386 или 486)) то там быстродействие ещё меньше.

ЗЫ
Кто может программку погонять, хочу узнать сколько выполняется на core i7, а так же на бульдозере и прочих экскаваторах.
SSE код может быть не оптимизирован под новые архитектуры, т.е. с более мощным конвейером.

  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий
On 9/25/2017 at 5:49 AM, НаноБот said:

Почему производители процессоров существенно завышают реальное быстродействия.

Ты же сам и ответил на вопрос. Потому что реальное быстродействие зависит от приложения и от компилятора. К числу факторов могу ещё добавить скорость работы оперативной памяти. Память - это вообще узкое место современного компьютера, поскольку работает в несколько раз медленнее процессора. Как-то это компенсируется кешами, но есть куча приложений, где кеш не помогает, и скорость вычислений сводится к скорости чтения/записи. Собственно, это как раз и делает, среди прочего, реальную скорость вычислений так сильно зависимой от приложения, поскольку в разных задачах сильно разнится соотношение и порядок чтения/записи/вычислений.

  • Нравится 1
  • Полезно 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Ооо, да goto это же целый мем, про goto можно дискутировать месяцами (намеренное преувеличение) почему его нельзя/можно использовать.

goto.png

Поищи в интернете "why is goto operator deprecated". Ну или по русски "почему нельзя использовать goto", тоже находит неплохие статьи/форумы.

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

  • Полезно 1
  • Смешно 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Причем, заметим, ни один из jmp/br из процессоров ни куда не делся. А отсутствие как goto, так и continue одновременно можно наблюдать в том же LUA, с результатом слегка предсказуемым.

 

А, да, самое смешное, что результат работы компилятора с любым if/for/while и т.д., не говоря о case, в итоге все равно в 146% случаев состоит из j[flag] offset, jmp offset/addres, или даже вообще j* label, jmp ... label: jmp ...

Ссылка на комментарий

От goto можно и нужно избавляться, даже MASMe, макросы .if .else, .endif и т.д. позволяют делать легко читаемый код, который легко портируется в С++. Я вот раньше думал что в поисковых алгоритмах надо использовать goto, но я сейчас знаю как написать код на lua или C++ где можно обойтись и без  этого оператора.

Я сейчас с смартфона, но всё таки попробую показать код.

function search_str(str)
    for i=1, #tbl do
        if tbl[i]==str then return true, i end
    end
    return false
end

Идея понятно, код оформляем в функцию, которая возвращает булеву. Понятно, цикл может сколько угодно быть вложенным, так же можно вернуть индекс таблицы. В С++ код можно сделать инлайн, что бы быстрей работал.

Изменено пользователем НаноБот
вставил код

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий
18 hours ago, Desertir said:

даже один этот оператор может превратить поддержку (дебаг, исправление или просто понимание логики работы кода) в кромешный ад

 

Не надо преувеличивать проблему. В точно такой же ад может превратить дебаг, исправление, понимание и т.д. не использование этого оператора там, где это уместно. Как, к примеру, в вышеприведённом совете паковать вложенный цикл в функцию.

 

В С++, кстати, полно замаскированных операторов goto: switch, break, continue, множественные return - это всё по сути операторы goto.

  • Полезно 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
12 часов назад, Malandrinus сказал:

В С++, кстати, полно замаскированных операторов goto: switch, break, continue, множественные return - это всё по сути операторы goto.

Duff device :)

Цитата

strcpy(to, from, count)
register char *to, *from;
register count;
{
    register n = (count + 7) / 8;
    if (!count) return;
    switch (count % 8) {
    case 0: do { *to = *from++;
    case 7:      *to = *from++;
    case 6:      *to = *from++;
    case 5:      *to = *from++;
    case 4:      *to = *from++;
    case 3:      *to = *from++;
    case 2:      *to = *from++;
    case 1:      *to = *from++;
               } while (--n > 0);
    }
}

И ни одного гото.

Ссылка на комментарий
3 часа назад, Malandrinus сказал:

Не надо преувеличивать проблему. В точно такой же ад может превратить дебаг, исправление, понимание и т.д. не использование этого оператора там, где это уместно.

Так можно сказать про любую архитектуру, которая написана двумя левыми руками. Проблемы же не в компьютере, а в субъекте по ту сторону клавиатуры.

Я так полагаю, goto выиграл у других операторов по частоте появления в таких "левых" программах и их кривость обусловливалась этим самым goto. Типа на кодревью или в легаси "Что тут делает этот goto, омг, зачеееем, когда надо было так?".

3 часа назад, Malandrinus сказал:

В С++, кстати, полно замаскированных операторов goto: switch, break, continue, множественные return - это всё по сути операторы goto.

Я предлагаю не обсуждать неявные использования, на эти выражения наверняка есть десятки, если не сотни, тестов для основных используемых компиляторов.

2 часа назад, abramcumner сказал:

Кроме goto меня в ступор вводили разве что ацкой длины условия в if'ах и безумное кол-во case'ов. Остались циклы, но у меня с ними хорошие отношения :)

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...