{{notification.text}}

MirGames

Xander

Хабаровск
Зарегистрирован 13.05.05 11:48
Последний раз был в сети 02.02.19 10:33
Ради фана
27.10.12 18:47
Цитата(DRON @ Вчера, 07:37)
[snapback]110984[/snapback]
Тестил двиг, ради фана вот такое сделал

Прикольно :)

Цитата(DRON @ Вчера, 07:37)
[snapback]110984[/snapback]
В принципе движок годный, хотя некоторые вещим мне в нем не нравятся

Мне, кстати, в нем идея реализации "скрипт" языка в качестве С# нравится :)
Как по мне - плюсы для написания игровой логики, вообщем-то, излишни... а в отличии от того же Lua, в шарпе полно стандартных полезных библиотек, да и функционал самого языка побогаче будет :) + оно в Mono реализуется через JIT компилятор, что обеспечивает ему относительную шустрость. Есть мысли сделать похожим образом, единственное, что не очень приятно: за Mono под "мобильные" платформы 400$ минимум просят, для iOS и android отдельно. Но, имхо, выглядит это интересно.

Про Unity вообще думаю, что он очень даже неплох именно под "мобильные" платформы, ибо кросс-платформенность там хорошо реализована, при переносе править практически ничего не нужно. И его функционала там хватает с головой, а простота там (в Unity) решает, да. На ПК, на фоне остальных, он фактически ничем не выделяется, имхо.

P.S. Просто мысли вслух ^_^
что еще за вирус тут у нас?
08.08.12 23:46
Цитата(Murzik18 @ Вчера, 18:52)
[snapback]110584[/snapback]
необходимость была, это было тихое место где можно было получить реальный совет по программированию на игр на делфи не выслушивая что это мертвый язык и что если хочешь всерьез чем то заниматься -надо переходить на плюсы, и тролллинга здесь не было. совсем. проблема была и остается в том что людей пишущих на игры на делфи было мало а теперь их еще меньше.

+ 100500. Отлично сказано. Сколько раньше я себя тут помню - ни разу не было ни оскорблений, ни разного рода троллинга.
Всегда можно было рассчитывать на реальную помощь безо всяких "гоу в поиск \ гугл", "учи мат. часть" и так далее, чего я периодически наблюдаю в последнее время на разных форумах (да и раньше везде также было).

Мм, возможно конечно, исключения и были из выше написанного, но это как правило были именно исключения, а не целенаправленная тенденция.

Цитата(egslava @ Вчера, 19:46)
[snapback]110586[/snapback]
А на мирге новички всегда получали достойные советы. Да черт возьми, я с 13 лет здесь, я на мирге вырос! И благодаря ей стал программистом. Благодаря Фео, MegaI2, XProger, и многим другим хорошим людям.

Понимаю :) . Сам здесь же вырос, по крайней мере дорога начинается именно здесь.
Могу выразить особую благодарность Dan'y ^_^ , который в самом начале пути, терпеливо отвечал на мои ламерские вопросы по DelphiX и Omega :D . И соглашусь - много хороших людей здесь было, душевненько так.
Эх, ностальгия ^_^

P.S. Мм, а Said'ко теперь титулованный тролль-мэн местного разлива? :P
А сколько нас тут?
09.07.12 11:34
Хех, и я давно уже не заходил :) . Но периодически захожу в read-only посмотреть, правда смотреть скоро совсем уже не на что станет :)
Atom Limited Demo
25.12.10 00:23
DRON
Цитата(DRON @ Сегодня, 15:37)
[snapback]106082[/snapback]
Кто то говорил выше что компании продают свои двиги. У нас вот есть двиг который закрыт для всех кроме нас и заточен под нас

Ну если возможность имеется, то почему бы и нет? :) Все таки продажа лицензий сторонним компаниям - это дополнительная прибыль. Только это вообще отдельная тема и развивать ее здесь смысла нет никакого.

Я вообще внимание акцентрировал вокруг позиционирования и подхода автора к разработке движка, т.к. раньше тема была именно про движок.
О какой вообще коммерции может идти речь, когда вместо "StopRender()" нужно наваять 40 строк кода? А дальше - видимо больше. Так нормально все, движок то разработчика вообще человеком не считает :). И SDK нам не нужен абсолютно.

WXZRW
Уважаемый, вам тут никто плохо ничего не желает. Всего лишь навсего народ довольствуется тем, что есть :)
Вот я сейчас читаю заголовок темы и вижу там слово "Demo", потом читаю в первом посте "В данной теме подразумевается предоставление ограниченной демо версии шутера".
Какое-то странное и непонятное "Demo" в вакууме... А что еще есть? Вопрос считать риторическим.

Ответите на вопрос: Что вы ожидаете\ожидали от этой темы с таким "багажом"?
Atom Limited Demo
24.12.10 00:08
Цитата(wxzrw @ Сегодня, 13:36)
[snapback]106048[/snapback]
Вы с какой целью вообще интересуетесь? Вам завидно или что? Или вас злит что вас не приглашают принять участие? Или вы пытаетесь заниматься троллингом по другим причинам? Вас сильно волнует моя политика разработки? Если да то почему? Хотите ли вы обо всем этом поговорить?

Я не стану отвечать на ваши вопросы, потому что мне не о чем с вами говорить и более того я не вижу в этом смысла. Это мои личные проблемы что и как будет, вам о них знать не нужно.

Стандартный ход, когда сказать нечего. Все с вами понятно.

С моей стороны(не только с моей, кстати) были замечены абсурдные(для меня конкретно) решения\методы\и т.п. Хотелось узнать, уверены ли вы в том, что сами пишите и если да, пояснить почему сделан такой выбор(в чем его плюсы, например).

Я еще раз повторюсь, если вы не в состоянии поддержать разговор и рассказать(объяснить\пояснить) то, что сами написали... Лучше тогда вообще ничего не пишите :)
Тогда никто не будет вам задавать вопросы и "завидовать, злиться, и троллить" ;).
И упаси боже, не льстите себе :D

P.S. Удачной разработки, with Best Regards.
Atom Limited Demo
23.12.10 19:03
А можна я еще чуток продолжу? :P
Цитата

Цитата
Теперь более серьезно. Весьма странно, что вы не рассматривали возможности использования движка кем-либо еще, очень странно. Или вы наивно предполагаете что в любой коммерческой конторе игру и движок пишет один программист? Вопрос риторический.
Для себя, конечно, писать можно вообще как угодно... через жо**, еще какими либо "хитрыми" методами... Но, предполагать в будушем коммерческую разработку и не задумываться об очевидном, это простите, нонсенс.

Не вижу проблем, нанимаются сотрудники для работы в офисе, понятное дело, что там не один только я буду работать. ХЗ, не все конторы продают свои двиги, я не узнавал, но возможно Rockstar и Czech 2K не продают свои двиги, но делают свои проекты на них. Я вообще намерен идти по пути Infinity Ward и мешать моддингу либо вообще подавлять моддинг, чтобы иметь полный контроль. Не планируется чтобы кто-то кроме персонала моей конторы мог юзать данный продукт (то есть двиг).

и

Цитата

Цитата
Это придется делать в любом случае, тулсет, роль "ходячей энциклопедии" или написание приличных доков для разработчиков, и так далее. Это - must have.

Этого нет и не планируется в ближайшее время.

Неужели вы не видите во всем этом связи? И не понимаете о чем я говорю?

Каким образом остальные программисты (игровые например, их на самом деле еще больше) должны работать с движком? Кроме разработки, непосредственно, самого движка на нем еще надо сделать игру? Очевидные вещи я пишу да?
Так вот, объясните мне, каким образом остальные программисты должны работать с движком? Документации нет и не планируется, и как вы выразились "движок совсем не дружествен для разработчика". Кто с ним должен работать?
А еще есть арт-отдел, который без необходимого тулсета с вами вообще дело откажется иметь.

Я уверен на все 99%, что сейчас автор скажет (как он частично ответил мне в прошлом посте), что уже все это не актуально, и движок пишется совсем "для себя". Так вот с этого и надо было начинать.
Зачем заниматься разглагольствованием? Фантазировать о "лицензиях" и "коммерческих разработках"?
Раз вы сразу ранее написали, что все это "сейчас нафиг не надо", то и не нужно было вам сочинять те громадные посты.
Меньше бы вопросов было. Не очевидно?

Вообще, как я понял, начало этому положило "особое" позиционирование данного движка.
Что он вроде как вообще не (предназначен) для разработчика (omg?), а для "конечного пользователя", коим у нас является игрок. Ну да ладно.
Вот мне интересно и какая польза будет от этого игроку?
Цитата
Если допустим нет текстур, но есть уровень и модели, то двиг продолжает работать, режим текстуринга при этом отрубается или ограничивается. Если нет моделей, тогда модуль, отвечающий за модели отрубается, остальное работает

Вот скажите мне, неужели вы предполагаете, что после того как движок выключит текстуры, игрок продолжит в нее играть? Он скорее поматерит про себя(ну или вслух :D) разработчика игры и снесет ее совсем.
Я вот просто хочу понять(чтобы мне объяснили хорошо, а то я непонятливый), в чем преимущества такого подхода?
Когда движок "не переносит разработчика" (а вы ведь и сам разрабочтик, между прочим) и цитирую "двиг не доверяет разрабу и заботится о пользователе"(игроку тобишь, как мы выяснили). Расскажите :)

Правко:
Опс, я что-то не заметил пост №35. Оказывается, "лицензия" это все таки не фантастика :).
С учетом №35 можно было и у себя поправить кое чего, но не буду.
Atom Limited Demo
22.12.10 12:49
Гм, я что-то вообще мало чего понимаю. Может я тупой?
Но что-то мне подсказывает, что автор сам не понимает чего он хочет :)

Цитата
Да не думал я над этими вопросами вообще. Двиг делался под свои нужды, чтобы сделать играбельное технодемо и найти инвестора чтобы начать разработку игры, набрать персонал. Многие компании делают свои игры на своих двигах, опять же. Поэтому там построение архитектуры было с учетом что я всегда могу перекомпилить билд в любой момент. Да, можно продать лицензию, тогда придется поставлять тулзы, обучать персонал, продвигать и т.д. Тем более чтобы сделать что-то кроме шутера - придется мучиться, так как двиг сильно завязан на шутеры.

Сделаем это стартовой точкой.
Цель вообщем-то поставлена как и у большинства - сделать демо, заинтересовать издателя, и продолжить разработку на коммерческой основе небольшим коллективом(или большим? :)). Классика :).
Относительно данной цели все дальше и рассматриваем (никаких любительских поделок и демок).

Цитата
тогда придется поставлять тулзы, обучать персонал
Это придется делать в любом случае, тулсет, роль "ходячей энциклопедии" или написание приличных доков для разработчиков, и так далее. Это - must have.

Цитата
Многие компании делают свои игры на своих двигах, опять же
Да, и практически все из этих компаний продают свои движки сторонним разработчикам. Глупо не так ли?

Цитата
Поэтому там построение архитектуры было с учетом что я всегда могу перекомпилить билд в любой момент
Что этим хотел сказать автор? Кто мне подскажет? "построение архитектуры" и "перекомпилить билд в любой момент". Где связь (в данном контексте)?

Цитата
Но еще дело в том что при разработке изначально я не рассматривал что сторонний разраб будет данный движок использовать. Мне эта мысль в голову вообще не приходила. А сама архитектура двига, она децентрализована и слишком сложна. В двиге нет глобальных менеджеров, например, так как каждый блок управляется самостоятельно. То есть вот на скрине... небо, руки с оружием, уровень и модели... это все разные блоки, и у них нет общего менеджера текстур или сцены, каждый из блоков управляется автономно, то есть сам грузит свои ресурсы, сам текстурит, сам рендерит и так далее... Чтобы остановить рендер всей сцены, нужно от 20 до 60 строк кода, то есть нет такого как, например Scene::StopRendering();, нужно отдельно остановить каждый блок.

OMG o_O. Как бе это нормально да? Я надеюсь, данная "особенность" не причисляется к достоинствам движка? :)
Хаос, и сплошной геморой при разработке (ну это насколько я мог себе представить архитектуру движка после данного абзаца автора :)). Т.е. насколько я понимаю, автор пишет движок, пишет на нем игру и... (сам в нее играет :P)

Теперь более серьезно. Весьма странно, что вы не рассматривали возможности использования движка кем-либо еще, очень странно. Или вы наивно предполагаете что в любой коммерческой конторе игру и движок пишет один программист? Вопрос риторический.
Для себя, конечно, писать можно вообще как угодно... через жо**, еще какими либо "хитрыми" методами... Но, предполагать в будушем коммерческую разработку и не задумываться об очевидном, это простите, нонсенс.

И сразу же про "конечного пользователя".
Весьма странные выбраны формулировки для данного определения. Поэтому цитат не будет :)
Как уже до меня говорили(и намекали), что "конечным пользователем" данного творения является, ессно, разработчик. Никакой не "пользователь" и не "игрок".
Пользователь, вообщем-то этот то же разработчик, но понятие это более абстрактно.
Поэтому из конкретных понятий у нас есть только "разработчик" и "игрок", больше нет никого.


Движок - это прежде всего инструмент, и создается данный инструмент для разработчика, который уже в свою очередь создаст с помощью этого инструмента и необходимого контента - продукт, конечным пользователем которого и будет, собственно, игрок.

Можно привести упрощенную аналогию(вашего варианта).
Конечный продукт(игра) - мебельный шкаф.
Шкаф состоит из различного вида деревянных материалов(это контент), инструмент в данном случае это - гвозди и молоток(упрощенно).

Тогда это будет звучать примерно так:
"Конечный пользователь (молотка) - это потребитель, который использует мебельный шкаф, сделанный с помощью этого молотка". (аналогично про гвоздь). По аналогии вот этой цитаты:
Цитата
Конечный пользователь - это игрок, который играет в игру, сделанную на движке

А можно еще так:
"Конечный пользователь (Компилятора) - это игрок, которые играет в игру, сделанную на движке, который в свою очередь написан на языке программирования и скомпилирован компилятором" :P

Т.е., выстраивая любую цепочку по подобной логике, "конечным пользователем" любого звена цепи, будет игрок :) (ну если обобщенно, то - "настоящий конечный пользователь" последнего звена данной цепи :) ).

Цитата
Лицензия распространяется на сам движок, и на те демо и продукты которые сделал я на данном движке.

Если вы допустим, купили лицензию на сам движок, то она действует именно на движок, если в ней иного не предусмотрено. Если в ней предусмотрено на движок и на любую продукцию на движке которую вы сделали, тогда значит так и есть, если же не предусмотрено, то тогда на сам движок.

Т.е. я покупаю лицензию "просто на движок", сижу с ним в уголке и просто схожу с ума от счастья?
Или пишу крутые демки, чтобы показать своим друзьям "как я крут" :D

Мне сие непонятно (способ лицензирования), any comments?
Тайлы Как В Heroes Of Might And Magic 5
20.07.10 22:54
А если так?
Код

(0, 0) (1, 0) (2, 0) (3, 0)
(0, 1) (1, 1) (2, 1) (3, 1)
(0, 2) (1, 2) (2, 2) (3, 2)
(0, 3) (1, 3) (2, 3) (3, 3)


А вообще ведь, не удобно вот так ручками буферы заполнять. Можно например так:
Код

const int Width = 4;
const int Height = 4;

vertex VBuf[Width * Height]; //сетка 3х3 тайла

float Tile = 2.0f;
for (int x = 0; x < Width; x++)
    for (int y = 0; y < Height; y++) {
        int Idx = x * Width + y;
        
        VBuf[Idx].x = x * Tile;
        VBuf[Idx].y = y * Tile;
        VBuf[Idx].z = 0.0f;

        VBuf[Idx].u = x * Tile;
        VBuf[Idx].v = y * Tile;
}
Тайлы Как В Heroes Of Might And Magic 5
19.07.10 23:02
P.S. Еще скорее всего вылезет z-fighting(если включен z-buf), побороть можно примерно так(на первое время :)):
Код

float Bias = -0.15f; //подобрать другое значение, если не спасет
d9dev->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, *((DWORD*)&Bias));
Тайлы Как В Heroes Of Might And Magic 5
19.07.10 22:40
Цитата
Еще интересный результат, если отодвинуться от центра просмотра по оси Z меньше чем -4.0, к примеру на -3.0, то можно наблюдать белые полосы в переходе на следующий ряд. Это погрешность вещественного числа с одинарной точностью? Или что-то другое?

Это результат "железной" фильтрации, связанный с использованием атласов(куча текстур в одной). Если используются MipMaps(3D ландшафт у нас) то от этого вообще никак не избавится(приемлимым способом), бороть можно пробовать путем добавления "бордюра" по краям текстур в атласе. Совет дня - забей на ландшафт с атласом ;)

Цитата
vertBuffer - содержит вершины. Здесь чтобы правильно наложить текстуру мне пришлось не исключать дублирующие вершины (т. е. есть вершины дублируются по координатам в пространстве, а вот текстурные координаты отличаются)

Такой способ - лишнее использование памяти, совсем не cache-friendly.
Вообще с чего появилась необходимость хранить в атласе? Очень много текстур? Для справки: в большинстве игр(3D которые) текстуры в атласах хранят очень редко.

Цитата
Я все сделал правильно?

Не совсем :). Ладно, раз главная цель - смешать два слоя, то пока буферы трогать не будем.
В описании вершины не хватает записи о цвете, которая будет хранить прозрачность в оной:

Код

struct vertex
{
    float x, y, z;
    float u, v;
    D3DCOLOR color;
};

Потом не забыть исправить:
Код

d9dev->SetFVF(D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_DIFFUSE);

Собссна далее придеться "немного" :) дописать инициализацию VB, добавив в первый: цвет D3DCOLOR_ARGB(255,255,255,255), а во второй, например: для двух верхних вершин также все по 255, а для двух нижних, установив альфу в 0 (D3DCOLOR_ARGB(0,255,255,255)).

Вместо комментов о Depth и блендинге:
Код

d9dev->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); //это должно быть сделано при инициализации
d9dev->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL); //оно установлено по дефолту, можно не делать или делать "на всякий случай" при инициализации
d9dev->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); //не забыть выставить в "TRUE" перед началом отрисовки сцены
// но у тебя пока "плоский" =) случай, можешь с z-buffer'ом пока не заморачиваться и не ставить верхние стейты


d9dev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE); //говорим, что альфу берем из вершины

d9dev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); //включаем блендинг
d9dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d9dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

Тайлы Как В Heroes Of Might And Magic 5
14.07.10 21:45
Цитата
есть так же сплаттинг сделанный через шейдер (но это сторонняя реализация), т. е. красный, зеленый, синий и того три тайла, что собственно не есть гуд

Три тайла(можно четыре) - это на один дип(на один вызов процедуры DrawIndexedPrimive). Если ландшафт поделить на сектора, то тогда можно использовать 4 уникальные текстуры на каждый сектор. Об этом ниже.

Цитата
вроде как я понял они только планируют добавить тайловые ландшафты

Давай внесем ясность в терминологию. Вообще понятие "тайловые ландшафты" пришло из более старых игр, где вот эти самые тайлы рисовались ручками(кучи комбинаций их) и никаких сглаживающих аппаратных методов не применялось(блендинг, например), т.к. все переходы уже нарисованы на этих самых тайлах. Т.е. это такой своеобразный мозаичный метод, и его сейчас уже никто не использует(ну может почти :)).
Собссна и мы его не используем, поэтому я "тайлом" буду называть одну клетку сетки ландшафта.

Цитата
Интегрировать код DirectX под Irrlicht, оказалось проще простого. Но есть такие моменты: Octree, ведь ландшафт получается огромным, а камера показывает лишь небольшой участок (как в прочем в HoMM5, правда zoom покороче), поэтому надо сделать отрисовку только видимых полигонов.

Решение данной проблемы(?) заключается, как я уже выше писал, в разбиении ландшафта на небольшие сектора.
К примеру: имеем грид c размерами 256х256, разбиваем его на сектора с размерами 64х64. Получаем 4х4 сектора или в сумме - 16. На данной ноте можем вернуться к теме сплаттинга: Мы обладаем возможностью повесить 3(например) уникальные текстуры на сектор, а т.к. секторов у нас 16, то в сумме мы получаем 48 уникальных текстур на ландшафт! И это, конечно, еще не предел.

Вернемся к отсечению ненужных треугольников камерой. Для этого каждый сектор помещаем в узел Octree(на самом деле тут за глаза хватит QuadTree), перед отрисовкой проверяем на видимость все узлы дерева и делаем соответствующие выводы о том, стоит ли рисовать какой-либо сектор или нет.

Цитата
Создается один VB под весь ландшафт, где на все полигоны установлен дефолтный тайл, т. е. на каждые два треугольника образующие один quad накладывается координаты одного тайла.

Эм, как бы не совсем. И как мы уже договорились, "тайл" у нас - это клетка грида, а это(тайл в твоем понимании) - текстура. Так вот, в создании VB и установке "дефолтной текстуры" нет ничего общего.
VB создается и хранит только ГЕОМЕТРИЮ(Position + Normal) ландшафта, он понятия вообще никакого не имеет какие используются текстуры.
Кстати, если коэффициент затайленности текстур(проще говоря - текс. координаты) имеют одинаковую для всех вершин величину, то координаты эти можно поместить в 1 общий VB(Position + Normal + TexCoord).

Цитата
Мне вот не все понятно с IndexBuffer, зачем он нужен?

Он "говорит" DirectX'y какие вершины нужно взять из нашего общего буффера геометрии, чтобы сделать проход и отрисовать участок с оригинальной текстурой. Вот для примера: имеем грид ландшафта 4х4, он у нас покрыт только травой. По середине ландшафта у нас должна располагаться, например, текстура земли... В центре, с размерами 2х2 тайла... С помощью нашего метода, мы должны взять и отрисовать эти 2х2 тайла еще раз(первый раз они рисуются, когда ландшафт отрисовывается полностью с текстурой травы)! Поверх ландшафта с травой.
Для это IB и выбирает вершины(индексирует треугольники) из общего буффера, которые содержатся в этом участке 2х2.
Цитата
Зачем для каждого участка с уникальным тайлом создавать VB, не проще ли создать один VB который будет поставлен во второй стрим, и динамически менять в нем данные?

Так можно делать, но такого делать никакая религия не позволяет :). Т.к. Lock буффера перед каждой отрисовкой слоя(участок с оригинальной текстурой) очень сильно ударит по производительности!

P.S. Вообще, для начала попробуй все таки разбить ландшафт на сектора и реализовать в плане текстурирования - сплаттинг, он проще в реализации(особенно на движке + есть пример, и никто не мешает его доработать под свои нужды).
Оба этих метода имеют свои недостатки, лучшими свойствами обладает их гибрид (т.к. они очень похожи), но это означает фактически реализацию обоих этих методов, потому начни со сплаттинга :)
Тайлы Как В Heroes Of Might And Magic 5
13.07.10 15:52
Цитата
VB - VertexBuffer?
IB - IndexBuffer?
FFP - Fixed Function Pipeline?

Все верно.

Цитата
Не хочу показаться наглым, но можно ли поподробней?

Спрашивай конкретнее, что именно интересует.

Цитата
И еще - можно ли этот метод прикрутить к Irrlicht?

Я с этим движком никогда не работал. Но думаю можно без проблем - должно быть даже проще.

P.S. Раз ты уже готовый движок используешь, неужели там примеров с ландшафтом нет, чтобы разобраться?
Тайлы Как В Heroes Of Might And Magic 5
08.07.10 23:25
Daimos
Можно попробовать реализовать подобное мульти-проходным рендерингом. Он заключается в том, что каждый новый тип накладываемой текстуры будет требовать отрисовки участка ландшафта на который эта текстура нанесена, и последующим сложением с результатом в фреймбуффере. В D3D можно без шейдеров:

Создается 1 общий VB, который хранит геометрию ландшафта (Pos + Normal).
Для каждого участка с оригинальной текстурой создается:
1 VB (TexCoord + D3DCOLOR) и 1 IB, который индексирует нужные треугольники из общего буффера для конкретного типа требуемой текстуры.
У каждого VB в TexCoord лежат затайленные текс. координаты, а в D3DCOLOR цвет + альфа(для плавного перехода, на границах поверхности).

Рисуется так:

- Включаем Depth.
- Первым проходом отрисовываем полностью весь ландшафт(поверхность) с дефолтной текстурой, например травой. Получаем большущий ландшафт, покрытый сплошной травой.
- Устанавливаем Depth только на чтение с режимом LESSEQUAL.
- Включаем аддитивный блендинг.
- Для каждого последующего участка с уникальной текстурой, ставим + 1 VB во второй стрим(в первом у нас уже забинден общий буффер), + свой IB. Рисуем участок.

Получится в какой-то степени тот же сплаттинг, но на FFP. Плюс такого метода в неограниченности текстурных слоев, правда всегда надо знать меру :)

Цитата(Daimos @ Вчера, 18:33)
[snapback]104077[/snapback]
Вопросы:
Есть ограничения в шейдерах Texture Splatting (кол-во тайлов, и др.)?

Скажем, для "чистого клинического" случая :) - 5 текстур(или тайлов). Данный метод предполагает использование "маски весов" для смешивания текстур:
Код

W = 1 - (Mask.R + Mask.G + Mask.B + Mask.A); //суммарный "вес" равен 1
Result = Texture1 * Mask.R + Texture2 * Mask.G + Texture3 * Mask.B + Texture4 * Mask.A + Texture5 * W;

Но как правило, в реальной жизни такого не бывает :). Т.к. в подобной жизни существуют еще и карты теней, и нормаль карты(в случае Normal Map'a + карты высот, в случае Parallax'a), etc... В общем, текстурных юнитов по-просту не хватит на все это.
3,4,5,6,n-угольники
13.06.10 19:48
Цитата(Woolf @ Сегодня, 08:42)
[snapback]103910[/snapback]
Не 360, а 2*pi, это раз

Это да, т.к. в тригонометрии углы принято вроде в радианах задавать :)

Цитата(Woolf @ Сегодня, 08:42)
[snapback]103910[/snapback]
: 2*pi/n*i при i от нуля будет на первой же итерации сваливаться с ошибкой деления на ноль

А это нет. В данном случае операции выполнятся слева направо, поэтому никакой ошибки не будет.

Цитата(cibermind @ Сегодня, 11:26)
[snapback]103913[/snapback]
И еще вопрос, а откуда вы эти формулы знаете? Есть книга какая-нибудь или мануал

В школе что ль не учился? :). Тригонометрия. Любой учебник по алгебре за старшие классы.
Nonapolis - Приглашаем В Команду Группы Независимых Разработчиков.
07.05.10 11:42
Цитата(lorenze @ Вчера, 12:08)
[snapback]103443[/snapback]
То что скрины не финальные понимают все, даже идиоты, но ты всё не унимаешься )), а попытки бить на мораль вызывают лишь снисходительную улыбку, без обид, но ты весьма смешон. Такое ощющение что тебе лет 18-20 и в голове пока ещё ветер гуляет.

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

На скринах - зачатки контента, проект в зародыше еще, как я понимаю... Если смотреть на дату создания темы, то уже полгода вы работаете, факт. Но меня интересует одна весч: неужели все, что мы здесь увидели - это работа штата в 22 человека в течение полугода? :) (Наверное как обычно(на энтузиазме) что-то делает от силы 2-3 человека :)).

Собственно, скрины(в плане "красивости") пока не впечатляют. Об этом уже писали тут. Сразу возникает понимание, что как минимум, нормальный текстурщик у вас отсутствует... Т.к. текстур нет вообще... Развертка, покрашенная в фотошопе в течение 10 мин, это не текстура. Но я думаю, вы это и без меня прекрасно знаете... К чему все это...

Меня интересует вопросы: Что вы ожидаете получить в ответ на то, что вы тут выкладываете? Какую цель приследуете? Конструктив?
Если последнее, то для примера можно принять во внимание скрины техники на последней странице, где никакого коструктива никоим образом быть не может :)(как и вызвать какие либо положительные эмоциональные ноты восхищения :)). Сразу же(!) в глаза бросается неумелое использование эффектов(post и не только). И даже ни столь неумелое, сколько лишнее! Тут требуется, как минимум, хороший арт, очень хорошая проработка текстур(диффуз, нормал, глосс карты), тогда при должной настройке можно получить от эффектов проффит, а не своеобразную мазню.
Из реально полезного, что уже советовали, можно сделать - это отключить эффекты :), но как я понял, "советы" и мнения простых смертных вас не интересуют. Отсюда и мои вопросы.

Цитата(lorenze @ Вчера, 12:08)
[snapback]103443[/snapback]

То что скрины не финальные понимают все, даже идиоты

:). Это, конечно, ваше дело... Но все таки... Вот вы говорите, что контент вроде как "еще не финальный", т.е. по логике потом станет лучше? :)) Текстуры и модели, это все таки не те вещи, которые можно будет позже "допилить" и все заживут долго и счастливо. Придеться ведь перемоделивать и текстурировать заново... не? не сурьезно? :)

Как по мне, то лучше бы вообще отказались сейчас от этих затей с эффектами, ну не для этой стадии разработки это(Да и вообще для ММО эффекты - последнее дело). Вашего контента с головой хватит, чтобы заняться проработкой игровой механики/логики, etc. Акцентрировали бы внимание именно на этом. Хотя, конечно, вы возможно к этому сейчас и идете, но тогда скрины с "эффектами" это лишнее, интереснее было бы посмотреть на кусочки игрового процесса(на видео :))... и будет, что реально оценить и покритиковать конструктивно :)).
А правда, по геймплею хоть маленько чего нить уже имеется? )

P.S. А вообще масштабы и идеи проекта впечатляют, желаю дорасти вам до конкурентно-способного уровня :)
Оптимизация Огромной Кучи Вычислений
12.11.09 13:20
Цитата(Woolf @ Сегодня, 05:44)
[snapback]99787[/snapback]
Сомневаюсь что ноут будет быстрее стационарной машины, даже морально устаревшей ))))

Даа.. Видимо люди нормальных ноутов никогда не видели :).
Конечно, если попадется нечто древнее - то делать это все бессмысленно. Но не факт, что попадется.

Для примера, мой ноут - Dual Core 2.0 Ghz, 1,5 Gb, SM3.0. (все, что нужно для счастья вообщем-то :)).
Брал я его года 3 назад, на тот момент он стоил где-то около 30К р., точно не помню. Такая среднестатистическия машинка на то время.
И Ноут работает куда быстрее "морально устаревшей"(в моем понимании) машины, при том, что уже скоро сам станет "морально устаревшим" :).

К тому же вообще неизвестен конфиг того, на чем предполагается работа данной программулины - сравнивать не с чем. И "морально устаревшая машина" является довольно абстрактным понятием в данном контексте - подразумевать можно все, что угодно :)

Вообщем - сомнения на ровном месте как-то не тру :)
Оптимизация Огромной Кучи Вычислений
12.11.09 01:52
Цитата(petyakurochkin @ Сегодня, 12:05)
[snapback]99769[/snapback]
Инстансинг, вроде бы как, реализуется нормально начиная с SM3, насколько мне известно

Это Hardware Instancing, DirectX Only.
Может сгодиться обычный шейдерный инстансинг - для него SM2.0 (На DX может даже меньше, правда ограниченность в передаваемых параметрах тогда больше).

P.S. Я бы на твоем месте попытался разузнать конфиг тамошнего железа и на него уже конкретно ориентироваться. Или одолжить у какого-нибудь знакомого ноут, на нем временами тестить\отлаживать и в результате на нем же демонстрировать курсач в инсте. А то наобум такое делать как-то не тру :)
Продолжаю Нубские Вопросы..
11.11.09 17:21
Гм, вообще достачно малоинформативно - кода не достачно. Если уж и выкладывать - то выкладывать все полностью, чтобы можно было нормально посмотреть и проверить(и ессно откомпилить :)).

Что по коду:

Непонятно, что делается вот тут:
Код

DatStr=new DATASTRUCT*[MFH.NumOfAllElements];
for (unsigned int i=0;i<MFH.NumOfAllElements;i++) {
            tf.Read(&DS, sizeof(DATASTRUCT), read);
            DatStr[i]=&DS;

Если переменная DatStr глобальна(что скорее всего) и где-то используется далее по коду, то за такое надо отрывать руки :).
Элементам массива на куче многократно присваивается переменная на стеке. Зачем так делать, непонимаю.

Для DatStr вообще достаточно одномерного массива:
Код

DATASTRUCT* DatStr;

....

DatStr=new DATASTRUCT[MFH.NumOfAllElements];
for (unsigned int i=0;i<MFH.NumOfAllElements;i++)
     tf.Read(DatStr[i], sizeof(DATASTRUCT), read);


Здесь уже лучше:
Код

EleStr[i]= new ELEMENTSTRUCT[DS.NumOfElements];
            for (unsigned int j=0;j<DS.NumOfElements;j++) {
                tf.Read(&ES, sizeof(ELEMENTSTRUCT), read);
                EleStr[i][j]=ES;
            }

Но зачем опять стековая переменная?

Код

EleStr[i] = new ELEMENTSTRUCT[DS.NumOfElements];

for (unsigned int j=0;j<DS.NumOfElements;j++)
     tf.Read(EleStr[i][j], sizeof(ELEMENTSTRUCT), read);

Тут надо после изменений еще код править(всякие '.' в '->'), но мне лень :)