|
3 / 3 / 0
Регистрация: 18.01.2017
Сообщений: 63
|
|
Какой язык программирования выбрать для создания игр?08.07.2017, 20:43. Показов 3857. Ответов 15
Какой язык программирования выбрать для создания игр? Си или Си++. Собираюсь писать, как сложные, так и легкие игры. Я имею в виду 3D или 2D графика. Ну и писать свои движки.
0
|
|
| 08.07.2017, 20:43 | |
|
Ответы с готовыми решениями:
15
Какой язык программирования лучше для игр? Какой язык програмирования используется для создания аддонов к играм? Какой язык программирования |
|
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
|
|
| 03.09.2017, 18:51 | |
|
C#
.
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 08.09.2017, 20:35 | |||
|
DwapDaBase,
0
|
|||
|
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
|
|
| 08.09.2017, 20:53 | |
|
Bretbas,почему именно C++???
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 08.09.2017, 21:21 | |
|
Веселый, потому что, если ты хочешь создавать игровой движок, то должна быть максимальная производительность, а чтобы была максимальная производительность, тебе нужно будет лезть в самые ништяки указателей, смещений. Языки со сборщиком мусора не подойдут в этом случае. Придется все делать ручками. У таких языков, как C# и Java очень много чего скрыто за кулисами, то, что грузит непонятно из-за чего процессор. Если ты хочешь делать систему, на которой будут потом делать игры, тоесть игровой движок, то тебе будет важен каждый такт процессора, каждый цикл, который не будет нарушать целостности твоего кеша при переборе, каждый байтик, который ты занимаешь. C++ в этом случае самое лучше решение. Ну и ассемблер в некоторых местах конечно же.
Говорю по своему опыту.
0
|
|
|
14112 / 9329 / 1350
Регистрация: 21.01.2016
Сообщений: 35,047
|
||
| 13.09.2017, 05:09 | ||
|
Но хочу заметить несколько моментов: а) С++ такой быстрый и мощный не просто так, он потребует куда большей дисциплины и глубины познания языка; б) Для написания собственного игрового движка нужно познаний немного больше, чем "какой язык выбрать"; в) Так же неплохо бы иметь обоснование того, зачем нужно писать с нуля, а не брать готовое (хотя бы самое простое); Лично я бы порекомендовал не строить наполеоновские планы по написанию своего Unreal Engine 10 на коленке, а начать с чего-то попроще. Например написать какую-нибудь змейку или Flappy Bird на чистом GDI с применением управляемого языка (чтобы не отвлекаться на сложность С++ чьих плюсов в плане гибкости и производительности просто нет на таких скромных проектах) - C#\Java\Python\Ещё_чё_нить. Так будет получен бесценный опыт и какое-никакое понимание что и как быть должно. Следующим этапом я бы порекомендовал попользоваться простыми open source движками, чтобы сориентироваться в том, что они дают и зачем. Чтобы для себя понять, что это такое. А там уже видно будет, нужно ли писать свой "движёк" или всё-таки написание игрушки в приоритете.
2
|
||
| 13.09.2017, 08:10 | |||
|
В этой книге по OpenGL все примеры на чистом C: Anton's OpenGL 4 Tutorials Исходники примеров: https://github.com/capnramses/... rials_book По поводу ООП мне понравилось, как изложил мысль Otaka:
0
|
|||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 13.09.2017, 18:08 | ||
|
Веселый, Usaga, 8Observer8, Помоему ТС, после наших ответов, уже все равно на GameDev
![]() Добавлено через 14 минут
0
|
||
|
14112 / 9329 / 1350
Регистрация: 21.01.2016
Сообщений: 35,047
|
|
| 13.09.2017, 19:08 | |
|
Bretbas, под "перебором объектов" обычно подразумевают некую коллекцию (от массива до дерева\списка). Где именно эта структура распологается роли не играет - для CPU память одна. Причём сама коллекция может хранить как указатели (ссылки в управляемых языках), так и сами объекты (в С++ и value types в C#).
Т.е. вероятность промаха кеша в С# такая же как и в C++ ибо это зависит только от используемой структуры данных, а не от конкретного ЯП.
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 13.09.2017, 19:13 | |
|
Usaga, Ну к примеру в List<T>, если T будет ссылочный тип, то в C# этот контейнер будет содержать ссылки?
0
|
|
|
14112 / 9329 / 1350
Регистрация: 21.01.2016
Сообщений: 35,047
|
|
| 13.09.2017, 19:21 | |
|
Bretbas, да, ссылки. А ссылки это что? Правильно - всегда валидные указатели. Можете посмотреть ассемблерный вывод в отладчике студии, чтобы убедиться своими глазами.
Добавлено через 1 минуту В List<T> центральным местом выступает массив, который пересоздаётся с ростом коллекции. Но в своей основе это - всё равно обычный массив со всеми вытекающими отовсюду последствиями.
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 13.09.2017, 19:35 | ||
|
Usaga,
Если бы в этом монолитном участке памяти лежали не ссылки, то что можно сделать в C++, расположив объекты на стеке, то не пришлось бы при получении элемента из массива лезть по ссылке вновь
0
|
||
|
14112 / 9329 / 1350
Регистрация: 21.01.2016
Сообщений: 35,047
|
|
| 13.09.2017, 19:50 | |
|
Bretbas, ссылка - понятие из ЯП. Для CPU существуют только указатели. Ссылка - указатель, для которого тем или иным способом соблюдатются некоторые требования.
Для CPU "стёк" никак не отличается от любого другого участка памяти. В кеш попадают любые данные при первом же к ним обращении. Не важно, где они лежат. Массивы в С++ действительно повзоляют хранить не только указатели, но и объекты целиком. В C# такое можно сделать только со структурами (это умышленное ограничение). Это и плюс и минус. Если объекты крохотные, а сам массив небольшой, то есть вероятность, что вся коллекция поместится в кеш, но без гарантий. Если класс крупный, то такая вероятность сильно снижается (не один этот массив нуждается в кешировании, а кеш не резиновый) + вероятность false sharing. В случае с указателями картина иная: при переборе вы, как правило, обращаетесь к определённым полям (а не целиком ко всему объекту), а так же есть надежда на то, что нужный объект найдётся раньше, чем придётся перебирать ВСЮ коллекцию (соответственно, всё тянуть в кеш не придётся). Причём, смею заметить, подобное свойственно и С++, когда в массиве (коллекции) хранятся указатели, а не сами объекты (а такое тоже практикуется), так что тут разницы между языками не особо-то и много.
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 13.09.2017, 20:03 | |||
|
Usaga,
Вообщем хрен с ним C# тоже крутой язык, сейчас его изучаю, и мне это нравится
0
|
|||
|
14112 / 9329 / 1350
Регистрация: 21.01.2016
Сообщений: 35,047
|
|
| 13.09.2017, 20:13 | |
|
Bretbas, ну, как бы никто вам не гарантирует, что весь массив поместится в кеш (что было бы классно). Плюс ко всему, при манипулации данными в таком массиве (добавление, удаление, перемещение) придётся тягать весь хранимый объект, а не указатель (4\8 байт), что немного компенсирует "профит" от лежания в кеше.
В общем, данный вопрос дискуссионный. Все профиты\недостатки следует оценивать только в контексте конкретной ситуации, а не радикально и категорично. Я об этом
1
|
|
| 14.09.2017, 10:17 | |
|
Я начал писать свой 2D движок на базе архитектуры движка описанном в книге: Build your own 2D Game Engine. В этой книге используется JS в ООПешном стиле, поэтому легко переписывается на такие языки, как: C++, C#, Java, TypeScript и т.д.
Пишу две версии движка:
Ну, это всё так - для упражнений, чтобы знать, как оно работает на низком уровне. Для мобильных игр и игр с простой графикой для Desktop/тв-приставок лучше взять Unity+C#, а для игр сложной графикой: CryEngine/Lua/FlowGraph/C#/C++ или UnrealEngine/Blueprint/C++. Такое моё личное мнение.
0
|
|
| 14.09.2017, 10:17 | |
|
Помогаю со студенческими работами здесь
16
ПО для программирования игр Помогите подобрать язык для программирования 2D игры Программа для создания игр Программа для создания игр Программы для создания игр Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|