Привет. В своем последнем посте я сказал, что делаю приключенческую игру для терминала. Что дальше, так это начать. Здорово!
Я начал думать о том, как создать игру и как люди будут в нее играть. Будет ли это браузерная игра? Будет ли он доступен в Steam? Что насчет мобильного? Скачать с сайта? Если он основан на тексте, почему бы просто не добавить его в homebrew для Mac, Chocolatey для Windows и соответствующие репозитории пакетов для Linux? Должен ли я использовать существующий движок или создать его с нуля? Я слышал, что есть классная новая технология браузера под названием WebAssembly. Стоит ли мне ее использовать? Хорошо, я в спирали вопросов.
Быстрый ответ: на самом деле это не имеет значения, и я могу выбрать любой путь вперед и начать что-то делать, прежде чем принимать трудные решения по этим вопросам. Я придумаю ответы по ходу дела, а затем попытаюсь выяснить, как реорганизовать код, чтобы он работал так, как нужно. Или просто выкинуть и начать заново.
Тем не менее, я провел немного времени, обдумывая вопросы. Вот некоторые из моих мыслей.
Сначала я подумал, что Python будет забавным выбором. Я мог бы выучить язык, который не очень хорошо знаю, у Python широкая аудитория, он динамически типизирован, поэтому я не буду зацикливаться на кодировании каждого маленького объекта данных. Кроме того, Python — это не Java или Javascript, которых я бы предпочел избегать. Однако Python не так просто создает статические двоичные файлы, а кросс-компиляция не встроена, что означает, что попытки сделать это не будут простыми и могут работать не так, как предполагалось.
Я был так близок к тому, чтобы выбрать Python, но для меня очень важно, чтобы игра была доступна для пользователей на разных системах как можно проще.
Го — это то, что я знаю лучше всего. Я уже собираюсь многому научиться, поэтому имеет смысл начать с того, что я знаю. Я уже писал интерактивные терминальные программы на Go, поэтому у меня есть представление о том, как я буду делать простой цикл ответа, и я хотел бы изучить более сложные вещи. Go также довольно доступен для начинающих программистов.
Кодирование игры на Go также кажется довольно приличным технологическим выбором, учитывая следующее.
- Игра на основе терминала, работающая в веб-браузере, хотя и симпатичная, кажется, что она требует гораздо большего количества строительных лесов, чем двоичный исполняемый файл на основе терминала. Я предпочитаю тратить свое время на создание игры, а не на строительные леса. Примечание: однажды я использовал Twine в проекте, и это вызвало серьезные проблемы с совместной работой в команде — совместное использование файлов было проблемой. Кроме того, поскольку я знаю, как кодировать и использовать git, мне это кажется ненужным для отдельных проектов.
- Игра, работающая локально, может сохранять состояние в файлах, а не на удаленном сервере, что означает нулевую стоимость сервера. Веб-игра без сервера для сохранения состояния игры, чтобы не сохранять прогресс при перезагрузке страницы, и это кажется полезной функцией. Я не хочу платить за сервер, если могу этого избежать.
- Он легко компилируется и создает статический двоичный файл, который упрощает установку на многих платформах.
- Звучит весело. (Самая техническая причина из всех)
Итак, я решил использовать Go на данный момент. Здорово. Теперь, если вы не знаете Go, всегда самое время начать учиться.
Я предлагаю начать с Go tour, перейти к языковой спецификации (поверьте мне, она очень доступна по сравнению со спецификациями других языков — во-первых, все это на одной странице, удобной для поиска), а затем, наконец, прочитать эффективный ход.
В следующий раз создам git-репозиторий и начну кодить.