Адаптация Something Unlimited
Something Unlimited — это игра со стилистикой одного старого мультсериала.
Немного предыстории. Я давно хотел адаптировать эту игру под нативный запуск на линуксе, но к сожалению она использует движок Unity3d. А там для адаптации под линукс нужно повозиться, если нет в наличии исходного проекта самой игры. К сожалению, у меня это так и не получилось. Однако спустя некоторое время я обнаружил 2 вещи:
1) Разработчики выпустили спинофф этой игры, внезапно с использованием Ren'Py, а не Unity3d.
2) Также разработчики выпустили порт этой игры на Android.
Так как apk фактически представляет собой просто zip-архив, я просто распаковал его с помощью unzip и изучил. К моему удивлению оказалось, что разработчики используют для Android-версии данной игры Ren'Py. Я предположил, что разработчики использовали для порта ту же версию Ren'Py, что и для спиноффа. Далее было сделано следующее
1) Запущен спинофф через portproton(там не было версии для линукса), чтобы определить, какая версия Ren'Py. Для этого был написан и скопирован в директорию game спиноффа скрипт version.rpy со следующим содержимым
screen show_version():
vbox:
text "Made with: [renpy.version_only]"
textbutton "About":
action ShowMenu("about")
init python:
config.overlay_screens.append('show_version')
2) Были изучены ресурсы Android-порта игры и было обнаружено, что разработчики просто дописали ко всем именам файлов и директорий «x-».
cd SU-Android-92
$ ls
AndroidManifest.xml assets classes.dex lib META-INF res resources.arsc SU-Android-92.zip
$ cd assets/
$ ls
android-downloading.jpg android-presplash.jpg private.mp3 x-android.json x-game x-renpy
$ ls x-game
x-Aero.ttf 'x-MADE Mirage Bold.otf' x-script.rpyc
x-BADABB__.TTF x-MadeynSans-Bold.ttf x-script_version.txt
x-BebasNeue.otf x-MadeynSans-Light.ttf x-Timeless-Bold.ttf
x-cache x-nothing.png x-Timeless.ttf
x-CG x-options.rpyc x-tl
x-Charmset.ttf x-paladins.ttf x-Tungsten-Bold.ttf
x-DORADOHEADLINE.TTF x-portraits 'x-UNMASKEDBB 1.OTF'
x-gui x-QuickMoney.ttf x-UNMASKEDBB_BOLD.OTF
x-gui.rpyc x-ReliqStd-BoldActive.otf x-UNMASKEDBB_BOLD.TTF
x-images x-ReliqStd-BoldCalm.otf 'x-UNMASKEDBB_ITAL 1.OTF'
x-LearnShareColaborateBoldFont.otf x-scenes x-UNMASKEDBB_ITAL.OTF
x-locations x-screens.rpyc x-UNMASKEDBB.OTF
for file in *; do mv "${file}" "${file/x-/}"; done
После этого игра заработала нативно.
>>> Просмотр (1920x1080, 1595 Kb)