Всем привет! А давайте это неделя будет неделей классических квестов? Почему бы и да! Сегодня поиграем в замечательную трилогию The Legend of Kyrandia, одна из любимейших мной серий. По традиции в браузере.
10 лет назад я основал проект по портированию DOSBox в JavaScript (js-dos). Все эти 10 лет я упорно работал и развивал его. Главная цель создания проекта была в том что бы запустить МОИ любимые игры в браузере:
Как видите, я давно достиг этой цели, но продолжал работать над развитием проекта. И теперь он стал на столько хорош, что я готов предложить всем запустить свои любимые игры в браузере!
Сделать это невероятно просто. Я записал обучающее видео:
Милости просим, создавайте архивы с играми, а я опубликую их на DOS.Zone (если захотите).
Как я объясняю в видео Windows игры имеют большой размер. Поэтому js-dos предоставляет облачные диски, которые оптимизированы для работы с Windows. При загрузке игры пересылаются только необходимые сектора диска. Это позволяет запускать большие игры вроде Diablo.
Ни какой магии, за облака плачу я, поэтому что бы пользоваться инфраструктурой необходимо приобрести подписку js-dos. Цена 3$ в месяц.
Но:
Диски остаются за вами навечно, т.е. после отмены подписки остается полный доступ к ним
Первые 5 дней не тарифицируются ;)
Если Вы действительно продемонстрирует желание делать игры для запуска в браузере я дам Вам доступ в подарок
Это отличный способ поддержать проект
DOS Zone браузер
js-dos это полностью браузерное решение, но из-за ограничений WebAssembly получить произвоидетльность сранвимую с ПК версиями DOSBox/X не представляется возможным.
Поэтому я сделал DOS Zone Browser, бразуер на базе electron (chrome) в котором есть аппаратное ускорение для js-dos. Это может быть актуально если у вас слабый ПК.
DOS Zone Browser
Там вирусы?
Может быть, не узнаешь пока не установишь. В любом случае всегда лучше проверять то что скачиваешь антивирусом ;)
P. S. Комментарии на пикабу я читаю не очень часто/быстро, поэтому лучше пишите в группу в телеграмме.
Ещё в детстве (году в 1993м, сама игра может и старше) на 486м ПК играл в неё. 2д вид с боку. Там танк ездит по лабиринту. У танка башня может отделяться от гусеничной платформы, летать и стрелять лазером. Атмосфера футуристичная. Враги там какие-то шары по типу инопланетян. Вроде по сюжету надо доехать до конца уровня чтоб и платформа и пушка доехали и были целыми.
Ещё помню там были какие-то электрические препятствия которые надо было отключать. Графика в целом в серо-голубых тонах.
UPD: игра The Last Mission (1987). Спасибо нашедшему.
Не зря говорят, что лучше один раз увидеть, чем сто раз услышать. Так что приглашаем прогуляться по проекту Level Селигерская и собственными глазами посмотреть на благоустройство дворов и редкие форматы квартир.
В конце экскурсии вас ждет подарок от застройщика, не пропустите!
Level Селигерская расположен в южной части района Западное Дегунино, в пешей доступности от станций метро и в окружении пяти парковых зон.
Развитая инфраструктура подойдет и молодежи, и семьям с детьми, и пожилым людям. А редкие форматы квартир — на три стороны света, с угловым остеклением и большим окном в ванной — удивят даже самых требовательных жильцов.
Специально для пикабушников застройщик Level Group дарит промокод на скидку 1%! Все подробности смотрите здесь.
Выбирайте квартиру мечты в Level Селигерская и наслаждайтесь комфортом на новом уровне.
Итак, сегодня разберемся в РГГ(RGG) – что это такое и с чем едят. В миру бытует много аббревиатур RGG, но сегодня речь пойдет именно об одной, той самой…
RGG - Retro Game Gauntlet (ретро игровой челлендж, иногда ретро-видеоигровая рулетка).
Retro Games
Итак, это челлендж, придуманный анонимусами с Форчана, запущенный примерно весной 2013. Суть челленджа в прохождении игр, которые выбирает генератор рандомных чисел, обязывая участника проходить игры так, как люди их проходили на момент выхода. Причем это игры, которые приобрели статус «ретро», а в большинстве – это денди игры, DOS, Spectrum и т.д.
Танчики
Первые челлендж состоял из следующих 10 игровых платформ: NES, SNES, GB/GBC or Sega Game Gear, Megadrive/Genesis, Turbografx16, DOS, NeoGeo, GBA or Sega Master System, Commodore 64 or Commodore Amiga, Playstation 1 or Nintendo 64.
Dendy
Commodore 64
ZX Spectrum
Правила же были достаточно короткими: ты, как игрок, должен крутить рулетку с рандомными играми из каждой категории платформы, и пройти ту, что выпадет. Платформы проходятся по порядку, как я написал выше. У игрока есть 3 дня, чтобы пройти игру (любую, кроме РПГ, на РПГ давали неделю). Затем игрок имел право «Дропнуть» игру, т.е. спасти себя от игры на данной платформе, но тогда необходимо возвратиться в предыдущее положение и пройти игру на прошлой платформе и снова сыграть в рулетку на следующей платформе. Также игрок имел право на «Рерол» - в случае проблемы с игрой (к примеру, требуется специальный девайс для эмуляции, или игра выпущена только на родном языке и нужно хорошее познание языка) игрок имеет право снова испытать святой рандом в выборе игры. Также были еще мелкие правила, но они уже не существенны. Главное пройти до конца 😊
Contra
Supaplex
За прошедшее время РГГ только улучшался – в качестве организации, в графическом оформлении, в призах. Есть такие челленджы (рулетки) на иностранных сайтах, но они не прижились, или скажем так, не особо популярны. На ру сегменте они популяризированы благодаря стримерам, которые устраивали эти соревнования в прямом эфире.
Одна из добрых игр :)
В русском сегменте достаточно часто проводятся РГГ поединки. Есть сайт https://rgg.land/ - на нем можно смотреть как автор идеи и ведущий всех соревнований Сергей aka Nuke73 проводит подобного рода челленджи, начиная от еженедельных RGG-Battle, где стримеры отвоевывают своё право на победу за 5-6 часов, до серьезного RGG-LAND, где стримерам надо серьезно попотеть. Вы также можете смотреть и наслаждаться на стриминговых платформах как игроки готовятся или уже участвуют в данных соревнованиях, а можете и поболеть или поддержать стримеров.
Хотелось бы также отметить, что RGG проходят достаточно зрелищно и интересно. При просмотре увлекательных соревнований можно полностью погрузиться в те времена и испытать чувства ностальгии, пустив слезу :)
RGG Battle
RGG Land
Еще, для заметки, если вы желаете поиграть в старые добрые игры – то в сети можно по поиску найти несколько сайтов, где находятся и игры и симуляторы для игр, которые можно скачать. К примеру https://www.old-games.ru/ или https://www.emu-land.net/ - плюс есть сайты, на которых можно поиграть непосредственно в браузере…
Красная Жара
Phantis
Теперь, когда вы знаете, что такое РГГ – вы всегда можете сами опробовать на себе данное испытание, либо наслаждаться весьма интересным зрелищем!
Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.
Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.
В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.
❯ Инструментарий
Собирать всё буду в Linux Mint (читай Ubuntu). Средой DOS для сборки выбрал dosbox, к сожалению, это не самый лучший вариант, потому что там идёт замедление частоты (чтобы старые программы корректно работали), поэтому сборка идёт достаточно долго. Лучше всего использовать любой удобный DOS, запущенный в виртуальной машине.
Для создания загрузочной дискеты и тестирования полученной сборки буду задействовать виртуальную машину qemu. А чтобы получить дискеты с готовым образом, я буду использовать установочную дискету MS-DOS 4.0 (найденную тут см. 4.00 OEM [Sampo]).
Прежде чем пойдём дальше — важное замечание:
Никаких чужих прав задеть не собираюсь, все модификации кода были сделаны исключительно в юмористических целях, и не подлежат распространению. Модифицированные исходники удалены.
❯ В чём сложности сборки?
Проблемы две:
Некорректная инициализация переменных среды (в самом bat-файле SETENV.BAT содержится ошибки или опечатки).
Проблемы с кодировкой при переносе кода с дискеток DOS в GIT с кодировкой UTF-8.
Первая проблема легко исправляется даже самостоятельно, при беглом анализе исходного кода. Она легко вскрывается при сборке, дальше просто необходимо внести правки, либо создать свой обновлённый bat-файл, который будет инициализировать переменные среды окружения.
Значительно сложнее обстоят дела с тем, что в части кода, при переносе в UTF-8, побились некоторые символы. У меня была попытка сборки, которую я описывал у себя в ЖЖ, и, в конце концов, я получил вот это:
Это достаточно частая и болезненная проблема со старыми исходниками времён DOS. С аналогичной задачей я столкнулся и при попытке собрать программу RAM View. Об этом пути и исправлении проблемы, я подробно написал в статье Правка чужого кода.
Здесь же мы исключим ручной труд и автоматизируем исправление проблем с кодировками.
❯ Подготовительные операции перед сборкой
Итак, шаги по сборке ДОС. Клонируем оригинальный репозиторий:
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/MAPPER/GETMSG.ASM sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/SELECT2.ASM sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/USA.INF
и создаём там обновлённый бат-файл для переменных среды окружения, следующего содержания:
$ cat src/e.bat @Echo off echo setting up system to build the MS-DOS 4.01 SOURCE BAK... set CL= set LINK= set MASM= set COUNTRY=usa-ms set BAKROOT=e: rem BAKROOT points to the home drive/directory of the sources. set LIB=%BAKROOT%\src\tools\bld\lib set INIT=%BAKROOT%\src\tools set INCLUDE=%BAKROOT%\src\tools\bld\inc set PATH=%BAKROOT%\src\tools;%PATH%
В принципе этих операций достаточно для сборки, а то что ниже — это лично моё хулиганство, чтобы продемонстрировать, что DOS в действительности собрался, и нет подмены файлов. Я заменяю компанию Microsoft своим ником:
find -name "*.ASM" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.INC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.H" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.MAC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.MSG" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.C" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.CLB" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.SKL" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
Всё, теперь исходники подготовлены, для того чтобы их можно было корректно собрать.
❯ Сборка
Собирать буду в dosbox, как показала практика — это не самое лучшее решение, сборка занимает около часа, что, мягко скажем, раздражает.
Запускаю dosbox:
dosbox
Далее в нём монтирую текущую директорию как диск E.
mount e: ./
И переходим на диск e, запускаем в dosbox бат-файл, который инициализирует среду окружения, и начинаем сборку:
e: cd SRC e.bat
и запускаем сборку командой nmake:
Если вы делаете это в dosbox, то можно пойти погулять. Окончанием сборки будет выглядеть следующим образом:
После этого надо скопировать все собранные файлы в один каталог. Создаём каталог «4» в корне диска и копируем все бинарники специальным скриптом:
mkdir \4 CPY.BAT \4
Далее самое интересное:проверка того, что файлы запускаются. Для этого надо сделать так, чтобы dosbox прикидывался старым ДОСом. Выполняем следующую команду:
ver set 4.0
После переходим в каталог\4и можно выполнить в нёмcommand.com:
Хулиганство сработало, ДОС собрался и прикидывается, будто бы я его разработал. Дело стало за малым — протестировать это на реальном железе.
❯ Создание загрузочной дискетки
Дальше я думал просто примонтировать в dosbox пустой образ дискетки, и прямо из собранных файлов выполнить перенос системных файлов командой:
sys <path> a:
Но, факир был пьян, и фокус не удался. Поэтому решил MBR (Master Boot Record) позаимствовать с загрузочной дискетки DOS 4.0. К сожалению, MBR от MS-DOS 6.22 у меня не заработал.
Загружаемся с установочной дискетки и ставим наш пустой образ 1,44 МБ дискетки в дисковод B, с помощью qemu:
qemu-system-i386 -fda Disk01.img -fdb fdd.img
Отменяем установку и форматируем дискету с переносом системных файлов:
По окончании можно закрывать окно qemu. Возвращаемся к окну с dosbox и монтируем полученный образ дискетки, с помощью следующей команды:
imgmount a: <path to fdd.img> -t floppy
И потом просто вручную переносим файлы COMMAND.COM, IO.SYS и MSDOS.SYS на дискету:
Всё, образ готов. Можно его протестировать в виртуальной машине, или даже записать на настоящую дискету и загрузиться!
Для запуска в qemu следует использовать следующую команду:
qemu-system-i386 -fda fdd.img
Записать на дискетку можно командой dd, я использую USB-FDD дисковод.
sudo dd if=fdd.img of=/dev/sdk status=progress
И, да! Эта система успешно работает на реальном железе. В данном случае проверка идёт на 386 компьютере.
❯ Выводы
Запуск свежесобранного MS-DOS 4.0 на реальном железе
Не буду лукавить, сборка MS-DOS 4.0 оказалась не столь простой. Пришлось посмотреть некоторые видео, пошерстить различные репозитории. Но всё же это прекрасный опыт, который позволяет заглянуть внутрь исторических исходников и покопаться в них.
Давняя утечка MS-DOS 6.0 была неполной, и собрать его не представлялось возможным. А теперь у исследователей есть готовый инструментарий, для того чтобы попрактиковаться в разработки каких-то своих модулей старой операционной системы.
Конечно же, я по-настоящему жду, когда же обнародуют исходники MS-DOS 6.22, так как ещё надеюсь увидеть их на своём веку.
Всем привет! Удивитесь вы или нет, но я был первый кто запустил OpenTTD в браузер, и было это аж 2012 году (*). Оказывается в youtube даже сохранилось видео этой сборки:
На тот момент игра работала в разрешении 800x600 и с трудом давала 24 фпс (в видео заметно лагает курсор). С тех пор прошло 12 лет, сообщество OpenTTD стремительно развивало проект, системы компиляции C++ в js развались, появился WebAssembly.
Сегодня, OpenTTD скомпилировать в браузер может каждый, соответствующие опции включены в основной код игры. Однако, что бы все работало из коробки нужно скачать дополнительные ресурсы, скрипты и запустить серверную инфраструктуру для поддержки сетевых игр.
release-14 был издан буквально неделю назад. Его-то я и взял за основу. Итоговая сборка работает быстро благодаря WebAssembly, и позволяет играть практически на любом разрешении экрана. В игру включены:
Игра сохраняет свои прогресс в хранилище браузера, т.е. пока вы играете на том же браузере ваш прогресс будет сохранен.
Почему я не обновлял игру 12 лет? Первый порт имел много значительных изменений относительно оригинально кода игры, и со временем это ком изменений копился делая процесс обновления все сложнее и сложнее. По факту пришлось заниматься поритрованием с чистого листа, но я потратил время что бы сделать все правильно, и теперь надеюсь регулярно обновлять игру в соответствии с новыми релизами OpenTTD.
Типичная ситуация: надо выбрать фильм на вечер, вы крутите один трейлер за другим, потом все это надоедает, вы бросаете это дело и идете листать ленту. То есть смотрите короткие видео, но в них чего-то не хватает. Сокращайте ненужные усилия и получайте больше радости: листайте ленту с короткими видео, в которых всего достаточно. Такие водятся на NUUM — свежей платформе для видео, стримов и трансляций. Смотрим, снимаем и зарабатываем!
Здравствуйте. Вспомнилась одна игра старая, в которую играл как-то очень давно.
Это игра, где игрок в виде главного персонажа едет всё время уровень за уровнем на автомобиле, дорабатывая и собирая оружие и щиты, меняя автомобиль на более совершенный по мере игры. Внутри игры ему необходимо за ограниченный период доехать до финиша любым образом, и ему в этом мешают другие автомобили, в основном перегораживающие путь к цели, стреляющие широким спектром вооружения, от импульсных пушек до гранат. В игре есть наземные и подземные уровни.
Время идёт не линейно, а отсчитывается только тогда, когда герой оказывается вблизи датчиков, стоящих в основном по бокам дороги. Эти датчики можно расстреливать, и тогда время не отсчитывается.
Если же не успеть вовремя, то прилетает гигантская летающая тарелка и расстреливает главного героя. Прилететь она может только в наземных и ряде подземных уровней.
При этом, если очень удачно убегать от летающей тарелки (она уничтожает автомобиль игрока с одного-двух попаданий) и аккуратно её расстреливать, то за полчаса и её тоже можно уничтожить.