Пятница, 24 Января 2020, 14:58

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Форум игроделов » Программирование » C/C++ » Компиляция движка HPL (HPL engine)
Компиляция движка HPL
dima13230Дата: Пятница, 24 Апреля 2015, 19:01 | Сообщение # 61
частый гость
Сейчас нет на сайте
Цитата ezhickovich ()
try removing the glee source and header file from the dependencies folder.

До словно:
Попробуй удалить сорец и хедер глии из папки с зависимостями проекта...

Мне не помогло cry
Лог:
http://rghost.ru/6CFsGplSP

Компилирую на Visual Studio 2008

Добавлено (24 апреля 2015, 18:47)
---------------------------------------------
Так,скомпилировать мне удалось,а что мне делать с полученными obj файлами? smile

Добавлено (24 апреля 2015, 19:01)
---------------------------------------------
Вот английские документация и туториалы от разработчиков: https://wiki.frictionalgames.com/hpl1/start

Сообщение отредактировал dima13230 - Пятница, 24 Апреля 2015, 13:55
nikolas-zДата: Воскресенье, 20 Декабря 2015, 13:26 | Сообщение # 62
был не раз
Сейчас нет на сайте
Не знаю, актуально это или уже нет. Мне удалось скомпилировать статическую либу HPL.lib
Проблема кроется в двух вещах:
1)Напутано в путях к инклудам и сорцам к OALWrapper.
2) Пришлось закомментировать функцию валидности загрузки ogg-файлов и это: RUN_AL_FUNC( alEffecti(mlEffectId, AL_EFFECT_TYPE, AL_EFFECT_EAXREVERB)
Динамически пока не удалось, на выходе имеем это: Error 307 error LNK1104: cannot open file 'GLaux.lib'

Добавлено (28 ноября 2015, 23:54)
---------------------------------------------
Вся трабла в том (по крайней мере у меня) что OALWrapper категорически отказывается линковаться динамически. Из нее и не линкуется весь двиг. Думаю, что Если убрать все что касается OpenAL, можно получить dll-ку движка и использовать в своих проектах. Посмотрим, что из этого выйдет.

Добавлено (19 декабря 2015, 21:03)
---------------------------------------------
Дневник сборки двика HPL-Engine.
В этой мини-статье описан процесс компиляции движка HPL1Engine под WIN32 с помощью IDE CodeBlocks и компилятора gcc-4.5.2.
Не судите строго, я и так с трудом себя заставил это писать. Лень-матушка.
На выходе имеем:
А) Собранный движок HPL1Engine в виде библиотеки libHPL.a и динамической HPL.dll.
Б)Скомпилированный запускной файл Penumbra.exe (из исходников соответствующей игры)
ЭТАП 0. ПОДГОТОВИТЕЛЬНЫЙ
Качаем 3 архива с сайта разработчиков:
1) Dependecies- все дополнительные библиотеки и заголовочные файлы для сборки движка
2) HPL1Engine-master- собственно, сам движок.
3) OALWrapper-master-враппер библиотеки OpenAL.
4) Переименовываем OALWrapper-master в OALWrapper
5) Все три папки располагаем на одном уровне файловой системы, т.е. в одну общую папку, например HPL
6) Устанавливаем IDE CodeBlocks.
7) Устанавливаем mingw32, если его не было в поставке CodeBlocks.
(Я использую старенький gcc-4.5.2, на нем отлично собираются не новые версии движка irrlicht)
ЭТАП1. КОМПИЛЯЦИЯ OpenAL-враппера, используемого в движке HPL1.
1) Импортируем проект в CodeBlocks
2) Project-Build options-Other options- удаляем все опции компиляции от Студии. Они нам не нужны:
3) Project-Build options-Search directories-Compiler:
Добавляем: ../dependencies/include/SDL
4) Пробуем компилировать. Выскакивают ошибки в строке с функцией вида swprintf(…
Меняем все swprintf на snprintf
5) В файле sources/OAL_OggSamples.cpp выскакивает ошибка в троке 123:
if((lOpenResult = ov_open_callbacks(fileHandle, &ovFileHandle, NULL, 0, OV_CALLBACKS_DEFAULT))<0)
{
………….
}
Перед этой строкой декларируем:
ov_callbacks callback;
В строке 123 заменяем на:
if((lOpenResult = ov_open_callbacks(fileHandle, &ovFileHandle, NULL, 0, callback))<0)
{
………….
}
Аналогично в строке 225

6) Если появляется ошибка, связанная с классом
cOAL_CustomStream::cOAL_CustomStream(const tStreamCallbacks& aCallbacks, const tStreamInfo& aInfo, void *apData)
тогда просто добавим два файла в наш проект:
Project—Add files- Идем по адресу:
OALWrapper/include/OALWrapper/OAL_CustomStream.h
OALWrapper/source/OAL_CustomStream.cpp

Все. Должна скомпилироваться статическая либа враппера. Правда, с непонятным именем lib.a. По идее нужно libOALWrapper.a
Меняем: Project- Properties-Build targets- Выбираем цель Release_Win32- в Output filename пишем: libOALWrapper.a
Компилируем.

7) Теперь делаем длл-ку. Меняем в целях сборки в поле type на Dynamic Library. Опять компилируем.
Куча ошибок. Ну да, пути к хедерам прописаны, а пути для линковщика- нет. В логах компилятора видно, что не найдено: OpenAL, SDL и vorbis. Подключаем:
Project-Build options-Linker settings- Add
Вбиваем там:
../dependencies/lib/win32/OpenAL32.lib
../dependencies/lib/win32/SDL.lib
../dependencies/lib/win32/SDL_image.lib
../dependencies/lib/win32/libogg.lib
../dependencies/lib/win32/libvorbis.lib
../dependencies/lib/win32/libvorbisfile.lib
Компилируем. Если все сделано верно, на выходе получаем: OALWrapper.dll.
Копируем libOALWrapper в: dependencies/lib/win32
Копируем OALWrapper.dll туда-же.
(Искать их для этого следует в папке OALWrapper, если не менялись пути).
ЭТАП 2. КОМПИЛЯЦИЯ ДВИЖКА.
1. Открываем CodeBlocks, импортируем проект из Студии, убираем флаги компиляции.
2. Выбираем цель Release Win32, пробуем компилировать.
Исправляем ошибки: строка 96 из sources/graphics/FontData.cpp:
vswprintf(sText, 255, fmt, ap);
на
vswprintf(sText, fmt, ap);
Аналогично на строке 330.
Если все равно не компилируется, можно попбробовать методом тыка один
Из флагов компиляции (нагуглил, как говорится):
__USE_MINGW_ANSI_STDIO=1
D__USE_MINGW_ANSI_STDIO=1
DUSE_MINGW_ANSI_STDIO=1
3. Следующая ошибка: файле Newton.h. Ругается на отсутствие декларации типа size_t
Лечится просто. В начале файла пишем:
#include <cstdio>
using namespace std;

4. Следущая ошибка у меня была такая:
../OALWrapper/include/OALWrapper/OAL_Effect_Reverb.h|54|error: 'AL_EFFECT_EAXREVERB' was not declared in this scope
Исправляем. В начале файла OAL_Effect_Reverb.h добавляем:
#include "AL/efx-creative.h"
5. Компилируем дальше. Остановка на строке 249 в файле:
sources/impl/LowLevelSoundOpenAL.cpp:
отсутствует декларация для функции strcmp.
Исправляем. В начале файла пишем:
#include <cstring> (или #include <string.h>)
6. Следующие грабли мы уже проходили: строка 423 в файле:
Sources/impl/LowLevelSystemSDL.cpp. Ошибка:
D:\MY_SOFT\HPL\HPL1Engine\sources\impl\LowLevelSystemSDL.cpp|423|error: cannot convert 'const wchar_t*' to 'char*' for argument '3' to 'int vswprintf(wchar_t*, const wchar_t*, char*)'|
Исправляем: убираем второй параметр в функции vswprintf(text, 2047, fmt, ap);
Т.е. теперь так: vswprintf(text, fmt, ap);
Эта ошибка встречается много раз в различных файлов в сорцах. Видимо, функция претерпела изменения. Исправляем аналогично.
Все. Статическая библиотека libHPL.a должна собраться.

7. Компилируем динамическую библиотеку. На этапе линковки: куча ошибок.
Заходим в настройки: Project—Build options—Выбираем цель Release 32—Linker settings.
Пишем:
..\dependencies\lib\win32\alut.lib
..\dependencies\lib\win32\cg.lib
..\dependencies\lib\win32\cgGL.lib
..\dependencies\lib\win32\EFX-Util.lib
..\dependencies\lib\win32\fltk.lib
..\dependencies\lib\win32\fltkforms.lib
..\dependencies\lib\win32\fltkgl.lib
..\dependencies\lib\win32\fltkimages.lib
..\dependencies\lib\win32\fltkjpeg.lib
..\dependencies\lib\win32\fltkpng.lib
..\dependencies\lib\win32\fltkz.lib
..\dependencies\lib\win32\libOALWrapper.a
..\dependencies\lib\win32\libogg.lib
..\dependencies\lib\win32\libtheora.lib
..\dependencies\lib\win32\libvorbis.lib
..\dependencies\lib\win32\libvorbisfile.lib
..\dependencies\lib\win32\newton.lib
..\dependencies\lib\win32\OpenAL32.lib
..\dependencies\lib\win32\SDL.lib
..\dependencies\lib\win32\SDL_image.lib
..\dependencies\lib\win32\SDL_ttf.lib
..\dependencies\lib\win32\SDLmain.lib
..\dependencies\lib\win32\libangelscript.a
glu32
opengl32
(возможно, кое-что можно опустить…)

Компилируем. Опять куча ошибок. Н этот раз- при линковке angelsript.lib.
Идем на сайт: http://www.angelcode.com/angelscript/downloads.html
Качаем версию 2.7.1b.
Собираем в CodeBlocks статическую либу, не забываем в настройках указать нужный компилятор (я использовал старенький gcc-4-5-2). Копируем либу в depedencic/lib/win32.
Можно собрать на всякий случай и длл-ку. Копируем туда же.

Компилируем. Последняя ошибка:
build\Release\sources\impl\LowLevelSystemSDL.o:LowLevelSystemSDL.cpp|| undefined reference to `hplMain(std::string const|
Тут я долго думал. Потом взял и закомментировал.
Строку 56: extern int hplMain(const hpl::tString &asCommandLine);
Строку 63: return hplMain(lpCmdLine);
Строку 82: return hplMain(cmdline);
Библиотека HPL.dll скомпилировалась.

ЭТАП 3. КОМПИЛЯЦИЯ PenumbraOverture
1. Переименовываем директорию HPL1Engine-master в HPL1Engine, иначе придется менять пути в настройках проекта.
2. Импортируем проект Студии с CodeBlocks, выбираем цель Release Win32, удаляем лишние флаги компиляции (Project—Выбираем цель Release Win32- Build options-Compiler settings Other options).
3. Убираем дополнительные опции линковки (Project- Выбираем цель Release Win32- Linker Settings- Other linker options) Приступаем к компиляции.
4. Итак, ошибка в строке 590 в файле SaveHandler.cpp. Знакомая функция swprintf.
Удаляем второй параметр (512).
5. Итак, файл Penubra.exe скомпилировался, но не слинковался. Смотрим, чего не хватает.
Указываем пути для линковщика: (Project—Build options—Linker setting)
Это уже было прописано:
HPL
OALWrapper
Fltk
wsock32
comctl32
Добавляем:
..\dependencies\lib\win32\cg.lib
..\dependencies\lib\win32\cgGL.lib
..\dependencies\lib\win32\SDL.lib
..\dependencies\lib\win32\SDL_image.lib
..\dependencies\lib\win32\SDL_ttf.lib
glu32
opengl32
..\dependencies\lib\win32\libangelscript.a
..\dependencies\lib\win32\newton.lib
..\dependencies\lib\win32\OpenAL32.lib
..\dependencies\lib\win32\libogg.lib
..\dependencies\lib\win32\libtheora.lib
..\dependencies\lib\win32\libvorbis.lib
..\dependencies\lib\win32\libvorbisfile.lib
..\dependencies\lib\win32\fltk.lib
..\dependencies\lib\win32\fltk.lib
..\dependencies\lib\win32\fltkforms.lib
..\dependencies\lib\win32\fltkgl.lib
..\dependencies\lib\win32\fltkimages.lib
..\dependencies\lib\win32\fltkjpeg.lib
..\dependencies\lib\win32\fltkpng.lib
..\dependencies\lib\win32\fltkz.lib

Все. В директории redist/ появился файл Penubra.exe

Продолжение следует....

Добавлено (19 декабря 2015, 21:14)
---------------------------------------------
Если будет необходимость, выложу все собранные либы куда-нибудь.

В планах:
0) Проверить собранный файл Penumbra.exe в реальной игре. Необходима вся медия игры, будем качать.
1) Разобраться с HelloWorld на движке.
2) Сборка под lin32. В принципе, пр наличии всех либ в 64битном варианте, можно попробовать собрать и под win64/lin64.
3) Будем разбираться с инструментарием движка. Пока имеем плагин для Maya. Не проверено.

Добавлено (20 декабря 2015, 12:22)
---------------------------------------------
Итак. Скомпилировались инструменты движка, 6 из 7.

Готово:
1)HlpHelper
2)Mapeditor
3)ModelViewer
4)ParticleViewer
5)SceneViewer

Не хочет линковаться:
1)HudObjectEditor.

Правда, эти редакторы представляют собой просто exe-файлы. По всей видимости, они работают только в месте расположения контента игры.

На просторах интернета я нашел так же папку Mod_tools, в которой все 7 редакторов есть.
Если нужно будет, выложу инструкцию по их компиляции. Все аналогично компиляции движка.

Пока все.

Добавлено (20 декабря 2015, 12:24)
---------------------------------------------
Пардон. Забыл добавить еще один готовый редактор: 6)ParticleEditor

Добавлено (20 декабря 2015, 13:26)
---------------------------------------------
Кому интересно, вот ссылка на все скомпилированные либы и редакторы:
http://rghost.ru/84sNGdGNR. Срок хранения: 90 дней.


Под лежачий камень... мы всегда успеем.
XoidДата: Четверг, 24 Декабря 2015, 00:39 | Сообщение # 63
почетный гость
Сейчас нет на сайте
nikolas-z, Чтоб заюзать редактор надо создать файл "MapEditor.cfg" оригинала увы негде нету..
да и вообще зачем дергать старичка hpl1 он уже отжил свое и его графен уже давно устарел, бросте это))


skype:xoid_main | С#/Unity
Форум игроделов » Программирование » C/C++ » Компиляция движка HPL (HPL engine)
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг