nes
Думаешь я не знаю ? Давай посморим что на си в разы больше шансов сделать ошибку ?
Zab
В Quake 2 примерно 100к строк на С. Это гигантские объемы или нет ?
QEMU - 1.7М строк на С (Но да, там есть Qemu Object Model реализованная на С)
PostgreSql - 1.3М строк на С
Ядро Linux даже обсуждать смысла не вижу в контексте объемов.
А отвечать на тупые вопросы, можно только тупыми ответами (ответный троллинг), либо игнорировать.
Hart1gan
Сравни код кваки и анрила .... Что проще ?
innuendo
Наверное не очень корректное сравнение, в смысле что Quake 2 это игра вышедшая в 1997 году, со всеми вытекающими (В плане того, что там творится в исходниках на тему удобства восприятия, назовем это так)
Очевидно, что код UE5 намного лучше организован хотя бы по структуре самого проекта, и сами исходники читаются намного проще, это если в двух словах. Да и в плане С++, наверное это одна из лучших кодовых баз что я видел.
Это правда все равно сводится к тому, что можно плохо и хорошо написать проект на обоих языках.
Но это отвечает на вопрос, что да, на С можно написать игровой движок, просто не сильно здоровенный и написать что-то на уровне современного UE5 в плане возможностей и объемов, нормально скорее всего не выйдет (как раз из-за отсутствия "из коробки" способов нормально управлять сложностью).
предлагаю знатокам и у кого есть UE5 помочь "профессору", там же простой код должен быть
https://gamedev.ru/unreal/forum/?id=283377
на Си- движок можно и нужно делать. Проблемы только с библиотеками актуальными, для разных платформ, потому что винегрет по графическим api. Ну и скриптовый движок тоже придётся какой то подтягивать, чтобы сами игры- требовали только одного бинаря под каждую платформу, остальное делает одинаковый скрипт на всех платформах.
только на Си и можно нормальный движок сделать. На чём то другом это будет долгострой. А на Си- легко и просто, там весь язык можно за год досконально выучить.
Если хочешь чтобы движок был быстрым - то придется делать на си, выбора нет.
Абсурд какой-то. Быстрым движок делают драйвера и оболочки типа опенжеэл, директикс и вулкан. А для вызова их функций нет ни малейшей разницы, использовать Си или питон, или луа. Нет, конечно, разницу в миллисекунды найти можно, но она не играет ни малейшей роли на фоне всего остального.
Hart1gan
Нормальное соавнени вышли в один год
Как вспомню векторадд в ку так вздрогну
Developer_A
> Не уверен, что С/С++ сильно повлияет на производительность движка (мы же говорим, про большие проекты?).
Уверен в обратном.
Если написать движок не через жопу, а с любовью к оптимизации, то проца он будет жрать значительно меньше чем даже анрил, не говоря уже о юнити.
pool2004
> Нет, конечно, разницу в миллисекунды найти можно, но она не играет ни малейшей роли на фоне всего остального.
... и потом читаешь в описании игр в списках требований к железу "минимум i7".
pool2004
> разницу в миллисекунды найти можно, но она не играет ни малейшей роли
Смотря для чего, нынче хочут чтоб 16 мс на все про все. Если 3 спрайта, 2 нпц, то да, миллисекунды можно не считать
MikeNew
> Уверен в обратном.
> Если написать движок не через жопу, а с любовью к оптимизации, то проца он будет жрать значительно меньше чем даже анрил, не говоря уже о юнити.
С++ обладает большими выразительными способностями для снижения сложности программы.
Современный движок - это многопоточное приложение, на котором несложно и понятно писать игры.
Где в сам проект движка уже заложено решение многих проблем (кроме очевидного: я, как игровой программист, например, хочу удобным для себя образом добавлять ноды в фреймграф или ECS системы, в 2 строчки кода. Хочу легко запускать многопоточный код в игровой логике, использовать Conitunation'ы/Task'и, и грузить ресурсы в бекграунде по требованию, как это сделать в две строчки на С?).
С, как язык, позволяет мне снижать сложность программы (макросы, миксины и void*), но код становится грязным и более неприятным, чем аналогичный на С++.
При этом, сам выигрыш производительности (допустим, даже 15%! на инструкциях), ничего не стоит, если для написания проекта потребуется на порядок больше времени. А пространства для оптимизация *во внешней логике* гораздо больше, чем *в инструкциях*. Т.е. имея удобные средства выразительности С++, я смогу легко писать код, который будет выполняться в нужное время на нужном ядре с нужными примитивами синхронизации/памятью и т.д., а на Си я буду плодить классы/программировать на макросо подобном языке, где скрытых ошибок будет больше (в сравнении со стройным С++ кодом).
Ну вот как-то так. Какие-то системы, конечно, можно перенести на С, но писать большой движок/проект - на мой взгляд не рационально (можно лучше и быстрее на других языках).
innuendo
>Как вспомню векторадд в ку так вздрогну
И шо с ним не так?
nes
Распиши a*b+c
innuendo
a * b + c.
Тема в архиве.