Разработчик пинбола для Windows XP рассказал о том, почему игра не появится в Windows 11 / Хабр
Привет, меня зовут Дейв Пламмер, я бывший разработчик операционных систем Microsoft. Я работал в компании ещё с эпохи MS-DOS и Windows 95. Так получилось, что мне довелось портировать игру Space Cadet, поставлявшуюся в комплекте с Windows. Сегодня я поговорил с разработчиком из Microsoft, который полностью удалил её из операционной системы, чтобы понять, почему это было сделано, а также чтобы оценить перспективы возврата игры. Также я покажу как запустить этот пинбол в Windows 10 и протестирую его работу в новой Windows 11, чтобы проверить, работает ли он спустя почти 25 лет. Сразу должен сказать, что я не занимался графикой, звуком, дизайном стола и разработкой геймплея, даже оригинальный код писал не я. Изначально это была отдельная игра Full Tilt! Pinball, выпущенная Maxis в 1995 году. Я могу лишь похвастаться тем, что взял относительно малоизвестную игру и портировал её на платформу, получившую больше миллиарда пользователей.
В оригинальной игре Full Tilt! Pinball было три пинбольных стола: Space Cadet, Skullduggery и Dragon’s Keep
Итак, это был 1995 год, я занимался портированием оболочки Win 95 в Windows NT. Оболочка включала в себя меню «Пуск», значки Рабочего стола, папки, общие элементы управления, общие диалоговые окна, в общем, основную часть UI, которую вы видите. Наш вице-президент Джим Олчин хотел включить в комплект Windows NT нечто, способное продемонстрировать новые графические и звуковые API, которые были впервые добавлены в ОС. Естественно, лучшим решением стала бы зрелищная игра с красивым звуком и интересным геймплеем. Это бы позволило избавить Windows NT от имиджа «скучной» системы. Как и пасьянс, эта игра стала почти неотъемлемым символом операционных систем, в комплекте которых она поставлялась. Однажды, когда я работал над портированием оболочки, ко мне подошёл мой руководитель и спросил, было бы мне интересно портировать игру в пинбол из Windows 95 в Windows NT.
Задача кажется довольно простой, но я уже знал, что иногда перенос кода с 95 в NT может быть затруднительным. Это зависит от того, как он был написан и какие API использовал. Но я всё равно согласился, потому что любил игры и ухватился за возможность поработать над одной из них, да ещё и получать за это зарплату.Моей основной специальностью в команде разработки оболочки было устранение проблем, связанных с RISC-процессором MIPS. Все мы совместно работали над тем, чтобы оболочка Win 95 заработала в NT, а я в частности занимался вопросами, возникавшими с MIPS. В те времена Windows работала на нескольких архитектурах, в том числе Intel, MIPS RISC, PowerPC и Alpha AXP. Пользователь мог приобрести версию Windows, скомпилированную для одной из этих архитектур. В нашей команде каждым процессором занимался свой специалист, решавший уникальные для платформы проблемы, и лично я работал с MIPS. На моём рабочем столе даже не было x86 и я запускал NT 3.51 на машине с MIPS, которую использовал как основной инструмент разработки.
Как бы то ни было, если бы я заставил игру работать на моей машине с MIPS, то она бы работала и на любой другой. Однако возникло несколько проблем — во-первых, код временами был весьма запутан. Код игры писали не наши разработчики, Microsoft просто купила его, и он был написан не в том стиле, к которому я привык. Отличие игры от операционной системы в том, что игра часто имеет одну версию, а для операционки выпускаются версия за версией, одна поверх другой. Многие игры пишутся по принципу «выпустил и забыл», а удобство поддержки кода и его читаемость не всегда так важны, как скорость работы и сроки выпуска проекта.
Сильно поразил меня код звукового движка. Разумеется, я уверен, что с ним всё было в порядке, но написан он был на ассемблере x86. Однако код x86 очень мало бы помог мне при работе с MIPS, PowerPC и Alpha. Операционные системы наподобие Windows на 99,99% состоят из кода на C и C++, а ассемблер используется практически только в слое абстракции оборудования и, возможно, в загрузочном коде. В конце концов, если у вас есть полудюжина целевых процессорных архитектур, вы не будете вручную писать код на ассемблере для каждого из них, а захотите написать его один раз на C. Чтобы игра заработала, мне нужно было вырезать весь код на языке ассемблера и заменить собственным кодом на C, который затем будет скомпилирован в нативный код для каждой платформы.По счастливому совпадению, за пару месяцев до этого я встречался с командой разработчиков сборников игр Microsoft Arcade, чтобы протестировать их реализацию старой игры Atari для аркадных автоматов под названием Tempest, по которой я был чемпионом мира. Я созвонился с этими ребятами и попросил прислать мне код демо, занимающийся звуком, чтобы заменить им код на ассемблере. Разобравшись с примером на C, я смог создать новый звуковой движок на C++, работавший на всех нужных процессорах. Вскоре после этого мне удалось заставить игру работать достаточно хорошо для того, чтобы можно было её тестировать. Честно говоря, было здорово получать зарплату за игру в пинбол, однако вскоре моя работа над ним закончилась и я приступил к другим проектам.
Tempest из сборника Microsoft Arcade
О пинболе я не вспоминал лет десять, пока не стал волонтёром в школе своего сына, где помогал маленьким детям с их компьютерной лабораторией. Я увидел ребёнка, который вместо того, чтобы выполнять задание, играл в пинбол. Он спросил меня, играл ли я когда-нибудь в него. Я ответил, что не только играл, но и работал над ним в Microsoft. До того момента ни одного ребёнка не впечатляло ничего из того, над чем работал я, потому что, будем откровенны, когда ты в детском саду, то диспетчер задач — это та штука, которую использует твой папа, чтобы починить компьютер, пока ты плачешь как младенец из-за того, что диск с игрой застрял в приводе.
Однако прежде давайте поговорим о причинах того, почему её удалили из Windows. Чтобы выяснить это, я обратился напрямую к Реймонду Чену — разработчику Microsoft, работавшему над всеми версиями Windows с середины 90-х. Оказалось, что точно так же, как мне поручили портировать игру с Windows 95 x86 на 32-битную Windows NT, кому-то нужно было дать задание портировать её с 32-битной Windows на 64-битную, и этим человеком был Реймонд. В своё время у меня было несколько недель для работы исключительно над пинболом, но для Реймонда это была лишь крошечная часть его работы по обновлению всей оболочки до 64 бит.
Пинбол с трудом поддавался портированию — при сборке для 64-битной системы система распознавания коллизий работала некорректно — шарик проходил через препятствия, а не отталкивался от них. Очевидно, что в коде оригинала присутствовали какие-то трюки или зависимость от 32-битной компиляции. Реймонд позвал на помощь своего коллегу, но даже потратив достаточно времени, они не приблизились к решению. Когда стало ясно, что из-за пинбола они не уложатся в график работы, то они осознали, что единственный возможный вариант — избавиться от него. Так они и поступили: пинбол не совершил перехода с 32 на 64 бита. Но если никогда не существовало 64-битной версии пинбола, то как же его можно запустить в 64-битной Windows? Это возможно благодаря WoW64. Нативно Windows работает в 64 битах, а 32-битные приложения работают в специальном слое Windows on Windows, обеспечивающем совместимость с 32 битами. Это похоже на то, как мы запускали 16-битные приложения Windows 3.1 в 32-битной Windows, только на следующем логическом этапе.Автор статьи и Реймонд Чен
Ещё один аргумент против портирования — старую игру по-прежнему можно запускать, хотя есть и юридические тонкости. Я не юрист, но мне кажется, что если у вас есть лицензионные копии Windows XP и Windows 10, то вы можете запустить компонент XP в Win 10, но, может быть, в лицензии чётко говорится, что они ни в коем случае не разделимы. Если у вас есть соответствующая лицензия, то двоичный файл можно найти и онлайн, поэтому откапывать старый CD с Windows XP необязательно. Но имейте в виду, что все найденные мной файлы не подписаны, поэтому могут кишеть троянами. Не стоит им доверять, если вы не можете выполнить двоичное сравнение или сравнить хэш md5. Я бы экспериментировал с ними на изолированной виртуальной машине. При запуске игры заставка открывается на весь экран, но сама игра занимает крошечную часть большого экрана монитора. Кто-то может сказать, что возможность беспроблемной работы старого приложения спустя 25 лет после его выпуска является свидетельством качества портирования. Другие могут сказать, что причиной этого является потрясающая обратная совместимость самой Windows. Как бы то ни было, Space Cadet по-прежнему запускается и в него можно играть в Windows 10.
Глубоко внутри ядра логики пинбола есть кусок кода, который, как мне кажется, никто не понимает полностью. Ну, может быть, его понимает Реймонд, но я точно в нём не разобрался. Он называется стейт-машиной и он почти полностью незадокументирован. Каждый раз, когда код проходит через него, состояние машины изменяется, и это состояние отслеживается в состоянии разбросанных по программе переменных, поэтому очень сложно разобраться, что происходит, но всё работает.
Дополнение: в игре есть режим суперпользователя: обычно в мире систем мы такого не делаем, поэтому пинбол — практически единственный пример такой программы в Windows. Он не делает игрока настоящим суперпользователем, а просто даёт ему новые возможности в игре. Для активации режима начните новую игру, дождитесь падения шарика и наберите на клавиатуре hidden test
. После этого вы сможете управлять физикой шарика при помощи мыши и перетаскивать его по полю. Так же есть команды, дающие игроку дополнительные шарики, повышающие его в звании и добавляющие в таблицу рекордов.
Как поиграть в классический 3D Pinball на Windows 10
Инструкции Windows 10 3D Pinball
Как поиграть в классический 3D Pinball на Windows 10
Егор Морозов —
Последняя система, в которой был 3D Pinball — это Windows XP. Причина этого проста: приложение, написанное еще в 1994 году, никак не удавалось без ошибок сделать 64-битным, а выпускать 32-битное приложение в составе 64-битной Vista Microsoft не хотела. Почему бы не попросить об этом разработчиков, спросите вы? Студия Cinematronics, создавшая игру, была куплена Maxis в 1996 году. Maxis в свою очередь была куплена EA в 1997 году. Все разработчики 3D Pinball уже давно работали на другие игровые студии, и собрать их вместе было слишком дорого.
Но все же есть бесплатный и вполне официальный способ поиграть в классический пинбол даже на Windows 10. Для этого вам потребуется среда Windows XP Mode и продвинутый архиватор (типа 7-zip или WinRar). Скачать среду можно бесплатно с официального сайта Microsoft. Теперь поменяйте у скачанного приложения расширение на .zip и откройте его как архив:
Зайдите в папку sources, двойным кликом откройте файл xpm, после чего аналогично откройте файл VirtualXPVHD. Если вы все сделали верно, то увидите стандартные папки Windows XP:
Зайдите в Program Files > Windows NT и перетяните папку Pinball на любое место на диске, после чего зайдите в нее:
Можете запускать Pinball — он работает почти полноценно: нет никаких проблем с производительностью, графикой, звуком или управлением, однако ваши рекорды сохраняются лишь до перезапуска:
iGuides в Яндекс. Дзен — zen.yandex.ru/iguides.ru
iGuides в Telegram — t.me/igmedia
Купить рекламу
Рекомендации
- 7 настроек Google-клавиатуры, которые вы должны включить прямо сейчас
- Покупаем любые игры для PlayStation в России с очень хорошей скидкой
- «Сбербанк» рассказал, как платить айфоном в России без Apple Pay
- 10 мудрых способов использовать NFC-метки
Рекомендации
7 настроек Google-клавиатуры, которые вы должны включить прямо сейчас
Покупаем любые игры для PlayStation в России с очень хорошей скидкой
«Сбербанк» рассказал, как платить айфоном в России без Apple Pay
10 мудрых способов использовать NFC-метки
Купить рекламу
Читайте также
Россия санкции
Представлена необычная мышь-оригами весом в 40 грамм
мышь
Владельцев iPhone лишили новой функции в Telegram
iOS telegram
Вот как вернуть Space Cadet 3D Pinball обратно в Windows
Аудиоплеер загружается…3D Pinball для Windows — Space Cadet — цифровой стол, выпущенный в 1995 году как часть Microsoft Plus! пакет обновления для Windows 95. Позже он был включен в состав Windows NT, Windows 98, Windows ME, Windows 2000 и 32-разрядной версии Windows XP, после чего исчез навсегда. Или сделал?
Очевидно, раз вы здесь, вы уже знаете, что ответ — нет, не было. Вы можете скачать исполняемый файл с groovypost.com, запустить его, и через несколько секунд игра вернется на ваш компьютер. Оно точно такое же, как и было, хотя может выглядеть немного меньше, чем вы помните: Окно заблокировано с разрешением 640×480. (Помните, что в то время разрешение 1280 x 1024 считалось передовой визуальной славой.)
Эй, помните ту игру в пинбол Space Cadet? Вы можете скачать ее для Windows 7, 8 или 10 здесь — https://t.co/KMmpzzWQN1 pic.twitter.com/MaMamd4eSFM13 марта 2018 г.
См. далее
Бесплатный набор для Windows представляет собой слегка модифицированную версию стола Space Cadet в Full Tilt от Cinematronic! Пинбол, который также включал столы Skullduggery в пиратской тематике и Dragon’s Keep в фэнтезийной тематике. На самом деле это большая часть того, почему Pinball в конечном итоге был исключен из Windows, как объяснил инженер Microsoft Рэймонд Чен в сообщении блога MSDN 2012 года (открывается в новой вкладке).
«В 64-битной версии Пинбола была довольно неприятная ошибка, когда мяч просто проходил сквозь другие объекты, как призрак. В частности, когда вы запускали игру, мяч доставлялся в пусковую установку, а затем он медленно падают к нижней части экрана, через поршень и из нижней части стола. Игры, как правило, были очень короткими», — написал он.
«Двое из нас пытались отладить программу, чтобы выяснить, что происходит, но, учитывая, что это был код, написанный несколько лет назад сторонней компанией, и что никто в Microsoft никогда не понимал, как работает этот код (тем более все равно это понял), и что большая часть кода была полностью раскомментирована, мы просто не могли понять, почему не работает детектор столкновений. Черт возьми, мы даже не смогли найти детектор коллизий!»
Итак, поскольку «несколько миллионов строк кода» оставалось перенести с 32-разрядной версии Windows XP на 64-разрядную версию, они решили отказаться от — но не без долгих сожалений. «Если вам от этого станет легче, я опечален этим так же, как и вы, — признал Чен. — Мне очень понравилось играть в эту игру».
Некоторые люди могут по понятным причинам нервничать по поводу установки неизвестной программы, загруженной с сайта, о котором они никогда не слышали, но у меня нет таких угрызений совести, и я могу засвидетельствовать тот факт, что она отлично работает даже в Windows 10. Единственный Хитрость заключается в том, чтобы найти вещь после ее установки, потому что ее нет в списке 3D или Space Cadet. Просто найдите «Пинбол» — он находится в папке с играми.
Энди играл на ПК с самого начала, начав с текстовых приключений и примитивных экшн-игр на кассетном TRS80. Оттуда он перешел к славным дням приключений Sierra Online и симуляторов Microprose, руководил местной BBS, научился собирать ПК и развил давнюю любовь к ролевым играм, иммерсивным симуляторам и шутерам. Он начал писать новости о видеоиграх в 2007 году для The Escapist и каким-то образом сумел избежать увольнения до 2014 года, когда он присоединился к легендарным рядам PC Gamer. Он охватывает все аспекты индустрии, от анонсов новых игр и примечаний к исправлениям до юридических споров, бифов Twitch, киберспорта и Генри Кавилла. Лоты Генри Кавилла.
Получить звезду пинбола — Microsoft Store
Получить звезду пинбола — Microsoft StoreРоллинг пончик приложения
Моделирование
ВСЕ
Наслаждайтесь лучшей классической игрой в пинбол для Windows! Помните старые добрые времена пинбола на вашем компьютере? Теперь вы можете заново испытать опыт на своих новых устройствах Windows. Включите гипердвигатель и погрузитесь в эту классическую игру. Играйте в Pinball Star для Windows уже сегодня! Если вам нравится Pinball, Bubble Star, Zulu Star, скибол, баскетбол, аэрохоккей, боулинг или любые другие классические аркадные игры, вам понравится Pinball Star!
Бесплатно + Предлагает покупки в приложении
+ Предлагает покупки в приложении
См. Системные требования
Обзор Системные ТребованияДоступно для
ПК Мобильное устройство
Скриншоты
- {{#каждый слайд}}
- {{#каждый ImageForBreakPoints}} {{/каждый}} {{/каждый}}
{{/если}}
Особенности
- Классический пинбол
- 16 миссий
- Значки достижений
- Таблицы рекордов
- Настройте элементы управления
- Отличная графика и звук
Системные Требования
ОС | Windows 8 Mobile, Windows 8. 2019 © Все права защищены. Карта сайта |
---|
Оставить комментарий