Все знают, что Haskell — это просто. Кроме тех, кто ещё не пишет на нём профессионально. Поэтому мы делаем серию встреч по освоению хаскеля через написание игр, а не факториалов.
На первые встречи зовем тех, кто уже писал на хаскеле – будем готовить инструменты.
А на последующих встречах участники с помощью
этих инструментов будут становиться хаскелистами.
Приносите свой настроенный ноут, с IDE и библиотеками. Есть в заначке наборы графики и звуковых эффектов? Тоже берите.
Полезные ссылки про хаскель: https://ruhaskell.org/links.html
Чтобы присоединиться к группе, пишите в телеграм: https://t.me/icrbow
Со времени предыдущих встреч был сильно доработан стартовый макет для игр. Теперь нужно меньше времени на обязательные вещи вроде смены сцен и сразу браться за fun part — делать игровые механики и анимации.
Вначале Александр Бондаренко расскажет про игру, написанную по результатам предыдущей встречи, от идеи до публикации. Далее мини-хакатон про подготовку хаскельного кода к использованию в большом и разнообразном мире. И, наконец, желающие смогут поучаствовать в прикручивании новых фишечек к уже написанной игре или начать реализовывать свои игровые задумки.
Наша задача на хакатоне: задействовать возможности языка во благо и дать возможность будущим хаскелистам выражать полёт своей геймдизайнерской мысли. Для этого мы уберём все неприятные препятствия вроде первоначальной настройки среды, выбора библиотек и написания скучных менюшек. Сделаем стартовый проект, и тогда участники следующих встреч смогут использовать незнакомый им хаскель сразу для создания и оживления миров, а не перекладывания байтов из одной монадки в другую.
14 сентября группа разношёрстных хаскелитов собралась в «Кочерге», чтобы попробовать делать игры. Точнее, цель встречи была обозначена как «осваивать Хаскель на играх, а не факториалах».
Если коротко, сделать игру не получилось, а освоить Хаскель — вполне. Главный вывод: офлайн рулит.
Участники принесли ноутбуки с настроенным окружением для сборки хаскельных проектов в том или ином виде. У кого-то был stack, у кого-то — cabal + nix. Непосредственно к игростроительству, кажется, не подготовился вообще никто, и, наверно, это было даже хорошо, потому что самые обычные проблемы мы решали сообща. Надеюсь, такой открытый подход помог новичкам в языке и программировании вообще увидеть и проблемы, и их решения, что поможет им впредь не бояться возникающих сложностей. С нуля пришлось организовывать весь процесс.
Я посчитал наиболее подходящей хакатону модель разработки с центральным репозиторием (Гитхаб) и мелкими атомарными коммитами. Любой член команды мог коммитить прямо в мастер, минуя ветки, тесты и реквесты, чтобы код в любую минуту был актуальный и конфликты были минимизированы. Ну, я так хотел. На деле некоторые сидели подолгу в ветках, а потом подолгу мёржились. Но в целом было достаточно удобно всем. Код получился немного грязным, но это нормально для такого мероприятия и такой команды, многие из которых увидели друг друга впервые.
Конечно, если бы у нас была цель создать работающее и поддерживаемое приложение, мы бы познакомились заранее, заранее определили бы порядок работы, роли, стиль кода и прочее. Но поскольку мы хотели, во-первых, развлечься, во-вторых, изучить технологии, то отсутствие подготовки оказалось даже на руку. Отсутствие тестов компенсировалось запуском софта у других разработчиков.
Инструменты: собрали некоторое количество грабель с nix, Emacs, HFS. Apecs и Gloss оказались достаточно приятными в работе, разве что магия типов в Apecs показалась довольно мутной новичкам.
Встречи в офлайне — это определённо добро, скорость обмена информация высочайшая (можно задавать вопросы кому угодно о чём угодно), приятно посмотреть на живых людей, скрывающихся за анимешными аватарками.