| Вопросы от Bercut |
|
Ninja
| Дата: Четверг, 28.01.2010, 23:38 | Сообщение # 121 |
Хоть палкой гони
Группа: Проверенные
Сообщений: 683
Статус: Offline
|
ошибка будет если в событии создания создаваемого объекта нужно будет обратиться к этим переменным
Oh, my God! You kill Kenny! You bastard!
|
| |
| | |
|
Bercut
| Дата: Воскресенье, 31.01.2010, 22:48 | Сообщение # 122 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Quote (Ninja) ошибка будет если в событии создания создаваемого объекта нужно будет обратиться к этим переменным Да, спасибо, я всё понял, так оно и было. Короче начал пробывать анимации на сетке по дискретному способу, который предложил Ang3L. Только вот анимация выходит очень коряво. Например здесь перс движется рывками: Ang3L, ничего не переделывал, только убрал почти все движения и изменил размер клетки. 0 - блок, 1 -воздух. Link З.Ы.: Вопрос дурацкий, наверное, но просто не пойму простого принципа анимации для это вида решения.
Fast, like fire!
Сообщение отредактировал Bercut - Воскресенье, 31.01.2010, 22:50 |
| |
| | |
|
Ang3L
| Дата: Понедельник, 01.02.2010, 00:08 | Сообщение # 123 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) Вопрос дурацкий, наверное, но просто не пойму простого принципа анимации для это вида решения.  Не так это и просто! Корочь, смысл каков. Что делают обычно все создатели платформеров? Они перемещают образцы. Типа: Code if(клик вправо) x += 1; В дискретном другая технология: Мы меняем анимацию в зависимости от ситуаций. Разница понятна? В одном случае меняем позицию, в другом анимацию. Конечно, оба эти стили предполагают как смену положения, так и смену анимаций, НО делают они это по разному. Пока перс стоит мы рисуем анимацию spr_stay_right. Когда нам нужно передвинуть его направо устанавливаем анимацию spr_hero_walk_right. И секрет дискретного перемещения в самой анимации. при переходе с одной анимаций в другу они должны плавно сменять друг друга. Это первое. Второе, это то что анимации должны быть в стык, т.е. накладываться друг на друга. Это получается своего рода интерактивный мультфильм. Кадры сменяют друг друга, и надо очень чётко следить за анимацией. Вот первое что я заметил это то что в спрайте spr_stay_right перс стоит по середине, а spr_hero_walk_right заканчивает чуть дальше середины и когда анимация переходит с spr_hero_walk_right в spr_stay_right перс двигается назад (6 кадр в анимации ходьбы лишний). Потом 5 кадров для перемещения мало, у меня для шарика было по 12 кадров, а чела надо будет кадров 18-25. Халтурщик! P.S.: Можно тебе упростить задачу: отрисовывай контуры своих спрайтов, чтобы увидеть, а в стык ли они? И проигрывай кадры медленно, сделай скорость анимации или комнаты очень низкой, чтобы тебе наглядно понять в чём смысл. И ты прежде чем стирать мои спрайты посмотрел бы как они нарисованы, можешь разложить их в фотожопе или в другой программе и попробовать проанализировать их. Добавлено (01.02.2010, 00:08) --------------------------------------------- Bercut, в Prince of Persia для упрощения рисования перса был использован метод ротоскопии - т.е. реальный человек записывается на видеокамеру, раскладывается на кадры в граф. редакторе, и вырисовывается в пиксель арт или любой другой стиль (оставлять в видео проблематично будет, любительская видеокамера будет давать много шумов и кадры в стык будет сложно сделать).
Blogpost
|
| |
| | |
|
Bercut
| Дата: Понедельник, 01.02.2010, 01:57 | Сообщение # 124 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Quote (Ang3L) И секрет дискретного перемещения в самой анимации. при переходе с одной анимаций в другу они должны плавно сменять друг друга. Я просмотрел ещё раз весь пример с сеткой, понял, что каждый шаг, там играется определённая анимация по кадрово, то есть можно её спокойно прервать и продолжить другую (например, анимация боли)? Каким образом добиться, так чтобы анимации плавно друг друга сменяли? Quote (Ang3L) Второе, это то что анимации должны быть в стык, т.е. накладываться друг на друга. Это получается своего рода интерактивный мультфильм. Кадры сменяют друг друга, и надо очень чётко следить за анимацией. Вот первое что я заметил это то что в спрайте spr_stay_right перс стоит по середине, а spr_hero_walk_right заканчивает чуть дальше середины и когда анимация переходит с spr_hero_walk_right в spr_stay_right перс двигается назад (6 кадр в анимации ходьбы лишний). Да, дурак я. Разобрался с этим, всё, теперь отлично, даже от нуля =-) =-( Ну это всего лишь тест, просто руки золотые, но растут из попы. Quote (Ang3L) Можно тебе упростить задачу: отрисовывай контуры своих спрайтов, чтобы увидеть, а в стык ли они? И проигрывай кадры медленно, Хочу программу для этих целей сделать, точнее уже что-то есть, как доделаю Гуй, то и сделаю программу. Quote (Ang3L) И ты прежде чем стирать мои спрайты посмотрел бы как они нарисованы Я и не стирал, только лишь код перенёс. Спрайты смотрел, но просто сути не уловил, теперь всё понял =-) Дурная моя голова... Quote (Ang3L) в Prince of Persia для упрощения рисования перса был использован метод ротоскопии Ну понял, ведь сложно иногда нарисовать реалистичную анимацию =-)
Fast, like fire!
|
| |
| | |
|
Ang3L
| Дата: Понедельник, 01.02.2010, 02:48 | Сообщение # 125 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) Каким образом добиться, так чтобы анимации плавно друг друга сменяли? Блин! Я ж программист, а не мультипликатор!  С такими вопросами к DragonSkin'у. Пытайся сделать так чтобы первый кадр след. анимации был продолжением предыдущей, вот ключ к успеху. Quote (Bercut) то есть можно её спокойно прервать и продолжить другую Это сложная технология. Не для ГМ во всяком случае. Вот для 3д: Quote (Wiki) euphoria (русск. эйфория) — программное средство для создания процедурной анимации, работающее в режиме реального времени, разработанное компанией NaturalMotion на основе технологии «Dynamic Motion Synthesis» (русск. «Динамический Синтез Движений»). Технология «euphoria» применяется для анимации трёхмерных персонажей «на лету» и «базируется на полной симуляции трёхмерного персонажа, включая его тело, мускулы и моторную нервную систему».[2] Вместо того, чтобы использовать предопределённые анимации, действия и реакции персонажей синтезируются (просчитываются) в реальном времени; эти анимации каждый раз являются особенными, неидентичными к предыдущим, даже если повторяется одна и та же самая сцена. В то время, когда традиционные физические движки используют физику ragdoll (физику «тряпичной куклы») для анимаций, сгенерированных на лету, euphoria использует более комплексный метод для анимации физически связанных (англ. physically-bound) объектов во всей полноте внутри игрового окружения. Разработчик может создать несколько ключевых кадров для анимации (например, анимация ходьбы человека), в то время, как движок создаст промежуточные. Это способствует более реалистичному отображению сложной анимации. Возможно, но это только возможно, можно создать подобную технологию и в 2д. Ну если только попробовать, но я читал что это очень непросто сделать. Кстать, посмотри видюшки для Euphoria, увидишь какая классная анимация получается (не покадровая конечно, но тоже шик. Можно увидеть ещё только в GTA IV, насколько я знаю. Смотрится супер.). Quote (Bercut) =-( Ну это всего лишь тест, просто руки золотые, но растут из попы. Да это шутка! Дело не может получится, если ты делаешь его впервые. Нужно тренироваться, понять идею и потом её разрабатывать. Главное в этом стиле игры надо понять, что главное не программирование (если конечно ты не собираешься делать аналог Euphoria в 2д), а анимация, художества. Лично я потратил 75% на анимацию и только 25% на код (может я просто не художник?). Quote (Bercut) Хочу программу для этих целей сделать, точнее уже что-то есть, как доделаю Гуй, то и сделаю программу. Лучше поищи в сети, наверняка такая есть. Помню была такая в 90-х, Disney Studio называлась, или как-то так (там несколько предыдущих кадров как бы были полупрозрачные и накладывались друг на друга, за счёт этого можно было удобно совмещать кадры). Я чёт не нашёл, но есть такая Anime Studio. Quote (Bercut) Ну понял, ведь сложно иногда нарисовать реалистичную анимацию =-) Это не такая сложная сколько кропотливая работа. У тебя будет 15-20 анимаций на персонажа + несколько врагов. Допустим 9 врагов и 1 персонаж ГГ, т.е. где-то 150-200 анимации, т.е. где-то 2 250-6 000 всего кадров анимации которые надо нарисовать, причём красиво. Если это делать вручную, без помощи аниматорских программ, это может занять длительное время. Зато будет очень эффектно. Но в основном делают так (что в 2д, что в 3д): рисуют персонажа на месте и перемещающегося. Изменяется анимация резко, без плавных переходов. При перемещений персонажа скорость перемещения объекта стараются подобрать под скорость анимации, но это удаётся не всегда (допустим подбирается под баланс в стратегиях) и тогда получается эффект "бегущего на месте" (или рассинхронизация скорости объекта и скорости анимации в угоду баланса). Этот эффект можно увидеть почти в каждой 3д игре. Это смотрится не очень, зато дешево и сердито, и технология стара как мир.
Blogpost
|
| |
| | |
|
Bercut
| Дата: Понедельник, 01.02.2010, 03:03 | Сообщение # 126 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Quote (Ang3L) ытайся сделать так чтобы первый кадр след. анимации был продолжением предыдущей, вот ключ к успеху. Понял, уже что-то наваял =-) Quote (Ang3L) Возможно, но это только возможно, можно создать подобную технологию и в 2д. Ну если только попробовать, но я читал что это очень непросто сделать. Кстать, посмотри видюшки для Euphoria, увидишь какая классная анимация получается (не покадровая конечно, но тоже шик. Можно увидеть ещё только в GTA IV, насколько я знаю. Смотрится супер.). Хорошо, я посмотрю, надо же как-то просвящаться =-) Quote (Ang3L) Лучше поищи в сети, наверняка такая есть. Помню была такая в 90-х, Disney Studio называлась, или как-то так (там несколько предыдущих кадров как бы были полупрозрачные и накладывались друг на друга, за счёт этого можно было удобно совмещать кадры). Я чёт не нашёл, но есть такая Anime Studio. Спасибо за совет. Просто прогу пишу не только для себя, но и для своих дизайнеров, а то они разленились, не слышно и не видно, ну думаю, ща сессия пройдёт всё будет в порядке =-) Quote (Ang3L) Это не такая сложная сколько кропотливая работа. У тебя будет 15-20 анимаций на персонажа + несколько врагов. Допустим 9 врагов и 1 персонаж ГГ, т.е. где-то 150-200 анимации, т.е. где-то 2 250-6 000 всего кадров анимации которые надо нарисовать, причём красиво. Если это делать вручную, без помощи аниматорских программ, это может занять длительное время. Зато будет очень эффектно. Ну вот, будет им работа Quote (Ang3L) Но в основном делают так (что в 2д, что в 3д): рисуют персонажа на месте и перемещающегося. Изменяется анимация резко, без плавных переходов. При перемещений персонажа скорость перемещения объекта стараются подобрать под скорость анимации, но это удаётся не всегда (допустим подбирается под баланс в стратегиях) и тогда получается эффект "бегущего на месте" (или рассинхронизация скорости объекта и скорости анимации в угоду баланса). Этот эффект можно увидеть почти в каждой 3д игре. Это смотрится не очень, зато дешево и сердито, и технология стара как мир. Понял на счёт этого, с такой технологией можно столкнуться в конструкторе RPGMaker. Кстати, переиграл в Принца Персии, проверил анимацию, да ходи он именно по такой системе, только не всегда чётко останавливается в центре клетки, с чем это связано? З.Ы.: Опробывал программу Anime Studio, до чего же она неудобна для этого дела, надо искать альтернтиву. Очень удобен Corel PhotoPaint, просто как-то интерфейс Адобе, для меня не дружелюбен, за исключением Audition. Жаль что в короле нельзя делать, то что надо =-(
Fast, like fire!
Сообщение отредактировал Bercut - Понедельник, 01.02.2010, 09:29 |
| |
| | |
|
Ang3L
| Дата: Понедельник, 01.02.2010, 13:37 | Сообщение # 127 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) Кстати, переиграл в Принца Персии, проверил анимацию, да ходи он именно по такой системе, только не всегда чётко останавливается в центре клетки, с чем это связано? Я над этим тоже думал. Это, наверное, потому что размер блоков не кратен размеру персонажа. У меня то размер персонажа и блока были равны, а что если шарик был бы в 3 - 4 раза меньше по ширине? Тогда бы он тоже вставал не только по центру (а если размер блока был бы 64, а шарика 36, то он бы мог вставать практически в любом месте. Но здесь нужна "синхронизация", например, иногда Принц не подходит к краю слишком близко, но если просто нажать влево/вправо, то он упадёт. В этом случае зажимается шифт и он подходит вплотную к краю, но не упадёт, как бы "синхронизировался" с блоками). Это тоже можно проверить, но у меня нет такой плавной анимации персонажа, а рисовать сам я не буду, хотя я очень люблю такой стиль игры.
Blogpost
|
| |
| | |
|
Bercut
| Дата: Вторник, 02.02.2010, 15:37 | Сообщение # 128 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Немного исправил анимацию, всё тоже самое, только вниз- садиться, энтер - удар ногой, а вот с присиданием не получается, и так и так мучал, короче идея такая. При нажатии клавиши вниз играется анимация присидания, в любой шаг можно отжать клавишу и присидание прикратиться. Анимация закончилась и если мы держим клавишу вниз, то персонаж сидит, если отжимает, то играем обратную анимацию, анимацию вставания персонажа, собстенно и так и так крутил, но почему-то глюки. Ну например как быть с ящиком? Рядом с персонажем, например на x+1 клетке стоит ящик, чтобы с ним взаимодействовать используем клавишу 'E' (ну это допустим, если мы хотим из одного и того же положения толкать или тянуть ящик). Если рядом ящик и мы к нему повёрнуты и нажата клавиша 'E', то играть анимацию приближения к ящику. И пока мы ещё раз не нажмём 'E' не прекращать взаимодействие с ящиком, то есть рисовать последний кадр, например как персонаж держит ящик. Если мы взаимодействуем с ящиком, то при нажатии клавиш влево и вправо двигаемся в соответствующие стороны, то есть толкаем/тянем ящик. Вообще много вопросов по взаимодейтвию, хотя я примерно знаю как всё это решить. Понимаю, что это вещи из вида "сделай игру за меня", но я тоже постараюсь вас не утруждать. Ссылка на пример: Link 176 кб
Fast, like fire!
|
| |
| | |
|
DreamRunner
| Дата: Вторник, 02.02.2010, 16:08 | Сообщение # 129 |
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
|
Как сделать приседание (да и всё остальное): Code if фаза == СТОИТ { перс стоит, спрайт кадр установили Нажали вниз -> фаза = САДИТСЯ }
if фаза== САДИТСЯ { сменили спрайт, играем его до последнего кадра. Если последний кадр -> фаза = СИДИМ }
if фаза== САДИТСЯ { сменили спрайт Если отжали кнопку ->ВСТАЁМ }
Метод конечных автоматов. У меня так сделано даже в простенькой аркаде. Так не запутаешься в условиях.
|
| |
| | |
|
Ang3L
| Дата: Вторник, 02.02.2010, 16:26 | Сообщение # 130 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) анимацию вставания персонажа, собстенно и так и так крутил, но почему-то глюки. Code if(subimage < subimages - 1) subimage += 1; Это код о чём говорит? О том что выбираем след. кадр. Анимации вставания я у тебя не видел, значит здесь должна быть обратная анимация: subimage -= 1; Где и как это вставлять подумаешь сам. Т.е. либо делаешь анимацию вставания, либо карпишь над обратной анимацией. Quote (Bercut) Ну например как быть с ящиком? Рядом с персонажем, например на x+1 клетке стоит ящик, чтобы с ним взаимодействовать используем клавишу 'E' (ну это допустим, если мы хотим из одного и того же положения толкать или тянуть ящик). Если рядом ящик и мы к нему повёрнуты и нажата клавиша 'E', то играть анимацию приближения к ящику. И пока мы ещё раз не нажмём 'E' не прекращать взаимодействие с ящиком, то есть рисовать последний кадр, например как персонаж держит ящик. Если мы взаимодействуем с ящиком, то при нажатии клавиш влево и вправо двигаемся в соответствующие стороны, то есть толкаем/тянем ящик. Примерно так и есть. Чтобы анимации были гладкими между ними надо делать переходные состояния. Стоим -> Начинаем идти -> Идём -> Заканчиваем идти -> Стоим -> Начинаем бег -> Бежим -> Переходим на шаг -> Заканчиваем идти -> Стоим -> Приседаем -> Сидим -> Кидаем бомбу из положения сидя -> Встаём из положения сидя -> ... и т.д. Незабываем что этот стиль игры основан на недетерминированном КА, поэтому тебе его необходимо изучить,. чтобы понять лучше (т.е. переход из одного состояния может быть в один из нескольких. Из положения стоя можно войти как в "Начинаем идти из положения стоя", так и в "Начинаем бег из положения стоя"). И здесь нужно продумать как грамотные переходы из состояния в состояние так и анимацию на каждое такое действие. Ведь можно побежать из положения лёжа, такое может быть возможно через переход состояния, но если анимации перехода не будет, будут "глюки".
Blogpost
|
| |
| | |
|
Bercut
| Дата: Вторник, 02.02.2010, 16:48 | Сообщение # 131 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Quote (DreamRunner) Метод конечных автоматов. У меня так сделано даже в простенькой аркаде. Так не запутаешься в условиях. Понял, ну всё же придётся внести поправки с соотетсвием кода, но всё равно понял, спасибо. Quote (Ang3L) Это код о чём говорит? Ну сознаюсь, да именно о проигрывании следуюшего кадра, если началась анимация, кстати, а если убрать точку с запятой после subimage += 1, то ошибки ведь не будет? просто обычно после условия не ставится точка с запятой, если ставиться иначе, или в Си так можно? Quote (Ang3L) Чтобы анимации были гладкими между ними надо делать переходные состояния. Да, думал над этим. Quote (Ang3L) Незабываем что этот стиль игры основан на недетерминированном КА Спасибо, думаю информация здесь достаточно исчерпывающая.
Fast, like fire!
|
| |
| | |
|
Ang3L
| Дата: Вторник, 02.02.2010, 17:26 | Сообщение # 132 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) после условия не ставится точка с запятой Ни в одном известном мне языке не ставится точка с запятой после условия. После условия всегда идёт выражение. В С++ каждое выражение должно оканчиваться точкой с запятой (это я и стараюсь соблюдать). Code if(subimage < subimages - 1) //условие. Если не последний кадр в анимации, то subimage += 1; //выражение. Выбираем след. кадр. Quote (Bercut) думаю информация здесь достаточно исчерпывающая. Ещё не смотрел твою ссылку, но есть хорошая информация на Wiki.
Blogpost
|
| |
| | |
|
Bercut
| Дата: Вторник, 02.02.2010, 17:39 | Сообщение # 133 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Я про это: Code if(!anim) { //Условия для анимации } else { if(subimage < subimages - 1) subimage += 1; // Если здесь стоит точка с запятой, то ниже написанное не отностится к этому условию else // вот здесь не понятна логика тогда { sprite = sPersonStay;
subimages = 1; subimage = 0;
_x += goto_x; goto_x = 0;
_y += goto_y; goto_y = 0;
anim = false; } }
Fast, like fire!
Сообщение отредактировал Bercut - Вторник, 02.02.2010, 17:40 |
| |
| | |
|
Ang3L
| Дата: Вторник, 02.02.2010, 18:13 | Сообщение # 134 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) if(subimage < subimages - 1) subimage += 1; // Если здесь стоит точка с запятой, то ниже написанное не отностится к этому условию else // вот здесь не понятна логика тогда Quote то ниже написанное не относится к этому условию Это с какого перепугу? Code if(subimage < subimages - 1) { выражение; } else { выражение; } Или сокращённый вариант: Code if(subimage < subimages - 1) выражение; else выражение; Скобки можно опустить если идёт только 1 выражение.
Blogpost
|
| |
| | |
|
DragonSkiN
| Дата: Вторник, 02.02.2010, 18:20 | Сообщение # 135 |
Всех уже задолбал
Группа: Страж
Сообщений: 1180
Статус: Offline
|
и вообще, чтобы потом самому не путаться, лучше использовать {}
http://gamegraphycs.do.am/ - сайт о 2D графике http://dragonskin.ath.cx:777/- доступ по хттп к сборнику ресурсов для игр
|
| |
| | |
|
Bercut
| Дата: Пятница, 05.02.2010, 16:53 | Сообщение # 136 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Блин, аладушек, фигня, это я виноват, прости, какбэ к сведенью, виноват паскаль, ибо при выражении вида в нём: Code if (x = 10) then writeln ('Блаблабла); else writeln ('Неблаблабла'); выдаст ошибку, о том, что перед else надо убрать точку с запятой. Логика ясна, да =-) Добавлено (05.02.2010, 16:53) --------------------------------------------- А что делать, если я хочу резко остановиться или ударить, ведь при этом способе у нас произойдёт рассинхронизация =-( Я поиграл в Тин Тун и в Червяка Джима, пробывал анализировать, не получается, всю голову сломал, как жэ там сделано, но подумал над тем что говорил Дрим, ну он говорил, что в 8-ом появились маски на каждый кадр, проект я так и не разобрал, слишком большой и сложный =-( У Drunce Вроде бы всё ясно, там что-то на подобе, поэтому пришёл к выводу, что каким-то образом надо считать положение в клетки и возможность выполнения какого-либо действия. У Drunce в проекте oneStep используется скоростоть и размер чара, то есть пока персонаж не достигнет определённой кондиции для клетки, то столкновения не произойдёт. Кстати, в Тини Туне размер тайла 16x16, а что можно сказать о размере клетки, мб тоже 16 на 16, тогда персонаж занимает 6 клеток, то есть 2X3, как так возможно построить синхронизацию. И просто и сложно не нравится такая ходьба, тем, с кем работаю, тоже не понравилось, извините, что мучаю вас, просто серьезно, ломаю голову, нужны лишь небольшие подсказки, дохожу медленно, и также делаю, потому что сдаю экзамены, скоро закончу и всё пойдёт в гору, заранее спасибо! З.Ы.: Кстати, пробывал эксперементировать, анимация корява конечно, но всё же. Всё тоже самое, но теперь можно прыгать через ящик и бить его. Link 696 kb (GameMaker 8) Только не ругайте ...
Fast, like fire!
Сообщение отредактировал Bercut - Пятница, 05.02.2010, 17:06 |
| |
| | |
|
Ang3L
| Дата: Пятница, 05.02.2010, 17:23 | Сообщение # 137 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) А что делать, если я хочу резко остановиться или ударить, ведь при этом способе у нас произойдёт рассинхронизация =-( Наконец-то дошло!  В этом и заключается вся сложность. Я уже описал выше решение этой проблемы, видимо ты пропустил. Решается это 3 способами: 1) Сложный в плане анимации. Прерывание это просто переход не между последними кадрами, а между какими-то другими. Соответственно, рисуем переходы из любого кадра в любой (или как можно большее кол-во анимации и переходов). Сложность заключается в том что анимация растёт в экспоненте, а то и факториале. 2) Простой. Просто прервать анимацию и начать другую не дожидаясь конца. Так сделано в большинстве 2д и 3д игр, в том числе и приведёнными тобою, только там это делается настолько быстро что ты не успеваешь замечать и в этом весь фокус. Иногда, когда прерывают, накладывают какой-нибудь спец. эффект, чтобы невидно было прерывания. 3) Сложный в плане программирования, т.н. процедурная анимация. Входит в моду в последнее время, например, проект Euphoria (не наркотик ). Актуальная для 3д (для 2д я только только задумался). Смысл в том что у нас есть объекты (кости) которые передвигаются по запланированными нами действиями. Они имеют свойство процедурно "перетекать" друг в друга, за счёт этого анимация получается плавно, т.к. строится на лету. А потом просто отрисовываем "мясо" по положению этих костей. В этом случае не надо рисовать самому как в случае 1) всё сделает компьютер. Но! Это годится для 3д, для 2д только для векторной графики, иначе будет очень заметно что персонаж состоит из кусочков, а не одно целое. А вот плавная, уникальная, самостроящаяся анимация в 2д... Вот это высший пилотаж. Я вот ща обдумываю как это можно замутить... т.е. что я хочу сказать. В Prince of Persia практически не предполагались вот такие прерывания (точнее частых переходов из состояния в состояние), поэтому стиль игры как в Assasin's Creed, в 2д не получить. Поэтому для тебя вариант 2) самый-самый. А если какой-нибудь спец. эффект наложишь никто и не заметит. Используй приём фокусников: отвлеки внимание игрока, а в это время сделай всё что тебе нужно. P.S.: В плане изучения. Запиши видео на игру (например, во Fraps'е), а затем проигрывай покадрово. Увидишь все нюансы и ... разочаруешься в играх. P.P.S.: Если ты проходил PoP, то наверняка бодался с сильными противниками, которые блокируют твои удары. Оцени анимацию этих блоков и вообще боя. Меня завораживает до сих пор. Кстати, в 3д я ничего подобного никогда не видел.
Blogpost
|
| |
| | |
|
DreamRunner
| Дата: Пятница, 05.02.2010, 17:32 | Сообщение # 138 |
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
|
Глянул, а ты что, для файтинга делаешь переходы между движениями? Имхо, не стоит того. Здесь нужно более быстрое взаимодействие - нажал ударить - так и должен ударить а не бежать до клетки. Переходы актуальны для ходилок-бродилок-квестов. Кстати здесь кадров маловато. Лучше, если перс будет занимать ровное количество клеток в высоту (да и в ширину при возможности), во время анимации бега (он немного подпрыгивает на ней).
|
| |
| | |
|
Bercut
| Дата: Пятница, 05.02.2010, 18:11 | Сообщение # 139 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Quote (Ang3L) 1) Сложный в плане анимации. Прерывание это просто переход не между последними кадрами, а между какими-то другими. Соответственно, рисуем переходы из любого кадра в любой (или как можно большее кол-во анимации и переходов). Сложность заключается в том что анимация растёт в экспоненте, а то и факториале. Не поверишь, думал об этом =-) Чёрд, я твои мысли читаю чтоли, или мы живём на одной платене? Вот, правда думал об этом на забыл сказать, сам понимаю колличество анимаций =-) Quote (Ang3L) 2) Простой. Просто прервать анимацию и начать другую не дожидаясь конца. Так сделано в большинстве 2д и 3д игр, в том числе и приведёнными тобою, только там это делается настолько быстро что ты не успеваешь замечать и в этом весь фокус. Иногда, когда прерывают, накладывают какой-нибудь спец. эффект, чтобы невидно было прерывания. Да, вполне, но как в этом случае рассчитывать столкновения? Мы же прирываем ход событий и перс оказывается непонятно где. Quote (Ang3L) P.S.: В плане изучения. Запиши видео на игру (например, во Fraps'е), а затем проигрывай покадрово. Увидишь все нюансы и ... разочаруешься в играх. Вот хочу разобрать, не посоветуешь игры и эмуляторы, которые эмулируют точное разрешение игры, то есть чтобы картинка получалась 1 в 1? Мысли мои читаешь =-) Как раз над этим думал, вот мучался, картинка получается в два раза больше. И чем лучше записать видео? Quote (Ang3L) P.P.S.: Если ты проходил PoP, то наверняка бодался с сильными противниками, которые блокируют твои удары. Оцени анимацию этих блоков и вообще боя. Меня завораживает до сих пор. Кстати, в 3д я ничего подобного никогда не видел. Всё это было очень давно, да и полностью не проходил, но игра очень интересная, сложная и загодочная. Ты кстати играл в ту что на денди? Quote (DreamRunner) Глянул, а ты что, для файтинга делаешь переходы между движениями? Имхо, не стоит того. Здесь нужно более быстрое взаимодействие - нажал ударить - так и должен ударить а не бежать до клетки. Переходы актуальны для ходилок-бродилок-квестов. Кстати здесь кадров маловато. Лучше, если перс будет занимать ровное количество клеток в высоту (да и в ширину при возможности), во время анимации бега (он немного подпрыгивает на ней). Это всего лишь тест. Будущая игра нефайтинг, а платформер. На счёт нажал ударить - ударил, в этом собственно и проблема. На счёт клеток спасибо. А как мне увеличить количество кадров, если их нарисованно огранниченное количество, или я не допонимаю? =-( Ну подпрыгивает, значит я напортачил. =-(((
Fast, like fire!
|
| |
| | |
|
Ang3L
| Дата: Пятница, 05.02.2010, 19:29 | Сообщение # 140 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
|
Quote (Bercut) Вот хочу разобрать, не посоветуешь игры и эмуляторы, которые эмулируют точное разрешение игры, то есть чтобы картинка получалась 1 в 1? DosBox + DosShell. Чтобы 1 в 1 (в dosbox.conf): Quote fullscreen=false fulldouble=false fullresolution=original windowresolution=original ... aspect=false scaler=none #scaler=super2xs ai <- для качественной картинки в большем разрешений. Очень хорошее сглаживание. Quote (Bercut) И чем лучше записать видео? Я пользовался Fraps'ом. Quote (Bercut) Ты кстати играл в ту что на денди? На денди нет. У меня никогда не было денди и всегда завидовал тем у кого были приставки, вместо него всегда был прокачанный PC. Quote (Bercut) Мы же прирываем ход событий и перс оказывается непонятно где. Что за чушь? Перс всегда находится на одном месте. Это анимация находится в разных местах. Анимация заканчивается и после этого перс меняет позицию. Это очень важно понять! И это важное различие в платформерах, допустим Червяка Джима от Принца Персий. И когда мы прерываем анимацию пероснаж находился в том же положений что и был. А вот как синхронизировать анимацию? Вот это правильный вопрос. В Принц Персии это было сделано так: когда тебя ударяют анимация переходит в статичный кадр, который смещается до позиций персонажа и затем переходит в состояние до прерывания (тоже самое с падением). Quote (Bercut) Да, вполне, но как в этом случае рассчитывать столкновения? По моему, как и всегда. Code если(нажал пробел) { если(рядом враг и ты повёрнут в его сторону) switch(состояние врага) { стоит: -1 хелс врагу, проигрываем анимацию успешного удара; блокирует: проигрываем анимацию не успешного удара; издевается: проигрываем анимацию удара по щеке; <img src="http://s3.ucoz.net/sm/6/wink.gif" border="0" align="absmiddle" alt="wink"> бьёт: проигрываем анимацию блока; } else проигрываем анимацию удара; } -1 хелс можно не сразу отбавлять, а, например, в самой анимации после какого-нибудь кадра, называемой точкой не возврата, т.е. когда наш шаг удался. До этой точки удар будет проходить, но хелсы могут не отняться, если противник встал в блок. Ещё фишка которая была в Принце: все "быстрые" действия состояли из малого кол-ва кадров. Анимация стойки в блок 1 кадр. Поэтому она успевала проигрываться до конца. P.S.: Короче, я те так создание всей игры расскажу, да ещё пример в придачу. Сиди и разбирайся, и главное, думай головой. Я те много рыбок надавал, теперь учись сам ловить. Главное в таком стиле переходы и их надо уметь использовать, прерывать и т.д.
Blogpost
|
| |
| |
|
|