В сети очень много инструкций по сборке Quake 3 под Raspberry Pi. Но, к сожалению, мне не удалось найти ни одной, что приводила бы к желаемому результату. В результате — пришлось немного подумать и найти последовательность действий, приводящую к желаемому результату.
Мат. часть:
Итак, начнём.
Нам понадобится
nano:
git:
инструменты для сборки:
Поддержка md5sum:
Все действия будем выполнять в домашнем каталоге, чтобы в него попасть, нужно выполнить:
Выполняем загрузку кода
3. Подготавливаем
Жирным шрифтом выделены отличия от оригинального файла
5. Убедимся в том, что
Если всё ОК, сборка закончится примерно через час.
Я создал папку, с названием
В результате, мы должны получить следующую структуру файлов и папок:
quake3arena/ioq3ded.arm
quake3arena/ioquake3.arm
quake3arena/baseq3/cgamearm.so
quake3arena/baseq3/qagamearm.so
quake3arena/baseq3/uiarm.so
quake3arena/lib/libSDL.so
quake3arena/lib/libSDL-1.2.so.0
quake3arena/lib/libSDL-1.2.so.0.11.3
Нужно найти pak* файлы с нужными ресурсами. Их можно взять из установленной игры на ПК или скачать из множества мест в Сети. Поскольку данный пост является самодостаточной инструкцией, то предлагаю взять ресурсы у меня:
Создаём временный каталог в домашней папке:
Загружаем ресурсы из Dropbox
Или из Wuala:
md5 hash данного файла должен быть
Если вы желаете проверить md5, выполните
Распаковываем полученный файл:
Копируем необходимые файлы в папку, где мы собираем файлы, необходимые для запуска игры.
В редакторе создаём файл со следующим содержимым:
Разделим 256 Мб (имеющихся на борту) так что отдадим CPU 192M и 64M GPU.
После выполнения этой команды устройство перезагрузится.
Удаляем мягкие ссылки, созданные нами ранее
Удаляем каталог ~/tmp
Удаляем объектные файлы
Если нам уже не нужны исходники Quake — удаляем и их:
Надеюсь, вы сможете насладиться игрой на своём Raspberry Pi.
Если вы хотите использовать мою сборку Quake, вы можете найти необходимые инструкции на моём блоге.
Источники:
Мой блог (приношу извинения за уровень владения английским):
kittyhawkrpi.blogspot.com/2012/10/building-quake-3-on-arch-linux.html
R-Pi Troubleshooting:
elinux.org/R-Pi_Troubleshooting#Choosing_the_right_ARM.2FGPU_memory_split
Официальный форму RPi:
www.raspberrypi.org/phpBB3
И ещё очень много других блогов и статей.
Удачи!
Мат. часть:
- Raspberry Pi Model B ( с маркировкой «2011»)
- ARM Arh Linux (3.2.27-10-ARCH+)
- SanDisk SD card 16 Gb (class 10/UHC)
- Стандартный источник питания (by Farnell)- 5V, 1200 mA
- USB hub (с источником питания)
- Radio Keyboard and Mouse by Genius
Итак, начнём.
1. Соберём необходимые инструменты
Нам понадобится
nano:
$ sudo pacman -S nano
git:
$ sudo pacman -S git
инструменты для сборки:
$ sudo pacman -S base-devel
Поддержка md5sum:
$ sudo pacman -S mhash
2. Загружаем исходный код Quake3
Все действия будем выполнять в домашнем каталоге, чтобы в него попасть, нужно выполнить:
$ cd ~
Выполняем загрузку кода
$ git clone https://github.com/raspberrypi/quake3.git
3. Подготавливаем build.sh
Жирным шрифтом выделены отличия от оригинального файла
#!/bin/bash
# this script builds q3 with SDL
# invoke with ./build.sh
# or ./build.sh clean to clean before build
# directory containing the ARM shared libraries (rootfs, lib/ of SD card)
# specifically libEGL.so and libGLESv2.so
ARM_LIBS=/opt/vc/lib
SDL_LIB=lib
# directory containing baseq3/ containing .pk3 files - baseq3 on CD
BASEQ3_DIR="/home/${USER}/"
# directory to find khronos linux make files (with include/ containing
# headers! Make needs them.)
INCLUDES="-I/opt/vc/include"
# prefix of arm cross compiler installed
#CROSS_COMPILE=bcm2708-
# clean
if [ $# -ge 1 ] && [ $1 = clean ]; then
echo "clean build"
rm -rf build/*
fi
# sdl not disabled
make -j4 -f Makefile COPYDIR="$BASEQ3_DIR" ARCH=arm \
CC=""$CROSS_COMPILE"gcc" USE_SVN=0 USE_CURL=0 USE_OPENAL=0 \
CFLAGS="-DVCMODS_MISC -DVCMODS_OPENGLES -DVCMODS_DEPTH -DVCMODS_REPLACETRIG $INCLUDES" \
LDFLAGS="-L"$ARM_LIBS" -L$SDL_LIB -lSDL -lvchostif -lvmcs_rpc_client -lvcfiled_check -lpthread -lbcm_host -lkhrn_static -lvchiq_arm -lopenmaxil -lEGL -lGLESv2 -lvcos -lrt"
# copy the required pak3 files over
# cp "$BASEQ3_DIR"/baseq3/*.pk3 "build/release-linux-arm/baseq3/"
# cp -a lib build/release-linux-arm/baseq3/
exit 0
4. Создаём мягкие ссылки на необходимые заголовочные файлы
$ sudo ln -s /opt/vc/include/interface/vcos/pthreads/vcos_futex_mutex.h /opt/vc/include/interface/vcos/
$ sudo ln -s /opt/vc/include/interface/vcos/pthreads/vcos_platform.h /opt/vc/include/interface/vcos/
$ sudo ln -s /opt/vc/include/interface/vcos/pthreads/vcos_platform_types.h /opt/vc/include/interface/vcos/
5. Убедимся в том, что build.sh
является исполняемым
$ cd ~/quake3
$ chmod +x ./build.sh
6. Запускаем сборку
$ ./build.sh
Если всё ОК, сборка закончится примерно через час.
7. Копируем необходимые файлы
Я создал папку, с названием
quake3arena
(в своей домашней папке), куда и собираюсь скопировать все файлы, необходимые для запуска игры.$ mkdir ~/quake3arena
$ cd ~/quake3/build/release-linux-arm/
$ cp ioq3ded.arm ~/quake3arena/
$ cp ioquake3.arm ~/quake3arena/
$ mkdir ~/quake3arena/baseq3$ mkdir ~/quake3arena/lib
$ cp ./baseq3/cgamearm.so ~/quake3arena/baseq3/$ cp ./baseq3/qagamearm.so ~/quake3arena/baseq3/$ cp ./baseq3/uiarm.so ~/quake3arena/baseq3/
$ cd ~/quake3/lib
$ cp ./libSDL.so ~/quake3arena/lib/$ cp ./libSDL-1.2.so.0 ~/quake3arena/lib/$ cp ./libSDL-1.2.so.0.11.3 ~/quake3arena/lib/
В результате, мы должны получить следующую структуру файлов и папок:
quake3arena/ioq3ded.arm
quake3arena/ioquake3.arm
quake3arena/baseq3/cgamearm.so
quake3arena/baseq3/qagamearm.so
quake3arena/baseq3/uiarm.so
quake3arena/lib/libSDL.so
quake3arena/lib/libSDL-1.2.so.0
quake3arena/lib/libSDL-1.2.so.0.11.3
8. Копируем pak* файлы
Нужно найти pak* файлы с нужными ресурсами. Их можно взять из установленной игры на ПК или скачать из множества мест в Сети. Поскольку данный пост является самодостаточной инструкцией, то предлагаю взять ресурсы у меня:
Создаём временный каталог в домашней папке:
$ mkdir ~/tmp
$ cd ~/tmp
Загружаем ресурсы из Dropbox
$ wget http://dl.dropbox.com/u/23494653/Q3DemoPaks.zip
Или из Wuala:
$ wget http://content.wuala.com/contents/KittyHawk/quake3/Q3DemoPaks.zip
md5 hash данного файла должен быть
cafa463365567560c36ef316c95636ef
Если вы желаете проверить md5, выполните
$ md5sum ~/tmp/Q3DemoPaks.zip
Распаковываем полученный файл:
$ unzip Q3DemoPaks.zip
Копируем необходимые файлы в папку, где мы собираем файлы, необходимые для запуска игры.
$ cp ~/tmp/baseq3/pak* ~/quake3arena/baseq3/
9. Создаём скрипт для запуска игры
$ nano ~/quake3arena/start.sh
В редакторе создаём файл со следующим содержимым:
#!/bin/bash
sudo LD_LIBRARY_PATH=lib:/opt/vc/lib ./ioquake3.arm
10. Делаем скрипт исполняемым
$ chmod +x ~/quake3arena/start.sh
11. Настраиваем разделение памяти между ARM и GPU
Разделим 256 Мб (имеющихся на борту) так что отдадим CPU 192M и 64M GPU.
$ sudo cp /boot/arm192_start.elf /boot/start.elf && sudo reboot
После выполнения этой команды устройство перезагрузится.
12. Тестируем игру
$ cd ~/quake3arena
$ ./start.sh
13. Очистка карты памяти
Удаляем мягкие ссылки, созданные нами ранее
$ sudo unlink /opt/vc/include/interface/vcos/vcos_platform.h
$ sudo unlink /opt/vc/include/interface/vcos/vcos_platform_types.h
$ sudo unlink /opt/vc/include/interface/vcos/vcos_futex_mutex.h
Удаляем каталог ~/tmp
$ rm -rf ~/tmp
Удаляем объектные файлы
$ rm -rf ~/quake3/build
Если нам уже не нужны исходники Quake — удаляем и их:
$ rm -rf ~/quake3
Надеюсь, вы сможете насладиться игрой на своём Raspberry Pi.
Если вы хотите использовать мою сборку Quake, вы можете найти необходимые инструкции на моём блоге.
Источники:
Мой блог (приношу извинения за уровень владения английским):
kittyhawkrpi.blogspot.com/2012/10/building-quake-3-on-arch-linux.html
R-Pi Troubleshooting:
elinux.org/R-Pi_Troubleshooting#Choosing_the_right_ARM.2FGPU_memory_split
Официальный форму RPi:
www.raspberrypi.org/phpBB3
И ещё очень много других блогов и статей.
Удачи!