Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 March 17

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Ali Kalmenov
Имеет смысл если пишешь код под конкретное железо (маломощное). Ну и что бы компилятор выдавал производительный код его (компилятор) следует очень хорошо знать, что бы сконфигурировать для генерации производительного машинного кода (а ещё сам исходный код на Расте надо специальным образом кодить)
LLVM лучше тебя знает, как оптимизировать код на конкретную архитектуру. Вряд ли ты тупо сумеешь собладать со всеми платформами. Ныне куда важнее минимально промахиваться по кэшу, чем юзать супербыстрые операции и адресную арифметику.
источник

BD

Berkus Decker in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
Я вообще привык к RAII насколько, что мне проще с ним, чем с GC. + RAII заставляет правильно раскрадывать мир по полочкам(концепция владения, борровинг). + объекты уничтожаются когда надо.

Но RAII быстрее GC, но в случае горячей замены кода и частичных отказов.. можно получить вечные объекты, потому что из-за отваливания объектов тупо не декрементятся счётчики.
счетчики это не RAII, это ARC
RAII в расте без счетчиков, да и на плюсах тоже можно сделать без них, так что разные вещи
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Ali Kalmenov
Имеет смысл если пишешь код под конкретное железо (маломощное). Ну и что бы компилятор выдавал производительный код его (компилятор) следует очень хорошо знать, что бы сконфигурировать для генерации производительного машинного кода (а ещё сам исходный код на Расте надо специальным образом кодить)
Вообще я сторонник писать максимально абстрактно, а лишь затем оптимизировать, если вообще когда-то руки до этого дойдут. То, что можно оптимизировать, я помечаю TODO. Раньше вот я болел оптимизацией, в итоге тупо получал много гейзенбагов из-за своих стандартных библиотек.
источник

AK

Ali Kalmenov in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
LLVM лучше тебя знает, как оптимизировать код на конкретную архитектуру. Вряд ли ты тупо сумеешь собладать со всеми платформами. Ныне куда важнее минимально промахиваться по кэшу, чем юзать супербыстрые операции и адресную арифметику.
Coвсем не обязательно, что ты будешь программировать под LLVM
источник

BD

Berkus Decker in RU Rust GameDev — русскоговорящее сообщество
Ali Kalmenov
Coвсем не обязательно, что ты будешь программировать под LLVM
ну на расте - будешь, с 99% вероятностью
источник

AK

Ali Kalmenov in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
Вообще я сторонник писать максимально абстрактно, а лишь затем оптимизировать, если вообще когда-то руки до этого дойдут. То, что можно оптимизировать, я помечаю TODO. Раньше вот я болел оптимизацией, в итоге тупо получал много гейзенбагов из-за своих стандартных библиотек.
Нет, если ты сам кодишь инди проект для себя и/или узкой ЦА, то в принципе вообще всё равно, хоть на Ассемблере всё делай, хоть на Lua 😜
источник

AK

Ali Kalmenov in RU Rust GameDev — русскоговорящее сообщество
Я говорил скорее про всякие AAA проекты с бюджетами в сотни лямов бачей
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Ali Kalmenov
Имеет смысл если пишешь код под конкретное железо (маломощное). Ну и что бы компилятор выдавал производительный код его (компилятор) следует очень хорошо знать, что бы сконфигурировать для генерации производительного машинного кода (а ещё сам исходный код на Расте надо специальным образом кодить)
а много ли медленного железа? Я вот не понимаю, ну нахрена юзать микроконтроллер за доллар, когда можно купить контроллер за 3, какой-то STM-32, который даст тебе 50мгц и 32 бит, FPU, ARM и тд. В итоге у тебя тупо длинные цифры будут быстрее складываться, вот u32 в 2-4 раза. Зато ты куда меньше потратишь на программеров, что бы они мучились. См в инете историю, как чуваку из 128 байт не хватило одного байта.
источник

AK

Ali Kalmenov in RU Rust GameDev — русскоговорящее сообщество
И огромными распределёнными командами
источник

AK

Ali Kalmenov in RU Rust GameDev — русскоговорящее сообщество
Бюрократия, кранчи, аутсорс
источник

BD

Berkus Decker in RU Rust GameDev — русскоговорящее сообщество
> См в инете историю, как чуваку из 128 байт не хватило одного байта.

пришли ссылочку, люблю такие истории
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Ali Kalmenov
Coвсем не обязательно, что ты будешь программировать под LLVM
так в расте он, и в Clang-е. Вообще имхо время монолитных компиляторов прошло. Лучше разделять сам ЯП и железячников.
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Berkus Decker
счетчики это не RAII, это ARC
RAII в расте без счетчиков, да и на плюсах тоже можно сделать без них, так что разные вещи
скорее всего, ты прав. ARC как расшифровывается?
источник

SK

Sergey Korotkov in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
есть случаи, когда jit обгонял кресты и С. Но эти случаи не относятся к геймдеву. Но если у тебя много циклов, они юзают 5 переменных, а у тебя лишь две из них действительно юзают, то в теории jit может сильно упростить цикл и ты получишь куда большее быстродействие, чем если кресты или раст последовательно всё выполняли.

Имхо, скорее главное зло это GC.
Про gc согласен - зло, по крайней мере в геймдеве. Про jit опять же в теории, да, он может поменять местами бранчи если условный x ==  5 встречается чаще других. Но ему для этого надо где-то эту стату собирать, считать, а это все те же ресурсы.
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Ali Kalmenov
Нет, если ты сам кодишь инди проект для себя и/или узкой ЦА, то в принципе вообще всё равно, хоть на Ассемблере всё делай, хоть на Lua 😜
в ААА не шибко то и оптимизируют имхо. См браузер хром =)) Там как раз важны художники, дизайнеры. А кода имхо там не так уж и много. Особенно учитывая, что у компании этого кода ещё с 10 старых игр.

Но имхо, ААА это вообще плохо. Ныне все игры и фильмы ААА какое-то дерьмо. Потому что у них максимально широкая аудитория — им надо угодить и умным, и детям, в итоге детские шуточки для умных и непонятный смысл для детей — ни рыба ни мясо.
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Berkus Decker
> См в инете историю, как чуваку из 128 байт не хватило одного байта.

пришли ссылочку, люблю такие истории
источник

SK

Sergey Korotkov in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
скорее всего, ты прав. ARC как расшифровывается?
Подозреваю шо atomic reference counting
источник

AK

Ali Kalmenov in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
в ААА не шибко то и оптимизируют имхо. См браузер хром =)) Там как раз важны художники, дизайнеры. А кода имхо там не так уж и много. Особенно учитывая, что у компании этого кода ещё с 10 старых игр.

Но имхо, ААА это вообще плохо. Ныне все игры и фильмы ААА какое-то дерьмо. Потому что у них максимально широкая аудитория — им надо угодить и умным, и детям, в итоге детские шуточки для умных и непонятный смысл для детей — ни рыба ни мясо.
Просто рыночек так порешал (чёрт, у меня въетнамские флешбэки из Rust offtopic'a)
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Sergey Korotkov
Подозреваю шо atomic reference counting
вот тоже так думаю. Но Atomic тут вряд ли нужен.
источник

ДК

Денис Котляров in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
а много ли медленного железа? Я вот не понимаю, ну нахрена юзать микроконтроллер за доллар, когда можно купить контроллер за 3, какой-то STM-32, который даст тебе 50мгц и 32 бит, FPU, ARM и тд. В итоге у тебя тупо длинные цифры будут быстрее складываться, вот u32 в 2-4 раза. Зато ты куда меньше потратишь на программеров, что бы они мучились. См в инете историю, как чуваку из 128 байт не хватило одного байта.
помню историю про нехватку байта.

но это конечно оффтоп. но.

зависит от архитектуры. и какбы это.. экосистемы.

возьмем ваш пример, мощный ARM процессор (по встраиваемым). много озу. ляля.

но.

возьмем пример из жизни.

хорошие и мощные arm процы обычно работают на 3.3V логике. + добавим сюда в погоне за производительностью и программинг крайне скудные аналоговые и digital порты.. + если возьмем esp контроллеры. там кучу хрени типо пины используются для загрузки контроллера. это жуть когда ты поставил свою логику на пины. но при старте контроллера он с ними делает все чтобы запустить себя. дальше, esp вайфайная штука и очень не любит длинные цикловые функции. на легких проектах у вас будет ок. а на тяжелых отлетать вафелька.

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

+ добавим что у разного проца своя сформированная экосистема из набора апи и бибоиотек под внутренние аппарат возможности.

это можно продолжать вечно
источник