April 20th, 2018

404

Про игры про программирование (2)

Все ответившие в предыдущий пост, прочитали из написанного ровно два слова "программирование" и "игра".

Нет, я не писал про "отсутствие игр с программированием". Спасибо, я знаю про colobot'а, gladibot'ов, shenzhen i/o, я узнал про factorio и т.д., но.

Я не про них писал.

Я писал, что реальное (irl) программирование заключается не в решении "простых алгоритмических задач", а в бесконечной борьбе со сложностью. Всего слишком много, и оно всё слишком разное, чтобы его можно было описать простыми вещами. Упор на разное. Мы работаем с миллиардом одинаковых байт, а с десятками тысяч разных сущностей, каждая из которых может быть представлена сотнями тысяч экземпляров. На выходе тот же миллиард, но если для миллиарда одинакового мы можем сказать map(func, list), то для россыпи в десять тысяч разных штук, ни один простой подход не работает. Нужно использовать сложные подходы (ООП, трейты, дженерики, полиморфность), которые в свою очередь увеличивают количество "разного" вокруг.

И чем более трудная работа, тем больше она связана с тем, что нужно контролировать эту сложность.

Если сделать шаг в сторону от программирования, поверьте, у сисадминов ничуть не легче. Включили tcpdump? Мало того, что вам пишут со скоростью 40 экранов в секунду, там, помимо известных вам протоколов, обязательно пролетит ещё 2-3-4 чего-то, о чём вы не знали. И даже в том, что вы знали, будет очередное новое, что вы не знали (привет, опции TCP). И оно всё разное.


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

Вот про это я говорил, а не про уютные песочницы "робот, поверни налево".
404

Игры в программирование (3)

Продолжаю серию постов.

У игр про программирование есть три направления развития. Два из них хорошо представлены в играх.

1. Дать песочницу и возможность программировать.
2. Дать визуальные ощущения "круто программирую" без содержимого (аналог взламывания компьютера в Fallout'е).
3. Дать попробовать почувствовать проблему и дать подкрепление при успехе в игроком (упрощённом) режиме.

Вот с №1 у нас всё хорошо. Песочница - и вперёд. Песочницы делятся на два класса, те, в которых простые задачи решаются за разумные усилия, и "openworld" (сам себе придумай задачу, сам себе её реши).
№2 - тоже отлично. Голливудские взрывы в моём vim'е.
№3 - вот тут вот как раз и находится точка интереса.

Мы даём игроку заведомо необозримую задачу, и награждаем его за такой подход, который упрощает задачу. Выделение общего, модули, компоненты, и т.д. С наградой за успех.

Главным отличием от real life тут должна быть игровая составляющая - понятная задача, ясная награда, отлаженный learning curve.

Другими словами, нам нужна необозримая сложность с протоптанными тропками с одной стороны, и свободой "извернуться" с другой стороны.

Из того, что я не видел в играх - это именно ощущение "необъятная сложность задачи" при разумной сложности достижения следующего уровня после упрощения задачи.