Вектор почти готов - достаточно долго анализировал код. Нужно ввести небольшие правки и добавить несколько функций.
Вектор готов. Надо тестировать. Нужно сказать, что мне придется тормознуть клепание этой библиотеки. Долбаный вектор я делал наверное недели две, если суммировать. Разработка контейнеров требует кучу времени и здорово выматывает.
Для себя решил взять готовый движок.
1. Сначала посмотрел движок Catmother Engine. Собрал демку не без усилий. В итоге, оказалось что исходники не поддерживают формат карты, идущей в примерах.
С точки зрения графической части - это не динозавр, но близко к этому - устарел. Хотя можно посмотреть на структуру игрового кода.
2. Urho3D. Движок современный, но я так и не смог до конца разобраться в командах Cmake. Также я не слышал об играх, выпущенных на этом движке.
3. Sauerbraten. Клево, полностью готово и главное, компилируется без правок. Но код тяжело читать, так как там плоский C-код почти без комментариев.
4. Nebula2 Device - много выпущенных игр. Пробежался по коду. В плане математики и контейнеров не ахти как сделано, но в плане графической подсистемы вполне нормально. Пока остановился на нем.
graveman
> Urho3D. Движок современный, но я так и не смог до конца разобраться в командах Cmake.
Зачем тебе в них разбираться? щелкаешь по батнику и генерится файл проекта. Потом собираешь движок. Вот и всё. Усилий минимум в общем.
cin
> Зачем тебе в них разбираться?
Ну а если мне нужно свой проект собрать, а не демки и движок?
graveman, вот тогда делаешь myproject/cmake/cmakelist.txt с таким содержимым
подразумевается что у тебя исходники лежат в папке myproject/source
PROJECT(myproject) SET (TARGET_NAME myproject) cmake_minimum_required (VERSION 2.8.6) if (COMMAND cmake_policy) cmake_policy (SET CMP0003 NEW) endif () SET (CMAKE_CONFIGURATION_TYPES "release;debug" CACHE STRING "" FORCE) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "$ENV{URHO3D_HOME}/CMake/Modules/") include (Urho3D-CMake-common) find_package (Urho3D REQUIRED) include_directories (${URHO3D_INCLUDE_DIRS}) file (GLOB CPP_FILES ../Source/*.cpp) file (GLOB H_FILES ../Source/*.h) set (SOURCE_FILES ${CPP_FILES} ${H_FILES}) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/") setup_main_executable ()
Прописывание пути к Urho3D в переменной окружения PATH
В папке Urho3D создаешь батник с такой строчкой:
setx URHO3D_HOME %CD%
Запускаешь его. это он пропишет в PATH путь к Urho3D
Генерация файлов проекта
Запускаешь cmakе и указываешь:
Жмёшь Configure и Generate
Копирование ресурсов
Cоздаешь каталог myproject/bin
Пишешь батник который ресурсы из Urho3D тебе скопирует.
xcopy %URHO3D_HOME%Bin\Data %CD%\Bin\Data\ /Y /E /Q xcopy %URHO3D_HOME%Bin\CoreData %CD%\Bin\CoreData\ /Y /E /Q pause
Кладешь его в каталог myproject и запускаешь.
cin
Спасибо за информацию, попробую.
В мае я решил начать использование сторонних библиотек для написания движка. Я нашел gainput для ввода. Разобрался со строками и вектором STL.
Оставался вопрос с математикой. Мне ничего не нравилоссь из того, что есть - не встретил библиотеки с OBBox, Plane, Line, Sphere. Либо какой-то гребаный дизайн с шаблонами, либо огромный вес. Х... с ним начал писать свою. В итоге я несколько раз пересоздавал проект на гитхабе из-за приступов перфекционизма - сейчас там нет ничего полезного - я вырезал, все у меня на компе по несколько копий - галимый бардак, который нужно разбирать не один день. Каждая хрень вылизывается по полдня - у меня нет столько времени. Сегодня думаю, х... сним, буду юзать D3DX - буду редист с игрой поставлять - лишние десятки метров ничего не решат.
В итоге, с сегодняшнего дня начинаю писать движок с названием Zavod3D "Trash". "Trash" - название редакции/версии. Смысл его в том, что я не буду заботиться о красоте кода и правильности его с точки зрения дизайна - буду стараться душить в себе любые намеки на перфекционизм и использовать нелюбимые многими STL, D3DX Math и эффекты. В качестве ориентира по архитектуре буду смотреть движок Catmother (готовый прототип игры на DirectX9, а не просто движок с примерами).
Итак:
Контейнеры, строки, IO: stl.
Математика: D3DX.
Ввод: Gainput.
Архивы: zlib.
GUI для редакторов: wxWidgets.
Репозиторий будет находиться тут
Сегодня занимался доработкой новой Debug системы трэш-движка. Хорошо бы сегодня закончить с ней.
graveman
> Для себя решил взять готовый движок.
Так какой движок всё-таки выбрал?
А, Catmother для ориентира.
А в Urho3D заглядывал или нет? Вполне возможно, он недалёк от идеальной архитектуры.
Вот батничек, запускаешь его из каталога движка, переходишь в каталог build, запускаешь *.sln, компилируешь - и всё работает.
call cmake_vs2013.bat build -DURHO3D_64BIT=1 -DURHO3D_LUA=1 -DURHO3D_LUAJIT=1 -DURHO3D_SAMPLES=1 -DURHO3D_D3D11=1 -DURHO3D_LIB_TYPE=SHARED -DURHO3D_DATABASE_ODBC=1 -DURHO3D_PCH=1 -DURHO3D_C++11=1 -DURHO3D_STATIC_RUNTIME=0
Саша123
> Так какой движок всё-таки выбрал?
Возился в начале года с Nebula Device2. Но там нет одной важной вещи - полноценных примеров.
Сейчас нацеливаюсь на Catmother по причине того, что это уже игра, не пример, а игра. В Urho3D есть примеры и даже что-то наподобие игры ("пример с ниндзя"), но слишком примитивный пример и все-таки думаю, что там надо знать CMake, чтобы не чувстовать себя обязьяной с гранатой.
Я переименовал движок. Треш мне не нравится - звучит как мусор.
Есть проблемы с запуском собранной игры в catmother. Думаю дело в коде шейдеров или в Lua скриптах.Короче решил походу изучения шейдеров, писать движок, о чем написал пару постов ранее.
cmake используется там для того лишь, чтобы избавиться от необходимости хранения в дистрибутиве проЭкта для каждой поддерживаемой среды, коих поддерживает очень много, и периодически добавляются новые IDE. Знание его не является необходимым. Готовые батники идут в комплекте. Нужно лишь вызвать соответствующий с нужными параметрами.
Urho как-нибудь в будущем попробую. Пока пробую catmother
Начну-ка я дневник разработки движка "Zavod3D Trash". Итак, про то, что уже готово:
1) мега-убойную систему отладки я запилил - причем недели две назад (Надо бы залить ее в гит, эх..., мой косяк).
2) Класс приложения Windows c окном и главным циклом вроде запилил - типа реализуй абстрактный интерфейс проекта с несколькими функциями и не парься насчет окна и главного цикла. Вот тут у меня возникла трудность. Разработку я веду в Code::Blocks. Но не могу скомпилить gainput под эту IDE. Ужас, который творит makefile этой библиотеки для gcc (куча каких-то папок, непонятных файлов для вроде бы простой вещи как ввод) вынудил меня думать, чтобы взять в качестве библиотеки ввода. Тут есть два варианта.
Первый - взять SDL. Вроде бы все есть для создания простого приложения. Но я не имею серьезного опыта работы с SDL - придется разбираться не только с вводом, но и с таймерами, как прикручивать DirectX9 к SDL тоже надо думать (может просто SysWMInfo получить, а может и нет). Да и свои наработки по фремворку псу под хвост в этом случае - зря ебся штоль.
Второй: есть еще DXInput. Ну как-то давно я ввод реализовывал. Вспомнить будет легче, думаю. Лишних либ прикручивать не надо - тот же DirectX9.
Что ж пока попробую реализацию ввода на DXInput. Не получится - буду пробовать SDL.
День первый, задача:
1) Разработать систему ввода на DirectX Input и прикрутить ее к фрейфорку.
>1) Разработать систему ввода на DirectX Input и прикрутить ее к фрейфорку.
тебе нужно думать о потоко-независимом инпут менеджере, навроде такого :)
https://github.com/turanszkij/WickedEngine/blob/master/WickedEngi… nputManager.h
codingmonkey
> тебе нужно думать о потоко-независимом инпут менеджере
Забыл сказать. Я на днях отказался от поисков идеальной архитектуры движка в пользу скорости разработки.
Я сейчас преследую немного другую цель - написание неказистого, но более-менее законченного работающего движка. Так что допускаю появление близких к говнокоду некрасивых решений в своем проекте (хули, треш же).
А то, что ты предложил - я буду долго пилить, наверное.
Тема в архиве.