вавилонский лабиринт

Aug 29, 2010 05:01

Проект игры для программистов: по карте-лабиринту двигается робот, нужно написать программу, помогающую ему попасть в отмеченную точку карты. Традиционно имеется выбор датчиков и эффекторов, ограничения на объём программы, данных и времени.

Но язык программирования на каждом уровне другой. ( Интересно только программистам )

idea, lang, mental

Leave a comment

9000 August 29 2010, 17:31:56 UTC
ну что вы.
рассмотрим тривиальный лабиринт и разные условия:
* неограниченный запас топлива, запас памяти на весь лабиринт, зрение на 1 клетку вперёд (тривиальный обход с построением карты).
* сильно ограниченный запас топлива, видение карты в радиусе 0.1 диаметра лабиринта (на тупой обход не хватит, надо строить карту по фрагментам).
* маленький топливный бак, заправки разбросаны по лабиринту.
* ограниченная память, в которую весь лабиринт не влезет даже как битмэп.
* скользкий пол: в таких клетках нельзя затормозить или повернуть, начав движение.
* инерция: разгон требует топлива, контролируемое торможение рекуперирует часть топлива, столкновение нет. поворот на большой скорости невозможен.
* гравитация: лабиринт расположен вертикально, как в платформере, можно прыгать и падать, с ограничением высоты или без.
* окна: непроницаемые стены, через которые виден лабиринт за ними.
* зеркала: непроницаемы, но датчики зрения видят "сквозь них" мнимое изображение лабиринта "за спиной".
* рентген: по "цвету" стен можно определить, сколько других стен за ними.
* двери: клетки с односторонним движением, заранее различимые или нет.
* знаки: искомое место не помечено прямо, надо расшифровывать знаки на стенах/полу.
* дорогостоящее (по времени или топливу) зрение вдаль, бесплатное зрение в соседнюю клетку.
* темнота: дельнее зрение работает только вблизи "источников света", в иных местах работает "осязание" на одну клетку вперёд.
* бесконечный, процедурно генерируемый лабиринт; известно, что цель не далее указанного расстояния от стартовой точки.
* реал-тайм: за время перемещения вдоль клетки может исполниться ограниченное число инструкций (осмысленно для инерции и командных режимов).

Это навскидку вариации почти только лабиринтов (их можно комбинировать), и ни слова о характере предлагаемых языков.

Reply

the7ofdiamonds August 29 2010, 17:38:33 UTC
алгоритм все равно будет один, и каждый программист через нек. время напишет универсальный код, который надо будет всего лишь адаптировать под разные языки - и смысл потеряется.

ограниченная память - это фигня, если на пиксел тратить один бит то картинка влезет куда угодно. ну и так далее.

Reply

9000 August 29 2010, 18:31:40 UTC
что сказать. вы попробуйте :)

ограниченная память, в которую *не* влезает картинка целиком, даже по биту на пиксел - хорошее развлечение на эффективное внутреннее сжатие, например, или на векторизацию.

кстати, можно же и лабиринты делать не только из клеток, а из произвольных полигонов.

Reply

the7ofdiamonds August 29 2010, 20:17:30 UTC
ну дык жатую картинку хранить канешна. чтобы толщина коридора один пиксел. впрочем это все мелочи.

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

Reply

9000 August 29 2010, 22:08:36 UTC
как бы это сказать. это всё же замышляется как игра, как вещь со значительным компонентом развлечения. это ж не за деньги люди будут писать, а потому что по кайфу поиграться с языком и прочими условиями.

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

Reply

the7ofdiamonds August 30 2010, 02:46:10 UTC
не, это я к тому что например мне интереснее придумывать алгоритмы, чем оптимизировать существующие

Reply

9000 August 29 2010, 18:36:11 UTC
а вообще, конечно, суровый хардкор начнётся, когда будут конкурирующие роботы разных игроков на одной карте. а уж если дать им оружие... %))

Reply

kostya_puhov September 17 2010, 13:01:42 UTC
А странно, если подобных соревнований (с лучеметами и ножиками:)) не проводится на базе существующих игрушек - тех, где популярны соревнования между игроками-командами.
Хотя я ни о чем подобном не слышал.

В конце концов, в логических играх соревнования алгоритмов процветают.

Естественно было бы, если бы издатели нанимали победителей, хотя бы когда "AI" компютерных противников труден для написания, но существенно влияет на интересность игры для людей.
-----
А в описанном случае хардкор, с элементами психологии программистов и всякими интересностями, вроде существования "равновесия Нэша", более экзотических равновесий, кооперации и т.д.
И заранее ничего не будет понятно.

Reply


Leave a comment

Up