The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Опубликован код старых игр Infocom, включая Zork

16.04.2019 21:59

Джейсон Скотт (Jason Scott) из проекта Internet Archive опубликовал исходные тексты игровых приложений, выпущенный компанией Infocom, просуществовавшей с 1979 по 1989 год и специализировавшейся на создании текстовых квестов. Всего опубликованы исходные тексты 45 игр, включая Zork Zero, Zork I, Zork II, Zork III, Arthur, Shōgun, Sherlock, Witness, Wishbringer, Trinity и The Hitchhiker's Guide to the Galaxy.

Опубликованный код отражает срез состояния системы разработки Infocom на момент закрытия данной компании. Код предназначен для изучения методов разработки старых игр, обсуждения и исследований в области истории компьютерной техники (лицензия на код не является открытой). Разработка игр велась на мэйнфрейме c ОС TOPS20, для сборки применялся компилятор ZILCH. Код написан на языке ZIL (Zork Implementation Language).

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Microsoft открыл код MS-DOS 1.25 и 2.0 под лицензией MIT
  3. OpenNews: Открыт код классического почтового клиента Eudora
  4. OpenNews: Опубликованы исходные тексты операционной системы CP/M
  5. OpenNews: Компания Adobe передала в музей компьютерной техники исходные тексты Photoshop 1.0
  6. OpenNews: Опубликованы исходные тексты первого выпуска Apple DOS
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: game
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (46) Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (1), 22:18, 16/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Теперь скоро сообщество выпустит порты этих игр на GNU/Linux, Vulkan и Wayland - это лишь вопрос времени.
     
     
  • 2.2, Аноним (2), 22:21, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Вначале консоль, работающую поверх Vulkan и Wayland, придётся допилить. Игры то текстовые.
     
     
  • 3.18, Анонимкаааа (?), 08:27, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Вначале консоль, работающую поверх Vulkan и Wayland, придётся допилить. Игры то текстовые.

    alacritty

     
     
  • 4.45, Аноня (?), 19:10, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Плюсики теперь норм выглядят.
     
  • 3.26, Аноним (26), 10:30, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    На кой хр.н там этот Vulkan, игры-то текстовые. Оно и поверх Xorg нормально побежит.
     
  • 2.4, Аноним (4), 22:40, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не выпустит. Портирование на современные платформы не является "исследованием в области истории компьютерной техники", а это единственное, что они разрешили делать с этим кодом.
     
     
  • 3.8, НяшМяш (ok), 23:21, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Почему это вдруг? Как раз портирование на какой-нибудь вулкан под холодильник - и есть исследование. А потом попытаться это продать - вот это уже запрещено.
     
  • 2.9, Холодильник (?), 23:45, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Портировали тыщу лет назад.

    https://gitlab.com/DavidGriffith/frotz

     
     
  • 3.37, Растишка (?), 16:03, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Уже и на Расте запилили. С голосовым управлением и поддержкой WASM прямо в браузере.

    https://sterlingdemille.com/encrusted/

     
  • 1.3, Аноним (3), 22:24, 16/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Ура, товарищи!


    p.s. новый дизайн - отстой.

     
  • 1.5, Kuromi (ok), 22:47, 16/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну вот Zork (кажется весь) доступен на GOG, интересно, есть ли шансы получить нормальный обновленный билд под современные системы?
     
     
  • 2.6, Kuromi (ok), 22:52, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хмм, посмотрев поближе на то, что выложено в Гитхабе напрашивается вывод, что нет.
     
     
  • 3.12, Ordu (ok), 00:37, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да ладно, всё не так плохо. Там внутре lisp, только он вместо () иногда использует <>. Всё что надо, это написать к нему read, а затем научить современный лисп работать с теми сорцами.

    Например:

    <DEFINE20 PSEUDO ("TUPLE" V)
    <MAPF ,PLTABLE
          <FUNCTION (OBJ)
       <COND (<N==? <LENGTH .OBJ> 3>
      <ERROR BAD-THING .OBJ PSEUDO>)>
       <MAPRET <COND (<NTH .OBJ 2>
      <VOC <SPNAME <NTH .OBJ 2>> NOUN>)>
       <COND (<NTH .OBJ 1>
      <VOC <SPNAME <NTH .OBJ 1>> ADJ>)>
       <NTH .OBJ 3>>>
                  .V>>

    Тут сложно сказать, что к чему -- макрос это объявляется или функция? если функция, то к чему , перед PLTABLE? И что значат точки -- это такой способ вызывать symbol-value? Но так или иначе, мне кажется, что если пару дней поломать голову над этими сорцами, то можно понять что к чему, и ещё за пару дней написать подходящий lisp, который это сможет прожевать. Потом, правда, можно отлаживать это всё месяц, но это другой вопрос.

    А если вместо того, чтобы ломать голову над сорцами найти мануал к тому lisp'у, на котором всё это написано, то можно отлаживать не месяц, а за пару недель справится. Или даже быстрее -- сложно сказать. Главное писать на lisp'е, не переизобретая lisp. Не важно на каком -- common lisp, scheme, racket, elisp -- главное на lisp'е. Потому что если не на lisp'е, то придётся начать с написания lisp'а. То есть, в любом случае придётся начать с написания lisp'а, но написать lisp на lisp'е -- это как два пальца об асфальт, а вот на C написать лисп -- это уже хороший такой студенческий проект для постижения дзена.

     
     
  • 4.13, Stax (ok), 04:01, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > на C написать лисп -- это уже хороший такой студенческий проект для постижения дзена.

    Ну это вы загнули. Лисп тем и отличается от языков со сложной грамматикой и хитростями, что его базовый интерпретатор написать несложно всегда, и вам не нужен для этого лисп. На C не то чтобы сильно сложнее (чуток заморочек с токенизацией и управлением памятью, но ничего особенно сложного там нет).
    В качестве доказательства гуглится, например, это: https://carld.github.io/2017/06/20/lisp-in-less-than-200-lines-of-c.htmlhttps://en.wikipedia.org/wiki/MDL_(programming_language)
    Да, ограничено, но тем не менее. А если взять язык выше уровнем, типа питона то на нем вообще халява.

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

    PS а для ответа на вопрос о том, что тут объявляется, можно смотреть спецификацию языка MDL: https://en.wikipedia.org/wiki/MDL_(programming_language)

     
     
  • 5.14, Ordu (ok), 04:34, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну это очень ограничено Во-первых, в глаза бросается, оно без сборки мусора, ... текст скрыт, показать
     
     
  • 6.19, Stax (ok), 08:43, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну это *очень* ограничено. Во-первых, в глаза бросается, оно без сборки мусора,
    > то есть заполняет память пока не упадёт с ООМ. А сборка
    > мусора -- это значит выкидываем libc'овый malloc, расчехляем mmap и пишем
    > свой аллокатор. Во-вторых, там нет очень многих вещей, которые для лиспа
    > -- норма. Скажем целочисленных значений, массивов, хештабличек, компиляции/оптимизации
    > -- оно ж убъётся что либо делать в том формате, в
    > котором есть, и например к любой локальной переменной добираться через поиск

    Это так, но... если с практической точки зрения в этой задаче - сколько там памяти может захотеть программа 80 года, работавшая на 8-битных железках с 64 КБ памяти? Мусор можно не собирать, а хэштаблицы и оптимизации для кода, который мог выполняться на 1 МГц процессоре?

     
     
  • 7.38, Ordu (ok), 16:19, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > сколько там памяти может захотеть программа 80 года, работавшая на 8-битных железках с 64 КБ памяти?

    Сложно сказать. Тут можно только приблизительно прикинуть. Допустим вызовы функций в среднем имеют один аргумент. Допустим что это приводит к выделению одного cons из двух указателей, то есть 4 байта. Это значит, что 256 выполненых вызовов функций отожрут 1Kb под мусор. Имея гигабайты памяти можно перетерпеть.

    > Мусор можно не собирать, а хэштаблицы и оптимизации для кода, который мог выполняться на 1 МГц процессоре?

    Именно поэтому я и говорю, что надо писать на lisp'е. Рассуждения вида "если оно не тормозит, значит можно сделать тормознее" и приводят к тому, что сегодня тормозит всё. Если писать на lisp'е, ты получшь хэштаблички, оптимизирующую компиляцию в native код, сборку мусора и все прочие плюшки бесплатно, просто потому, что ты пишешь lisp на lisp'е, то есть компилируешь один lisp в другой lisp. Отказываться от бесплатных плюшек и писать на C, просто потому что можно сделать тормознее?

    С другой стороны, что любопытно, современный lisp (типа sbcl, например) отожрёт больше памяти чем весь этот zork без сборки мусора. Там речь пойдёт про десятки мегабайт потребляемой памяти. Я думаю, меньше не выйдет. И вот это реально делает кейс интересным. Провоцирующим когнитивный диссонанс.

     
  • 6.27, myhand (ok), 10:59, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > в глаза бросается, оно без сборки мусора

    Ну, для этого, в принципе, можно просто libgc взять.

    > Скажем целочисленных значений

    gmp

    > массивов, хештабличек

    Массивов не было в scheme ...  очень долго.  

    > оно ж убъётся что либо делать в том формате, в котором есть, и например к любой локальной переменной добираться через поиск этой локальной переменной по имени списке.

    В конце 80-х так и делали, посмотрите на какой-нибудь siod 1.x.  Тоже сейчас можно заменить, используя какую-нибудь готовую библиотеку.

    Короче, действительно ничего сложного - в заявленный объем вполне могла влезть реализация scheme с define/set!, if, quote, lambda и даже макросами.

     
     
  • 7.33, Ordu (ok), 13:38, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Массивов не было в scheme ...  очень долго.
    > В конце 80-х так и делали, посмотрите на какой-нибудь siod 1.x.  
    > Тоже сейчас можно заменить, используя какую-нибудь готовую библиотеку.

    И мне будут рассказывать, что Electron -- это бездарное разбазаривание ресурсов...

     
     
  • 8.34, myhand (ok), 14:02, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это можно записывать как признание в том, что electron - студенческая поделка?
     
     
  • 9.39, Ordu (ok), 16:26, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    "Electron -- это студенческая поделка" -- это заявление, которое имеет очень косвенное отношение к тому, чтобы отразить реальное положение дел. Это заявление преследующее политическую цель, опорочить в глазах других социальное явление, которое кому-то там не по душе. Это заявление, чья цель -- навязать другим свои личные предпочтения. Предлагать мне согласиться с заявлением сделанным в политических целях -- совершенно бесполезно. С политическими заявлениями вам лучше в госдуму, туда в это сборище неудачников, вышвырнутых из уважаемых профессий за профнепригодность.
     
     
  • 10.41, myhand (ok), 17:24, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Это заявление преследующее политическую цель

    Это была шутка.

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

    Чтоб я так жил, как эти неудачники.

     
     
  • 11.43, Ordu (ok), 18:10, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Это заявление преследующее политическую цель
    > Это была шутка.

    Если это была шутка, это не значит, что это была не политика. Я бы сказал наоборот, что это скорее свидетельство в пользу политичности заявления, нежели против неё.

    https://lesswrong.ru/w/%D0%A4%D0%B0%D0%BB%D

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

    Неужели у тебя в жизни всё так плохо? Любимая работа, любимая женщина, план как захватить мир и работа над ним -- неужели у тебя нет всего этого? А если есть, то зачем тебе жизнь политика, сводящаяся к тому, чтобы лизать задницу нужным людям, избегать бесполезно ссориться с ненужными людьми, и демонстративно воевать с теми, с кем выгодно воевать? Зачем тебе нужна жизнь человека, который продал душу PR'у и теперь шагу ступить не может самостоятельно?

     
     
  • 12.44, myhand (ok), 18:24, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Неужели у тебя в жизни всё так плохо? Любимая работа, любимая женщина,
    > план как захватить мир и работа над ним -- неужели у
    > тебя нет всего этого?

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

    Впрочем, хватит оффтопика.  Табличку сарказм я все-равно дома забыл.

     
  • 6.47, Аноним (47), 01:21, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >А сборка мусора -- это значит выкидываем libc'овый malloc, расчехляем mmap и пишем свой аллокатор.

    О как, а мужики-то и не знали, что делать GC-кучи на malloc оказывается нельзя

     
     
  • 7.48, Ordu (ok), 02:02, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >>А сборка мусора -- это значит выкидываем libc'овый malloc, расчехляем mmap и пишем свой аллокатор.
    > О как, а мужики-то и не знали, что делать GC-кучи на malloc
    > оказывается нельзя

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

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

     
  • 4.16, Урри (?), 08:20, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    10 правило гринспена (есть на вики):

    Любая достаточно сложная программа на Си или Фортране содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.

    --

     
     
  • 5.46, CZ (??), 23:41, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В том числе и сам COMMON LISP.
     
  • 1.7, VINRARUS (ok), 23:09, 16/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ждьом появления в Steam со скидкой...
     
     
  • 2.10, saahriktu (ok), 23:59, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ftp://ftp.ifarchive.org/
     
  • 1.11, Аноним (11), 00:14, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > лицензия на код не является открытой

    Ну народ…

     
  • 1.15, Tifereth (?), 07:30, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На ifarchive.org и его зеркалах туча реализаций в т.ч. инфокомовских игр.
     
  • 1.17, Урри (?), 08:23, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Какая-то феноменальная жадность - код, которому от 40 до 50 лет и который, по сути, является давно протухшим никому не нужным говном мамонта, все равно прятать за проприетарной лицензией.

    Я этого не могу понять никак.

     
     
  • 2.21, Аноним (3), 10:14, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >The source code was contributed anonymously

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

     
  • 1.22, Попугай Кеша (?), 10:18, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Студентам за зачет ) Быстро конвертируют на благословенный Rust/Go
     
     
  • 2.28, Аноним (26), 11:03, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Фу, Кеша, и ты туда же. Я о тебе лучше думал.
     
     
  • 3.40, Попугай Кеша (?), 17:20, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Дружище, это был сарказм ) Я не туда же! Ни в коем случае! ;)
     
  • 1.23, Адекват (ok), 10:20, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    а текстурки как всегда зажмут.
     
     
  • 2.29, Аноним (26), 11:13, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Какие там ваще текстурки, почитай новость внимательнее, г-н Неадекват.
     
  • 2.30, Аноним84701 (ok), 11:54, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > а текстурки как всегда зажмут.

    В смысле – буковки будут в виде голой сетки каркаса?
    [code]
    ______     ______     ______     __  __        __
    /\___  \   /\  __ \   /\  == \   /\ \/ /       /\ \
    \/_/  /__  \ \ \/\ \  \ \  __<   \ \  _"-.     \ \ \
      /\_____\  \ \_____\  \ \_\ \_\  \ \_\ \_\     \ \_\
      \/_____/   \/_____/   \/_/ /_/   \/_/\/_/      \/_/
    [/code]
    0_o

     
  • 1.24, Аноним (24), 10:26, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > компанией Infocom, просуществовавшей с 1979 по 1989 год

    Return to Zork
    Publisher: Infocom
    Release: September 15, 1993

    Поясните

     
     
  • 2.25, Аноним (24), 10:29, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Return to Zork

    Хорошая была игра. У меня фирменный диск есть.

     
  • 2.32, Ваня Бевзюк сетевик (?), 13:22, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вики пояснит
     
  • 2.49, Аноним (49), 16:18, 19/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В 1986 году компания была скуплена, в 1989 расформирована, от неё осталась только торговая марка.
     
  • 1.31, Канделябры (?), 12:19, 17/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В опенсорсе всегда есть во что поиграть!
     
     
  • 2.36, Аноним (36), 15:17, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не во что, а с чем.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:


    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру
    Hosting by Ihor