...то чувство когда разбираешься с движком
Пока разбираюсь, решил еще записывать некоторые пройденные моменты...
Установка CryBlend
Wiki CryBlend
https://github.com/travnick/CryBlend/wiki/CryBlend
Запуск игры с вашим уровнем (через autexec.cfg)
Запуск игры с вашим уровнем (используя С#)
>я правильно понял, ты начал разбирать с нуля сабж?
Я бы даже сказал с -1 :)
т.к. шарпом я особо не увлекался да и двиг незнакомый
Меня дико бесит этот 2д пример со "звездолетом" т.к. там нет примера камеры, простой обзорной камеры, Карл!
Поэтому первым делом я решил запилить свою )
Свободная(летающая) камера на С#
class Observer
- написана она на базе Entity, но вероятно её так же можно попытаться написать на базе SceneObject у которого есть для всех привычные OnUpdate...
- так же я дописывал Input который идет в составе фейворка, но в тоже время есть Mouse со всеми мышиными событиями, правда я не проверял будет ли он слать сообщения если мышка вышла за пределы окна. С моей доработкой Input'a это пофиг.
>погоди, погоди...
нее, нее... кони уже убежали чего годить то?)
>ты можешь в двух словах сначала описать двиг, сборку, общие принципы построения приложений на нём, инструменты, преимущества/недостатки?
этого навалом в интернете, цель моего "повествования" это мой путь освоения движка т.е. совсем о другом.
а так могу на вскидку тебе сказать что:
- это просто ужасный двиг, мозго-выносящие баги на каждом шагу ( попробуй ланчер поставить не туда и ппц ты будешь делать три переустановки в ряд чтобы разобраться в чем же дело было и почему нельзя создать даже пустой проект )
- но меня не покидает надежна что все починят ) скоро еще обещают какие-то обновы грандиозные...
>Ты предварительно что-то узнал о нём же?
Я в свое время узнал что он стал бесплатным.
И вопреки общему мнению, то что он заточен на шутеры, нет на нём можно делать хоть черта рогатого, кто-то даже RTS делал.
>ты же не просто взял скачал двиг и начал тыкаться?
ну и начал тыкаться да, "халява" же :))
> цель моего "повествования" это мой путь освоения движка т.е. совсем о другом.
подписался на твой блог, всмысле вступил в группу)
Меня так-то другие движки инетресуют только с точки зрения "чего можно утянуть в урхо". В частности я все обдумываю (долго время) как лучше всего UI организовать, потому что у меня на него 50% времени уходит в моих прогах) Мб в крайэнжине в плане интерфейса что-то придумали интересное
>подписался на твой блог, всмысле вступил в группу)
Круто ) еще пришлось канал запилить другой чтобы с Урхо stuff'ом не мешалось.
>как лучше всего UI организовать,
даже не интересовался пока
но, вот к примеру таким образом создается и обновляется текстовый вывод для счетчика фпс
var canvas = SceneObject.Instantiate<Canvas>(Root); // Create FPS Label. _fpsText = canvas.AddComponent<Text>( ); _fpsText.Alignment = Alignment.TopLeft; _fpsText.Height = 28; _fpsText.Offset = new Point ( 10, 10); _fpsText.Color = Color.Yellow.WithAlpha( 0.5f); // Update FPS Label. if ( DateTime.Now > _updateFPSTime) { _fpsText.Content = _frameCount + " fps"; _frameCount = 0; _updateFPSTime = DateTime.Now.AddSeconds( 1); } _frameCount++;
Вообще их фреймворк на С# это какая-та хрень не дописанная имхо.
есть SWIG костыли(байндинги) а сверху лежит этот фреймворк, который предлагается юзать юзверю, хотя можно и SWIG дергать, так например я кастомный вид создавал
Запуск игры с редактором(Sandbox) или с GameSDK (пример переключения между ними).
Вообще по дефолту собранный проект - dll'ка выполняется GameSDK.exe из состава движка.
Но, есть возможность запускать игру и с редактором сцены (Sandbox), выбираете уровень ваш уровень и нажимаете "play" - прямо как в юнити.
До конца не разобрался какие это таит в себе преимущества: но навскидку наверное стиль разработки больше походить на юнити, можно видеть все ваши С# сущности и FlowGraph'ы. т.е. использовать все то что вы наделали в С# а затем в редакторе это все дело настроить и связать в некую логику.
StepEver
>Какие проблемы?
Проблем много, приходится костыли вешать. Допустим ты хочешь, чтобы кнопка плавно выплывала или пухла, когда мышка над ней.. А координаты UI-элементов в целых числах. То есть ты не можешь их модифицировать в апдейте. Я для этого в UIElemente создаю переменную типа Vector2. Или то что нельзя компоненты к элементам прикреплять, приходится всю UI логику в один класс пихать и он получается просто огромным полотном текста. Я посылал cadaverу пуллреквест с компонентами для UI-элементов, но он отклонил его, типа много повторяюещегося кода (с компонентами для нод имеется в виду), типа есть планы перевести UI на нодовый граф. Но когда это будет неизвестно. Также описание UI в xml файлах очень нелогичное. В файле стилей и в файлах layout одни и теже названия для разных понятий и все дико запутано между собой. Нельзя наследовать теги и переменные в xml файлах, то есть приходится одно и тоже писать в разных местах. Это так на вскидку.
Как интересно Entity не завезли еще в редактор из С#
https://answers.cryengine.com/questions/896/c-entities-and-workflows.html
А та что сейчас в С# это жалкое подобие и просто врапер над IEntity без всей иерархии наследования как в СPP
Я попытался что-то сделать, но застрял на
cpp: static CObjectCreator<T> _creator; там создается инстанс нужного класса и храниться в умном указателе пока не затребуют удаление объекта
В общем в С#
- ентитя не настоящая (нету у нее всего того зоопарка с наследованием)
В Cpp таких проблем нет, я сам уже делал кастомную ентитю и они была видна в редакторе(Sandbox) и её можно было расставлять по уровню как и любою другую Entity
Огромный такой облом для ценителей удобств и перетягиваний в сценку из панельки сбоку
пока люди извращаются поиском по имени некоторой GeomEntity в сцене
Entity ent = Entity.ByName("ent");
а вообще конечно можно еще в Lua скриптах описать эти Entity( с моделью и значком) - они то уж точно будут видны в редакторе, а потом их подхватывать по имени в C#, но это костыльно смотрится имхо.
> Допустим ты хочешь, чтобы кнопка плавно выплывала или пухла, когда мышка над ней.. А координаты UI-элементов в целых числах.
мне кажется тебе нужно использовать от реального UIElement'a только его сообщения о нажатиях и о попаданиях о его состоянии, а рисовать кнопку как StaticModel/CustomModel по тем же координатам c материалом который рисует плоскость с анимированной текстурой в пространстве камеры. естественно отдельный пасс запилить для всего этого дела не помешало бы
Целая хреномантия чтобы получить релизный билд игры, нету кнопочки как в юнити(
Guide to releasing EaaS-based projects (3.8.6 and newer)
http://docs.cryengine.com/pages/viewpage.action?pageId=23306380
А что-нибудь хорошее ты там обнаружил уже? xD
Нет xD
А что можно считать за хорошее?
Представь ситуацию - в Ухе два LogicComponent'a ноды обменивались бы данными через сериализацию, тут это рельность xD
сериализация в инпуте
чтение в компоненте "перемещалке"
Притом что у самого примитивного Player'a который просто летающая точка с камерой (в gameZero) три таких кастомных компонента InputExtension, MovementExtension, ViewExtension.
Хз зачем они сделали через заднее место общение между компонентами одной и тойже Entity
А я думал крайэнжит тормозит потому что там графика крутая xD
переключиться можно на графу для ведроида же, - в редакторе или в конфигах спеки задать ) и будет тормозить чуть побыстрее xD
хз как графика, но физика крутая )
взрыв к примеру:
pe_explosion explosion; explosion.rmax = 100; // радиус взрыва gEnv->pPhysicalWorld->SimulateExplosion(&explosion)
но, у меня "офизичивание" не получается прикрутить к камере, висит на месте спавна крутится туда-сюда и всё на этом... (
Player
Movement ext
Тема в архиве.