1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Компилирование GNU Robbo

Тема в разделе "Мастерская", создана пользователем AndyFox, 7 июл 2024.

  1. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    4.238
    @Jordan 63, @Dimouse, версия 0.68 от @Robbo, без проблем запускается на Windows 98. А ведь новей на 13 лет, чем 0.57.
     
  2. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    По запросам я пока в 0.68 поправил следующее:

    * файл настроек пишется в корень
    * создается файл-шаблон пользовательских уровней
    * наконец работает переключение windowed/fullscreen уже в игре, переделана неработающая функция
    * озвучены практически все события, что были в Robbo от xLand (особенно озвучка того, что выпадает из вопросов, очень помогает, поскольку часто вопросы бьются лазерами за пределами окна просмотра)
    * немножко поправил, чтобы не было эха, если быстро происходит одно и тоже событие и играется одинаковый длинный сэмпл (как в моем скине с Robbo от xLand). Сейчас оно всё играется одновременно на разных «каналах». Решение: либо сделать очередь сэмплов (если у них признак, что они не должны играться вместе), либо не играть такие повторно, если сейчас играется («не можешь стрелять...»). Пока последнее решение сделал. Можно еще прерывать играемый, если приходит повторный, но звучит это не очень. Это-то вообще легко реализуется.

    Последние два чисто самому хотелось. Может ещё что кому придет в голову. Я всё выложу, пока некоторые нерешенные вопросы у меня ещё есть.

    Не по теме. Нашёл в игре достаточно шикарные новые наборы уровней. Субъективно казалось по разным другим играм, что пользовательские уровни часто сделаны по типу «дорвались», навалить мешанину какую-то, но вот тут сюрпризы есть, продуманные. Интересно проходить.
     
    Последнее редактирование: 19 июл 2024
    Jordan 63, Dimouse и AndyFox нравится это.
  3. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    4.238
    Вообще-то вполне по теме. :)

    Взяты из наборов из Robbo I, II, III, IV, V, VI, VII, VIII, IX, X и т. д., вот далеко не полный список — List of Atari 400 800 XL XE Games : page 1,

    Уровни и наборы таковых присылались в LK Avalon на тетрадных листах в клетку, далее проходили конкурс и из лучших составлялась новая часть игры. Поэтому неудивительно что попадаются интересные. Вообще Robbo в ПНР была игрой культовой.
     
    Robbo нравится это.
  4. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Ничего из этого не знал, спасибо большое!
     
    AndyFox нравится это.
  5. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    @Robbo, "Спасибо, интересно, что получится!!!"
    Не получилось. Все варианты кода сыпят ошибками при компилировании (из внятного только то что дублируется присвоение переменных), нужны более старые компиляторы.
    В дистрибутиве вариант игры есть.
     
    AndyFox и Robbo нравится это.
  6. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    4.238
    К сожалению, только для Linux, до версии 0.57 включительно.
     
  7. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Выявленные баги 0.68:

    Уровень 008 набора R653924. При любом входе в правый нижний телепорт (нижняя линия телепортов из шести в начале уровня) игра намертво зависает. Что-то с логикой телепортов. В дизайнере там стоит 6, если поставить 1, то зависания не будет, но зависнет, если войти в ближайший слева.

    Уровень 011 набора R653924 не пройти в версии full (при сглаживании вертикального скролла), тайминги взрыва бомб другие, поэтому не успеваешь. В обычной версии всё в порядке.

    Предлагаю фиксировать такое в теме.
     
    Последнее редактирование: 20 июл 2024
    Dimouse и AndyFox нравится это.
  8. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Выложите плиз последнюю версию исходников со всеми описанными изменениями в теме.
     
    AndyFox нравится это.
  9. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Я ещё не закончил с хотелками для 0.68. Если Вы хотите с этой версией эксперементировать, то берите официальные исходники. Для этого мои рабочие не нужны. Ведь версия 0.68 уже успешно скомпилирована и выложена, а насколько я понял, @AndyFox просит скомпилировать раннюю версию 0.57.

    Вот инструкция по компиляции версии 0.68 для Win32. Что же нужно сделать с исходниками.

    Для работы лучше всего установить Visual Studio 6. Советую выбирать установку с минимумом компонентов. Инсталляция долгая и если она в конце вылетит с ошибкой (а она у меня вылетала с ошибкой не один раз, пока не разобрался), нужно будет начинать всё сначала. Вылетает она как раз из-за определённых компонентов, выбранных для инсталляции. При первом запуске инсталлятора в систему будет установлена старая версия Microsoft Java Virtual Machine (если её нет) с обязательной перезагрузкой. Если совсем не получается установить VS6 на новой ОС, можно попробовать инструкцию (VB6 здесь это часть VS6, как и VC++6), мне не понадобилась.

    Необходимо также скачать четыре архива с development-версиями SDL-библиотек по точным ссылкам, что я дал в своём сообщении здесь. Повторю их снова здесь для удобства:

    1) SDL 1.2.14.
    2) SDL_image 1.2.12.
    3) SDL_mixer 1.2.12.
    4) SDL_ttf 2.0.11.

    Итак, что нужно сделать.

    1. Разархивировать скачанные исходные тексты из архива gnurobbo-0.68-source.tar.gz в любую папку. Допустим, мы разархировали их в папку c:\gnurobbo.

    2. Создать в папке gnurobbo папку SDL, в ней папку lib.

    3. Извлечь из четырех архивов development-версий SDL-библиотек файлы по схеме:

    * из папки include каждого архива в папку gnurobbo\SDL
    * из папки lib или lib\x86 каждого архива в папку gnurobbo\SDL\lib
    * другие файлы в архивах нам не нужны
    * zlib1.dll при конфликте оставить от пакета SDL_image
    * SDL.dll в папке SDL\lib сразу заменить на мой пропатченный, чтобы об этом больше не думать

    Note: Можно размещать файлы иначе, но потом надо будет обязательно исправить все пути вида #include <SDL/...> в файлах game.c и game.h. Легче сделать так, как хочет автор изначально, чтобы этим не заниматься.

    4. Переместить два файла gnurobbo.dsp и gnurobbo.dsw из папки gnurobbo\win32 в папку gnurobbo.

    5. Отредактировать все пути в файле gnurobbo.dsp. От строки SOURCE=.\zlib1.dll до строки SOURCE=.\dirent.lib.

    Все SDL-файлы у нас будут в папке ".\SDL\lib\...", и только dirent.lib в папке ".\win32\...", то есть так:

    SOURCE=".\SDL\lib\zlib1.dll"
    ...
    SOURCE=".\win32\dirent.lib"

    Note: кавычки я ставлю.

    6. В том же файле gnurobbo.dsp вместо двух параметров /I с разными путями

    /I "D:\data\Documents and Settings\arkadiusz.lipiec\workspace\gnurobbo\SDL-1.2.13\include" /I "D:\moje\gnurobbo\SDL-1.2.13-win32\SDL_ttf-2.0.9"

    написать один параметр /I с полным путём до нашей папки gnurobbo. Например,

    /I "c:\gnurobbo"

    7. В файле game.h разкомментировать строки

    #define PLATFORM_WIN32
    #define PLATFORM_PC

    8. В файле game.h внести исправление в номер версии и добавить четыре строки (для полной компиляции)

    #ifdef PLATFORM_WIN32
    #define PACKAGE_DATA_DIR "./data"
    #define VERSION "0.68"
    #define __func__ "" /* unfortunatelly under vs6 is nothing like this macro ;( */
    #define HAVE_MUSIC
    #define HAVE_DESIGNER
    #define LIGHTNINGENABLED
    #define _SMOOTH_SCRL_

    #endif

    Для стандартной компиляции поменять только номер версии, четыре строки не добавлять

    #ifdef PLATFORM_WIN32
    #define PACKAGE_DATA_DIR "./data"
    #define VERSION "0.68"
    #define __func__ "" /* unfortunatelly under vs6 is nothing like this macro ;( */
    #endif

    9. Открыть gnurobbo.dsw в Visual Studio. Установить конфигурацию Debug (Build -> Set Active Configuration). Она установлена по умолчанию, но первый раз можно и проверить.

    10. Компилировать, то есть сделать Build gnurobbo.exe. В случае успеха, будет создана папка gnurobbo\Debug со всеми obj-файлам и gnurobbo.exe. Если есть ошибки — устранять и повторять. У меня ошибок не было.

    11. Скопировать все файлы *.dll из папки gnurobbo\SDL\lib в папку gnurobbo\Debug. Скопировать папку gnurobbo\data в папку gnurobbo\Debug.

    12. Запустить файл gnurobbo\Debug\gnurobbo.exe.

    ======================

    Вот наиболее важные исправления для «нашей» неофициальной версии 001

    Номер версии для полной компиляции

    #define VERSION "0.68.r415.001 non-official (full)"

    Номер версии для стандартной компиляции

    #define VERSION "0.68.r415.001 non-official (std)"

    1. Перенос файла конфигурации в корень (здесь).

    2. Создание пустого файла-шаблона при запуске (здесь).
     
    Последнее редактирование: 21 июл 2024
    AndyFox и Dimouse нравится это.
  10. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    @Robbo,

    Спасибо за инструкцию. Я собираюсь поддерживать максимальное возможное количество платформ, а так же совместимость с новыми и со старыми компиляторами имея одну кодобазу. И добавить поддержку cmake.
     
    AndyFox нравится это.
  11. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    4.238
    Пытался установить deb-пакет версии 0.57 на Lubuntu x32 (16.04), не получается...
    Также не запускается и на Ubuntu x32 (7.04).
    Какая версия Linux может подойти?
     
  12. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Попробуйте 4.10. По датам видно.

    Я бы предложил перебирать дальнейшие версии Ubuntu по датам того, что берётся (там же).
     
    Последнее редактирование: 21 июл 2024
    AndyFox нравится это.
  13. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    4.238
    @Robbo, увы, VirtualBox не ставит Ubuntu 4-х и 5-х версий. А на более новых не ставится deb-пакет.
     
    Robbo нравится это.
  14. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Там их несколько. Вот этот пробовали? Дата похожа для Ubuntu 8.04.4 LTS (Hardy Heron)

    gnurobbo_0.57.1-2_i386.deb 2008-05-10 02:04 43K
     
    AndyFox нравится это.
  15. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    @Robbo, это не вся игра, размер очень маленький, отдельно gnurobbo_data (что-то такое) должен быть ещё.

    @AndyFox, можно распаковать вручную и скопировать по каталогам, но недостающие библиотеки все равно придется доустанавливать или так же копировать в системные каталоги вручную (если они вовсе окажутся совместимыми ).
    Можно попробовать криво переделать игру в портативную, но шансов что она заработает хотя бы под ubuntu 12 не очень (для этого в исполняемом файле игры в hex-редакторе меняются пути для каталогов с ресурсами игры + запуск игры через скрипт, который назначает дополнительный каталог, где игра должна смотреть отсутствующие библиотеки).

    К слову, под debian 12 версия игры из репозитария работает без звука. Либо у меня что-то конфликтует, либо у игры звук поломан - если какие-то древности использует вроде /dsp/ или esd аудиоустройства для вывода звука (в "чистом" debian 12 не проверял, но отключение pulse толка особо не дало; совсем с нуля debian не пробовал установить, с mini-диска). В любом случае под debian 12 проблемы со звуком сами по себе есть (установка fluidsynth, например, ломает аудио совсем, пока не удалишь - звука нет), после того как кроме pulse еще pipewire добавили "из коробки".
     
    Последнее редактирование: 21 июл 2024
    AndyFox нравится это.
  16. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Точно? Это же версия 0.57. Игра была ещё в зачаточном состоянии.
     
    AndyFox нравится это.
  17. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    @Robbo, был не прав. Скачал-посмотрел. По файлам все на месте, папка games с исполняемым файлом игры и share с данными игры присутствуют. Не хватает только горы библиотек :-)

    Игра без звука (не вижу ресурсов, их там действительно минимум). Зато требования скромные: libc6 (>= 2.4), libsdl-ttf2.0-0, libsdl1.2debian (>= 1.2.10-1), ttf-dejavu-core. Естественно, в современном дистрибутиве как минимум поддержка i386 должна быть включена + установлена орда 32-ух битных библиотек (и то, есть шанс несовместимости). Можно криво попробовать сделать "портативной", из принципа, но сколько библиотек это потянет из старых дистрибутивов не понятно.
     
    Последнее редактирование: 22 июл 2024
    Robbo и AndyFox нравится это.
  18. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Я начал эксперименты с компиляцией, под linux и windows. Как все доделаю, проверю компиляцию на более старых дистрах, к примеру debian 3.
     
    Tigoro и AndyFox нравится это.
  19. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Всякая смесь по игре.

    Интересная механика обнаружилась, о которой не знал. Если магнит некоторое время прикрыт неким движущимся объектом и не воздействует в этот краткий момент на Роббо (вот эта механика мне впервые встретилась в Robbo Millennium, красная планета), то можно безпасно войти в его поле, стрельнуть в него и пуля во время своего полёта точно также защищает от магнитного воздействия и смерти. Можно перемещаться, периодически стреляя. А вот эта механика уже в GNU Robbo обнаружилась. Один из уровней будет на этом построен.

    Так и не понял, для чего служит этот STOP.

    upload_2024-7-24_0-52-28.png
     
    Последнее редактирование: 24 июл 2024
    AndyFox нравится это.
  20. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    133
    Разобрался, что такое объект STOP ('X' в текстовом представлении уровня). Он взят из игры Robbo Millennium, но не работает. Не увидел в коде реализации.

    Robbo Millennium:

    upload_2024-7-25_22-39-51.png

    GNU Robbo:

    upload_2024-7-25_22-43-39.png

    Аналогично и объект RADIOACTIVE_FIELD (до r364 BARBED_WIRE) ('k' в текстовом представлении уровня):

    upload_2024-7-25_22-46-32.png

    Он также позаимствован из игры Robbo Millennium и работает.

    upload_2024-7-25_22-49-44.png

    P.S. Оба набора уровней RM (синяя и красная планета, 60 и 76 уровней) я сконвертировал в формат GNU Robbo с помощью скомпилированной под Win32 утилиты lvdump_millenium.c, написанной авторами GNU Robbo. К утилите есть инструкция в файле robbo_millenium.txt. (Да, они упорно пишут millennium с одной n).

    Немножко только исправил, чтобы компиляция под Win32 работала. Пришлось добавить свою функцию gettimeofday, которой нет в Windows, и добавить #include <WinSock2.h> (вместо #include <sys/time.h>), чтобы struct timeval была определена.

    Исходный текст этой и других утилит для конвертаций доступен только в файлах проекта (папка robbo) и не включался авторами в выкладываемые исходники.

    По соображениям © авторы GNU Robbo не включили в GNU Robbo и два набора уровней Robbo Millennium, но предоставили владельцам купленной копии возможность их сконвертировать с помощью этой утилиты самостоятельно.

    ===================

    Продолжая тему Robbo Millennium. В коммите r195 (2009-12-05 21:45:47) набор из одного уровня millenium_demo.dat (прямая ссылка на файл) был изменён на нечто другое по тем же соображениям ©.

    До этого вмешательства последний раз millenium_demo.dat менялся в коммите r192 (2009-12-05 17:50:42).

    Соответственно, восстановить этот уровень до вмешательства можно по коммитам r192, r193 или r194 (естественно, скачиваемый файл здесь будет одинаков). Параметр [notes] в этом старом файле надо будет заменить на [level_notes] (был переименован в коммите r277).
     
    Последнее редактирование: 26 июл 2024
    Dimouse и AndyFox нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление