Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2016, 11:11   #1
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию Разработка игр. C++ vs C# vs Python

Приветствую всех.
Уже около года я выбираю между C++, C# и Python. Читаю, спрашиваю и т.д. Параллельно изучаю все 3 языка.
Помимо изучения, я знал примерную область, где буду работать. Это прикладное программирование под Windows. Программы клиентсерверные приложения и многое другое.
Но недавно я решил окончательно, в какой основной области буду работать и куда двигаться. Это разработка звуковых игр.
Использовать буду возможно такие инструменты, как Bass, DirectSound и т.д.
И вот у меня появился вопрос:
Я знаю, что C++ быстр, позволяет работать на прямую с памятью. В играх, как и где отражается его мощность? Только на графике?
Например, я хочу сделать игру с открытым миром. Большая карта, примерно клон GTA. Естественно не с полного нуля. Высокоуровневые инструменты по обработке звука буду точно использовать.
Так вот, будет ли разница в производительности игры, если я буду писать на C++, на C# или на Python?
Библиотеки есть под все эти языки. Мне главное понять про производительность. Например в C++, где будет мощность языка проявляться.
Я задумался о этом, потому что:
Давайте представим примерно, структуру игры.
Есть главная программа-движок. В движке прописано передвижение, стрельба и т.д.
Скрипты - дополнения к движку, где прописаны миссии, сцены и т.д.
Так сделано большинство игр. Во всяком случаи, GTA и Mafia 2 точно. Есть движок и файлы, где прописаны миссии, возможности.
Вот и мне интересно, если разница писать движок на c++, C#, Python есть, то будет ли она, если исключить графику, а остальное оставить?
Заранее благодарен.
jonikster вне форума Ответить с цитированием
Старый 13.08.2016, 19:20   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я тоже изучаю программирование игр. Может вам интересны будут мои шаги:
  • Начал 4-5 лет назад с OpenGL+С++ (с книги "Супер Книга" на русском)
  • Через пол года понял, что эта книга устарела, потому что там используется старый OpenGL с методами рисования glBegin/glEnd, которые на телефонах не работают. Сейчас используются для рисования шейдеры. Взял самую последнюю книгу "Супер книга", где рассматривается язык GLSL (OpenGL Shader Language). Но её нет в переводе, поэтому пришлось активно использовать англо-русский словарь
  • Через год или два я понял, что на чистом OpenGL далеко не уедешь, если требуется делать 3D и 2D игры, а не создавать инструменты для создания игр (движки)
  • Я решил, что нужно изучать движок и его язык скриптинга. Взял Blender Game Engine + Python. Движок бесплатный, то он на GPL лицензии, а значит нужно предоставлять исходники игры, мне такой вариант не подошёл. К тому же движок слабоват по сравнению с Unreal Engine 4, который тогда стал бесплатным
  • Я стал изучать ставший бесплатным Unreal Engine 4 и его язык скриптинга C++. Но движок оказался очень громоздкий: много весит, сильно грузит ноут, собранные игры весят от 600 МБайт и выше. Я хотел делать 2D и 3D игры. Мне нужно было что-то полегче. К тому времени вышла Unity 5, который стал полностью бесплатным. Я могу запускать хоть 5 редакторов Unity и ноут работает нормально. Собранные приложения весят от 30 МБайт. Unity cобирает однажды созданный проект в один клик на 24 платформы: http://unity3d.com/ru/unity/multiplatform
  • В апреле 2015 я начал изучать Unity и его язык скриптинга C#. А также его язык программирования шейдеров HLSL/Cg
  • Ещё я пробовал, ставший в этом году, бесплатным CryEngine 5, у которого языки скриптинга: C++ и C#. Но он оказался ещё больше чем UE4. Собранные приложения весят от 3ГБайт.
  • Сейчас кроме Unity, C# и технологий .NET (WPF, ASP.NET, WCF-для серверных игр, SignalR-для серверных игр и т.д.) я изучаю чистый WebGL + JavaScript (и Node.js для написания серверов для сетевых игр). Хотя Unity и умеет собирать в HTML5/WebGL, но грузится такое приложение долго, особенно на мобильных. Если нужно допустим нарисовать график, или создать игру с простой графикой для сайта, то лучше использовать чистый HTML5, его элемент <canvas>. Можно создать два элемента <canvas>, которые накладываются друг на друга. Один в контексте "2d", а второй в контексте "webgl", тогда можно использовать первый <canvas> для отображения UI (HUD), а второй <canvas> для 2D/3D приложения или игры. К тому же интересно и полезно изучать шейдеры WebGL OpenGL ES 2.0, потому что в Unity, используется очень похожий по своим принципам HLSL и по-моему в Unity можно писать шейдеры на GLSL ES - это я не уточнял, но это неважно.

Последний раз редактировалось 8Observer8; 13.08.2016 в 19:28.
8Observer8 вне форума Ответить с цитированием
Старый 14.08.2016, 16:47   #3
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

По поводу игр мне главное решать следующие задачи:
Работа с позиционируемым 3d звуком;
Создание карты большого мира.
Пока это две главные задачи. Но нужно понять, какой из трёх языков использовать. Не зря же используют плюсы для движком почти всегда.
jonikster вне форума Ответить с цитированием
Старый 14.08.2016, 17:57   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Если у вас мощный ПК, то можете использовать С++ и один из движков: CryEngine 5 или Unreal Engine 4. Если не очень мощный, то Unity 5 и C#.

Можно писать без движков на C++ и языках HLSL (DirectX) или языке GLSL (OpenGL). Либо на этих же инструментах писать свой движок. Это намного дольше, но полезно.

Цитата:
Работа с позиционируемым 3d звуком;
Создание карты большого мира.
Не знаю как с 3D звуком, потому что в Unity он уже есть, а карты создаются в 3D редакторах: 3D Max, Maya, Blender и т.д. Либо в специализированных инструментах, таких как World Machine: http://www.world-machine.com/ Созданная карта загружается в игру в виде 3D моделей и текстур.

Если вы планируете что-то серьёзное и с нуля, то есть писать свой движок, то однозначно нужно использовать C++ и либо: DirectX либо OpenGL. Ну никак ни Java или C#, потому что сборщики мусора будут мешать. Не зря же, например, Unity написан на C++ и Си. Просто для игрового скриптинга удобнее использовать: C#, JavaScript, Python, Lua и т.д., а не C++. Поэтому в UE4 самый популярный язык скриптинга - это язык Blueprint, а на CryEngine5 - язык Flow Graph или Lua.

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

Последний раз редактировалось 8Observer8; 14.08.2016 в 18:03.
8Observer8 вне форума Ответить с цитированием
Старый 14.08.2016, 18:31   #5
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Цитата:
Сообщение от jonikster Посмотреть сообщение
Но недавно я решил окончательно, в какой основной области буду работать и куда двигаться. Это разработка звуковых игр.
т.е под словом карты я подразумеваю 3d пространство стены, объекты и т.д.
Cry engine не подходит, т.е там нельзя чисто кодить, там много действий с объектами надо делать в редакторе, сам редактор мне доступен, но двигать камеру и прочее нет.
Unreal и Unity тоже не подходит из-за отсутствия доступности.
Я как рас хочу посмотреть в сторону OpenGL и DirectX, но хочу найти какую-то библиотеку, которая с этим всем уже работает.
jonikster вне форума Ответить с цитированием
Старый 14.08.2016, 18:32   #6
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Ок если из-за сборки мусора Java и C# отпадают, то что тогда с Python?
jonikster вне форума Ответить с цитированием
Старый 14.08.2016, 19:23   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем вам OpenGL и DirectX если графика не нужна? (в DirectX вроде бы есть что-то про звук, не особо вкурсе, но в OpenGL совсем нет, Open Graphics Library же)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.08.2016, 20:50   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я посмотрел темы созданные автором. Вспомнил, что это незрячий человек, который уже давно выбирает какой язык ему изучать для создания звуковой игры. То что я писал до этого относилось к играм, в которых есть хотя бы какое-нибудь рисование на экране. Вам не нужны никакие движки, ни DirectX, ни OpenGL. Для вашей игры можно использовать любой язык, который вы упоминали: C#, Java, C++, Python

P.S. Это тот случай, когда потрачено столько энергии впустую
8Observer8 вне форума Ответить с цитированием
Старый 14.08.2016, 21:48   #9
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

а почему в моём случаи можно использовать любой язык? Ведь как вы говорили в C#/Java присутствует сборщик мусора, и что это как-то влияет.
Отпадает только графика. Физика, звук, карта, всё остаётся. я хочу сделать примерно как GTA.
По поводу DirectX, в нём есть DirectSound. Правда библиотека низкоуровневая, потому мне лучше что-то вроде bass или fmod. Но я как говорил поищу игровые движки типа блитца, где всё это уже включено.
jonikster вне форума Ответить с цитированием
Старый 14.08.2016, 22:02   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я себе не представляю, чтобы игра Crysis (которая сделана на CryEngine) была бы создана на движке, который бы был бы написан на C#/Java. Одна из причин, как мне кажется, это сборщик мусора. Динамичная игра с графикой требует скорости.

Берите любой язык, который вам нравится. Ищите для него библиотеки для работы со звуком.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка игр на С++ и Cocos2D-x ACE Valery Gamedev - cоздание игр: Unity, OpenGL, DirectX 25 22.04.2016 15:51
Разработка игр Kaddok Свободное общение 6 18.05.2012 22:06
разработка игр на Python OrcXCyber Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 24.03.2011 10:26