Как и большинство разработчиков, я бизнес-разработчик, который, по сути, заключается в добавлении пользовательского интерфейса в какое-то внутреннее хранилище данных. (Мы все знаем, что это еще не все, но обычно все сводится к этому.)
Я понимаю, что разработка игр сильно отличается от развития бизнеса, но мне трудно объяснить это моему другу. Я надеялся, что сообщество SO сможет мне помочь.
На мой взгляд, современные разработчики игр много занимаются манипулированием трехмерной графикой. В игровом коде (и я предполагаю, что здесь) вы собираете многоугольники (или что-то в этом роде), вращаете их и т. д. Это предполагает иной образ мышления, нежели манипулирование реляционными данными (например). Не знаю, правда. Я просто знаю, что это другое.
Обновлено:
Я должен подчеркнуть, что под «разработкой» я подразумеваю «программирование», а не все аспекты, которые входят в создание игры или программного обеспечения для бизнеса. Мне жаль, что я не дал этого ясно изначально.
Спасибо!
Правда! Но мой друг хотел знать не это. Он спросил меня, могу ли я написать код игры, и я сказал, что это совсем не тот тип разработчиков, который я знаю.
Одно большое различие между разработкой бизнеса и разработкой игр - это количество задействованных дисциплин. Большинство программного обеспечения для бизнеса создается командой разработчиков, обладающих одинаковыми базовыми навыками. Напротив, игра создается командой дизайнеров игр, визуальных художников, разработчиков 3D-моделей, аниматоров, музыкантов и разработчиков.
Вы абсолютно правы, но я хотел сосредоточить свой вопрос на программном аспекте. Я знаю, что это было непонятно, поэтому я немного отредактирую свой вопрос.
Бесконечные циклы должны быть, а не должны.
Фактически, в современных средах с графическим интерфейсом пользователя оба типа приложений имеют бесконечные циклы.
Я занимаюсь разработкой игр, но давно пришел из бизнеса. Если вы занимаетесь физикой или графикой, разработка игр требует очень строгих математических требований. Даже ИИ может потребоваться немного математики для работы на низком уровне. Аппаратное обеспечение обычно берет на себя большую часть математических операций с многоугольниками, вплоть до рисования на экране. Также много внимания уделяется генерированию внутриигровых данных с помощью (часто) множества инструментов, которые запускаются на этапе предварительной обработки, и это тоже может потребовать большого количества математических вычислений, если вы генерируете данные о видимости.
На мой взгляд, именно математика отличает разработку игр. Люди предполагают, что компьютерное программирование в целом связано с математикой, но как бизнес-разработчик я редко использую что-либо, кроме чрезвычайно простой математики, за исключением некоторых случайных статистических данных. Большинство людей шокированы, услышав это.
Да, единственная математика, с которой я имел дело при развитии бизнеса, была с долларами и центами, а иногда и с процентами.
Хорошие моменты в математике и интеграции художников и других специалистов в команду. Кроме того, я бы сказал, что:
Разработка игр в некоторой степени будет больше зависеть от оборудования. Во многих случаях игры создаются одновременно для нескольких платформ и консолей (не говоря уже о мобильных телефонах) с разной архитектурой. Это до некоторой степени абстрактно, но полностью избежать этого факта разработчики не могут.
Разработка игр часто более чувствительна к производительности или, по крайней мере, требования к производительности другие. Вы имеете дело с опытом в реальном времени, поэтому много времени уходит на оптимизацию этих надоедливых кадров в секунду.
Во многих случаях разработка игр не заботится о повторном использовании и ремонтопригодности. Движок игры, вероятно, будет повторно использован, но кодовая база приложения, вероятно, не доживет до версии 2.0. На последнем этапе проекта происходит много быстрой и грязной отладки. Если конечному пользователю это кажется приятным, нет никакой пользы от элегантного исправления за два дня до выпуска.
Вы бы сказали, что последний пункт может быть немного менее актуальным, чем раньше, когда даже консольные игры получают исправления и загружаемый контент?
Он меняется, но старые привычки умирают с трудом;)
Что касается областей программирования, среди прочего, мы занимаемся:
Некоторые из них требуют серьезных знаний математики и алгоритмов. Вдобавок ко всему, мы сталкиваемся с чрезвычайно жесткими ограничениями по скорости и, как правило, также должны быть очень осторожны с использованием памяти. Мы сталкиваемся с постоянно меняющимся оборудованием, и, поскольку мы пытаемся довести оборудование до предела, это может быть довольно сложно - вы не можете просто абстрагироваться от этого. Большая часть разработки игр - это работа на C++ на низком уровне. Вероятно, сейчас мы работаем с базами данных меньше, чем большинство других программистов (хотя онлайн-игры меняют это)!
Программисты часто составляют меньшинство в современных игровых проектах: все дело в создании контента (анимация, моделирование, текстурирование, аудио и дизайн). Это означает, что многие игровые программисты стремятся сделать процесс создания контента эффективным, а не работать над самим кодом игры. Эта работа может иметь более мягкие ограничения по скорости и памяти, хотя она действительно имеет дело с массивными наборами данных.
Сделать игру «увлекательной» - одна из самых сложных задач - в деловой терминологии это «означает крайне нестабильные требования», поскольку дизайнеры постоянно меняют свое мнение о том, как все должно работать, чтобы преследовать этот неуловимый фактор забавы.
Наконец, игры, как правило, разовые, без шансов что-то исправить. На самом деле это означает, что обслуживание кода очень мало, поэтому традиционно вопросам качества кода уделялось меньше внимания. Сейчас ситуация меняется с ростом количества добавляемого после запуска контента, онлайн-игр и огромного размера современных проектов.
В целом, это невероятно захватывающая сфера деятельности, недостатком является то, что она часто менее хорошо оплачивается (потому что это очень сложный бизнес с финансовой точки зрения для разработчиков, и поскольку он популярен, всегда есть свежий запас людей, ищущих работу).
Просто несколько случайных мыслей о том, чем отличается разработка игр. Обратите внимание, что в этом может быть какой-то сарказм, хотя я пытался подавить это побуждение.
Но вот и хорошие вещи:
РЖУ НЕ МОГУ. Поверьте, в развитии бизнеса мы застреваем в слишком сжатых сроках, и с нами тоже не консультировались.
«Всегда есть крайний срок, который стоит опасаться, но он слишком короткий. В бизнес-программировании вы в основном делаете это для себя». Программисты работают на менеджеров, у которых, вероятно, нереалистичные ожидания, независимо от того, игра это или бизнес-приложение.
Программное обеспечение для бизнеса должно быть надежным, поддерживаемым, согласованным, не должно быть слишком медленным и может основываться на большом количестве уже написанных вещей, таких как базы данных, элементы управления, формы и т. д.
Программист игр часто начинает с чистого листа - справочных руководств по аппаратному обеспечению, некоторой документации по аппаратному обеспечению и, как правило, тонких библиотек поставщиков для некоторого продвинутого оборудования, которое полностью отличается от предыдущей работы.
Из этого они должны построить то, что вы видите, и заставить большую часть этого работать в течение 20 мсек, надежно и часто в смехотворно короткий период времени, сталкиваясь с меняющимися требованиями и часто очень жесткими сроками, работая бесчисленное количество часов в течение сравнительные гроши.
Это не говоря уже о частом владении довольно сложной математикой и физикой ...
Производительность - это действительно разница, насколько я могу судить.
С технологической точки зрения игры обычно управляются Windows / C++.
Начнем с цели - цель разработки игр - создать развлекательный продукт. Он должен быть настолько точным, чтобы хорошо выглядеть и плавно работать. Цель программного решения для бизнеса - моделировать рабочий процесс. Это должен быть инструмент, который работает достаточно быстро. Стабильный продукт, который выполняет абсолютно точно и надежно поставленные задачи.
Поскольку мы преследуем разные цели, мы используем разные подходы к созданию игры и программного обеспечения для бизнеса. Перейдем к требованиям. Требования к игре определяет гейм-дизайнер. Для программного продукта бизнес определяет процесс и требования. Для игры требования не являются окончательными - будут ли у нас маленькие мультяшные фигурки или настоящие человеческие модели - это не имеет значения, например, для игрового движка. Но для программного продукта требования должны быть строго соблюдены и прояснены до максимально возможной детализации перед разработкой.
Из разных требований вытекают разные подходы к проектированию и разработке программного обеспечения. Для игры критически важны производительность и игровой процесс, а качество графики и звука (например) может быть снижено только для совместимости с более слабым оборудованием. Кроме того, физическая модель может быть упрощена для более плавной работы и улучшения игрового процесса. Для программного обеспечения для бизнеса все должно быть точным, а функции резки означают, что ваш продукт больше не будет таким функциональным, как задуманный.
Для игры безопасность не важна - нет важных данных о клиентах, которые нужно сохранять. Для программного обеспечения для бизнеса должна быть предоставлена хорошая система безопасности - начиная с шифрования данных (при сохранении данных на хранилище или передачи по сети), переходя через систему резервного копирования и упоминая (но не в последнюю очередь) о совместимости с предыдущими версиями.
Я мог бы продолжить с другими аспектами, но я думаю, это уже слишком для одного сообщения ...
One should have infinite loops, one shouldn't. - Rich Bradshaw
Рич прав. По сути, с точки зрения кодирования игровой цикл создает «фрейм» действия, в котором действия выполняются в зависимости от состояния игры, такого как ввод контроллера, столкновения объектов и т.д. или ввод говорит ему остановиться или «выйти». Такой подход сильно загружает процессор и видеокарту, отсюда и рынок игровых машин с быстрыми процессорами и даже более быстрыми видеокартами.
Бизнес-приложения не имеют активного цикла. Вместо этого они сидят без дела, ожидая такого события, как щелчок, сообщение от клиента веб-службы, HTTP-запрос GET и т. д. Затем они реагируют на событие.
Конечно, игры, как правило, требуют больших геометрических затрат, чем бизнес-приложения, но это не совсем так. Рассмотрите возможность редактирования изображений, САПР и графических инструментов. Для многих это бизнес-приложения. Но по большей части бизнес-приложение связано с запросом данных, отображением этих данных, принятием пользовательского ввода и изменением данных на основе пользовательского ввода. Во многих случаях бизнес-приложение делает это через сеть или даже через Интернет, но это удачная краткая информация.
Навыки и образ мышления разработчика бизнес-приложений и разработчика игр часто различаются. У разработчика игры есть ограниченное количество входных конструкций, которые следует учитывать с точки зрения создания пользовательского опыта с неограниченным выбором контекста или «мира», если хотите. Бизнес-разработчик - противоположность, с ограниченным набором потенциальных контекстов, обычно веб-страница или базовое окно, и неограниченный (или почти такой) набор комбинаций ввода и отображения данных для создания пользовательского опыта, полностью отличного от интерфейса разработчика игры. стремится к достижению.
Игровое программирование имеет больше общего с научным программированием. Вы моделируете поведенческие системы и ожидаете результатов на основе ограниченного набора входных данных.
Программное обеспечение для бизнеса (которое не является программным обеспечением для упаковки), как правило, может быть гораздо хуже написано, но все же считается коммерческим успехом из-за странной разницы между качеством продукта и его продажей. С другой стороны, игровое программное обеспечение должно иметь хорошо, чтобы выжить на рынке.
Планка качества специализированного программного обеспечения для бизнеса в целом намного ниже.
Развитие бизнеса, как правило, гораздо снисходительнее.
Причина в основном в этом; обычно людям платят за использование программного обеспечения для бизнеса. Люди ПЛАТИТ за использование игрового программного обеспечения.
Может показаться, что это не ответ на ваш вопрос, но это действительно так. Когда мой босс говорит «используйте слово microsoft для этого документа», они предоставляют программное обеспечение, а я обязан использовать слово micosoft. И поэтому, когда он использует его, когда он решает перенумеровать все заголовки моих глав «просто потому, что» или сохранение на диск занимает 30 секунд, пока он разрешает ссылки OLE (это ТОЛЬКО ОДИН УДИВИТЕЛЬНЫЙ ПАСПОРТ EXCEL, ради всего святого!), Я просто упираюсь зубы и напоминаю себе, что мне за это платят.
А если я нахожусь в игре, я жду развлечений. Я ожидаю, что все будет работать правильно, плавно и чисто, без серьезных заиканий или проблем.
Опять же, перейдем к тому, почему это проблема для программирования; эти циклы и структуры в игре должны быть ЧЕРТОВЫМИ хорошими, чтобы убедиться, что нет серьезного замедления, без заиканий в игровом движке, ничего, что заставило бы потребителя, который только что потратил X суммы своих с трудом заработанных долларов, сказать: «это кусок дерьма "и уходи прочь. С программным обеспечением для бизнеса такие вещи могут сойти с рук; в некотором смысле это почти ожидаемо. Снова посмотрите на производительность Microsoft Word; если бы это была игра, ее бы перестали существовать.
Я знаю, что звучит так, как будто я выбираю Microsoft Word, и в целом это так, потому что я считаю его отвратительным, но это верно для очень многих программ. Программное обеспечение САПР - другой пример. Те же самые базовые вещи, что и в играх, но в целом это медленно и сложно работать без большого количества тренировок.
Разница сводится к полировке и ожидаемому уровню полировки. Да, программное обеспечение для бизнеса в целом более гибкое, чем игры; но, более того, и что более важно с точки зрения кодирования, код ДОЛЖЕН работать в игре эффективно и чисто; программное обеспечение для бизнеса, как правило, более снисходительно к небрежному коду.
В бизнес-приложении обычно принимаются неоптимизированные и медленные алгоритмы; и хотя они никогда не были предпочтительнее, часто бизнес-решение принимает решение добавить еще одну функцию вместо повышения производительности. Но в играх производительность - это особенность, и она непреложна.
Жалобы на Word заставляют меня задуматься, использовали ли вы когда-нибудь какое-либо программное обеспечение для бизнеса настоящий? ;) (SAP и Lotus Notes - лишь два самых очевидных слона в комнате.)
А как насчет развития системы? Программное обеспечение устройств, системы защиты и транспорта - это не только игры и предприятия!