ПрограммированиеФорумОбщее

Свой игровой движок на C(Си) (4 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#45
20:16, 6 мая 2024

nes
Думаешь я не знаю ? Давай посморим что на си в разы больше шансов сделать ошибку ?

#46
20:29, 6 мая 2024

Zab

В Quake 2 примерно 100к строк на С. Это гигантские объемы или нет ?

QEMU - 1.7М строк на С (Но да, там есть Qemu Object Model реализованная на С)
PostgreSql - 1.3М строк на С

Ядро Linux даже обсуждать смысла не вижу в контексте объемов.

А отвечать на тупые вопросы, можно только тупыми ответами (ответный троллинг), либо игнорировать.

#47
20:44, 6 мая 2024

Hart1gan
Сравни код кваки и анрила .... Что проще ?

#48
21:18, 6 мая 2024

innuendo

Наверное не очень корректное сравнение, в смысле что Quake 2 это игра вышедшая в 1997 году, со всеми вытекающими (В плане того, что там творится в исходниках на тему удобства восприятия, назовем это так)

Очевидно, что код UE5 намного лучше организован хотя бы по структуре самого проекта, и сами исходники читаются намного проще, это если в двух словах. Да и в плане С++, наверное это одна из лучших кодовых баз что я видел.

Это правда все равно сводится к тому, что можно плохо и хорошо написать проект на обоих языках.

Но это отвечает на вопрос, что да, на С можно написать игровой движок, просто не сильно здоровенный и написать что-то на уровне современного UE5 в плане возможностей и объемов, нормально скорее всего не выйдет (как раз из-за отсутствия "из коробки" способов нормально управлять сложностью).

#49
22:37, 6 мая 2024

предлагаю знатокам и у кого есть UE5 помочь "профессору", там же простой код должен быть
https://gamedev.ru/unreal/forum/?id=283377

#50
7:58, 7 мая 2024

на Си- движок можно и нужно делать. Проблемы только с библиотеками актуальными, для разных платформ, потому что винегрет по графическим api. Ну и скриптовый движок тоже придётся какой то подтягивать, чтобы сами игры- требовали только одного бинаря под каждую платформу, остальное делает одинаковый скрипт на всех платформах.
только на Си и можно нормальный движок сделать. На чём то другом это будет долгострой. А на Си- легко и просто, там весь язык можно за год досконально выучить.

#51
8:18, 7 мая 2024

Если хочешь чтобы движок был быстрым - то придется делать на си, выбора нет.

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

#52
8:23, 7 мая 2024

Hart1gan
Нормальное соавнени вышли в один год
Как вспомню векторадд в ку так вздрогну

#53
12:40, 7 мая 2024

Developer_A
> Не уверен, что С/С++ сильно повлияет на производительность движка (мы же говорим, про большие проекты?).
Уверен в обратном.
Если написать движок не через жопу, а с любовью к оптимизации, то проца он будет жрать значительно меньше чем даже анрил, не говоря уже о юнити.

#54
13:01, 7 мая 2024

pool2004
> Нет, конечно, разницу в миллисекунды найти можно, но она не играет ни малейшей роли на фоне всего остального.
... и потом читаешь в описании игр в списках требований к железу "минимум i7".

#55
13:08, 7 мая 2024

pool2004
> разницу в миллисекунды найти можно, но она не играет ни малейшей роли
Смотря для чего, нынче хочут чтоб 16 мс на все про все. Если 3 спрайта, 2 нпц, то да, миллисекунды можно не считать

#56
13:50, 8 мая 2024

MikeNew
> Уверен в обратном.
> Если написать движок не через жопу, а с любовью к оптимизации, то проца он будет жрать значительно меньше чем даже анрил, не говоря уже о юнити.

С++ обладает большими выразительными способностями для снижения сложности программы.
Современный движок - это многопоточное приложение, на котором несложно и понятно писать игры.
Где в сам проект движка уже заложено решение многих проблем (кроме очевидного: я, как игровой программист, например, хочу удобным для себя образом добавлять ноды в фреймграф или ECS системы, в 2 строчки кода. Хочу легко запускать многопоточный код в игровой логике, использовать Conitunation'ы/Task'и, и грузить ресурсы в бекграунде по требованию, как это сделать в две строчки на С?).

С, как язык, позволяет мне снижать сложность программы (макросы, миксины и void*), но код становится грязным и более неприятным, чем аналогичный на С++.

При этом, сам выигрыш производительности (допустим, даже 15%! на инструкциях), ничего не стоит, если для написания проекта потребуется на порядок больше времени. А пространства для оптимизация *во внешней логике* гораздо больше, чем *в инструкциях*. Т.е. имея удобные средства выразительности С++, я смогу легко писать код, который будет выполняться в нужное время на нужном ядре с нужными примитивами синхронизации/памятью и т.д., а на Си я буду плодить классы/программировать на макросо подобном языке, где скрытых ошибок будет больше (в сравнении со стройным С++ кодом).

Ну вот как-то так. Какие-то системы, конечно, можно перенести на С, но писать большой движок/проект - на мой взгляд не рационально (можно лучше и быстрее на других языках).

#57
20:15, 5 июня 2024

innuendo
>Как вспомню векторадд в ку так вздрогну
И шо с ним не так?

#58
14:43, 6 июня 2024

nes
Распиши a*b+c

#59
18:10, 7 июня 2024

innuendo
a * b + c.

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.