(и еще 17993 записям на сайте сопоставлена такая метка)
Другие метки пользователя ↓
3ds Gothica gamedev gothic rpg udk udk unity3d gamedev unity3d gamedev c# литература рпг творчество удк
Итератор |
Дневник |
Сколько ж ограничений в UnrealScript!
Вот, оказывается свой итератор нельзя объявить. Функция-итератор должна быть нативной. Нативную функцию можно объявить только в нативном классе. А нативный класс просто нельзя объявлять...
Но я это обошел.
Создаем функцию, подобную итератору, например:
function RPGInvActor(class<Inventory> BaseClass, out Inventory Inv)
Она подобна итератору:
native final iterator function InventoryActors( class<Inventory> BaseClass, out Inventory Inv );
из класса InventoryManager. Единственное условие - в Inv должна вернуть None, если не нашла.
Теперь вместо foreach используем:
do
{
...
} until( Inv != None);
Естестсвенно RPGInvActor должна при каждом вызове возвращать следующее значение. Этого можно достичь введя переменную в классе, которая сохраняет предыдущее найденное значение:
var Inventory InvCash; //Для итератора
И использовать ее для нахождения следующего айтема в списке для поиска...
Для чего мне все это понадобилось? Для своей реализации инвентаря.
Инвентарь у Эпиков представляет собой обычный односвязный список. Естественно поиск в нем не быстр, естественно Инвентаря в нем много хранить нельзя (Эпики об этом прямо пишут). Более того, хоть это и возможно принципиально, но у Эпиков в инвентарь нельзя добавлять одинаковые предметы.
Ну а в ролевых играх в рюкзаке у героя очень много предметов, очень много одинаковых...
Как это реализовать? - сделать свою структуру для инвентаря. Я сделал комбинированную.
Есть динамический массив, элементы которого - первые элементы в связанных списках. Тип элемента в массиве повторяться не может. А вот в списке, на который указывает элемент массива как раз наоборот - все элементы одного типа.
Метки: rpg рпг gamedev удк udk |
Тултипсы |
Дневник |
Сделал тултипсы к объектам. Появляются, когда ГГ смотрит на объект. Работают на всех типах объектов.
Работы еще много - главное на данный момент вывести его не где попало а чуть выше объекта. К сожалению разные типы имеют разные переменные высоты. К тому же у скелеталмешей почему-то боундинг в одном измерении значительно больше самого предмета... Вроде я алгорите придумал не зависящий от всего этого,
но нужно проверять еще...
Метки: gamedev rpg udk удк |
Терра, карты высот... |
Дневник |
В общем перенес я карту высот из Макса в УДК. Есть такой урок на unreal-level. Там все ОК, только не работает...
Там предлагают изменять оси развертки приналожении материала: UV, VW, UW. Так вот это у меня не работает и никогда не работало. Обходится достаточно просто. Накладывются две развертки в двух разных каналах. В 1-м канале как указано в уроке - Planar по z. Это для Render to Texture. Во 2-м канале Planar по y - это для наложения материала. В материале не забыть указать именно второй канал развертки.
Все остальное по уроку...
Только зря я это делал. В УДК все-равно огромное количество работы с полученной террой, т.к. вид у нее просто жуткий...
Поэтому я плюнул - взял меш терры, про который писал в предыдущей записи и подогнал терру УДК по ней. Все отлично получилось. Уже начал расставлять домики. Картинки на выложу - дома оставил
Возникла пара вопросов.
Во первых. Все объекты, перегнанные из Готики приблизительно в 2 раза больше чем надо (ориентируюсь по дверным проемам и стандартному персу УДК). Так вот вопрос - перс у нас все-равно будет другой - может лучше его подогнать под размеры остальных объектов, а не уменьшать все расставляемое на уровне в 2 раза?...
Во вторых. Не нравится мне расположение Ардеи. Ну что это задеревня рыбаков, которая находится за километр от моря? Она должна быть намного ближе к морю. Может переместить ее? Тогда куда поместить Лестера?
Метки: gamedev Gothica rpg udk |
Терра |
Дневник |
Перенес я в УДК утес на котором стоит Ардея. Он по полигонажу не такой и большой - всего 45к трисов. Правда по размерам великоват. Вот он в Максе:
Там где голубые дырки стоят дом Ардеи.
Так вот УДК при просчете света на нем повесился...
Буду думать как это перенести в карту высот - может с родной террой УДК нормально работать будет...
Метки: rpg gothic gamedev udk |
Мысли по моей игре... |
Дневник |
Не воспринимайте это как диздок, это просто идеи.
---------------------------------------------------------------------------------------------------------
Сразу скажу – я собираюсь описывать обычную РПГ, а не ММО. Возможно в будущем ее можно будет переделать в ММО, но я это не рассматриваю.
Одно из главных отличий игры – она сделана по известному миру, что привлечет фанатов. Они купят игру даже если она не удастся, хотя бы просто для коллекции.
Второе отличие – игрок до конца игры не прокачивается достаточно чтобы справляться с полчищами врагов в одиночку. Чтобы выполнить миссию игроку придется договариваться с НПС, образовывать с ними команды, и при этом не просто убивать всех подряд, а (возможно) красть нужные вещи, действовать хитростью…
Третье отличие – в игре не приветствуется убийство обычных НПС. Воровство вообще вполне возможно, хотя и сложно, а вот убийство должно быть практически невозможно. Для этого в каждом поселении есть охрана, некий род милиции, которая пресекает такие попытки на корню.
Место и время.
Полностью брать сюжет известной книги совершенно неинтересно. Вести какую-то параллельную линию очень сложно и не понравится почитателям книги. Поэтому действие будет происходить задолго до времени, описанном в книге.
Действие игры происходит в мире Роберта Джордана «Колесо Времени». Время действия – конец троллоковых войн, во время падения Манетерена. Подробно расписывать мир не буду – кому интересно, лучше прочитайте книги. Для незнакомых с миром далее в скобках буду указывать распространенные в иных мирах аналоги.
Начало игры (1 глава) – возле Кеймлина, который во времена Троллоковых войн не был столицей и назывался Хай Кеймлин.
Вторая глава – Тар Валлон. Третья глава – пограничье. Четвертая глава – пока не скажу.
Очень хочется после первой главы разветвление – вторая глава не просто в Тар Валоне, а в зависимости от конца первой главы в Тар Валоне или в Хай Кеймлине или в Тире. Соответственно этому разветвлению третья глава или в пограничье или в Аридоле (Шадар Логот) или в Майнелле (затем Танчико). Это, конечно, очень большая работа, поэтому пока будем говорить только о первой главе.
Цель.
Как и во многих РПГ цель игрока – «спасти мир». Однако здесь это несколько опосредовано. Известно, что последняя битва будет в самом конце эпопеи Джордана, так что убить темного нашему герою ну никак не удастся. Закончить Троллоковы войны напрямую тоже. Он просто должен убрать причину этих войн. Какую – пока раскрывать не буду – играть будет не так интересно. Заодно он создаст предпосылку победы в будущей Последней битве.
Главный герой.
Одно из затруднений создателей РПГ является то, что игрок совершенно не знаком с миром, в котором он очутился, и это нужно как-то логично объяснить в игре. Часто это решается тем, что герой – заключенный силой заброшенный в незнакомую провинцию (Готика, Морровинд). У нас герой - лудильщик (для тех кто не знаком с миром – аналог наших цыган). Он по понятным причинам не знаком ни с кем из живущих в округе. На его табор нападают троллоки (аналог орков и т.п.) и убивают всех родственников. Героя лечит Айз Седай (колдунья) и в оплату лечения просит доставить письмо в Тар Валон.
Первая Глава.
Местность в которой находится герой в начале игры оказывается отрезанной от окружающего мира. На самом деле идти можно куда угодно, но в округе бродит масса троллоков и других монстров, с которыми, исповедующий Путь Листа (Толстовское «непротивление злу насилием») и, естественно, не владеющий из-за этого оружием, лудильщик справиться не может. Можно уплыть на корабле, но его, естественно, просто так на борт не берут…
Значит задача первой главы выбраться из этой местности. Если игрок решит выполнить просьбу Айз Седай – то в Тар Валон. Для этого нужно или приобрести сильных друзей, способных пройти мимо орд троллоков, или как-то уговорить капитана корабля, или найти какой-нибудь иной путь…
Враги.
Поскольку в этом мире не так много рас, единственная возможность разнообразить врагов – разнообразие троллоков. Троллоки – козлы, троллоки – свиньи, троллоки – медведи… Плюс - мурдраалы. Плюс – «друзья темного». Плюс просто бандиты. Звери тоже «враги». Даже волки – хоть они и против темного, но герой с ними разговаривать не умеет, значит волки о нем ничего не знают, и когда хотят есть – могут на него напасть. Драгкар слишком сильная скотина, возможно их появление в последних главах. Есть еще Гончая тьмы. Она тоже сильна, и тоже будет в последних главах.
Можно вставить несколько тварей запустения, но немного, т.к. нигде не упоминается, что они выходили из запустения, даже в троллоковы войны. Вот здесь полный простор для фантазии. Также можно ввести тварей, которые водятся у Шончан – гролм.
Примеры троллоков (все рисунки не мои):
Мурдраал:
Драгкар:
Гролм:
Друзья темного – это люди, которые служат злу. Они самые обычные люди и ими может оказаться кто угодно вплоть до Айз Седай.
Друзья.
Здесь только две расы: люди и огир (не путать с орками).
С людьми все понятно.
Огир – древопевцы и строители. По этим показателям они аналоги эльфов. Но по внешнему виду на эльфов совершенно не похожи.
Боевая система.
Бои подобны Готике. Если найдется хороший аниматор, то желательно чуток сложнее движения. Упор нужно сделать не на сильную броню и оружие, а на овладение боевой системой (блоки, комбоудары и т.п.).
Прокачка.
У учителей узнается не просто новый уровень овладения оружием, а некий новый удар, блок или просто какой-то навык (например знахарство). При этом герой просто узнает о его существовании, но применить его может нормально с очень маленькой долей вероятности. Вероятность удачного применения навыка увеличивается при его применении – чем больше пытаешься применить удар, тем больше вероятность, что он удастся. Одновременно прибавляются некие очки опыта, которые можно потратить на изучение нового навыка. При выполнении квестов прибавляются другие очки опыта, которые можно потратить на увеличение силы, ловкости, харизмы…
Магия.
Наш герой не лжедракон, поэтому магия в полном объеме ему недоступна. Это, конечно обедняет игру, но тут ничего не поделаешь. Единственно, что может использовать герой – тер'андриалы (волшебные амулеты). Никто не запрещает использовать их и тем, кто не умеет направлять. В книге вроде такого нет, но это не означает, что такого нет вообще. Тер'андриалов должно быть немного, но они должны быть достаточно разнообразны. Зато у героя будут спутники – женщины, которые вполне могут быть Айз-седай.
Характеристики героя.
Уровень. Жизнь. Сила. Ловкость. Выносливость. Ум/мудрость. Харизма. Сила воли. Удача. Скорость.
У меня есть по всем параметрам некие мысли. Если кому интересно могу выложить.
Единственно скажу, что многие характеристики могут уменьшаться – это еще одно отличие от других игр, где уменьшаться может только здоровье.
Есть некоторые мысли насчет предметов, необходимых в игре, насчет умений героя. Однако они сильно смахивают на подобные игры, поэтому приводить их тут не буду.
Единственно по предметам. Очень мне не нравится во многих играх, что можно нести бесконечное число предметов. Здесь такого не будет. Будет ограничение как по числу предметов (которое можно немного обойти с помощью сумок и т.п.), так и по весу предметов (которое можно немного обойти с помощью вьючных животных).
--------------------------------------------------------------------------------------------------------------
Ну вот пока все. У кого появятся вопросы многое можно уточнить, расширить. Если кто заинтересуется, можно будет попробовать диздок написать хотя бы для первой главы.
Метки: rpg рпг |
Работа идет |
Дневник |
Несмотря на некоторые выплывшие в процессе переноса тонкости работа продолжается. Всего перенесено 6 домов и 84 предмета. У всех настроены коллизии. Частично предметы не из Готики (сделанные мной).
Какие выявились тонкости:
Если есть на объекте прозрачность, то по краям могут появиться нежелательные полоски - артефакты. Они убираются установкой в текстуре не TA_Wrap, а TA_Clamp. Тогда текстура обрезается по границам квадрата 0-1, а не повторяется за его пределами. При этом необходимо, чтобы UV-развертка лежала в пределах этого квадрата. А в Готике она расположена "как левая нога захочет". Приходится слегка переделывать развертку.
На некоторых объектах почему-то риппер взял развертку явно со второго канала, где обычно лежит LightMap. У них приходится полностью переделывать развертку.
У дома на картинке ниже балки развернуты тяп-ляп. Просто наложен UVWMap с Box-ом. А балки сломанные. На изломах текстура сильно потянута получается. В игре, возможно, это незаметно, но мне режет глаза - пришлось переделывать...
Метки: 3ds gothic rpg udk |
Как переносим - 2... |
Дневник |
Некоторые тонкости...
Все это, если на объекте один материал. Если же на объекте их несколько, то Риппер их разбивает на подобъекты по количеству материалов. Для каждого подобъекта проделываем все манипуляции с 1 по 14. Далее:
1. Выделяем все полигоны подобъекта. Назначаем id материала 2. У следующего 3 и т.д. У нас должны получится куча объектов с id от 1 до n.
2. Выбираем первый. Attach List. Выбираем все подобъекты. Соглашаемся с установками по умолчанию. (Match Material id to Material, Condense Material and Ids)
Далее делаем все начиная с 15 пункта...
Метки: rpg gothic gamedev udk |
Как переносим? |
Дневник |
У Готики 3 так и не появилось модкита. Поэтому оттуда можно нормально выдрать только текстуры. Все меши приходится выдирать с использованием 3dRipper-а. Анимации выдрать вообще нельзя.
Итак - последовательность действий.
1. Запускаем через 3dripper готику. Приближаемся к интересующему нас предмету. Нажимаем F12. Рип сохраняется, после чего игра вылетает :(
Повторяем для всех нужных объектов...
2. Запускаем Макс. Находим рип. Загружаем. Удаляем все ненужное (прям как скульптор). Остается предмет, на котором невесть какие материалы.
3. Пипеткой берем материал с предмета. Это Multi/Sub-object материал. Ищем в нем подходящий материал для диффуза и нормалки. Они раскиданы по разным подматериалам. Обычно 3-4 сверху. Изредка бывает еще один подматериал для спекуляра.
4. Ищем в рипах текстур нужные текстуры диффуза и нормала - переносим их в свою папку контента игры.
5. С помощью компрессонатора от АТИ преобразуем их в tga, т.к. dds УДК не понимает. Если фотошоп понимает dds, то можно не преобразовывать, а просто в фотошопе сохранять в tga. У меня фотошоп 64х битный, и плагин от Нвидиа не подходит, поэтому приходится сначала преобразовывать в tga...
6. Если нашли спекулар - объединяем его с диффузом в фотошопе. Засовываем его в альфа канал.
7. В готике текстуры нормалей "упакованные". Отличие видно сразу - они зеленые, а не синие. Это, как я понимаю сделано для уменьшения занимаемого объема. Чтобы преобразовать их в нормальный вид переносим канал альфа в канал красного, а синий канал заливаем белым цветом. Если хочется, можно увеличить рельеф копированием слоя с наложением "перекрытие"...
8. В максе преобразуем предмет в EditPoly (Мне просто с ним удобнее работать). Велдим все вершины с Threshhold 0.001, чтобы получить нормальный меш.
9. Переносим Pivot в центр объекта.
10. Выравниваем объект по координатным осям.
11. Переносим его в начало координат.
12. Utils - ResetXform - Reset Selected. Сворачиваем стек модификаторов.
13. Еще раз переносим Pivot в центр объекта. И тут же сдвигаем в "точку крепления". Обычно это низ предмета. Так проще будет в УДК выставить его по вертикали.
14. Настраиваем группы сглаживания. Обычно достаточно нажать "AutoSmooth". Но нужно проконтролировать как лучше выглядит и, возможно оставить одну группу сглаживания...
15. Накладываем Unwrap UVW - меняем MapCannel на 2 - Edit. Выделяем все полигоны - Mapping - Flatten Mapping - OK. Это нужно для расчета карт освещенности в УДК.
16. Делаем простой объект, который заключает в себя наш. Чем проще, тем лучше. Что нужно избегать? - открытых ребер. Проверить можно модификатором STL Check. Этот простой объект будет коллизией. Для простых предметов - ящиков и т.п. его можно не делать. Называем этот объект UCX_имяпредмета. Например предмет - якорь с именем Anchor, тогда имя коллизии UCX_Anchor.
17. Сохраняем максовский файл на всякий случай, вдруг что переделать нужно будет.
18. Экспортируем предмет в ASE. Галочки должны стоять у:
Mesh Definition, Materials, Geometric, Mesh Normals, Mapping Coordinates
19. Заходим в УДК. Импортируем подготовленные текстуры. Импортируем меш.
20. Из текстур делаем материал. Накладываем материал на меш.
Наслаждаемся...
Метки: rpg gothic gamedev udk |
UDK |
Дневник |
Метки: rpg gothic gamedev udk |
Страницы: | [1] |