Master of Star Control
Старый 12.05.2017, 00:46   #1
Malin
Аватар для Malin
Сообщение Сборка UQM 0.7.0 (XP, VisualC++)

Сборка UQM 0.7.0


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

Система: Windows XP SP3
Компилятор: Visual C++ 2008 Express

Скачать исходники UQM 0.7.0: https://sourceforge.net/projects/sc2
Распаковать, найти файл INSTALL.msvc и открыть его любым блокнотом (я пользовался Notepad++).
Этот файл будет нашим основным руководством.
Далее, я буду приводить пункты из вышеуказанного файла, переводить то что там написано и давать комментарии.


1. Установка VisualC++ и SDK

1.1. Качаем и устанавливаем Microsoft Visual C++ 2008 Express Edition.
Ссылка из файла не рабочая.
Побродив по интернетам нашёл вот эту: http://microsoft.com/.../VS2008ExpressWithSP1ENUX1504728.iso
Устанавливаем, со всем соглашаемся, регистрировать не обязательно.

1.2. Качаем и устанавливаем Microsoft Windows Platform SDK.
Ссылка конечно же не работает. Я качал от сюда: https://www.microsoft.com/....
Несмотря на явные слова про Windows 7 в системных требованиях указана и Windows XP. Я так и не понял зачем именно это SDK нужно, поэтому со всем соглашался и ничего не менял при установке.
2. Дополнительные инструменты
2.1. Нужен TortoiseSVN для того чтобы скачать последнюю сборку. У меня эта черепаха к счастью стояла, проблем не возникло.
Думаю можно скачать с https://sourceforge.net/projects/tortoisesvn/. Но, повторюсь, сам не пробовал.
В принципе она нужна только для того чтобы получить исходники и синхронизироваться с последней ревизией, поэтому можно обойтись и без неё если разжиться исходниками в ручную. Но я шёл в точности по руководству поэтому опишу случай с черепахой.

2.2. Предлагают поставить WinZip. Думаю ни у кого кто читает это руководство не возникнет ни проблем, ни вопросов связанных с тем как открыть любой архив.
3. Зависимости.
UQM использует некоторые внешние библиотеки, их мы и будем ставить.

3.1. Создадим папку "C:\Build", куда будем скачивать (распаковывать) файлы библиотек.

3.2. Нужен SDL. Это библиотека управляющая звуком, вводом и графикой на низком уровне. Ссылка ведёт на сайт, но версии 1.2.14 там уже нет, зато там МНОГО других ссылок. Прошу заметить что нас интересует что-то с VC на конце.
Я использовал SDL-devel-1.2.15-VC.zip
Я уже так замучился с компиляцией что "плясал с бубном и камлал у кострища", распакованную папку с библиотекой я назвал как указано в файле "SDL-1.2.14". Хотя сейчас, протрезвев, понимаю что это совершенно необязательно.

3.3 Нужен SDL_image. Библиотека для загрузки изображений для SDL.
Ситуация аналогичная. Я качал SDL_image-devel-1.2.12-VC.zip
Аналогично в "шаманском угаре" папку назвал "SDL_image-1.2.10".

3.4. Ogg Vorbis - сжиматель звука с потерями.
Тут всё просто. Ссылка рабочая. OggVorbis-win32sdk-1.0.1.zip
Папку назвал по праву "oggvorbis-win32sdk-1.0.1".

3.5. zlib- архиватор.
Тут пришлось "раскурить не одну трубку мира". Сайт по ссылке придуман инопланетянами. Однако одна полезная ссылка там есть: https://github.com/madler/zlib откуда нужно стащить zip при помощи кнопки "Clone or download" и разархивировать его в папку "zlib-1.2.5".
Тем не менее, нам нужны ещё и сами библиотеки, которых в архиве нет. В итоге блуждания по астралу привели меня на https://github.com/.../zlib-1.2.3.win32 откуда я повытягивал dll и lib.
Чтобы вам их не вытягивать сложил в архив к себе: https://yadi.sk/...
Тут я протрезвел и назвал папку "zlib".

3.6. OpenAL - библиотека работы со звуком
Ссылка не рабочая. Астрал вновь поделился ссылкой: http://openal.org/downloads/
Там не совсем библиотека, а установщик. Устанавливаем, со всем соглашаемся.
Зачем-то руководство требует немного шаманства:
- Создать папку "AL" в "C:\Program Files\OpenAL 1.1 SDK\include"
- Копировать все заголовочные файлы *.h из "C:\Program Files\OpenAL 1.1 SDK\include" в эту папку "AL"
4. Исходники UQM и библиотеки

4.1 Суть в том что нам нужны исходники UQM. Их можно достать в ручную.
Я доставал при помощи TortoiseSVN строго по инструкции:
- ПКМ по папке "Build", выбрать "SVN Checkout..."
- В поле "URL of repository" ввести "https://sc2.svn.sourceforge.net/svnroot/sc2/trunk/sc2/"
- В поле "Checkout directory" ввести "C:\Build\sc2"
- Нажать Ok. Пить чай.

4.2 Копируем следующие библиотеки (*.dll - все dll файлы из папки)
- "C:\Build\SDL-1.2.14\lib\x86\SDL.dll"
- "C:\Build\SDL_image-1.2.10\lib\x86\*.dll"
- "C:\Build\oggvorbis-win32sdk-1.0.1\bin\*.dll"
в папку "C:\Build\sc2\"
5. Настраиваем проект в VisualC++

5.1. Заходим в папку C:\Build\sc2\build\msvc6\ дважды кликаем на "UrQuanMasters.dsp".
Откроется Visual C++ и запросит конвертацию файла VC6.dsp. Соглашаемся.

5.2. Устанавливаем зависимости
- В VisualC++, в панели Solution Explorer ПКМ на проекте 'UrQuanMasters', в контекстном меню выбираем "Properties"
- Откроется окно, в дереве слева выбираем "Configuration Properties -> C/C++ -> General"
- В правой части выбираем "Additional Include Directories" и кликаем на маленькую кнопочку справа "..."
Далее нужно добавить зависимости:
"C:\Build\zlib-1.2.5"
"C:\Build\oggvorbis-win32sdk-1.0.1\include"
"C:\Build\SDL_image-1.2.10\include"
"C:\Build\SDL-1.2.14\include"
"C:\Program Files\OpenAL 1.1 SDK\include"
"C:\Program Files\Microsoft SDKs\Windows\v7.0\Include"
помимо этих у меня уже есть эти две:
..\..\src
..\..\src\regex

5.3. Снова зависимости.
- Там же, слева, в дереве "Configuration Properties -> Linker -> General -> Additional Library Directories -> Кнопка "..."
- Добавить зависимости:
"C:\Build\zlib\lib"
"C:\Build\oggvorbis-win32sdk-1.0.1\lib"
"C:\Build\SDL_image-1.2.10\lib\x86"
"C:\Build\SDL-1.2.14\lib\x86"
"C:\Program Files\OpenAL 1.1 SDK\libs\Win32"
"C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib"

5.4. Удалить ненужные зависимости
- Там же, в "Linker -> Input - > Additional Dependencies"
- Удалить odbc32.lib и odbccp32.lib.
В итоге у меня остались:
SDL.lib
SDLmain.lib
SDL_image.lib
zdll.lib
ws2_32.lib
user32.lib

Если user32.lib нет - добавить насильно.
6. Почти всё. Компилируем проект в VisualC++ (F5) и огребаем ошибок.

У меня их было много, я шаманил как мог, переименовывал папки и бился в истерике. Однако, мне кажется все они будут устранены так как они учтены в пунктах выше, опишу одну важную ошибку:

'vsnprintf' : redefinition; different linkage

Видимо произошёл конфликт новых библиотек и исходников. В итоге я внёс следующие правки в код:

.\src\libs\network\wspiapiwrap.h
Код:

Код:
#	define getaddrinfo WspiapiGetAddrInfo
#	define getnameinfo WspiapiGetNameInfo
#	define freeaddrinfo WspiapiFreeAddrInfo
void WINAPI WspiapiFreeAddrInfo (struct addrinfo *ai);
int WINAPI WspiapiGetAddrInfo(const char *nodename, const char *servname,
		const struct addrinfo *hints, struct addrinfo **res);
int WINAPI WspiapiGetNameInfo (const struct sockaddr *sa, socklen_t salen,
		char *host, size_t hostlen, char *serv, size_t servlen, int flags);
Заменил на:

Код:
#include <wspiapi.h>
..\src\libs\uio\utils.c
Удалил функцию:
Код:
static inline int vsnprintf(char *str, size_t size, const char *format, va_list args)
{
	int result = _vsnprintf (str, size, format, args);
	if (str != NULL && size != 0)
		str[size - 1] = '\0';
	return result;
}
..\src\port.h

Удалил объявление:
Код:
int vsnprintf(char *str, size_t size, const char *format, va_list args);


Вроде всё. После этого всё скомпилировалось. Ура, товарищи! Ура!

Теперь буду капать под UQM HD.

Ответить с цитированием Вверх
Старый 12.05.2017, 10:57   #2
SLY
Аватар для SLY
По умолчанию Re: Сборка UQM 0.7.0 (XP, VisualC++)

https://www.youtube.com/watch?v=KumlCVmW-PQ

А если серьёзно, то очень круто!
Ответить с цитированием Вверх
Старый 12.05.2017, 16:21   #3
Vasaka
Аватар для Vasaka
По умолчанию Re: Сборка UQM 0.7.0 (XP, VisualC++)

Malin, Я бы никогда в жизни такое не осилил!
SLY,
Ответить с цитированием Вверх
Старый 12.05.2017, 22:06   #4
Vasaka
Аватар для Vasaka
По умолчанию Re: Сборка UQM 0.7.0 (XP, VisualC++)

Шурик, ты планируешь с исходниками игры разбираться? Можно булет тебе потом вопросы задавать на подобие "Где найти код отвечающий за движение флагмана в гипере?" или "Где найти код полёта чёрных дыр в гипере?" и т.д.?
Мы потихоньку с юнити разбираемся, скоро может понадобиться.
Ответить с цитированием Вверх
Старый 13.05.2017, 13:57   #5
Malin
Аватар для Malin
По умолчанию Re: Сборка UQM 0.7.0 (XP, VisualC++)

Пока я думаю попробовать собрать HD версию. А затем разбираться с самим кодом.

Ответить с цитированием Вверх
Ответ

Метки
(xp, 0.7.0, visualc++), сборка

Опции темы
Опции просмотра

Ваши права в разделе
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
Быстрый переход

 
Наш любимый хостер - Majordomo.ru!
Текущее время: 16:40. Часовой пояс GMT +4.

 

Powered by vBulletin® Version 3.8.7 Перевод:zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Время генерации страницы 0.45164 секунды с 15 запросами