Singularity не работает на Windows 10

Обновлено: 24.11.2024

Эта статья [1] представляет собой хорошее резюме проекта Singularity, архитектуры операционной системы Microsoft Research, которая привлекла большое внимание в середине 2000-х годов. Это наводит на размышления, и, хотя прямое влияние было ограниченным, некоторые из идей, лежащих в основе Singularity, как сообщается, нашли свое воплощение в продуктах и ​​системах проверки.

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

Основной целью Singularity является надежность и надежность (в их терминах «надежность и надежность»). В начале 2000-х Microsoft Windows считалась смехотворной, несостоятельной и неизбежно ненадежной системой; в сознании людей Windows = «синий экран смерти» = бесконечные ошибки Internet Explorer и другие дыры в безопасности. Оказывается, это было временно. Более поздние версии Windows (Windows Vista, Windows 7) стали более надежными и безопасными, а не просто больше. Билл Гейтс в 2002 году написал служебную записку под названием «Надежные вычисления», в которой безопасность была высшим приоритетом Microsoft; несмотря на некоторый скептицизм в то время, культурный сдвиг плюс более совершенные инструменты (например, средства проверки программного обеспечения, некоторые из которых интегрированы с внутренними компиляторами Microsoft), похоже, изменили ситуацию. Но думайте о сингулярности как о мысленном эксперименте. Что, если традиционную структуру макроядра, такую ​​как Windows, никогда нельзя будет сделать по-настоящему надежной и надежной? Нам понадобится другой дизайн ОС, созданный с нуля. Как бы это выглядело?

Механизмы языка программирования

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

Наконец, программы на основе манифеста от Singularity привносят проверку типов в процесс создания. Манифест определяет набор проверяемых свойств программы, которые ядро ​​Singularity может проверить перед запуском процесса. Например, в манифесте указано, какие версии ABI нужны программе, какие интерфейсы IPC требуются, какие другие процессы должны быть запущены и т. д. Ядро может проверять «безопасность типа и памяти, отсутствие инструкций привилегированного режима, соответствие контрактам канала» и другие, более конкретные свойства, такие как «что драйвер [устройства] не будет обращаться к оборудованию, используемому ранее установленным драйвером устройства». ». [ p4 , 1] петь

Оценка

С этого момента проект Singularity становится немного странным. Большинство системных статей нуждаются в оценочных разделах, но «надежность трудно измерить в исследовательском прототипе» [p1, 1]. Что легко измерить? Представление. И это то, что они измеряют.

Но зачем измерять эффективность? Singularity стремится к измерениям «не хуже чем» — чтобы показать, что ограничения Singularity не слишком снижают производительность. Например, в аннотации содержится эта классическая строка «не хуже, чем»: «Первые макротесты для операционной системы и приложений с закрытым процессом… показывают, что [такая] система может достичь производительности, сравнимой с хорошо настроенными, коммерческие системы с открытым процессом». [ p1 , 2] уплотнение

(На самом деле, «конкурировать с» или «сопоставимо с» — почти бессмысленные фразы: любые две системы конкурируют, и можно сравнивать любые два числа! Но эти фразы обычно используются для описания «не хуже, чем ", и мне стыдно признаться, что я сам их использовал. Лучшая альтернатива – конкретизировать: "лучше, чем" или "в пределах 5 % от задержки")

Измерения производительности неизбежны (не заслуживает рассмотрения архитектура ОС со значительно более низкими показателями производительности) и неудачны (измерения должны быть сосредоточены на самой важной цели системы, а именно на надежности). Но для меня подход Singularity к производительности проблематичен: авторы, кажется, слишком заботятся о производительности. SIP — один из примеров.

Оценка программно изолированных процессов (SIP)

Процессы Singularity обычно изолированы только программным обеспечением. На самом деле они называются программно изолированными процессами. Большинство процессов работают в том же адресном пространстве, что и ядро. Проверка программного обеспечения и языковая безопасность гарантируют, что SIP-код не сможет злоупотреблять привилегиями ядра, с которыми он работает.

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

Аппаратная изоляция не бесплатна. Пересечения ядра, которые требуют специальных инструкций (таких как прерывания и/или sysenter), намного дороже, чем простые вызовы функций. Аппаратная виртуальная память, которая не имеет значения, если вы доверяете своему безопасному для памяти языку, вводит TLB и связанные с этим затраты.Таким образом, системы Singularity восстанавливают часть производительности, потерянную из-за запечатывания и сборки мусора, путем совместного размещения процессов с кодом ядра в одном привилегированном адресном пространстве и последующей соответствующей оптимизации. («Singularity использует преимущества этого безопасного встраивания для оптимизации взаимодействия каналов и производительности языковых сред выполнения и сборщиков мусора в SIP». [ p5 , 1] sing )

Удивительно, но Singularity обладает достаточной гибкостью, чтобы оценивать множество различных уровней аппаратной изоляции [3]. На рис. 5 показан результат: добавление аппаратной изоляции и дополнительных пересечений ядра может сделать систему Singularity на 37,7% медленнее в макротесте. Но что с того? Singularity должна быть надежной, а не быстрой. И этот ориентир ограничен. Механизмы IPC Singularity, которые не меняются в тесте, предназначены для режима того же адресного пространства. Даже код «без проверок во время выполнения» запускает сборщик мусора. По этим и другим причинам я сомневаюсь, что запуск обычного C-сервера в том же адресном пространстве, что и обычное ядро, приведет к увеличению производительности на 37%. Рисунок 5 интересен, но его следует толковать в узком смысле.

Чтобы разбить его:

  • "Без проверок во время выполнения": без проверок границ, нулевых указателей и т. д.
  • «Физическая память»: режим Singularity по умолчанию (в честь которого была названа ОС); сегментация, но без пейджинга.
  • «Добавить страницы размером 4 КБ»: включите пейджинг.
    • Каковы альтернативы страницам размером 4 КБ на IA–32? (Есть два, PTE_PS и PTE_G .) Почему эти альтернативы работают лучше, чем страницы размером 4 КБ?
    • Это самый удивительный для меня результат — я потрясен тем, что дополнительные передачи управления, необходимые для «полного микроядра», снижают накладные расходы всего с 33 % до 37,7 %.

    Управление памятью SIP: кучи с непересекающимися страницами

    Каждый процесс Singularity имеет собственную непересекающуюся по страницам кучу. То есть ни один процесс не может получить доступ к объектам в куче другого процесса, и эти кучи не пересекаются на уровне страниц, а не объектов. Все объекты процесса А живут на страницах процесса А, которые не пересекаются со страницами любого другого процесса. (Непересекаемость страниц обеспечивается ядром и верификатором Singularity, а не MMU.)

    Почему непересекающиеся по страницам кучи? Хороший набор причин, которые вместе довольно убедительны:

    • Непересекающиеся кучи означают отсутствие общей памяти.
      • Общая память усложнит проверку.
      • Размер памяти процесса равен количеству его страниц.
      • Не нужно собирать объекты по одному, просто восстанавливайте все страницы.
      • "Большое количество существующих алгоритмов сборки мусора и опыт убедительно свидетельствуют о том, что ни один сборщик мусора не подходит для всей системы или кода приложения". [ p6 , 1] петь
      • Если никакие два процесса не могут совместно использовать объекты, то каждый процесс может собирать свои собственные объекты, не согласовывая расположение объектов с другими процессами.
      • В системе с одним унифицированным сборщиком мусора иногда необходимо полностью остановить систему для сбора мусора. (Даже параллельные сборщики мусора обычно имеют фазы «остановить мир».) Независимые сборщики мусора избегают этого: сборщики мусора могут работать независимо.
        • Wrinkle: В варианте с одним адресным пространством системные вызовы Singularity реализованы как вызовы процедур, а стек ядра делит пространство со стеками приложений. Так как же ядро ​​и приложение GC могут различать объекты друг друга?
        • Решение. Специальные явные структуры обозначают границы стека между потоками ядра и приложения. GC понимают эти структуры.

        Управление памятью SIP: куча обмена

        Но при наличии непересекающихся куч, как один процесс может отправить сообщение другому?

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

        «Заменяемые типы охватывают …. все значения, которые могут быть отправлены из одного процесса в другой. Они состоят из скаляров [например, числа], rep structs (структуры заменяемых типов) и указатели на заменяемые типы. Указатели могут указывать либо на одно обмениваемое значение, либо на вектор значений». [ p179 , 4] надежные конечные точки канала также взаимозаменяемы [ p3 , 1] sing .

        Таким образом, взаимозаменяемые объекты относительно просты — представьте себе плоские объекты или объекты с указателями на более простые объекты, например тип «пакет», указывающий на массив байтов. (Из документов неясно, можно ли обменивать рекурсивные структуры данных, или, точнее, могут ли процессы создавать циклические структуры в куче обмена, поскольку куча обмена имеет подсчет ссылок [ p6 , 1] sing .)

        Ядро в конечном счете отвечает за управление памятью кучи обмена; например, он собирает мусор из кучи обмена, чтобы удалить объекты, удерживаемые вышедшими SIP. Но помните, что для надежности Singularity также предотвращает одновременный доступ процессов к объектам в разделяемой памяти. Обычные кучи не пересекаются по страницам, но куча обмена явно предназначена для взаимодействия между процессами. Как Singularity может предотвратить доступ к общей памяти в куче обмена?

        Линейные типы — это круто и полезно для обеспечения соблюдения инварианта без общей памяти. Но зачем реализовывать кучу обмена, а не более простой механизм, позволяющий избежать разделяемой памяти, такой как копирование сообщений или буферизация ядра? Не совсем убедительная причина, как указано выше: производительность. Куча обмена позволяет одному процессу Singularity отправлять сообщение другому без копирования; в простейшем случае будет передан один указатель на объект кучи обмена. Это может отлично выглядеть на микробенчмарках [4]. Но…

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

        Подтверждение

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

        • Безопасность динамической памяти.
          • Все локальные указатели указывают на кучу SIP.
          • Указатели не могут быть созданы из целых чисел: новые указатели поступают только из доверенного распределителя памяти SIP.
          • Указатели строго типизированы (т. е. не могут получить доступ к памяти, используя неправильный тип, что впоследствии может нарушить безопасность памяти).
          • Принудительно с использованием известных методов (например, средства проверки байт-кода Java).
          • Указатели кучи обмена подчиняются дисциплине линейного типа (для предотвращения модификации разделяемой памяти).
          • Нет двойного доступа и т. д.
          • Указатели кучи Exchange строго типизированы.
          • Большинство контрактов с каналами не являются обязательными для обеспечения безопасности. Но контракты канала влияют на безопасность памяти, потому что Singularity определяет тип сообщения по его имени и состоянию, как указано в контракте канала. Таким образом, если Singularity не проверит, что обе стороны канала согласны с контрактом канала, а типы отправленных и полученных сообщений согласуются с контрактом, то передача сообщений может нарушить безопасность типов кучи обмена и, следовательно, безопасность памяти.
          • Опять же важно для безопасности памяти.
          • SIP не должны ненадлежащим образом использовать инструкции привилегированного компьютера.

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

          • Контракты каналов проверяются на наличие необработанных сообщений.
            • Не очень важно с точки зрения безопасности, поскольку необработанные сообщения можно легко реализовать как исключения.
            • (Но в зависимости от того, как представлены объекты кучи обмена, неясно, может ли получатель безопасно освободить сообщение неожиданного типа.)
            • Возможно, самая странная и неожиданная проверка.
            • Причина: если бы существовал цикл состояния, включающий только отправку сообщений процессом A, то A мог бы отправить бесконечно много сообщений B, не дожидаясь ответа. Это может привести к переполнению любой ограниченной очереди, а Singularity хочет избежать переполнения при ограничении размера очереди.
              • Почему? Кажется немного случайным: Singularity хочет, чтобы получение сообщения не включало распределения, чтобы получатель всегда мог надежно получить сообщение; для этого требуются ограниченные очереди приема. Почему бы не задействовать распределение? Возможно, проблема с производительностью?
              • "Несмотря на то, что правило [о циклах состояний] кажется ограничительным, мы пока не видим необходимости ослаблять его на практике". То есть это не проблема безопасности.
              • Нет, потому что контракты так не работают. В контрактах события получения неявны — конечная точка должна получить все предыдущие сообщения в строке контракта перед отправкой самого сообщения. Приведенный выше контракт действительно был бы написан примерно так: «Состояние X < M1? → М2? → М3! → Х; >", что показывает, что B (экспортирующая сторона) должен получить M1 и M2 перед отправкой M3.
              • Почему бы не проверить во время компиляции?
                • Если бы проверка происходила только во время компиляции, компилятору нужно было бы доверять.
                • Машинный код более низкого уровня, его труднее проверить.
                • Байт-код MSIL не зависит от машины, что, возможно, упрощает развертывание в гетерогенных средах («Singularity упаковывает программы на основе манифеста в абстрактный формат MSIL, который можно преобразовать в любой набор инструкций процессора ввода-вывода». [ p10 , 1 ] петь ) — но это с натяжкой.
                • Тем не менее, в документе утверждается, что в будущем компилятор сможет генерировать типобезопасный язык ассемблера (TAL), который ближе к машинному коду.
                • Авторы Singularity утверждают, что JIT по своей природе является рискованным и ненадежным.
                • Некоторые проверки выполняются во время выполнения (например, считайте надежную оболочку Cell для указателей кучи обмена [4] и проверки границ, описанные как «Налог на безопасный код»), но в целом проверка во время выполнения дорого. Если проверку можно выполнить статически, затраты времени выполнения равны нулю.
                • Но мы не знаем, насколько быстр верификатор байт-кода и, следовательно, насколько медленный запуск процесса. Возможен компромисс.

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

                Безопасность без проверки?

                Контрактные каналы

                Каналы подобны каналам безопасности типов. «Канал — это двунаправленный [без потерь, упорядоченный] канал передачи сообщений ровно с двумя конечными точками». [ p3 , 1] sing Каждая конечная точка похожа на дескриптор файла канала, за исключением того, что каналы обрабатывают потоки байтов (каналы обрабатывают сложные протоколы сообщений с безопасным типом), а дескрипторы файла канала могут совместно использоваться несколькими процессами (каждая конечная точка канала принадлежит ровно по одному потоку за раз).

                Мы обсуждали контракты каналов в контексте безопасности типов, но два листинга в разделе 2.2 заслуживают внимания. Обратите внимание, как новые каналы могут передаваться по старым (см. NicEvents.Exp:READY в тексте и в листинге 1 в сообщении RegisterForEvents).

                • В чем разница между импортирующим концом канала и экспортным концом?
                • В листинге 1 кому принадлежит экспортирующая сторона: клиенту или драйверу? Как насчет листинга 2? Почему?

                Вопросы и примечания

                Связать сообщения Singularity с принципом надежности TCP («реализации TCP должны следовать общему принципу надежности: быть консервативным в том, что вы делаете, быть либеральным в том, что вы принимаете от других»). Указывают ли контракты сообщений на другой взгляд на программную инженерию, чем принцип? Требует ли другой контекст реализации другого подхода?

                Насколько плохо то, что запечатанные процессы Singularity не могут реализовать JIT?

                Singularity — это захватывающее сочетание языков программирования и систем. Когда ОС определяла языковые инструменты и когда языковые средства определяли дизайн ОС?

                192 системных вызова! (Нет правильного числа, но Singularity явно не является минимальным микроядром.)

                Сборщик мусора — это 48% небезопасного кода! (Но небезопасного кода не так много.)

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

                «Singularity отказалась от совместимости приложений и драйверов, чтобы изучить новые варианты дизайна. Этот выбор был обоюдоострым мечом…. мы были вынуждены переписать или портировать каждую строку кода в системе Singularity. Мы не стали бы предлагать такой подход для каждого проекта, но мы считаем, что это был правильный выбор для Singularity. Выгода от свободы исследований оправдала затраты». [ p11 , 1] петь Это вдохновляет! Кроме того, у MSR много ресурсов.

                «Singularity: Rethinking the Software Stack», Гален С. Хант и Джеймс Р. Ларус, Обзор операционных систем ACM SIGOPS 41(2), апрель 2007 г., стр. 37–49. (По материалам исследования Microsoft)

                «Изолирование процессов ОС для повышения надежности и безопасности», Гален Хант, Крис Хоблицель, Орион Ходсон, Джеймс Ларус, Бьярн Стинсгаард и Тед Воббер, Proc. EuroSys '07, март 2007 г. (по данным Microsoft Research)

                «Деконструкция изоляции процессов», Марк Эйкен, Мануэль Фендрих, Крис Хавблицель, Гален Хант и Джеймс Р. Ларус, Proc. Семинар ACM SIGPLAN по производительности и правильности систем памяти '06, октябрь 2006 г. (по материалам Microsoft Research)

                «Языковая поддержка для быстрого и надежного обмена сообщениями в ОС Singularity», Мануэль Фендрих, Марк Эйкен, Крис Хавблицель, Орион Ходсон, Гален Хант, Джеймс Р. Ларус и Стивен Леви, Proc. EuroSys 2006, апрель 2006 г. (по данным Microsoft Research)

                пнико

                Выдающийся

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

                У меня установлены последние драйверы ati, все драйверы обновлены, dx 11 переустановлен... ничего...
                есть идеи?

                у меня 980x
                двойной 5970 4 гигабайта
                12 гигабайт оперативной памяти..
                все остальные игры работают отлично..кроме этой и метро 2033.

                Мазиар

                Чемпион

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

                Дфуско

                Выдающийся

                пнико

                Выдающийся

                У меня есть блок питания на 1200 Вт.
                и я удалил одну карту, тоже самое..
                это расстраивает..

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

                отключение аэродинамики. что бы это сделало?


                Ребята, вы тоже что-нибудь знаете об armaII?
                Известно ли, что у него проблемы с производительностью? хотя игра выглядит круто

                Мазиар

                Чемпион

                Да, он должен нормально работать на DX11, вы можете дождаться патча, он может это исправить.
                Что касается Aero, я видел, что у некоторых пользователей возникают проблемы с запуском игр, и иногда отключение Aero помогало.
                Arma II хороша, но плохо оптимизирована (я тестировал ее только на 5970 и получил около 20-30 FPS), я провел поиск, и кажется, что у многих пользователей есть проблемы с FPS

                пнико

                Выдающийся

                привет, maziar,
                У меня не было проблем ни с одной игрой, работающей до сих пор из коробки, за исключением сингулярности..
                это раздражает..
                игра выглядит хорошо, но не хотя выглядишь ПОТРЯСАЮЩЕ..

                Что касается arma 2, то она выглядит действительно круто... как реалистичный военный симулятор... но я был удивлен 4-гигабайтной версией 5970, которая, несмотря на среднюю скорость 40-50 кадров в секунду, сильно колеблется!

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

                Я собираюсь попробовать запустить Metro 2033 и сингулярность с отключенной аэродинамикой.. посмотреть, что произойдет..
                я не могу понять, что еще это может быть..
                у меня есть только несколько приложений в фон, 12 гигабайт оперативной памяти..
                Я думал, что это мой брандмауэр что-то делает, но я использую маршрутизатор без брандмауэра sw..

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

                Если вы смотрели какие-либо исторические видеоролики о Raven Software или Singularity, каждый из них резюмировал ситуацию так: «Теперь они работают над Call of Duty». Это правда, это то, что они делают сейчас. Они делают карты Call of Duty.

                Когда-то известная благодаря Hexen, Heretic и перезагрузке Wolfenstein (не той), Raven Software была своего рода другой компанией в период своего расцвета 90-х. Heretic и Hexen работали на движке DOOM, а id Software и Raven в этот период были довольно близки.

                Все, к чему прикасался Рэйвен, имело какую-то связь с id даже после того, как их купила Activision, где они сделали кучу сопутствующих игр, включая «Звездные войны», «Люди Икс», «Звездный путь» и, наконец, Quake 4 и Wolfenstein 2009. Большая часть эти игры были построены на движках id, а опыт компаний в области шутеров от первого лица в конечном итоге привел к тому, что они стали участвовать в совместной разработке последних двух игр Call of Duty и большинства DLC.

                Однако между всем этим лежит Singularity, игра, которая, по словам многих других, убила выпуск оригинальных игр Raven Software.

                Смерть, налоги и закапывание вещей в землю

                Теперь, сказать, что это убило Ворона, которого все знали, равносильно выкипанию сахара на дно. Activision — это монолит. Внутренняя работа этой компании охватывает не только Call of Duty, но и всю Blizzard, знаете ли, людей из World of Warcraft. За исключением очень нескольких игр, Activision получает регулярный доход только от этих игр, а не от постоянного выпуска новых продуктов.

                Странная компания. С 2010 года многие из их «столбов» полностью рухнули, а спасенные останки продолжают падать . Ушла в прошлое серия Tony Hawk, Guitar Hero исчезла, причуда Toys for Life полностью умерла после того, как даже Disney решила, что продавать коллекционные фигурки больше не стоит. . Что еще? Они потеряли возможность выпускать игры Marvel, как только Disney создала Disney и начала диверсифицировать тех, кто должен делать их игры.

                Несмотря на то, что Activision не о чем беспокоиться в денежном плане — у них есть King, который делает Candy Crush — им необходимо поддерживать свою единственную уникальную опору на плаву. Судьба не оказала им благосклонности, а продукция Blizzard за пределами Overwatch была встречена с э… исчезающим уважением?

                Кроме того, сюда добавляются отвратительные действия, совершенные сотрудниками Activision.

                Ребенок Activision — Call of Duty. Эта штука должна выкачивать так много вещей каждый год, это, возможно, единственная игровая франшиза, которую я знаю, которая действительно меняет разработчиков из года в год, а все другие компании, которые Activision собирала за эти годы, выполняли частичную работу и части, с которыми основная команда не может справиться все сразу.

                Это то, чем сейчас занимается Рэйвен. Они являются частью системы безопасности Activision, которая гарантирует, что Call of Duty никогда не остановится.

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

                С учетом всего вышесказанного, что такое сингулярность?

                Ну, это шутер от первого лица с механикой времени.

                Нет, нет. Хорошо. Давайте вернемся в 2010 год и посмотрим. Наденьте силовые перчатки и издайте шум Доктора Кто, как можете.

                Другие времена

                2010. Сейчас странное время для создания игр. Япония в ярости, пытаясь вестернизировать все. Первая эра HD в полном разгаре, вы были на четвертом 360, а ваш друг по-прежнему был непреклонен в том, что Uncharted 2 — это хорошо.

                Тем временем Raven Software какое-то время лихорадочно разрабатывала эту игру, и это был беспорядок. Она была на грани отмены, прежде чем была заключена сделка, и разработчики объединились, чтобы протолкнуть Singularity всего за 10 месяцев.

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

                В любом случае это не имело бы значения. 40 человек потеряли работу после завершения работы над Singularity, а Рейвен перевели на работу в Call of Duty.

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

                В колонке на Polygon Кит Фуллер, продюсер, сказал:

                «Креативный директор команды Marvel — теперь руководитель проекта Singularity — потратил много времени на изменение истории, удаление технически сложных сцен и спасение существующих сюжетных линий и озвучки везде, где это было возможно».

                < /цитата>

                Биош — я имею в виду Сингулярность

                Действие игры происходит на Каторге-12, необитаемом острове, который когда-то был домом для российских ученых, работающих с Е-99, мощным материалом, с помощью которого им удалось не только создать путешествие во времени, но и убить почти все и каждый, кто остался, теперь мутировали в ужасных зверей. Вы играете за Ренко, солдата, которого отправляют на рутинную миссию, а в конце концов он попадает в 1955 год, где спасает человека по имени Демичев, тем самым изменяя всю историю так, что русские завоевали землю.

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

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

                Порт для ПК, в который я играл, не имеет субтитров. Тем не менее, он поддерживает 4K, поскольку эта игра никогда не предназначалась для просмотра в разрешении выше, чем, скажем, 720p на плазменном телевизоре середины 2000-х годов.

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

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

                Беспроигрышный мастер, мастер меньшего

                Singularity хочет быть одновременно и Bioshock, и Half-Life 2. Она не очень хороша ни в том, ни в другом, и абсолютно не использует механику манипулирования временем, вокруг которой вращается сюжет. Вы можете превратить людей в пыль или замедлить ход событий, но если игра по умолчанию лучше и проще, зачем беспокоиться?

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

                Даже в конце, когда он делает момент «Супергравитационная пушка» из Half-Life 2, и вы можете просто спамить его, было проще справиться со всем с моим миниганом и ракетницей, чем с бесконечной ладонью смерти .

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

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

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

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

                «По крайней мере половина карт Singularity не работала на PS3, некоторые не помещались в памяти на 360, и даже на высокопроизводительных ПК мы видели, как частота кадров снижалась до минимума во время многих боевые последовательности. Это было после того, как крайний срок для второй альфа-версии уже давно прошел».

                Пистолет под названием «Искатель» разбросан по всему миру, чтобы оживить перестрелки с помощью замедленной съемки, но вместо интересных сценариев, в которых вам нужно использовать его, чтобы обвести пулю вокруг определенного врага, он просто убивает их с одного выстрела. они… все бегут к вам.

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

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

                Игра в беде

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

                Fuller

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

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

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

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

                Я могу представить себе, что сегодня Берисев склоняет вас ближе к себе, а Демичев разговаривает с вами в 1955 году.

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

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

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

                Эта фиксация не принадлежит ни к одной из веток в этом репозитории и может принадлежать ответвлению за пределами репозитория.

                • Открыть с рабочего стола
                • Просмотреть в необработанном виде
                • Копировать исходное содержимое Копировать необработанное содержимое

                Копировать необработанное содержимое

                Копировать необработанное содержимое

                Руководство по установке автономного программного обеспечения EIC Fun4All

                Singularity работает под управлением ОС Linux. Но в macOS требуется еще один уровень виртуальной машины, чтобы сначала создать среду Linux (подробнее читайте в документации по Singularity). Самый простой подход — использовать контейнер в Unbuntu VirtualBox.

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

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

                Шаг 1. Установите программное обеспечение ВМ

                Первый шаг – установка необходимого программного обеспечения для ВМ. Это означает установку VirtualBox и Vagrant, где VirtualBox — это программное обеспечение виртуальной машины, а Vagrant — инструмент для создания среды виртуальной машины и управления ею. Опять же, обратите внимание, что эти инструкции будут для OSX, но приведенные ниже ссылки также должны содержать аналогичные инструкции для загрузки необходимого программного обеспечения в Windows.

                Релевантные, потенциально полезные ссылки

                Если у вас еще не установлен homebrew, загрузите и установите его в свой терминал с помощью

                После установки homebrew вы можете загрузить и установить необходимые пакеты программного обеспечения

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

                Запустите vagrant destroy, чтобы случайно не запустить другую машину. Теперь загрузите его:

                Обратите внимание, что это не то место, где вам нужна Singularity v2.5.0, как в руководстве Джина. Это приходит на более позднем этапе. Если вы замените 2.4 выше на 2.5, это не сработает. Теперь вы должны подключиться по SSH к виртуальной машине, в которой вы можете загрузить Singularity v2.5.0, необходимое программное обеспечение EIC Fun4All и подготовиться к запуску симуляций.

                Пришло время установить необходимое программное обеспечение на ВМ. Выполнить:

                Это эквивалент homebrew на виртуальной машине Linux, в которую вы вошли, и вы получите необходимые пакеты для установки Singularity v2.5.0. Обратите внимание, что это и следующее должны выполняться в каталоге /vagrant. Этот каталог используется совместно с вашим хост-компьютером, поэтому на нем достаточно места на диске, чтобы получить весь код и т. д.Теперь, по иронии судьбы, вы готовы к загрузке «Краткого руководства по Singularity» на виртуальную машину:

                Если у вас есть проблемы с подключением git к виртуальной машине, это происходит только потому, что вы не загрузили пару открытого/закрытого ключа в свою учетную запись git, которая связывает его с этим компьютером. См. эту ссылку, чтобы узнать, как сгенерировать ключ. Вы можете загрузить его на github, зайдя в свою учетную запись, нажав «Настройки», а затем перейдя на вкладку «Ключи SSH и GPG» слева. Добавьте ключ, который вы только что сгенерировали на виртуальной машине, для которой был определен путь при фактическом создании пары ключей.

                Теперь у вас действительно установлена ​​Singularity v2.5.0 на виртуальной машине. Пришло время перезагрузить его с некоторыми специфическими настройками EIC. Тип

                чтобы вернуться к локальному ноутбуку.

                Примечание для пользователей Windows

                До этого момента, вероятно, на веб-сайте Singularity можно было найти специальные инструкции для Windows о том, как установить и запустить программное обеспечение, подобное VirtualBox и Vagrant, в Windows. Приведенные выше указания предназначены для пользователей OSX; однако приведенные ниже указания должны применяться к любому пользователю после настройки виртуальной машины, как указано выше. Остальные инструкции действительно относятся только к виртуальной машине, поэтому, если вы можете войти в виртуальную машину, следующие инструкции должны (в принципе) быть полезными.

                Примечание для пользователей Linux

                В принципе, виртуальная машина не нужна, если вы пользователь Linux, и вы можете просто напрямую клонировать пакет сингулярности из git и установить его на свой компьютер после установки необходимых пакетов с помощью sudo apt-get. Однако я не знаю этого наверняка и сам не проверял, поэтому не могу комментировать справедливость приведенного выше утверждения. Это просто мое предчувствие.

                Шаг 2. Настройте виртуальную машину для обработки моделирования EIC

                Для моделирования EIC требуется много памяти. Только для сборки детекторов CEMC и MVTX требуется пара ГБ памяти. Поэтому вам необходимо настроить виртуальную машину так, чтобы она имела доступ к дополнительной оперативной памяти вашего ноутбука.

                Когда вы загружаете виртуальную машину в первый раз, в вашем каталоге должен быть создан файл с именем Vagrantfile. Откройте его в своем любимом текстовом редакторе:

                Найдите закомментированный фрагмент, похожий на

                Раскомментируйте строки config.vm.provider и vb.memory. Они устанавливают ограничения памяти для вашей виртуальной машины. Вы должны изменить число 1024 на любое другое — имейте в виду, что это установит предел памяти вашей виртуальной машины и, таким образом, может ограничить объем оперативной памяти вашего личного ноутбука. Другими словами, не направляйте всю оперативную память на виртуальную машину. У моего ноутбука 8 ГБ ОЗУ, поэтому я установил 4096, например

                Теперь вам нужно сбросить настройки виртуальной машины, чтобы она приняла новый Vagrantfile. Выполнить:

                Теперь вы снова в виртуальной машине, и у вас должны быть необходимые инструменты, чтобы загрузить платформу EIC Fun4All и запустить моделирование.

                Шаг 3. Установите программное обеспечение EIC на виртуальную машину

                Теперь вы можете получить программное обеспечение EIC, которое в основном следует инструкциям Джина с исходной страницы github README.md.

                Запустите сценарий загрузки/обновления, который получает последние библиотеки сборки из репозитория EIC. Если вы запускаете его впервые, это займет некоторое время (10–20 минут), так как на виртуальную машину будет загружено около 10 ГБ данных

                .

                Теперь запустите контейнер сингулярности, который фактически будет местом, где вы сможете получить среду EIC Fun4All:

                Запустите скрипт установки eic, и все будет готово

                Теперь вы можете скачать, например. репозиторий git macros и запустите несколько симуляций. Если вы делаете это на своем локальном ноутбуке, вы, вероятно, будете ограничены потреблением памяти (например, у меня всего 8 ГБ ОЗУ, чтобы распределить между моим собственным ноутбуком и виртуальной машиной, выполняющей симуляции, что может быть большим объемом памяти). 4 ГБ оперативной памяти должны покрыть большинство симуляций EIC; Однако события с внедрением HIJING могут быть значительно больше.

                Советы и рекомендации

                Я бы предложил устранять неполадки номинальным способом, например. проверка Google или других вики-страниц, например тех, на которые ранее были ссылки в этом документе. Одна проблема, с которой я столкнулся, пытаясь это сделать, была связана с ограничением/потреблением памяти моей виртуальной машиной. Изначально моя виртуальная машина была ограничена 1 ГБ ОЗУ. Когда я пытался запустить макрос Fun4All по умолчанию, я получал такие ошибки, как

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

                Можно увидеть, что мой общий объем памяти составляет около 4 ГБ — именно столько, сколько я установил в своем Vagrantfile на моем локальном ноутбуке. Если вы измените ограничение памяти в своем бродячем файле и выполните

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

                Можно также проверить, что необходимые библиотеки находятся в правильном месте, запустив (после запуска сценария среды eic), который должен распечатать многие библиотеки, например.g4detectors и указатели программных ссылок на то, где библиотеки находятся в загруженном коде.

                Другая потенциально полезная ссылка: инструмент Jenkins каждую ночь отслеживает выходные данные базовой сборки EIC. Можно взглянуть на вывод консоли при запуске контейнера Singularity с нуля на компьютерах RCAS, который может предоставить некоторую полезную информацию для сравнения с тем, какой вывод вы получаете локально.

                Читайте также: