Подтвердить что ты не робот

Являются ли игры самыми сложными/впечатляющими приложениями?

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

Затем я вошел в поле неизвестного (для большинства из нас, я думаю), правительство. Я могу только представить себе сложность приложений NASA, которые позволяют им общаться с роверами на Марсе.

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

Являются ли игры самыми сложными/впечатляющими приложениями?

4b9b3361

Ответ 1

Короткий ответ: Нет.

Длинный ответ: Игры на самом деле не так уж сложны. Это зависит от того, о чем вы говорите, когда вы говорите "игры", но два претендента на самые сложные игры - это 3D-игры и онлайн-игры (особенно массовые онлайн-игры).

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

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

Теперь некоторые программисты сделали настоящие инновации в этой области, которые (по праву) заработали им много денег. Джон Кармак (id Software: Doom and Quake) и Тим Суини (Unreal) spring, чтобы думать.

Реальная стоимость, однако, в создании игр - это контент. Просто взгляните на кредиты для современной игры FPS (шутер от первого лица), и вы обычно увидите всего 6 программистов, но будет 30-50 + артистов. Контент не является сложным (с программной точки зрения). Это займет много времени.

Что касается онлайн-игр, я помню, когда Everquest вышел, и люди бредили о том, как сильно это было. Bzzzt, неправильно. Для тех (как я), которые были знакомы с разработкой MUD (подземелий mutli-user) через 90-е (и, возможно, 80-е годы), в архитектуре сервер Everquest не был таким сложным.

То же самое касается World of Warcraft или любой из этих игр.

Если вы хотите поговорить о сложном состоянии, как насчет операционной системы Windows XP, все это работает, на котором оценивается 40 миллионов строк кода? Бог знает, сколько у Vista. Или как насчет ядра Linux?

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

Ответ 2

Системы управления воздушным движением являются отказоустойчивыми, критическими для безопасности, высокой доступностью и распределением. Время простоя отсутствует, система должна работать 24 часа в сутки, 365 дней в году, даже во время обновления системы. На самом деле нет ничего ужасного вычислительно сложного (например, нет ИИ, потому что вы хотите, чтобы система была предсказуемой), но с системной точки зрения на этом уровне не так много другого. Даже программное обеспечение космической миссии должно работать только до тех пор, пока миссия выполняет.

Ответ 3

Я немного поработал над кодом для одной из наземных станций NASA. Системная работа заключается в электронном отслеживании и управлении всеми спутниками НАСА. Это может показаться не очень-то большим, но если система выйдет из строя, когда вы находитесь в середине задания спутника, вы можете отправить миллиарды долларов налогоплательщиков, вращающихся на солнце. Таким образом, отказоустойчивость и избыточность, встроенные в эту установку, заставят Blizzard завидуть. IIRC, где-то в районе 50 серверов, более важные из которых имеют горячий запас, готовый взять на себя менее чем за секунду, если первичный сбой. Каждая из этих систем, в свою очередь, имеет избыточную пару систем, готовых взять на себя, если оба потерпят неудачу. Мне еще предстоит увидеть какую-либо игру сложной (или впечатляющей, по-своему).

Каждая из этих наземных станций взаимодействует друг с другом в реальном времени (как в электронном, так и в человеческом взаимодействии), наряду со всеми самими сателлитами, конечно, и челноком, когда он там, и различными наземными терминалами, которые обрабатывают орбитальные данные, и, таким образом, можно считать частицами еще более крупной и сложной системы, которую НАСА называет TDRSS. Здесь очень концептуальная диаграмма, которую я нашел онлайн:

alt text

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

Ответ 4

Игры, безусловно, охватывают очень широкую вычислительную технологию: от аппаратной оптимизации до баз данных, AI, продвинутых математических решений, вы называете это.

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

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

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

Ответ 5

Я бы сказал, что нет.

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

С вычислительной точки зрения игры тоже не интересны. Современные игры (например, Fallout 3, GTA4), безусловно, кажутся потрясающими из-за их "открытого мира" и чрезвычайно длинной истории, но это не имеет ничего общего с технологией, а скорее с производственной ценностью. В популярных играх теперь требуется больше актеров и инвестиций, чем некоторые голливудские фильмы. Так что, у вас есть модель Нью-Йорка, а не блок, но что?

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

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

Ответ 6

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

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

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

Ответ 7

Взгляните на некоторые из приложений физики, разработанных Департамент энергетики:

Там есть приложения:

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

Машины с миллионами ядер ожидаются к 2012 году для выполнения некоторых из этих вещей.

Ответ 8

Я расскажу вам, что, по моему мнению, является самым уникальным в игровых программах, и что для меня делает их, возможно, самыми впечатляющими..., как ошибки влияют на общую продукцию. Если у вас есть ошибка, скажем, Outlook (hah), есть несколько разных способов решения проблемы (я собираюсь упростить здесь):

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

В большинстве игр, особенно в многопользовательском режиме, у вас часто нет возможности # 2 или # 3. Игроки ищут способы использовать игры, поэтому, если вы оставите ошибку, в которой можно воспользоваться, это будет. Таким образом, толерантность к ошибкам в играх на самом деле намного ниже, чем в большинстве программ для бизнеса/производительности из-за оскорбительного потенциала.

Для меня это одна из главных вещей, которая делает большую сложную игровую систему, такую ​​как WoW или Everquest, действительно впечатляющей. Длины, по которым люди будут злоупотреблять любыми лазейками в игре, довольно изумительны и очень хорошо документированы. Это очень резко контрастирует с такими продуктами, как Photoshop или офисное программное обеспечение, где до тех пор, пока есть какой-то способ выполнить то, что вам нужно сделать, тот факт, что некоторые из других рабочих процессов, возможно, сломаны, не обязательно является критически важным недостатком. По крайней мере, потенциал может быть невежественным. Это просто не роскошь, которую разработчики игр имеют.

Теперь... по сравнению с такими вещами, как Air Traffic Control или программное обеспечение для полета Airbus, в играх нет нигде таких ограничений жизни на линии... что целый класс проблем.

Ответ 9

Я не согласен ни с одним из ответов уже здесь, но мне очень интересно, что, когда люди думают о "сложности игр", они думают о GTA или MMORG. Я думаю о поединке и о шахматах.

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

Кроме того, если вы принимаете техническое определение "сложность", это не является субъективным вопросом.

Ответ 10

Я не знаю, как вы хотите выбрать "сложность" или "впечатляюще", но какое-то программное обеспечение, которое у вас может быть на вашем рабочем столе (например, Office или Visual Studio), вероятно, более "сложное", чем любая видеоигра, по большинству мер.

(Я думаю, что VS в наши дни похож на 50 миллионов строк кода, хотя я не обязательно надежный ресурс здесь.)

Ответ 11

Нет, игры не так уж особенны. Конечно, как и любой другой крупный проект по программированию, существует огромное количество противоречивых целей и множество компромиссов, но в конечном итоге игры имеют то преимущество, что требований очень мало. Если вы пишете базу данных, она должна выполнять свойства ACID. Он не должен терять данные, независимо от того, когда и как вы нажимаете на него вилку. Если вы пишете ОС, что-то подобное применяется, оно должно быть устойчивым к камню независимо от того, что вы с ним делаете. Игра также должна соответствовать многим ожиданиям, но очень немногие из них абсолютно необходимы. Это нормально, чтобы подделать большинство графических эффектов. Это нормально, чтобы подделать мировое моделирование в областях, которые игрок не наблюдает.

И это не конец света, если ваша игра время от времени падает. Да, большие игры с ААА сложны, но они не самые сложные приложения. Не далеко.

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

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

Ответ 12

Я действительно удивляюсь, что никто не упомянул карликовая крепость:

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

Ответ 13

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

Например, Elite на BBC Micro забила трехмерную космическую боевую игру, имитацию рынка и карту всей вселенной на 32 КБ. Позже эта же игра была переполнена на РЭШ. Этот подвиг включает в себя ручное оптимизированное кодирование языка ассемблера, в котором расходы на день, чтобы сбрить байты, считались целесообразными.

Вы можете найти похожие впечатляющие работы на всех 8 и 16-разрядных платформах. Также посмотрите на звуковые и графические демонстрации на сцене Amiga.

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

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

Возможно, что эти дни закончились. Может быть, кто-то подтолкнет PS3 или Xbox360 к чему-то непостижимому, но кажется, что вы можете продавать игры, не отталкивая это оборудование, все это сложно, поэтому коммерческое давление на это не так уж и велико. Все, что у вас есть, - это небольшие улучшения в графическом качестве, в более крупных средах или более подробных средах.

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

Итак, ищите другие места, где оборудование ограничено. Хорошим примером является Mars Rover.

Ответ 14

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

Я думаю, что некоторым из вас может понравиться следующее: Джон Кармак в NASA принимает первый приз за свою работу на лунном посадочном объекте.

Джон Кармак (Armadillo Aerospace) в штаб-квартире НАСА

Согласно Кармаку, подвиг был прост:

Работа, которую я делаю в видеоиграх, на самом деле намного сложнее затем аэрокосмические работы.

Ответ 15

Это зависит от того, что вы подразумеваете под сложностью.

С точки зрения алгоритма и с точки зрения оптимизации низкого уровня, и, конечно же, с математической точки зрения, тогда, конечно, игры более сложны, чем VS или операционная система.

Хотя с точки зрения размера кода, с точки зрения взаимодействия многих разных компонентов и необходимости поддержки (и отладки) множества перестановок конфигураций, я бы сказал, что ОС сложнее.

Ответ 16

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

  • 3D Studio MAX
  • Программное обеспечение, используемое для моделирования физики и сбоев в автомобильном дизайне
  • Метеорологическое программное обеспечение, используемое для моделирования погоды и создания прогнозов.
  • Высокопроизводительное программное обеспечение OCR

Ответ 17

Если вы включите массовые онлайн-игры, я бы сказал, что да. Они должны будут использовать все, что потребуется крупномасштабной системе (распределенная система, координация этих систем, большие объемы данных, транзакции/надежность, чтобы гарантировать, что запасы остаются правильными и т.д.), При очень жестких требованиях к производительности (EVE Online является основным я думаю).

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

Ответ 18

Нет.

Если мы рассмотрим все программное обеспечение как "приложения", я бы сказал, что операционные системы (для ОС - не приложения, а, ну, системы)

Ответ 19

Один пример: в один момент Outlook взаимодействовал с 10 миллионами строк кода. Ни один здравомыслящий игровой разработчик не приблизится к этому, так как он никогда не будет работать достаточно быстро.

Ответ 20

Если вы включите процесс разработки, игры, безусловно, там.

Ответ 21

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

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

Ответ 22

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

Ответ 23

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

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

  • Мой друг работает в Jeppesen с системой планирования экипажей авиакомпаний для крупных авиакомпаний. Он должен принимать разные правила работы для разных стран и управлять графиком экипажей, чтобы они, надеюсь, продолжали и несли свои смены близко к дому. Довольно впечатляет, я думаю...

Ответ 24

Кто-то упомянул программное обеспечение для управления воздушным движением - я уверен, что он невероятно сложный и надежный, но для меня это была глобальная система билетов на авиабилеты - amadeus, я думаю, это называется.

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

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

Чтобы масштабировать его до всех рейсов, действующих сейчас и в будущем, должно быть, на мой взгляд, самая сложная вещь.

Ответ 25

Являются ли игры самыми сложными/впечатляющими приложениями?

Комплекс? Нет

Впечатляет? Зависит. Есть много впечатляющих впечатлений.

Например, при отказе и правильности, он, вероятно, кодирует медицинские или аэрокосмические приложения.

В масштабируемости я бы сказал, Google или Amazon.

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

Ответ 26

Короткий ответ: Да. Хотя я отвечаю на этот вопрос: "Я думал сегодня о том, что может быть самым сложным/впечатляющим приложением, когда-либо написанным". а не наиболее сложный/впечатляющий.

Представьте, что вы пытаетесь разработать игру, которая смоделировала всю вселенную и позволила вам играть с ней [x] сверхдержавами. Эффективно вы можете превратить игру в симуляцию ЛЮБОЙ сложности, вплоть до такой сложной, как всякая известная физика, а затем бросать нефизику в микс! Видеоигры по самой своей природе могут быть такими же простыми или сложными, как вы хотите это сделать.

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

Ответ 27

Помимо некоторых замечательных предложений, приведенных выше, я хотел бы отметить, что Uniview впечатляет.

Ответ 28

Они сложны, да. Они очень впечатляют, да.

Но есть системы, которые сопоставимы с играми. Менеджеры баз данных очень сложны и впечатляют. Mathematica - еще один приятный кусок SW. Существует много примеров. Определенно некоторые игры там наверху, хотя.

Ответ 29

Что касается сложного и "блестящего" кода, я бы сказал, что вы должны посмотреть на приз Loebner (sp?). Это конкурс, каждый из которых предназначен для разработки обучающей машины для разговоров. Это очень сложный и интересный проект, целью которого является написать код, который может вести разговор с реальным человеком, не будучи признанным машиной.

Для этого существует много слоев, лингвистика, память, грамматика и синтаксис, самопрограммирование. Это, по сути, мини-ИИ, и если я попаду в лото, мне хотелось бы подумать, что я потрачу много времени на его работу.

Кто я шучу, я целый день проводил в аквапарке, пьяный. Но я все время думал об этом.

Ответ 30

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

Я нахожу, что парсер для естественного языка для некоторых текстовых игр впечатляет.

Простота массива в данных или в строках кода может быть впечатляющей, но любой заданный знак будет вскоре превзойден. Сложность реализации может быть предельной (например, бесчисленное взаимодействие всех API-интерфейсов, которые Microsoft вложила в Windows на протяжении многих лет), но нет никакой основной потребности в всей этой сложности. Каковы программы, которые имеют неочевидную сложность?