ПрограммированиеФорум2D графика и изометрия

Vortex2D.NET - новый игровой движок для .NET (5 стр)

Страницы: 1 2 3 4 5
#60
13:21, 17 фев 2011

После работы, один вечер (2 часа), на разборку примера, и по пути, немного исследований, как рендерить в таргеты и т.п. Оказалось очень удобно! И ещё где-то около часа в другой вечер, на уже написание. На самом деле по пути у меня ещё другое совсем было, но быстро под конец собрал эту демку.
Скорость разработки на C# и Vortex2D, улётная!

Очень рад что демка подняла настроение, самому приятно!

На данный момент, цепляется лишь один момент: классы для Size и Point использованы стандартные (System.Drawing), и происходит частенько мешанина, и необходимость объявлять новые Vector2, было бы намного удобнее почти везде иметь возможность тупо использовать Vector2, если это Point или Size.
Также у камеры, функция WorldToScreen, имеет только 2 параметра. Но думаю что т.к. исходники открыты, можно добавить больше overload функций, которые будут преобразовывать простые Vector2 и т.п.
ColorU - очень удобный :)

ЗЫ, для рендера света, использовал таргет 32F формата на канал. Но там был только 4ёх канальный A32B32G32R32F, а есть ли на 3 канала, без альфы?

И ещё, я погуглил, но толком не нашёл инфы о такой структуре:

using(canvas <= ...) {

Меня интересует этот оператор: <=
Или он в движке описан (не является стандартным)?

Была вот такая структура:

canvas <= camera <= shader <= normalMap*2

Не позволило. Потому что как понимаю, shader по логике бы относился не к canvas, а к camera. Как послать тогда несколько данных?
Также почему у текстуры которую посылаю в шейдер нужно указывать *2, это определяет индекс в регистре :register(si); для шейдера, так?

#61
13:33, 17 фев 2011

Вау, это очень хорошо, что для тебя всё удобно и просто.

Size/Point просто целочисельные... я их переюзал. Кстати, попробуй просто писать их вместо Vector2 и наоборот, если надо. Вроде бы я добавил поддержку неявних операторов для этих типов.

Насчёт типов текстур... Я их очень давно не пересматривал. Добавил только те, которые поддерживаются на почти всём оборудовании. Надо будет поревизить.

#62
13:53, 17 фев 2011

Обновил пост 60..

Ещё вопрос, если используется Camera2D, то по стандарту нулевая точка мира, будет в центре камеры, так?
И ещё вопрос, может я поленился посмотреть внимательно, но Handle по стандарту привязан к верхнему левому углу текстуры, при отрисовке. Какие функции отвечают за переназначение этого, чтобы например отрисовка происходила по координате относительно центра или другой точки текстуры?
UPD: нашёл: Sprite - Origin.

#63
15:47, 17 фев 2011

Отвечаю на пост 60.

1.

using(canvas <= ...) {

Это фича Вортекса. Структура реализована переопределением оператора <= для того, что бы упростить применение стейта на определённый участок выполнения.

2.

canvas <= camera <= shader <= normalMap*2

Печально, должно было позволить. Это цепочная структура должна применятся последовательно к канве. Буду разбираться. Альтернатива этой конструкции:

using (canvas <= camera)
using (canvas <= shader)
using (canvas <= normalMap * 2) {

}

3.

normalMap*2

Да, это установка  normalMap текстуры в второй семплер (s2). В библиотеке s0 и s1 зарезервированы. s0 под текстуру спрайта, а s1 - под кисти наложения (оверлеи).

#64
14:08, 21 мар 2011

Привет, классная библиотека!
Это ты здорово придумал, обернуть d3d9x.dll.

А к какой именно версии у тебя d3dx9.lib?
Последние обновление D3DX9_43.dll датируется 26.05.2010, вроде бы как...

#65
14:26, 21 мар 2011

Привет. У меня последняя версия с статической линковкой (.lib файл) (Summer 2005). Следущая уже шла с d3dxXX.dll.

А что ты имел ввиду под "обернуть d3d9x.dll"?

#66
18:27, 21 мар 2011

Имел ввиду, что в целом хорошая идея использовать C++/CLI, что бы сделать свою библиотеку такого рода :)

#67
21:16, 18 апр 2011

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

#68
0:01, 19 апр 2011
Log.Configure(false, null);

Это должно отключить логирование полностью, включая системную консоль. Вызов следует сделать ещё до создания инстанса игры/инициализации приложения.

#69
16:12, 31 мая 2011

Движок, работает под Win64, Vista?

#70
16:15, 31 мая 2011

Да, работает, основная разработка идёт на Win7 x64.

Прошло более 2 лет
#71
15:10, 12 ноя 2013

*Наивный вопрос* Возвращение к движку автором планируется?

#72
17:07, 12 ноя 2013

Возможно, если автору будет интересен проект, который на движке хотят сделать. И, что важно, автор насколько поменял мировозрение за 2 года, что ему придется переписывать движек с нуля, что бы его не тошнило :)

#73
18:35, 16 ноя 2013

AlexKhomich
Ого, какие люди! Привет!

Считаю твой движок лучшим решением для разработки 2д игр на .NET.

Однако есть некоторые моменты, которые считаю неудобными/неправильными:
1. В игровом цикле используется Application.DoEvents - здесь написано, почему так делать нельзя: [1] и [2]

2. Решение о том, чтобы сделать Спрайты immutable - это, возможно, грамотное решение, но только если бы спрайт был легковестным value-типом, который можно было бы аллоцировать на стеке. Сейчас же получается, что для таких элементарных вещей как flip - надо создавать новый объект.
Столкнулся вот с такой ситуацией: анимация персонажа представлена в виде сетки, я ее грузил SpriteGrid'ом, но персонаж нарисован "в одну сторону", чтобы повернуть его обратно, нужно было делать flip спрайта текущего кадра анимации = создавать новый объект.

3. Рендеринг текста. Провел простой эксперимент: создал окно в котором рендерил много тайлов. Прогнал профайлером и офигел, что hotpath-ом является вывод фпс. Время на отрисовку моих тайлов было ничтожным по сравнению с лежащей под замером фпс работой. Там самое слабое место - getHashCode - взятие каких-то там таймеров по хэшу, это дело создает безумную течку памяти.

4. Типы Vector, Rect и прочие надо наверное не в неймспейс Vortex.Graphics, а просто в корень - Vortex или Vortex.Types.

А так в целом, ничего удобнее не видел. Правда нужно дизайн максимально продумывать с точки зрении использования памяти. Все эти конструкции using( canvas <= xxx ) нужно на этот предмет особенно проверять.

Страницы: 1 2 3 4 5
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.