Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

суббота, 28 июля 2018 г.

Hackenjoy - как это было

В прошлой публикации я поделился анонсом мероприятия, который мы проводили  уже дважды. В этом будет отчет. 

Первым был offline ивент, когда я еще в GoIT развивал джаву в далеком 2015-08.

Вот коллажик из фоток


А вот более подробно о формате и заявленных игрушках ребят


В результате ребята получили бесценный опыт работы в парах (pair programming) а Codenjoy увидел около 15 новых игрушек. Не все их них были дописаны в тот день, но средняя готовность многих была около 90%. Реябтам судя по их отзывам очень понравилось. И я этому рад. 

В этом году, буквально две недели назад мы стартовали online hackenjoy на площадке Juja. Формат изначально заточенный под offline экспериментально попробовали провести в online. И получилось! Конечно выхлоп не такой, как в случае, когда мы заперли участников физически в одном помещении на двое суток и не выпускали без реализованной игрушки, но все же очень здорово. И да мне самому удалось написать игрушку, которая вскоре появится на demo сервере. 

Вот как это происходило в моем пространстве-время в трех частях.


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

Первая игра называется Quadro (GitHub).


Остальные в процессе...

Codenjoy + Hackathon = Hackenjoy

Что это вообще такое?
Hackenjoy = Хакатон + Codenjoy

Что такое Хакатон?
Как ты еще не знаешь? Это мероприятие на определенную тему, где собираются айтишники, чтобы за 48 часов реализовать прототип, который потом можно продемонстрировать всем участникам. Это очень фаново, поскольку все самое интересное происходит ночью. А под утро все ходят с немного измененным сознанием, что порождает массу креативных идей. Потом немного спят и снова за дело. Кодят все синхронно, кодят на одну и ту же тему, потому очень драйвово. Приблизительно как на стадионе во время футбольного матча или концерта :)

Что такое Codenjoy?
А это веселый тренажер для программистов. Там ты играешь в игру но не джойстиком, а с помощью своего бота, которого по ходу пишешь. Игр есть много разных. Змейка. Тетрис. Танчики. Бомбермен. 2048. Судоку. Кубик рубика. Хекс и так далее… Детальнее про Codenjoy тут http://codenjoy.com

А JuJa?
А это наша тусовка в которой мы часто проводим всякое-разное-интересное, в том числе рубимся в Codenjoу. Вот и возникла идея, а почему бы и да?!

И при чем тут я?
А при том, что на хакатоне ты будешь писать игрушку, которая возможно станет кандидатом в проведении финального турнира.

Но почему бы не использовать существующие игры?  
Все просто. Игру необходимо держать в секрете, а все те, что уже есть - давно опубликованы. Это во-первых. А во-вторых игру надо хорошо продумать и хоть раз в нее поиграться всей командой.

Так что мы будем писать игры или играть в них?
Будем писать, а потом и играть. Все начнется на хакатоне, где мы двое суток стартанем написание игрушки. Попутно мы научимся таким штукам, как парное программирование и test driven development. Так вот мы стартанем, а потом у нас будет неделя времени, чтобы дописать игрушку, сделать ее максимально классной. На следующих выходных мы устроим финальный конкурс и мега баттл между разработчиками в эту игру-победитель.

Т.е. ориентироваться нужно на 2 недели свободных выходных? сначала 48 часов кодим игры, а на следующих выходных - ботов к игре-победителю?
Да, так и будет. Ботов кодят обычно 4-6 часов. На счет второго тура, думаю мы еще решим с ребятами, кто будет на первом. Чтобы было удобненько всем-всем. Так что главное запланировать первую итерацию - хакатон.

А что если про игру узнают?
Мы верим в то, что все что происходит в стенах Juja клуба остается в стенах Juja клуба. “Ведь, первое правило клуба гласит…” (с)
Шучу! Игра опенсорс. Движение открытое. Пусть узнают!

Стой, ты что-то говорил про TDD и парное программирование?
Да, драйвить ивент будет в том числе СанЁк Баглай, и он хочет на старте, дабы все было максимально эффективно, рассказать про правила парного программирования, правила TDD и сам Codenjoy фреймворк.

А если у меня нет напарника?
Не беда, можно будет напарника найти в группе участников. Главное зарегистрируйся. С другой стороны, если мы будем хакатонить онлайн, то можно и без напарника. Либо с напарником удаленно.  

А как долго писать игрушку?
Если набить руку, то не сложную игрушку типа крестиков ноликов, змейки или пятнашек можно написать за 4 часа под ключ. Но так как мы это будем делать впервые, у нас будет почти 48 часов. Ну на самом деле эффективной будет только первая ночь :) Но самые крепкие из нас будут немного кодировать и на следующий день.

А если я приду уже с некоторыми набросками?.. :)
Наброски можно. Но вот вопрос в том, как написать правильно игрушку для codenjoy? Это все мы будем обсуждать в день хакатона. Есть ряд требований и фреймворк также подразумевает, что будут реализованы специальные интерфейсы. Мысли о том, какая бы это могла быть игра - это другое дело.

А если я не выдержу?
Ляг поспи и все пройдет. Ты можешь в любой момент закончить, если пожелаешь. В результате у тебя будет еще неделя чтобы закончить. Свет увидят те игры, которые автора допилят до конца.

Покидать локацию-трансляцию запрещено? :)
Можно, почему же  :) Мы будем онлайн вебинарить, всегда можно будет отойти лечь поспать и вернувшись продолжить с того места, где остановились но с 2x скоростью :) При этом помним про напарника - надо будет с ним предварительно договориться. Ибо вы в связке.

Кстати про остальные игры, если игра-победитель будет одна, то что будет с остальными играми?
Каждая игра, что будет дописана включится (вместе с git историей) в codenjoy фреймворк (вот тут http://codenjoy.com/codenjoy-contest) с именами и фотками авторов (если разместите у себя в корне проекта описание) и в нее можно будет поиграть позже в любое время.

На какое время старта (и, соответственно, окончания)?
Стартуем в субботу утром, пилим до вечера воскресенья. И да, это будет не круглые 48 часов, а несколько меньше. Но этого будет достаточно - поверь :)

А где это будет?
Это будет онлайн. Можно локально собираться с ребятами по городам и коворкингам (для этого нужно самоорганизоваться). Запись будет. Я (Саша Баглай) буду кодить свою игрушку и транслировать это в эфир. К трансляции могут подключаться и другие участники (было бы любопытно понаблюдать как кто кодит). О технических деталях broadcast’а на youtube сообщим позже.

А можно взять друга?
Этот ивент не только для участников JuJa клуба, а для всех желающих. Потому приглашай всех, кого считаешь нужным.

А где найти напарника?
За этим вопросом в слак чатик. Важно чтобы вы могли в один день. Но если не получится - на месте мы создадим пары рандомно.

У меня есть вопрос, куда его задать?
Это Google Docs тут можно выделить любую часть текста и правой кнопкой мыши -> комментарий. А там задать любой вопрос.

Когда это будет?
Точные даты -

Во сколько начало?
первый этап - начало в 10:00 в субботу, а заканчиваем в 18:00 воскресенья
второй этап - известно

Как это будет происходить?
1 этап - подготовка, вы настраиваете окружение у себя дома, до хакатона, продумываете игру
2 этап - хакатон - тут мы разбираемся как писать игрушку, обсуждаем TDD и стартуем
3 этап - всю неделю до выходных есть возможность допилить свою игру
4 этап - следующие выходные выбираем лучшую игрушку и играем в нее

Как пишется игра?
Она должна быть написана как картридж в приставку Dendy - то есть есть фреймворк codenjoy, под него пишутся игрушки. Если ручки чешутся уже сейчас начинать разбираться то вот https://github.com/codenjoyme/codenjoy-game По всем вопросам пиши в Slack чатик https://jujacore.slack.com/messages/week03-snake-codenjoy/

А я еще не в чатике, как добавиться?
Ну а если ты еще не участник JuJa комьюнити, пиши нам на почту info@juja.com.ua Так же в процессе регистрации ты указываешь свой email и на него ты получишь все инструкции.

А можно поучаствовать в первом этапе, но не участвовать во втором? есть ли смысл?
Участвовать в первом И/ИЛИ во втором есть смысл. Что получишь? FUN Вот пруф http://codenjoy.com/portal/?p=58 Если будешь писать свою игрушку - оставишь след в истории. Что еще получишь - попробуем Test Driven Development и будет кодервью каждой игрушки.

Какие цели всего этого?
Цели у нас две:
1) Участники Juja комьюнити получат фан в процессе написания игрушек
2) Codenjoy получит много новых игрушек, а так как он крутится 24/7 то в них всех потом можно будет играть и играть.
win-win

А в резюме можно будет этот опыт записать?
А то! Можно конечно. Как участие в opensource проекте. Кстати да, сразу же работай из под своего github аккаунта, сделай форк https://github.com/codenjoyme/codenjoy-game - так ты навсегда останешься в истории проекта как соавтор.

А игры могут быть какие-то варианты настольных или нынешних мобильных пазлов? или все ограничиваемся 8-битными аналогами?
Игры можно писать любые. Есть особенности. Игра должна быть дискретной. То есть любое поле должно быть как в тетрадке в клеточку. Также игра пошаговая. Каждый тик - 1 секунда. Играют либо каждый на своем поле, либо все на одном. За 1 секунду все должны сделать свой шаг. После чего игра пересчитает состояние поля и посылает каждому клиенту новое состояние борды. И снова будет до 1 секунды ждать хода игрока.

Игру также можно кастомизировать. Например игра в крестики нолики - поле три на три, два игрока играют. Но мы ведь программисты. Можно сделать поле 10x10 и играть будут все кто хочет. Важно только понимать, за что давать очки. И чтобы в игру было интересно играть - то есть писать бота

Что надо будет написать кроме игры?
Под ключ. Движок игрушки, которая будет реализовывать интерфейсы codenjoy фреймворка. Мануал как играть в игру. Логику подсчета очков. Default’ового бота, который будет развлекать играющих (чтобы они бидоси сами не играли). Спрайты - квадратные png файлы, которые будут отрисовываться на поле.

Что такое спрайт?
Спрайт гуглим тут https://ru.wikipedia.org/wiki Это рисуночек квадратненький на котором изображены все возможные состояния живности на карте, дабы потом отрисовать на поле.

Спрайты могут быть статические - просто картинка, и анимационные - набор картинок (как гифка)?
Спрайты статические. Не надо усложнять, клиенту потом это все парсить. Если герой - то один символ. Если важно показать его направление - можно 4. Больше не стоит. По одному маленькому квадратику на какой-то элемент. В проекте есть sample игра, в ней реализована примитивная логика, но все рабочее. https://github.com/codenjoyme/codenjoy-game