3

Создание скриптов для BitBurner

Игра позволяет прописывать код во встроенном редакторе Nano, достаточно удобном в целом, но всё же интерфейс которого не самый привычный большинству, и совсем непривычен для новичков. Поэтому многие пользуются редактором VSCode с расширением Bitburner VSCode Integration. Считаю, что это гораздо удобнее, и рекомендую так же отстроить окружение. Для работы транспилятора необходимо также установить NodeJS помоложе (14+), а для Windows - Git, чтобы иметь unix-like терминал и можно было пользоваться всеми преимуществами контроля версий.

https://code.visualstudio.com/download - редактор

https://marketplace.visualstudio.com/items?itemName=bitburne... - расширение

https://nodejs.org/en/ - NodeJS

https://git-scm.com/downloads - git

Чтобы получить автокомплит, проще писать сразу на Typescript. Во-первых, язык помогает избежать многих ошибок, пусть и только в рантайме/на этапе транспиляции в JS. Во-вторых, организации покрупнее перешли или переходят на TS, поэтому для желающих во фронтенд практика TS лишней не будет.

На гитхабе есть множество готовых темплейтов, позволяющих сразу взять и писать скрипты с автодополнением и прочими плюшками. Я предпочитаю лишний раз самому разобраться, поэтому опишу базовую настройку окружения) Все подробности пишу под Windows, т.к. у линуксоидов всё же должны быть базовые навыки работы с терминалом. Будет полезно знакомящимся с экосистемой разработки под JS|TS, не только для BitBurner.

Итак, после установки всех вышеописанных программ мы должны настроить редактор и затем подготовить директорию для работы. Запускаем VS Code, и выбираем дефолтным окружением Git Bash по инструкции: https://code.visualstudio.com/docs/terminal/basics

Периодически настройка меняется, поэтому ссылка на оф. документацию. Я сижу на арче/убунте, поэтому могу ошибаться в нюансах работы на Windows, но, в целом, после выбора bash дефолтным терминалом проблем быть не должно.

Теперь при открытии терминала (ctrl+~ по умолчанию) у вас будет запускаться unix-like терминал. Теперь можно создавать проект :)

Создайте директорию, в которой будете хранить скрипты. Откройте её в VSCode и запустите терминал. Теперь инитим npm-проект командой npm init -y (флаг -y автоматом выберет дефолтные параметры), затем добавим необходимые пакеты:

npm install -D typescript @TypeScript-eslint/eslint-plugin @TypeScript-eslint/parser eslint eslint-config-airbnb-base eslint-plugin-import eslint-config-airbnb-typescript

Эта команда установит нужные библиотеки для разработки скриптов под игру + линтер (лучший друг любого кода).  Теперь нужно настроить линтер и Typescript. Для понимания настроек необходимо прочесть документацию:

https://eslint.org/docs/latest/user-guide/configuring/ - линтер

https://www.typescriptlang.org/docs/handbook/tsconfig-json.h... - typescript

Или просто создайте файлы через терминал:

code .eslintrc.js tsconfig.json

И вставьте готовые настройки из песочницы:

https://pastebin.com/1HiX5CrJ

https://pastebin.com/3zE82atx

Если у вас есть свой любимый конфиг линта, то добавьте в него правило 'import/prefer-default-export': 'off' , т.к. в большинстве случаев ESLint предлагает заменить конструкцию export fn main на export default, и подчёркивает весь код как неверный.

Теперь создадим папки для удобного размещения скриптов:

mkdir {src,build,types}

Эта команда создаст в текущей директории 3 папки. В одной мы будем хранить и прописывать TS файлы с исходным кодом (src от sources - исходники), в build будет готовый js - для синхронизации с игровым сервером, его руками менять не будем. И types - для хранения файла, описывающего API игры, тоже будем менять только при обновлениях игры (если будет меняться api, как в недавнем релизе 2.0.0+).

В tsconfig уже указали эти папки. Так же там есть настройка "paths" - она пригодится в будущем для импортов, т.к. игра не может в относительные пути.

Создание скриптов для BitBurner Javascript, Typescript, Скрипт, Туториал, Обучение, Web-программирование, Урок, Длиннопост

Теперь нам нужно добавить Type Definitions - собственно, описание апи игры, по которому мы получим автокомплит в редакторе, а при изучении его сможем многое полезное позже найти. Итак, как объявлено в tsconfig.json, мы должны создать файл NetscriptDefinitions.d.ts и положить его в папку types, а наполнить мы можем оригинальным описанием от разработчика:

https://github.com/danielyxie/bitburner/blob/dev/src/ScriptE...


ctrl+a, ctrl+c:

https://raw.githubusercontent.com/danielyxie/bitburner/dev/s...

Осталось дело за малым: запустить игру, старт API server и получить токен авторизации:

Создание скриптов для BitBurner Javascript, Typescript, Скрипт, Туториал, Обучение, Web-программирование, Урок, Длиннопост

Нужно включить верхние две опции и скопировать токен авторизации. Не закрывая игру, возвращаемся в VSCode, прожимаем палитру команд (ctrl+shift+p) и вводим BitBurner, выбираем Add Аuth Token и вставляем ранее скопированный токен из игры. И заодно включаем File Watcher, чтобы автоматизировать обновление скриптов в игре.

Создание скриптов для BitBurner Javascript, Typescript, Скрипт, Туториал, Обучение, Web-программирование, Урок, Длиннопост

Теперь нужно настроить пуш в игру файлов из папки build, а не всех папок. Для этого снова открываем настройки, как при выборе терминала, но теперь вводим в поиск scriptRoot, сразу находим нужную опцию и вводим ./build/

Создание скриптов для BitBurner Javascript, Typescript, Скрипт, Туториал, Обучение, Web-программирование, Урок, Длиннопост

Теперь при компиляции (таки скорее транспиляции) TS файлов в JS будет триггериться вотчер расширения, который отправит все файлы в игру и там мы можем сразу запускать их.

Осталось дело за малым: проверить, как оно работает. В папке src создаём файл с понятным названием и расширением .ts (например, hack.ts) и прописываем базовую структуру:

https://pastebin.com/aRjD3Xfr

Создание скриптов для BitBurner Javascript, Typescript, Скрипт, Туториал, Обучение, Web-программирование, Урок, Длиннопост

Нам нужно импортировать тайпинги и объявлять асинхронную функцию с именем main, которая принимает в себя как минимум один аргумент ns. Это требование апи игры. Исключение - вспомогательные именованные функции, которые вы будете импортировать как часть своего скрипта, там можно уже называть как угодно. Но если вы хотите запускать скрипт из терминала игры, то его исходник должен соответствовать такой структуре.

Последний этап - компиляция. Мы пишем скрипты в среде Node JS, поэтому нужно в главном файле любого проекта - package.json - указать скрипты для компиляции. Чтобы один раз запустить команду и дальше автоматом компилить TS файлы в JS, в поле scripts нужно добавить команду watch (или любую удобную, например, go) со значением tsc -w:

https://pastebin.com/1RPGXejc

Создание скриптов для BitBurner Javascript, Typescript, Скрипт, Туториал, Обучение, Web-программирование, Урок, Длиннопост

Теперь в терминале можно выполнить npm run watch и сосредоточиться только на написании кода. Вперёд, за взломом!))

Для желающих погрузиться:

1) попробуйте настроить tsconfig.json так, чтобы импортировать тайпинги NS можно было из '@ns'

подсказка: https://www.typescriptlang.org/docs/handbook/tsconfig-json.h... 

2) Создайте скрипты из туториала через данное окружение

Другие посты об образовательной платформе ищите по тэгу GeekBrains. Всю необходимую информацию и отзывы ищите в нашем специальном разделе. Там вы найдёте все актуальные курсы GeekBrains.

BitBurner

2 поста15 подписчиков

Правила сообщества

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


Скриншоты кода можно разместить для красоты, но для "поделиться" есть гитхаб, codepen, JSFiddle и песочницы.


Если новичок просит помочь - помогаем или игнорим. Кидаться тапками не стоит =) Особо агрессивных придётся банить.


Просить "сделайте за меня скрипт" нельзя, смысл игры как раз в "написать самостоятельно", в остальном игра примитивна и быстро надоест. Если совсем никак - "bitburner site:github.com" в гугле решит вашу проблему.