Инженеры до сих пор не могут понять, как работает эта игра

techcult.ru — В далеком 1982-м для приставки Atari 2600 вышла занимательная игра «Entombed». В силу ограничений самой платформы она представляла собой образец программистской смекалки. Настолько, что современные специалисты по программному обеспечению до сих пор не могут понять, как она работает
Новости, Компьютеры | kielty 13:45 17.06.2020
6 комментариев | 12 за, 26 против |
#1 | 14:13 17.06.2020 | Кому: Всем
> Игрок может перемещаться в четырех направлениях в пределах экрана, но он не может узнать строение лабиринта даже на шаг вперед. Потому что программа сама этого не знает.

Что означает "программа не знает"? Программа вообще никуя не знает. Она делает то, что ей сказано.

> Лабиринт в Entombed предельно простой, уровень состоит из блоков, которые имеют значение «стена» или 1 и «не-стена» или 0. В игре есть модуль, который обрабатывает участок 5х5 блоков и выдает три решения: сделать следующий уровень целиком из стен, пустым или случайной комбинацией стен и пустот. При этом должен сохраняться проход с предыдущего уровня и не возникать тупиков.


И в чём проблема?

> Принцип работы этого модуля, от которого зависит весь геймплей, современные разработчики не понимают напрочь.


А код посмотреть никак? Или они код не понимают? Тогда это говно, а не программеры, умеющие только клепать из готовых программных блоков.

> только чудом сохранил сам модуль, но вот объяснить его работу уже не мог.


То есть он не смог прочитать то, что сам написал? У него чердак сорвало?

> Старые программы и, в особенности, видеоигры могут быть ценным источником утраченных знаний.


Пичалька, да.

ЗЫ. Посмотрел на картинку. Это, видимо, скриншот игры? Вообще нихера не понимаю, в чём проблема. Примитивнейший лабиринт. Возможное решение: Каждый лабиринт описывается всего одним числом. Которое подставляется в генерирующую функцию с проверкой на проходимость. Если непроходим, или корректируем для проходимости или отбрасываем число, переходя к следующему.
Пока писал, ещё пара вариантов решения в голову пришла.

По-моему, статья про каких-то дебилов.
#2 | 14:46 17.06.2020 | Кому: Vascosoft
> за это дебильный техкульт и топят

Ну, и я пожалуй, топну.
#3 | 16:06 17.06.2020 | Кому: amb
> Проверка на проходимость - это ещё одна функция?

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

> Корректировка - ещё одна функция?


Да. Меняем единичку на нолик.

> То есть перебором всех чисел подряд.


Каких "всех подряд"? При правильно подобранной функции, особых переборов не потребуется.

> На старом железе это долго.

> Нет на всё это ни места, ни времени.

Камрад, не нужно рассказывать мне про старое железо. Я слегка в курсе. Программирую с 1987.
Вполне достаточно и производительности и памяти для такой простой хуерги.

ЗЫ. На обдумывание этого варианта у меня ушло менее 2-х минут. Это вариант, стопудово реализуемый на чем угодно, с быстродействием большим, чем счёты.
Хоть на калькуляторе программируемом можно такое написать.
даже реалтайм игрухи писали для калькуляторов. С более сложными процессами, чем описанный.

И 2 возможных варианта возникло пока писал. За сутки можно кучу обдумать и исполнить оптимальный.
#4 | 17:02 17.06.2020 | Кому: amb
> Сам предложил: "отбрасываем число, переходя к следующему." Где гарантия, что следующее подойдёт?

Всё зависит от правильно подобранной математической функции, которой описан лабиринт. Лабиринт несложен, судя по картинке. 5 входов - 5 выходов, извилины, ответвления, соединения. Более того, он ещё и симметричен! То есть, функция достаточно проста.

> А лабиринт-то получится?


Получится. Я думаю, из программеров того времени мало кто не занимался изготовлением всяких лабиринтов :)

> Мы не знаем поставленную задачу.


Ну, вообще никаких ресурсов не выделить не могли. :)

> Может, ему там 500 байт выделили на лабиринт


Это дохрена. Насчёт тактов ничего не скажу, нужно считать, а я сейчас не в той форме, но проги такого плана работали на всём, что считает.
Это реально простая задача. Если, конечно, не фантазировать, как талпайопы - журналисты, что эти лабиринты зачем-то нужно сохранять в памяти. Возможно, генерация "на лету" это для них какая-то магия, но только для них.
На том железе я умудрялся моделировать движение танка, погодные условия, движение цели и выстрел, разрабатывая танковый тренажёр стрельбы (похвастаюсь шматца, был с ним победителем всесоюзного конкурса военно-научных работ в 88-м).

Описанное же, это фигня фигнёвая. Никаких проблем не вижу от слова вообще.
#5 | 17:03 17.06.2020 | Кому: Ёхл
> Каюсь, сходил по ссылке.
> 1. Лабиринт сдвигается только вперёд.
> 2. Если лабиринт непроходим, герой пробивает стену.
> 3. Монстры скачут сквозь стены.

Там ещё и такие упрощающие условия?!!!
Вообще тогда непонятно что заинтересовало авторов статьи.
#6 | 19:02 17.06.2020 | Кому: amb
> На атари?!

Нет. Д3-28. Примерно той же мощности машинка. Проц только послабее, чем у Атари.
Войдите или зарегистрируйтесь чтобы писать комментарии.