В качестве вклада в проект с открытым исходным кодом наша команда решила побаловать меня и поработать над Pokemon Showdown.
Это был действительно захватывающий проект для меня из-за моей истории использования этого программного обеспечения. Несколько лет назад, когда я был еще очень активным игроком в покемонов, я использовал Pokemon Showdown, чтобы опробовать новые стратегии мета-игр. Это программное обеспечение было практически создано для этого, потому что оно позволяло мне создавать любого покемона, с любым законным набором движений и любой возможной статистикой для этого покемона. Это позволило мне попробовать самые безумные команды мечты, на сбор которых в игре у меня ушли бы месяцы.
Pokemon Showdown написан исключительно на JavaScript. В рамках своего руководства они сообщили нам, какие соглашения и языковые версии использовать.
Процесс настройки и установки был невероятно простым и понятным. Частично благодаря прекрасно поддерживаемому репозиторию/README/руководству по внесению вклада. Сначала я начал с разветвления репозитория в моей учетной записи GitHub. После этого я пошел дальше и клонировал репозиторий на свой локальный компьютер. После клонирования и перехода в каталог все, что мне нужно было сделать, это запустить npm install, чтобы установить все его зависимости. У одного из моих товарищей по команде возникли проблемы с установкой, но это было из-за того, что он использовал более старую версию на Node.js. После обновления он тоже был в чистоте.
Кодовая база не была незнакомой в том смысле, что они использовали неизвестные языки и фреймворки. Скорее это было незнакомо, потому что мы никогда раньше не работали над таким большим проектом JavaScript. К счастью, в репозитории GitHub есть хорошо задокументированные проблемы, особенно проблемы, отмеченные good first issue
. У них был целый файл, посвященный хорошим проблемам с первого раза, что позволяло любому сразу же вступить в игру.
Среди этих проблем я заметил жемчужину, с которой моей команде было бы здорово справиться. Это был запрос на тестовый рефакторинг. В ходе своего развития они внесли важный вклад в то, как разыгрываются сражения с покемонами. Раньше у них был интерфейс, который требовал от вас вызова отдельных функций для каждой части битвы, таких как choose
, chooseSwitch
, chooseMove
, commitDecision
. Они перешли на использование только makeChoices
, упростив боевой интерфейс для тестов. Их запрос состоял в том, чтобы изменить старые тесты, которые все еще полагались на старый интерфейс, чтобы использовать новый интерфейс. Достаточно просто, и это также позволило нам ознакомиться с набором тестов.
Как постоянный ботаник покемонов, мне было очень весело отвечать на вопросы о боевой механике для моих товарищей по команде, которые были совершенно незнакомы с тем, как обычно проходит битва с покемонами. Самое приятное было, когда один из них рассказал мне, сколько времени они тратят на изучение движения покемонов fling и как много они узнали о тонкостях покемонов. Еще одно подтверждение моего утверждения о том, насколько сложными могут быть покемоны.
Я имею в виду, вы только посмотрите, насколько сложна их формула урона.
Весь этот опыт, особенно то, как легко владельцы репозиториев сделали свой вклад, заставили меня зацепиться за вклад с открытым исходным кодом. В будущем я буду продолжать вносить свой вклад в этот репозиторий и вносить свой вклад с их замечательными руководствами.
В общем, найдите программное обеспечение, которое вам нравится, проверьте, является ли оно открытым исходным кодом, и посмотрите, как вы можете внести свой вклад. Вы будете чувствовать себя прекрасно, зная, что внесли свой вклад в дело, которое вам нравится.
Теперь я иду искать проблему, которая позволит мне продолжать использовать свои обширные знания о покемонах.