@Dmitriy419

Каковы рзличия во взаимодействии с железом в системном программировании и создании игровых движков?

Доброго времени суток!
Вопрос довольно необычный и может показаться вам странным(да что уж там, он мне кажется странным), но я все же попробую.
Хотелось бы подробнее узнать о различиях во взаимодействии с железом при создании движка и при системном программировании.
Интересны обе области.
Также хотелось бы узнать какое из направлений требует бо́льших знаний и навыков (это меня ни в коем случае не отталкивает, даже наоборот).
Ну и конкретно по геймдеву. Какое место при создании тех же движков занимает язык Си?
Вопрос конечно тот ещё, но буду рад если кто-то примет его и ответит;)
Заранее благодарю!
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Если вы имеете в виду написание ОС, исключая написание драйверов, то в обоих случаях взаимодействие с железом никакое. ОС - это набор хитрых алгоритмов для доступа к ресурсам. Игра - по сути то же самое, только подчиняется ОС, у которой власти больше, но обычно ОС предоставляет игре всё, что только можно (кроме системных файлов разве что).

В системном программировании больше упор на совместимость, баги не допустимы, особенно критические, потому что ставят под удар персональные данные, номера карт и т.д. В геймдеве же упор на скорость, если игра "крутая", как говорится, с переизбытком графики, отдельных объектов и мозгов у npc. Баги считаются нормой (к сожалению) и просто фиксятся по мере накопления жалоб, а порой на них даже забивают.

Если игра не очень нагруженная, то нет смысла для неё использовать Си. Вообще. Потому что на первый план выступают уже другие вещи, такие как геймплей и контент. А также маркетинг. И это уже тёмная область для программиста, который с геймдевом не имел дела до этого. Это очень обширная область, в которую нужно входить отдельно и с пониманием, что от идеи до реализации - как до луны. Ведь для ОС есть конкретные требования, что она должна уметь (с чем должна быть совместима). А для игры требований нет - полная свобода, что сделаете, то и будет, то есть это искусство. И без опыта надеяться, что игра себя окупит, очень наивно. Игра требует широкого набора навыков, не только в программировании, и не рекомендуется делать в одиночку, потому что не будет профита от разделения труда (т.е. придётся много учиться). А в случае с ОС всё упирается просто во время реализации, которое, очевидно, долгое. В обоих случаях с друзьями веселее, что немаловажно.

Если дело касается низкоуровневого программирования, то это по сути означает выполнение несвойственной программисту задачи, потому что тонкости оптимизации лучше перенести в написание драйверов. А в начале своего опуса я специально исключил эту тему. Но иногда приходится, да. Собственно, первые игры по сути были основаны на базе самописных движков, после чего и началась вся движуха с ускорением графики. Но сегодня есть всякие directx opengl vulkan, а над ними куча более сложных игровых движков, так что нет смысла изобретать велосипед.

Насчёт Си в целом я бы усомнился на самом деле. В наши дни очевидны некоторые недостатки Си и С++. Эти языки будут ещё долго существовать, потому что за ними тянется большой багаж, и нужно много чего старого поддерживать. Главная фича С\С++ - это скорость работы готовой программы. Но нынче новые языки метят в лидеры по простоте, удобству, защищенности и скорости компиляции. И некоторым уже несколько лет. То ли еще будет. Думаю, однажды Си даже в НАСА отдаст пальму первенства другому языку.
Ответ написан
@nrgian
Откуда у вас такие древние сведения?

С железом при создании игры взаимодействия нет. Всё взаимодействие идет через драйвера, а не непосредственно. И так уже лет 20, пожалуй.

Но вплоть до конце 20-го века ваш вопрос еще имел смысл.

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


Это очень разные знания.
Ваш вопрос звучит примерно так: что требует больших знаний - вождение автомобиля или стрельба из снайперской винтовки?
Несравнимо.

Ну и конкретно по геймдеву. Какое место при создании тех же движков занимает язык Си?

Да такое же как и C# или JS или Kotlin, к примеру.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы