В чем разница между разработкой игр и развитием бизнеса?

Как и большинство разработчиков, я бизнес-разработчик, который, по сути, заключается в добавлении пользовательского интерфейса в какое-то внутреннее хранилище данных. (Мы все знаем, что это еще не все, но обычно все сводится к этому.)

Я понимаю, что разработка игр сильно отличается от развития бизнеса, но мне трудно объяснить это моему другу. Я надеялся, что сообщество SO сможет мне помочь.

На мой взгляд, современные разработчики игр много занимаются манипулированием трехмерной графикой. В игровом коде (и я предполагаю, что здесь) вы собираете многоугольники (или что-то в этом роде), вращаете их и т. д. Это предполагает иной образ мышления, нежели манипулирование реляционными данными (например). Не знаю, правда. Я просто знаю, что это другое.

Обновлено:

Я должен подчеркнуть, что под «разработкой» я подразумеваю «программирование», а не все аспекты, которые входят в создание игры или программного обеспечения для бизнеса. Мне жаль, что я не дал этого ясно изначально.

Спасибо!

А как насчет развития системы? Программное обеспечение устройств, системы защиты и транспорта - это не только игры и предприятия!

metao 17.10.2008 09:38

Правда! Но мой друг хотел знать не это. Он спросил меня, могу ли я написать код игры, и я сказал, что это совсем не тот тип разработчиков, который я знаю.

Gregory Higley 17.10.2008 16:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
2
4 423
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

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

Вы абсолютно правы, но я хотел сосредоточить свой вопрос на программном аспекте. Я знаю, что это было непонятно, поэтому я немного отредактирую свой вопрос.

Gregory Higley 16.10.2008 23:21

Бесконечные циклы должны быть, а не должны.

Фактически, в современных средах с графическим интерфейсом пользователя оба типа приложений имеют бесконечные циклы.

Mark Bessey 16.10.2008 23:45
Ответ принят как подходящий

Я занимаюсь разработкой игр, но давно пришел из бизнеса. Если вы занимаетесь физикой или графикой, разработка игр требует очень строгих математических требований. Даже ИИ может потребоваться немного математики для работы на низком уровне. Аппаратное обеспечение обычно берет на себя большую часть математических операций с многоугольниками, вплоть до рисования на экране. Также много внимания уделяется генерированию внутриигровых данных с помощью (часто) множества инструментов, которые запускаются на этапе предварительной обработки, и это тоже может потребовать большого количества математических вычислений, если вы генерируете данные о видимости.

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

Gregory Higley 17.10.2008 02:24

Да, единственная математика, с которой я имел дело при развитии бизнеса, была с долларами и центами, а иногда и с процентами.

Jim Buck 17.10.2008 03:12

Хорошие моменты в математике и интеграции художников и других специалистов в команду. Кроме того, я бы сказал, что:

  • Разработка игр в некоторой степени будет больше зависеть от оборудования. Во многих случаях игры создаются одновременно для нескольких платформ и консолей (не говоря уже о мобильных телефонах) с разной архитектурой. Это до некоторой степени абстрактно, но полностью избежать этого факта разработчики не могут.

  • Разработка игр часто более чувствительна к производительности или, по крайней мере, требования к производительности другие. Вы имеете дело с опытом в реальном времени, поэтому много времени уходит на оптимизацию этих надоедливых кадров в секунду.

  • Во многих случаях разработка игр не заботится о повторном использовании и ремонтопригодности. Движок игры, вероятно, будет повторно использован, но кодовая база приложения, вероятно, не доживет до версии 2.0. На последнем этапе проекта происходит много быстрой и грязной отладки. Если конечному пользователю это кажется приятным, нет никакой пользы от элегантного исправления за два дня до выпуска.

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

Davy8 16.10.2008 23:36

Он меняется, но старые привычки умирают с трудом;)

Luke Halliwell 16.10.2008 23:55

Что касается областей программирования, среди прочего, мы занимаемся:

  • Графическое программирование (включая разработку шейдеров)
  • Анимация
  • Физическое моделирование
  • AI и геймплей
  • Аудио
  • Сеть (обычно довольно низкоуровневые)

Некоторые из них требуют серьезных знаний математики и алгоритмов. Вдобавок ко всему, мы сталкиваемся с чрезвычайно жесткими ограничениями по скорости и, как правило, также должны быть очень осторожны с использованием памяти. Мы сталкиваемся с постоянно меняющимся оборудованием, и, поскольку мы пытаемся довести оборудование до предела, это может быть довольно сложно - вы не можете просто абстрагироваться от этого. Большая часть разработки игр - это работа на C++ на низком уровне. Вероятно, сейчас мы работаем с базами данных меньше, чем большинство других программистов (хотя онлайн-игры меняют это)!

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

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

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

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

Просто несколько случайных мыслей о том, чем отличается разработка игр. Обратите внимание, что в этом может быть какой-то сарказм, хотя я пытался подавить это побуждение.

  • Если вы не счастливый сотрудник одной из тех студий нового стиля (например, Eidos Montreal или Blizzard), всегда есть крайний срок, которого стоит опасаться, и он слишком короткий. В бизнес-программировании вы в основном делаете дедлайн для себя.
  • Бизнес-приложение обслуживает некоторые специфические потребности. Цель игры - развлечь людей. Вы не можете предсказать, провалится ли игра, пока она не выйдет.
  • Производительность важна во всех аспектах игры. Написание кода, который хорошо обслуживать, является вторым приоритетом. В бизнес-программировании главный приоритет - хороший и работающий код.
  • Для бизнес-приложения блестящий пользовательский интерфейс - это бонус. Для игры это обязательно.
  • Отладка игр намного сложнее, потому что всегда существует некоторая зависимость от оборудования, которая приводит к ошибкам, которые могут быть воспроизведены только на некоторых машинах, ни одной из которых нет в вашей компании. А игра потребляет гораздо больше производительности, чем типичное бизнес-приложение.
  • У вас есть люди, посвятившие себя созданию артов, сюжетов, музыки, звука, фона и дизайна, ни один из которых не требует обязательных знаний в области программирования (сценарии немного отличаются), то есть у вас есть много контента, который пользователи (игроки) будут видеть. Никого не волнует, насколько хорош ваш код, кроме случаев, когда производительность плохая или есть ошибки. Остальные получают похвалу.
  • Для больших игр у вас есть программисты, специализирующиеся только на 3D-графике, работе в сети, аудио, инструментах, сценариях, физике и так далее. Большинство из них узкоспециализированы, и каждый из них может привести игру к катастрофе. Вам понадобятся продвинутые математические навыки, только если вы специалист по графике или физике. Ну или AI.
  • Большинство игр работают по принципу «запустил и забыл», за исключением некоторых исправлений, если только это не одна из наиболее успешных игр, для которых есть пакет расширения или продолжение.
  • Безопасность - важная проблема для онлайн-игр, поскольку раздражающих людей, пытающихся оттолкнуть людей, гораздо больше, чем для бизнес-приложений, многие из которых предназначены (более или менее) для внутреннего использования у клиента.
  • Ожидается, что вы будете работать гораздо больше, чем при написании бизнес-приложений.
  • Чтобы получить работу для получения титула AAA, вам необходимо проработать как минимум три отправленных титула AAA (нет, здесь нет опечаток, когда-либо читали описания вакансий в Blizzard или LucasArts?: P)

Но вот и хорошие вещи:

  • Вы можете притвориться, что работаете, когда играете в игры.
  • И, наконец, программировать игры - это весело. Бесценно.

РЖУ НЕ МОГУ. Поверьте, в развитии бизнеса мы застреваем в слишком сжатых сроках, и с нами тоже не консультировались.

HLGEM 17.10.2008 21:23

«Всегда есть крайний срок, который стоит опасаться, но он слишком короткий. В бизнес-программировании вы в основном делаете это для себя». Программисты работают на менеджеров, у которых, вероятно, нереалистичные ожидания, независимо от того, игра это или бизнес-приложение.

Khalid Abuhakmeh 23.12.2009 03:42

Программное обеспечение для бизнеса должно быть надежным, поддерживаемым, согласованным, не должно быть слишком медленным и может основываться на большом количестве уже написанных вещей, таких как базы данных, элементы управления, формы и т. д.

Программист игр часто начинает с чистого листа - справочных руководств по аппаратному обеспечению, некоторой документации по аппаратному обеспечению и, как правило, тонких библиотек поставщиков для некоторого продвинутого оборудования, которое полностью отличается от предыдущей работы.

Из этого они должны построить то, что вы видите, и заставить большую часть этого работать в течение 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 - лишь два самых очевидных слона в комнате.)

Greg D 16.04.2010 01:51

Другие вопросы по теме