Найти в Дзене
Типичный программист

Игра Screeps — находка для изучения JavaScript или время, потраченное впустую?

Оглавление

В 2016 году в Steam появилась «игра для программистов» под названием Screeps. Её фишкой, помимо написания кода, был мультиплеер, который позволил не только решать какие-то свои задачи, используя JavaScript, но и посоревноваться с другими за лидерство. Игра получила очень положительные оценки от пользователей и продолжает развиваться до сих пор.

Как в это играть?

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

Когда вы выходите из игры, жизнь не останавливается — крипы продолжают работать, а другие игроки могут проникнуть на вашу территорию и даже захватить её. C этими ситуациями тоже должен справляться написанный вами ИИ.

Ах, да. Чтобы всё не было так просто, у вас ограничено время использования внутриигрового CPU. Каждое действие и каждая функция занимает определённое его количество. Поэтому вам нужно не просто писать код, вам нужно писать оптимальный код.

Картинка с YouTube — https://www.youtube.com/watch?v=ehXu5nbQQaI
Картинка с YouTube — https://www.youtube.com/watch?v=ehXu5nbQQaI

Что по языку?

Весь код игры нужно писать на JavaScript, причём у вас не будет никаких готовых команд и решений — только вы и язык. Вы можете использовать библиотеки из других своих проектов или даже писать на другом языке, компилируя его в JS через WebAssembly.

Помогает ли это изучить JS?

В целом, да, но результат зависит от вас самих. Изучение JS в Screeps похоже на ситуацию, когда очень голодной обезьяне дали палку, которой надо достать фрукты из вазы. Ей очень хочется их достать, и она пытается найти решение, но при этом ни о каком системном обучении пользованию палкой не может идти и речи. Вполне возможно, что изучая JS на курсах или по книгам, вы бы потратили гораздо меньше времени. Кроме того, здесь не идёт речь о лучших практиках, принятых в индустрии решениях, шаблонах проектирования и обо всём том важном обвесе, без которого знание языка в реальной жизни не стоит ничего. Вы познакомитесь с функциональностью языка и узнаете, как с помощью этого языка управлять колонией крипов. Это неплохое умение, но в реальной жизни не очень востребованное.

-2

Так значит, Screeps — ерунда?

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

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

И не стоит забывать об ограничении времени использования CPU. Оно хорошо приучает к тому, что ресурсы машин, на которых запускается код, небесконечны, и нужно о них помнить. Поэтому часто приходится не только дополнять, но и оптимизировать свой код.

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

Выводы

Screeps — довольно удачная игра, сочетающая интересный геймплей с написанием реального кода. Однако использовать её для обучения как единственный инструмент не очень целесообразно. В таком случае лучше объединить её с курсами или учебником. Неплохо подойдёт Современный учебник JavaScript или любые другие ресурсы.

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