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

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


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

  Цитата

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

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

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

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

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

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

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

 

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
  19.08.2017 в 17:42, 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

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

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

Ссылка на комментарий
  25.09.2017 в 09:49, НаноБот сказал:

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

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

  • Нравится 1
  • Полезно 1
  Полезный утиль (Показать)
Ссылка на комментарий

Ооо, да 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

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

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

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

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

Ссылка на комментарий
  19.11.2017 в 01:18, Desertir сказал:

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

 

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

 

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

  • Полезно 1
  Полезный утиль (Показать)
Ссылка на комментарий
  19.11.2017 в 20:55, 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);
    }
}

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

Ссылка на комментарий
  19.11.2017 в 20:55, Malandrinus сказал:

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

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

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

  19.11.2017 в 20:55, Malandrinus сказал:

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

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

  19.11.2017 в 21:44, abramcumner сказал:

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

ТЧ 1.0004. SAP и Trans mod

github

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

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

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

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

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

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

Войти

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

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

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