@Jablocker

Как создаются большие игры на c++ или c#?

Люди хорошо знающие c++ или c# подскажите как вообще создаются большие проекты на этих языках, типа battlefield. Мне просто интересно узнать. Я знаю, что есть движки типа unity, но я слышал ещё про какие то самописные движки. Как это вообще создаётся. Об этом вообще ничего не знаю т.к. занимаюсь только web'ом.
  • Вопрос задан
  • 6787 просмотров
Решения вопроса 3
terrier
@terrier
Для AAA-проектов "самописный" движок - это как правило означает, что он был создан выделенной командой разработчиков, используется только внутри проектов данного издателя и наружу не отдается. Яркий пример - Infinity Ward Engine, разные версии которого уже второе десятилетие тянут серию Call of Duty. Или, скажем, движок Diablo 3.
А так - ну, можете представить себе, что движок обеспечивает то, что "объекты" сталкиваются, груди и волосы колышутся, сетевые сообщения передаются, а вот собрать из всего этого Battlefield предстоит тем десяткам программистов студии-разработчика.
(Да, стандарт де-факто программирования для AAA-проектов - это, конечно же C++, ради портабельности и производительности. Но для скриптов и инструментов используется куча всего разного C#/Lua/Python и т.д. и т.п.)

P.S. Вспомнил, кстати, пример интересной игры на самописном движке на C# - Bastion.
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C++
1. Разработка крупных игровых проектов имеет как минимум те же особенности, что и разработка крупных приложений вообще. Раз вопрос о движках, не будем рассматривать прочие аспекты, такие как построение игровой модели, графический дизайн игры, написание сюжета и пр. Разработка движка, как большого проекта, требует:
- умение поставить начальные технические условия, которые будут заложены в архитектуру проекта (чтобы потом не было очень больно это всё менять);
- умение разбить движок на крупные подсистемы и выстроить между ними необходимые интерфейсы, чтобы каждую из подсистем отдать на разработку в отдельную команду;
- умение получить MVP в разумные сроки и строить дальнейшую разработку итеративно.

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

Для всех тех, кто понимает как реализовать вышеописанное, C++ и C# - лишь инструменты и жизненная необходимость, чтобы получить всё это, поэтому про знание языков даже говорить не буду, это подразумевается.
Ответ написан
Комментировать
@cicatrix
было бы большой ошибкой думать
Уж сколько раз твердили миру: пишутся ДВИЖКИ, а игры не пишутся сейчас, игры РИСУЮТСЯ.
Игра почти всегда выпускается на готовом движке. Но главное сейчас - сценарий, игровая модель, 3d моделирование, анимация, текстурирование, звуковое сопровождение - т. е. процессы, вообще не связанные с программированием.
Поверх движка есть ещё и игровая логика, так вот, она вообще обычно пишется либо на каком-нибудь самописном скриптовом языке, либо на каком-нибудь Lua.
Чтобы сделать игру надо СЦЕНАРИСТА, руководителя, пиарщика (пиарщиков), художника (художников), моделлера (моделлеров), аниматора (аниматоров), композитора. И уж в последнюю очередь - программиста.
Если не делать очередной говноклон известного продукта, работа начинается со сценария (даже если это тетрис), потом нужен менеджер и пиарщик, потом художники готовят концепт-арты, потом системный архитектор подбирает подходящий движок (тысячи их), либо принимается решение о написании собственного (вот тут в теории нужен программист, либо это вообще отдаётся на аутсорс), потом делается графика, оптимизируется, пишется музыка, пишется игровая логика (тут тоже теоретически нужен программист).
Когда уже поймут люди, что для разработки игр в нынешнее время программист - далеко не главная и не решающая составляющая команды?!
Успех проекта в огромной степени зависит от сценариста и пиарщика, потом от менеджера проекта, потом от художников, а уж потом - от программиста.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Hivemaster
@Hivemaster
Админ, который хочет программировать
  1. Собираешь команду. Желательно где-нибудь в Монреале;
  2. Делаешь красивый промо-ролик и промо-текст, описывающий все ваши крутые идеи;
  3. Целый год в твиттере и фейсбуке публикуешь посты о том, каких успехов добилась ваша компания в поддержании расового и полового разнообразия команды, как вы уважаете геев и женщин, какие клёвые вегетарианские обеды в вашей столовке и непринуждённая атмосфера в офисе и т.п.;
  4. Выпускаешь Mass Effect: Andromeda;
  5. Полгода клепаешь заплатки, чтобы игра не заваливалась на каждом чихе, параллельно добавляя новые гомосексуальные романтические линии в сюжет;
  6. Оправдываешься в прессе, рассказывая о недостатках движка и финансирования;
  7. Разгоняешь команду;
  8. PROFIT
Ответ написан
Комментировать
jamakasi666
@jamakasi666
Просто IT'шник.
Как, да просто.
1) Взять талмут особенностей карт nvidia и такой же amd.
2) Взять талмут особенностей винды\линукса\макось.
3) Изучить матан,геометрию и все связанное.
4) Изучить и овладеть с\с++ на очень хорошем уровне, лучше даже быть одним из лучших.
5) Дальше оп и двиг готовый какраз на уровне ue4, ce, unity или фростбайта.

Для 3д игр, особенно сетевых писать свой собственный двиг нынче почти нереально(именно на уровне что это будет нормально работать у всех, быть удобным и красиво выглядеть). Этим занимаются огромные команды спецов всех областей и не 1 десяток лет ежедневной работы.

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

Если так хочется с\с++ то попробуйте для начала сделать простенький 2д двиг и игру на нем, думаю желание отпадет где то в самом начале =)
Ответ написан
Ваш ответ на вопрос

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

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