Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: PlayerDark  
Dark Wonderland » American Mcgee's Alice » Ремейк Alice » Ремейк Alice (Посмотреть и помочь - сюда)
Ремейк Alice
WhiteKnightДата: Вторник, 2009-12-22, 10:33 PM | Сообщение # 646
Барон Вандерландский
Группа: Clockwork Team
Сообщений: 1315
Награды: 4
Статус: Offline
Вот некоторые мои размышления по этому поводу...
DirectX в качестве движка
В SDK DirectX довольно много демок, иллюстрирующих Direct3D 9, Direct3D 10 и Direct3D 11. Причём занимают приложения совсем немного (около 500-600 килобайт вместе с кучей значков DirectX - вычтем 100 килобайт). исходники довольно просты и сразу видно, что делает программист - рисует примитивы, двигает модели... В принципе, DirectX был бы неплохим движком (на мой взгляд), но есть трудности, препятствующие его распространению. Форматы fx, x, dds связаны непосредственно с DirectX и не позволят перенести игру на любую платформу, отличную от Windows. Если рассмотреть оригинальную Алису, она есть в двух версиях - для Windows и Mac. В обоих случаях все ресурсы, относящиеся к самой игре (графика, звуки, даже скрипты!) абсолютно одинаковы (содержание всех паков(pk3) точно совпадает, разве что видео в Mac версии в формате Quick Time). То есть связывать систему и игру нужно по минимуму. Я думаю, используется ли такой подход: конвертация части файлов игры в форматы DirectX и соотстветствуещее проигрывание. Просто текстуры в формате DDS не рекомендуют делать, занимает больше места, чем BMP и вдобавок для слабых видеокарт.

Собственный формат анимаций
В общем я уже приобрёл некоторые навыки логического мышления и представляю, как написать свой формат для 3D моделей. Если obj содержит всю информацию в обычной кодировке, другие форматы используют установленные форматом выражения и символы.
Например
obj
v -18.5215 -0.1235 39.1255
v - вершина, дальше её координаты x, y и z (по порядку)
*пользовательский формат*
если обозначить примитивы (v, f и т.д.) в зависимости от количества, допустим, 4(или меньше) битами, вместо представления координат в символьной форме использовать, например, двойное слово (рациональное число со знаком), не использовать пробелы и подобным образом закодировать заголовок, 3D-модель уже невозможно прочитать в обычном блокноте. Но нужно также создать программу для чтения этого формата. Возможно, сконструированный формат позволит экономить место и помещать в игру улучшенные модели с очень большим количеством полигонов.

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

Треугольники
Читал про технологию одной из видеокарт, которая преобразует 3D модели в формат с "формульными" линиями (не прямыми) и потом преобразует обратно, но в модель с большим числом треугольников. Правда, при этом не учитывается, что некоторые грани должны оставаться чёткими. Практически наверняка найдётся программа 3D дизайна, которая, например, каким-то инструментом сглаживает грани в моделях. Наверняка с этим можно обрабатывать одну модель из игры минут за 5-10.

Quote (PlayerDark)
3) Вершинную анимацию - фтопку.

Может быть, я неправильно назвал, но простые объекты в любом случае используют не скелетную анимацию.
Про ogg - если возможна конвертация в этот формат без потери качества, я согласен.
 
PlayerDarkДата: Вторник, 2009-12-22, 10:45 PM | Сообщение # 647
Coraline
Группа: Clockwork Team Moderator
Сообщений: 427
Награды: 1
Статус: Offline
Отвечаю:
1) Я заинтересован в том, что бы делать меньше, а получить больше.
2) Вершинная анимация - анимация врешин не прикрепленных к кости. Занимает много места и не обладает такими возможностями как скелетная. Современные движки использую вершинно-скелетную анимацию. Оптимальный вариант.
3) ATI Trueform - пока еще не опробованная технология, не будем ее трогать.
4) Есть универсальные шейдеры. Например Cg.
5) Я не люблю ДиректИкс. Просто так.
6) А что, мы и правда будем делать свой формат моделей ?

Добавлено (2009-12-22, 10:45 Pm)
---------------------------------------------
ДиректИкс намертво пришит к Windows.

 
WhiteKnightДата: Вторник, 2009-12-22, 11:06 PM | Сообщение # 648
Барон Вандерландский
Группа: Clockwork Team
Сообщений: 1315
Награды: 4
Статус: Offline
Я не думаю, что делать свой формат моделей так трудно. Это ведь только конечный результат, модели создаются и меняются в обычном формате (например 3ds). Можно написать программу для чтения и импортер/экспортер для крупной 3D программы. Хотя в принципе, формат для костной анимации описать труднее...У большинства игр свои собственные форматы 3D. Cg - такой префикс есть в некоторых командах в консоли Алисы (cg_cameradist).
 
PlayerDarkДата: Четверг, 2009-12-24, 1:45 PM | Сообщение # 649
Coraline
Группа: Clockwork Team Moderator
Сообщений: 427
Награды: 1
Статус: Offline
cg - это по моему обозначает клиентскую переменную.

Добавлено (2009-12-23, 7:00 Pm)
---------------------------------------------
Кстати, где Ayra ?

Добавлено (2009-12-24, 1:45 Pm)
---------------------------------------------
Хочу написать про свое понимание скелетной анимации. Если что, вы меня поправите.
Скелет - совокупность костей связанных в дерево. Кость являет узлом модели и содержит набор привязанных к себе вершин.При вращении кстати вершины вращаются вместе с ней, при перемещении - пермещаются. Скелетная анимация представляет собой набор состояний перемещении между которыми интерполируется графическим движком. При перемещении одной кости перемещаются все связанные с ней дочерние кости.
Вершинная анимация - это анимация каждой вершины в отдельности. это позволяет создавать такие эффекты как например волны на воде, но не позволет создавать сложные движения и использовать ragdoll. Вершинная анимация может задаваться вершинными шейдерами.
Как я уже говорил, модель может содержать и вершинную, и скелетную анимацию. Но должна содержать хот бы одну кость.

 
AyraДата: Четверг, 2009-12-24, 6:04 PM | Сообщение # 650
Болтун
Группа: Пользователи
Сообщений: 746
Награды: 0
Статус: Offline
PlayerDark, а разве без костей вершинная анимация невозможна?Если это, допустим, не персонаж а недвигающийся объект?

 
PlayerDarkДата: Четверг, 2009-12-24, 6:15 PM | Сообщение # 651
Coraline
Группа: Clockwork Team Moderator
Сообщений: 427
Награды: 1
Статус: Offline
возможна, но тогда как укзывать каким образом прикреплять обьект к мироу и вокруг чего его вращать ?

Добавлено (2009-12-24, 6:15 Pm)
---------------------------------------------
хотя я вопрос не совсем понял, статическая геометрия может быть без костей. Кости нужны для анимации.

 
AyraДата: Четверг, 2009-12-24, 6:16 PM | Сообщение # 652
Болтун
Группа: Пользователи
Сообщений: 746
Награды: 0
Статус: Offline
PlayerDark, Нууу... как пропс. Привязать его к другому объекту, с костями.

 
PlayerDarkДата: Пятница, 2009-12-25, 4:44 PM | Сообщение # 653
Coraline
Группа: Clockwork Team Moderator
Сообщений: 427
Награды: 1
Статус: Offline
Вобщем тут я не совсем уверен. Те движки которые я знаю требуют рутовую кость для перемещаемых обьектов.

Добавлено (2009-12-24, 6:50 Pm)
---------------------------------------------
иначе обьекты крепятся по центру коордиантной сетки.

Добавлено (2009-12-25, 4:44 Pm)
---------------------------------------------
Немного об игровых обьектах
Игровой обьект - в обьектно-ориентированных движках обьектами является все в игре. Например : кнопки, снаряды, элементы интерфеса, юниты итд. Движок игры реализует исключительно базовые классы : модели, звук, физику и ресурсоемкие операции. Игровые обьекты в игре наследуются через единый интерфейс базовго класса. Могут существовать некоторые встроенные обьекты для повышения быстродействия. Например элемент интерфейса "кнопка" может быть встроен в движок. В то время как класс unit может быть скриптованым. Скриптованые обьекты реализуются во внешник файлах скриптовым языком, например lua.
Обьекты представляют собой совокупность методов, данных и обработчиков событий. Например обьект GameUnit представляет собой обьект - персонаж. Обьектом данного типа могут быть все персонажи в игре. Например : Алиса, Чеширский Кот, Карточная стража.
Само по себе описание обьекта этого типа не содержит в себе данных о том какого пресонажа он будет содержать.
Для того , что бы создать конкретного юнита, нужно создать экземпляр класа инициализировав его определенными значениями.
Допустим GameUnit инициализируется следующими значениями : положение в пространстве, трехмерная модель, принадлежность ( юниты разной принадлежности будут атаковать друг друга ), максимальое здоровье, специальные способности.
Мы решаем создать обьект - пиковую стражу. Для этого вызоаем конструктор обьекта со следующими значениями
GameObject * oSpadesCardGuard = new GameObject( 100.0f, 354.0f, 24.3f, "CardGuard_Spades", ALIGNMENT_ENEMY, 500.0f, { "ABILITY_SPADE_MISSILE" } )
мы создали обьект в координатах 100.0f, 354.0f, 24.3f с моделью пиковой стражи принадлежащую к вражеским юнитам и обладающую способностью стрелять пиковыми снарядами.

Сообщение отредактировал PlayerDark - Пятница, 2009-12-25, 5:08 PM
 
WhiteKnightДата: Пятница, 2009-12-25, 4:59 PM | Сообщение # 654
Барон Вандерландский
Группа: Clockwork Team
Сообщений: 1315
Награды: 4
Статус: Offline
Quote (PlayerDark)
Скелетная анимация представляет собой набор состояний перемещении между которыми интерполируется графическим движком

Вот это было для меня довольно ново. То есть анимация не покадровая, а может быть даже между этими кадрами в скелетной анимации. Например, как во флеше если выбрать Motion Tween между несколькими кадрами.
Quote (PlayerDark)
Могут существовать некоторые встроенные обьекты для повышения быстродействия. Например элемент интерфейса "кнопка" может быть встроен в движок.

Кнопки тоже бывают разными. Например, кнопка в меню и в самой игре. Например, колбочки и пиктограммы (а также картинки с изображениями локаций (Village of the doomed, Pandemonium и т.д.)) в Алисе прописаны в движке, хотя являются по сути непосредсвенно игровыми объектами.
 
PlayerDarkДата: Пятница, 2009-12-25, 5:04 PM | Сообщение # 655
Coraline
Группа: Clockwork Team Moderator
Сообщений: 427
Награды: 1
Статус: Offline
Quote (WhiteKnight)
Вот это было для меня довольно ново. То есть анимация не покадровая, а может быть даже между этими кадрами в скелетной анимации. Например, как во флеше если выбрать Motion Tween между несколькими кадрами.

да, скелетная анимация задается ключевыми фреймами
Quote (WhiteKnight)
Кнопки тоже бывают разными. Например, кнопка в меню и в самой игре. Например, колбочки и пиктограммы (а также картинки с изображениями локаций (Village of the doomed, Pandemonium и т.д.)) в Алисе прописаны в движке, хотя являются по сути непосредсвенно игровыми объектами.

А точнее в файле cgamex86.

Добавлено (2009-12-25, 5:04 Pm)
---------------------------------------------
Что, кстати, не есть хорошо, тк исключает возможность модификации.

Допустим мы хотим создать чешира
GameObject * oChesireCat = new GameObject( 50.0f, 254.0f, 24.3f, "CheshireCat", ALIGMENT_NEYTRAL, 100.0f, { "ABILITY_INVULNERABLE", "ABILITY_NOTARGET", "ABILITY_CHESHIRE_PHRASES" } )
теперь мы создали чеширского кота рядом с карточной стражей, но кот неуязвим благодаря способности ABILITY_INVULNERABLE и не может быть атакован благодаря ABILITY_NOTARGET.
Теперь мы хотим заставить чешира сказать какую нибудь фразу. Это может быть реализовано несколькими способами. Если мы бы кодили в сишной манере, то создали бы производный классс CheshireCat от GameObject, у которого был бы метод sayPhrase( int phraseId ). Но данный способ негибок. Вместо этого мы добавляем ему способность ABILITY_CHESIRE_PHRASES. Эта абилка принимает параметр - номер реплики которую чешир должен сказать. Мы выбираем рандомную.
oCheshireCat -> abilityCall( "ABILITY_CHESHIRE_PHRASES", 1, { getRandomInt(0,10) } )
передаем количество параметров вызываемой способности и массив указателей на параметры. В данном случае - случайное число от 0 до 10. В результате чешир скажет случайную фразу.

 
WhiteKnightДата: Вторник, 2009-12-29, 5:35 PM | Сообщение # 656
Барон Вандерландский
Группа: Clockwork Team
Сообщений: 1315
Награды: 4
Статус: Offline
Вот что я недавно придумал: в игре много возможностей, которые были вырезаны в финальной версии, например, кот мог ругаться, если его хотят вызвать под водой. Может быть, стоит это (и многое другое, например, выброшенные уровни, если найдём) вернуть? Ещё предлагаю сделать "бесполезного" Чешира - его стандартные фразы заменяются бессмысленными (хотя думаю, будет проблема с озвучкой), например:
Hello, Alice!
I am the cheshire cat!
Blablablablabla.
Meee-ow!
Don't bother me without reason!
Go and do something useful!
I'm busy now...
Zzz. Why do you wake me up?
Do not disturb.
What do you need exactly?
Wants to see my smile?

Добавлено (2009-12-29, 5:35 Pm)
---------------------------------------------
Думаю, стоит добавить побольше типов джибсов и крови. Также добавить спрайтовые эффекты погоды - дождь, снег, пыль в воздухе... На стандартных уровнях этого нет, но можно добавить на свой или в игре вызвать в консоли.

 
AyraДата: Вторник, 2009-12-29, 6:37 PM | Сообщение # 657
Болтун
Группа: Пользователи
Сообщений: 746
Награды: 0
Статус: Offline
Я прерву диалог двух умных людей парой бредовых мыслишек? wink
Дети в Мучилище. Можно сделать так, чтобы они замечали Алису, бежали к ней, хватали ее, орали и сеяли всяческий бедлам. При этом они сильно замедляют скорость передвижения и действий самой Алисы. отбиться о них можно только если убить.
Зеркала в лабиринте. В том где роботы, не помню как называется. Можно сделать, чтоб через некоторые зеркала можно было проходить, но они не разбиваются. За зеркалами-обманками можно насовать вкусностей.
Ну и совсем уж бред по оживлению деревни обреченных. вот такие два персонажа: Гноминя тоже с шаром на спине и гномский малыш прикованный к чему-нибудь заа ногу. wacko Причем малявка ничего не делает - он тольк постоянно орет и Алиса к нему подойти близко не может, жизнь отнимается... wacko wacko wacko biggrin
Прикрепления: 8127802.jpg (194.7 Kb)


 
WhiteKnightДата: Вторник, 2009-12-29, 7:31 PM | Сообщение # 658
Барон Вандерландский
Группа: Clockwork Team
Сообщений: 1315
Награды: 4
Статус: Offline
Ну если сделаете - хорошо. Но модели сложные...
 
AyraДата: Вторник, 2009-12-29, 7:38 PM | Сообщение # 659
Болтун
Группа: Пользователи
Сообщений: 746
Награды: 0
Статус: Offline
Не такие уж и сложные wink Шляпник или Чешир куда сложнее...

 
PlayerDarkДата: Вторник, 2009-12-29, 8:41 PM | Сообщение # 660
Coraline
Группа: Clockwork Team Moderator
Сообщений: 427
Награды: 1
Статус: Offline
Так, меня тут не было два дня. Концепты хорошие.
В принципе мы только начинаем. Четкого плана работ до сих пор нет.

Добавлено (2009-12-29, 8:41 Pm)
---------------------------------------------
Нужно добавить в игру больше КРОВИЩЩИ ?

Сообщение отредактировал PlayerDark - Вторник, 2009-12-29, 8:42 PM
 
Dark Wonderland » American Mcgee's Alice » Ремейк Alice » Ремейк Alice (Посмотреть и помочь - сюда)
Поиск:

By JDark since 2004
Designed by Anamorphia
Хостинг от uCoz