Space Engineers

Space Engineers

27 ratings
Как написать свой первый скрипт для SE с помощью ChatGPT?
By Kitsu-Nesh'Kaa
Эта статья написана для людей, которые уже знакомы с игрой, а её автор нуб, не имеет понятия о грамотном программировании, да и повествовании и строит в игре летающие бурильные табуретки. =)
4
   
Award
Favorite
Favorited
Unfavorite
Введение.
"Если вы хотите использовать нейросеть для получения помощи в написании кода на C# для Space Engineers, то необходимо учитывать ряд факторов, чтобы задать правильный вопрос нейросети..."

Так начинается ответ на этот вопрос, о нейросети ChatGPT. Наверное, вы уже догадались, что речь пойдет о ней, хотя, возможно, вы никогда не слышали о ней. Я не буду вдаваться в подробности о том, что такое нейросеть. В статье речь пойдет о конкретных примерах использования на практике для решения простых или узкоспециализированных задач. Все, конечно, зависит от вашей фантазии и навыков. Я не умею писать на C#, но я немного понимаю Python и работаю с SQL-базами данных, поэтому некоторые операторы (функции работы), например if/else, мне понятны.

Давайте же начнем. Для начала найдем рабочую версию чата. Если у вас есть доступ к оригинальному сайту, вам повезло. Я же попробовал несколько телеграмм-ботов. Вы можете их найти через поисковик или внутри самого Телеграмм по названию. После того как вы нашли подходящую для вас систему, можете попробовать написать запрос. Я начал с такого: "Привет. Что ты знаешь об Space Engeeners?". Бот ответил, что это игра - песочница, и прочую информацию из Вики. Мне показалось, что бота нужно постепенно вводить в контекст моего запроса, чтобы он лучше меня понял. Я продолжил и узнал у него о "Программируемом блоке". На что он дал ответ о подобных блоках в реальной жизни для сборки электроники. "Ага, недостаточный контекст" - подумал я. Задал вопрос снова, но написал уже "Programmable block" в Space Engeneers. Бот услужливо ответил, что он знает такой блок, из какой игры, и что код для этого блока пишется на C#. Вот тут я понял, что нащупал что-то интересное.
Основная часть.
Я написал боту: "Напиши пример кода, чтобы вывести текст на дисплей, который имеет в названии D1". Подумав 10-15 секунд, бот ответил. Моему восторгу не было предела, когда я понял, что он не только написал мне готовый код, но и описал его работу.



Вау! Да это же примитивный "Hello world"! Интересно, заработает ли он в игре. Срочно бежим туда! Ставим программируемый блок, ставим дисплей, даем нужное название дисплею.... Здесь стало ясно, что бот меня понял неверно и он ищет дисплей с названием D1, а не с D1 в названии этого дисплея. Ладно, для первого раза это не проблема. Переименовываем дисплей, включаем отображение текста, затем копируем код в программный блок и запускаем проверку. И... Облом, сплошные ошибки.



Я уже был расстроен, пока внимательно не прочитал текст: "Обратите внимание, что этот код должен быть помещен в метод Main для выполнения в Programmable Block. Также убедитесь, что у вас есть блок дисплея с именем "D1" на корабле или станции". Так, дисплей есть, а вот Main в тексте кода я не вижу. Пишу боту: "Помести код выше в метод Main". Снова 5-10 секунд ожидания и ответ был такой:



Копируем, запускаем проверку: компиляция завершена успешно. "Ага!" - воскликнул я! Тут же в мою кровь выплеснулся адреналин от азарта. Нажимаю кнопку "Выполнить", и на моем экране D1 появляется заветное "Hello world".



Моему восторгу не было предела! Работает, собака! Мысли заметались в голове, и я понял, что бот понимает, как работать с кодом, и знает, как найти конкретный блок именно в игре. То есть он понимает внутреннюю систему. Срочно еще один тест!
Та часть, где все пошло не по плану.
"Давай найдем... эммм... Все батареи на структуре, на которой установлен программируемый блок, выведем название этих батарей, максимальную емкость, текущую емкость и выведем построчно в дисплей [D1]" - такое задание появилось у меня в голове, но нужно было сформировать это в понятный список целей.

Итак:

1. Найди все блоки батарей на структуре, на которой установлен programmable block.
2. Вычисли максимальную емкость каждого блока батарей в ваттах, текущую емкость в ваттах.
3. Выведи на дисплей [D1] для каждой новой строки: Название каждого блока батареи, его максимальную емкость, его текущую емкость.
4. Обновляй информацию о батареях каждые 5 секунд.

Вот, уже понятнее. Запускаем!



Уже наученный опытом, я вижу что отсутствует метод Main. Указываю боту на ошибку.



Отлично, копируем, вставляем, проверяем на ошибки.



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



Ого, он понимает что допустил ошибку именно для этой среды. Ладно, пробуем запустить этот код!



Опять ошибка, уже другая. Но мы уже знаем что делать! К сожалению я допустил ошибку в слове "type".



Копирую, запускаю и тут заветная надпись: "Компиляция завершена успешно!" УРА! Запускаю выполнение кода, а программируемый блок пишет что код для него слишком сложный.



Тут моя радость перешла в грусть и обиду. Казалось я почти на пороге открытия (для себя). Ничего не работает! Зачем я пишу эту статью? Надо передохнуть.
Та часть, где все снова стало солнечно.
Выпив чаю, да, закусив французской булкой я вернулся к боту и написал: "Привет. Space Engeneers. Programmable block". Бот ответил, что готов мне помочь. Так, запишем что мне нужно, при этом немного поменяю запрос:



Копирую, проверяю опять ошибка! Указываем на ошибку боту и запускаем снова. Компиляция - ОК! Выполнение - ОК!



УРА! ПОБЕДА! Код выполняет функцию! Правда показывает мегаватты, а пишет что ватты. Но тут моя ошибка, ошибся когда писал задание. Главное - функцию свою выполняет и проверяет самостоятельно наличие новых батарей. Поставил дополнительную батарею (Батарея 4) рядом. Останется только причесать инфу на дисплее, что бы глаз радовался.

Заключение.
Естественно ChatGPT это не панацея. Настоящие знания ничем не заменить, и при создании запроса приходится сталкиваться с глупыми ошибками как при постановке задачи, так и внутри кода. И здесь эти ошибки присутствуют. Плюс нейросеть при любом новом обращении может дать совершенно другой ответ, или попытаться использовать стороннюю библиотеку, что не поддерживается в Space Engeeners. Использовать такой код, написанный нейросетью, в работе, на сложных проектах я бы не советовал. В игре - почему бы и нет. Это закроет минимальные задачи, а может сподвигнет изучать язык самому. Я не кодер, да и строю я откровенные табуретки, но стало интересно, и я загорелся идеей попробовать написать код для игры таким образом. Я уверен что, ваш код будет куда лучше и интереснее, будет выполнять уйму разных полезных и нужных вам функций. Главное правильно ставьте задачу, а лучше учите язык!

Спасибо за внимание, и желаю вам классных приключений в игре!
10 Comments
Kitsu-Nesh'Kaa  [author] Feb 26 @ 4:12am 
metz зачем? У тебя есть знания всего мира внутри нейросети. Задай ей правильный запрос, и получишь код, который тебе будет нужен.
metz Feb 26 @ 1:17am 
А прикиньте как было бы круто иметь возможность скопировать текст примера кода из статьи :steamsalty:
King Bradley May 16, 2023 @ 12:33pm 
Kitsu-Nesh'Kaa Вы верно подметили тут я ошибешься и сейчас используется 4.0 , 4.5 будет доступен примерно в Сентябре-Октябре

Что до написания кода и вскармливанию то тут я вас разочарую так как всё упирается в ограничение на символы (Скормить не получится , хотя мне удалось заставить чат написать часть кода на радар)
Steam полон всевозможных скриптов на разную тематику по этой причине не особо вижу смысл писать код, для мелких действий вполне автоматоны сгодятся
Kitsu-Nesh'Kaa  [author] May 16, 2023 @ 10:54am 
Что за реклама Мелкомягких? :D
Да, ограничение есть сейчас у всех нейросеток, и если вы внимательно прочитаете статью - я каждый раз заново делал к нему запрос. А на небольшой код, даже с правками вполне хватало.
+ всегда можно взять готовый код, скормить нейросетке и попросить добавить что-то)
Про 4.5 слышу впервые.
King Bradley May 16, 2023 @ 10:45am 
Увы вы не указали на серьёзный недостаток что препятствует использованию подобных чатов для написания кода , а именно ограничение на ~3000 символов (та же история и с bing и с платной версией , разве что Bardai не пробовал)

Рекомендация: если кто-то захочет использовать данную методику , рекомендую использовать Bing Chat Bot так как он сейчас работает на GPT 4.5 + имеет доступ к интернету
Xypma Apr 24, 2023 @ 2:04am 
Kitsu-Nesh'Kaa, приветствую! Спасибо за этот эксперимент.
Kitsu-Nesh'Kaa  [author] Apr 19, 2023 @ 2:36am 
Привет Total Pipec.
Он с первого раза мне стал отвечать по поводу SE. В chatgpt 3.5 сидит инфа с 2021 года, и этот комбайн знает интерфейсы как с гита, так и с форумов где делились своими скриптами и все это смешивает. Я сам был удивлен, когда он тот же "hello world" выдал. Правда иногда, при одном и том же запросе он может выдать бред или использовать устаревшие методы.
Total Pipec Apr 19, 2023 @ 2:29am 
Скажи честно, если этот гайд вообще не фейк, сколько вопросов ты задал боту, чтобы он изучил интерфейсы и объектную модель SE?
У меня есть пример создания приложения на свифте с чатгпт и там понадобилось порядка 50ти вопросов и подробнейшие формулировки в задании, чтобы получить более-менее рабочий результат.
mrak3265 Apr 12, 2023 @ 10:33pm 
Спасибо за идею.
Survival Ready Mar 10, 2023 @ 5:10am 
Есть скрипты автоматизации, которые позволяют делать простые вещи без знания C# Ваших знаний Python & SQL вполне хватит, чтобы их без труда освоить, а обзор ChatGPT занимательный.