Привет. В своем последнем посте я сказал, что делаю приключенческую игру для терминала. Что дальше, так это начать. Здорово!

Я начал думать о том, как создать игру и как люди будут в нее играть. Будет ли это браузерная игра? Будет ли он доступен в Steam? Что насчет мобильного? Скачать с сайта? Если он основан на тексте, почему бы просто не добавить его в homebrew для Mac, Chocolatey для Windows и соответствующие репозитории пакетов для Linux? Должен ли я использовать существующий движок или создать его с нуля? Я слышал, что есть классная новая технология браузера под названием WebAssembly. Стоит ли мне ее использовать? Хорошо, я в спирали вопросов.

Быстрый ответ: на самом деле это не имеет значения, и я могу выбрать любой путь вперед и начать что-то делать, прежде чем принимать трудные решения по этим вопросам. Я придумаю ответы по ходу дела, а затем попытаюсь выяснить, как реорганизовать код, чтобы он работал так, как нужно. Или просто выкинуть и начать заново.

Тем не менее, я провел немного времени, обдумывая вопросы. Вот некоторые из моих мыслей.

Сначала я подумал, что Python будет забавным выбором. Я мог бы выучить язык, который не очень хорошо знаю, у Python широкая аудитория, он динамически типизирован, поэтому я не буду зацикливаться на кодировании каждого маленького объекта данных. Кроме того, Python — это не Java или Javascript, которых я бы предпочел избегать. Однако Python не так просто создает статические двоичные файлы, а кросс-компиляция не встроена, что означает, что попытки сделать это не будут простыми и могут работать не так, как предполагалось.

Я был так близок к тому, чтобы выбрать Python, но для меня очень важно, чтобы игра была доступна для пользователей на разных системах как можно проще.

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

Кодирование игры на Go также кажется довольно приличным технологическим выбором, учитывая следующее.

  1. Игра на основе терминала, работающая в веб-браузере, хотя и симпатичная, кажется, что она требует гораздо большего количества строительных лесов, чем двоичный исполняемый файл на основе терминала. Я предпочитаю тратить свое время на создание игры, а не на строительные леса. Примечание: однажды я использовал Twine в проекте, и это вызвало серьезные проблемы с совместной работой в команде — совместное использование файлов было проблемой. Кроме того, поскольку я знаю, как кодировать и использовать git, мне это кажется ненужным для отдельных проектов.
  2. Игра, работающая локально, может сохранять состояние в файлах, а не на удаленном сервере, что означает нулевую стоимость сервера. Веб-игра без сервера для сохранения состояния игры, чтобы не сохранять прогресс при перезагрузке страницы, и это кажется полезной функцией. Я не хочу платить за сервер, если могу этого избежать.
  3. Он легко компилируется и создает статический двоичный файл, который упрощает установку на многих платформах.
  4. Звучит весело. (Самая техническая причина из всех)

Итак, я решил использовать Go на данный момент. Здорово. Теперь, если вы не знаете Go, всегда самое время начать учиться.

Я предлагаю начать с Go tour, перейти к языковой спецификации (поверьте мне, она очень доступна по сравнению со спецификациями других языков — во-первых, все это на одной странице, удобной для поиска), а затем, наконец, прочитать эффективный ход.

В следующий раз создам git-репозиторий и начну кодить.