Итак, сегодня разберемся в РГГ(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.
Здравствуйте. Вспомнилась одна игра старая, в которую играл как-то очень давно.
Это игра, где игрок в виде главного персонажа едет всё время уровень за уровнем на автомобиле, дорабатывая и собирая оружие и щиты, меняя автомобиль на более совершенный по мере игры. Внутри игры ему необходимо за ограниченный период доехать до финиша любым образом, и ему в этом мешают другие автомобили, в основном перегораживающие путь к цели, стреляющие широким спектром вооружения, от импульсных пушек до гранат. В игре есть наземные и подземные уровни.
Время идёт не линейно, а отсчитывается только тогда, когда герой оказывается вблизи датчиков, стоящих в основном по бокам дороги. Эти датчики можно расстреливать, и тогда время не отсчитывается.
Если же не успеть вовремя, то прилетает гигантская летающая тарелка и расстреливает главного героя. Прилететь она может только в наземных и ряде подземных уровней.
При этом, если очень удачно убегать от летающей тарелки (она уничтожает автомобиль игрока с одного-двух попаданий) и аккуратно её расстреливать, то за полчаса и её тоже можно уничтожить.
Базовый сеттинг Moonbase характерен для множества игр подобного жанра (например: Civilization или Simcity ), но имеет свои некоторые особенности. Вы так-же можете возводить специализированную инфраструктуру, от лабораторных модулей до жилых отсеков и даже отелей на луне, но добывать ресурсы нужно подальше от основной базы, так как “майнеры” могут “перепахать” лунный грунт, не дав возможность игроку запитать или соединить модули лунного комплекса. Космическое агентство будет в достаточной мере спонсировать вас, что не составит труда разместить новый лунный модуль подальше от зон разработки, но лучше заранее подумать об этом моменте. Для снабжения электричеством своей лунной базы мы взяли солнечные батареи и накопительные радиаторы. Есть возможность использовать альтернативные варианты. Почитать ещё и поиграть.