Другое

Исходный код игры: что это такое и как можно его заполучить?

Lorem ipsum dolor

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

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

Так происходит и с кодом игр. Программист пишет игру на известном ему языке и выпускает ее в широкое пользование. Исходный код игры обычно закрыт, а пользователям игры доступен лишь машинный код игры, который достаточно сложно понять. Можно ли с машинного кода получить исходный код? В принципе, можно, но это очень трудная и кропотливая работа с применением различных инструментов и подходов к анализу получаемых результатов. Для такого комплекса проводимых работ придуман даже свой термин — реверс-инженеринг (реверсная инженерия или обратное программирование). Само действие по конвертации кода из машинного в код языка программирования называется декомпиляцией. И это действие является обязательной частью реверс-инженерии.

 

Исходный код игры

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

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

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

Например, вы скачиваете файл игры с «ехе»-расширением, чтобы установить такую игру к себе на компьютер с операционной системой Windows. Если вы попытаетесь открыть такой файл для просмотра его кода, то максимум, что вы там обнаружите, — это объектный код, который состоит из «смеси» цифр и букв в 16-битовой системе исчисления. Полностью восстановить из объектного кода исходный не представляется возможным, только его частичное восстановление, чтобы можно было «уловить» алгоритмы и логику в игре.

В общем, нужно понимать простую вещь: в основном игры пишутся на компилируемых языках. А это значит, что код игры должен пройти процесс компиляции, для того чтобы его мог «понять» компьютер. А компиляция — это односторонний процесс, который всегда происходит только в одном направлении. Это означает, что обратное программирование — это всего лишь попытка воссоздать исходный код игры.

 

Исходный код игры: для чего закрывать и для чего его хочется заполучить

Для чего закрывают исходный код игры? На самом деле, ответ на данный вопрос — это тема отдельной статьи, где можно сравнить достоинства и недостатки двух разных форм распространения игр и приложений:

  • с закрытым исходным кодом;

  • с открытым исходным кодом.

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

С закрытым исходным кодом такое не проходит. Однако качественная реверсная инженерия дает свои плоды. Она позволяет «уловить» основные алгоритмы и логику игры, что открывает возможность копировать игру без исходного кода и воссоздавать ее на любом языке программирования. Однако разработчики тоже не дремлют и прекрасно знают об обратном программировании, поэтому они максимально «запутывают следы», например, свой исходный код они проводят через специальный подход обфускации. Обфускация — это процесс запутывания кода таким образом, что даже исходный код не всегда будет ясен, если его вдруг украдут. Но обфусицированный код дополнительно проходит еще и компиляцию — это намного усложняет реверсную инженерию и делает восстановление закрытого исходного кода практически невозможным.

 

Для чего нужен исходный код игры

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

В общем, по конкретной игре нужно искать наличие исходного кода. Если же вы просто хотите «поиграться» с исходным кодом какой-либо игры, то можете найти игры 90-х или 2000-х годов, у которых исходный код открыт, и экспериментируйте сколько душе угодно.

 

Заключение

Исходный код игры — это гарантия авторского права на игру. У кого исходники, тот и автор. Восстанавливать исходный код — это довольно сложное занятие, которое потребует от вас специальных знаний. А самое главное, что чем «больше» и сложнее игра, тем дольше и менее точным будет восстановленный исходный код игры.

Схожие статьи

Проверка заблокированных IP-адресов Роскомнадзора: полный список
Другое

Проверка заблокированных IP-адресов Роскомнадзора: полный список

Программирование как этап решения задачи на компьютере
Другое

Программирование как этап решения задачи на компьютере

Приложение для распознавания растений: объясняем принцип его работы
Другое

Приложение для распознавания растений: объясняем принцип его работы

Архитектура ПК IBM и что такое принцип открытой архитектуры
Другое

Архитектура ПК IBM и что такое принцип открытой архитектуры