Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 24.12.2013, 12:38   #151
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)

Я хочу что-бы волк шел потом шел и поворачивал, затем бил лапами и шел дальше, и так бесконечно.
Смена действий во времени - это уже геймплейная часть конкретной игры имхо, а не движка. Движок должен просто уметь проигрывать анимацию, типа
Animate (wolf, wolf_run)
Делать какие-то действия, ждать их завершения и делать следующие - это распространённая задача в играх и касается далеко на только анимаций.
Наблюдал реализацию этой фишки в скриптовых движках, что мне кажется довольно удобным.
Например, в первой Мафии такой скрипт выглядел бы так:
label 1
model_playanim 0, "wolf_walk", 1 // записывает время анимки в переменную 1
wait flt[1] // ждём окончания
model_playanim 0, "wolf_turn", 1
wait flt[1]
model_playanim 0, "wolf_paws", 1
wait flt[1]
goto 1
а в юнити с C# он бы мог выглядеть так:
IEnumerator loop()
{
 animation.CrossFade(wolf_walk);
 yield return new WaitForSeconds(animation["wolf_walk"].length);
 animation.CrossFade(wolf_turn);
 yield return new WaitForSeconds(animation["wolf_turn"].length);
 animation.CrossFade(wolf_paws);
 yield return new WaitForSeconds(animation["wolf_paws"].length);
}
В обоих вариантах всё куда понятнее. Плюс, оба варианта не ограничены движениями. Я могу поставить wait, чтобы NPC просто какое-то время занимался одной скриптовой деятельностью, интерактясь с миром, а потом переключался на другое дело, могу сделать часовую бомбу, миссию на время и много чего ещё на одном и том же функционале.
Специализированная версия waitов для анимаций в феноменально замороченной обёртке - не нужна.

---
алсо, как в мафе, так и в юнити, нет реальной асинхронности у этих штук (ибо не нужно), виртуальная машина просто умеет не обновлять скрипт, пока условие не выполнено, чекая его время от времени.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (24.12.2013)
Старый 24.12.2013, 17:28   #152
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Не понимаю что мешает запилить тоже самое у меня, добавь нужный моушен в рантайме, в котором ты будешь крутить свои действия и все, и не обязательно к модели их привязывать, ты хоть каждые 5 сек сцены переключай, возможности не ограничиваются.
(Offline)
 
Ответить с цитированием
Старый 24.12.2013, 17:53   #153
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Clear Engine (Понятный движок)

Смотри на вещи глазами нуба разраба. Разве он читая эти: motionContext, motionDispatcher, registerMotionConstructor и куча всего поймёт о чём идёт речь вообще, до того как сможет это использовать?

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

Смотри на вещи нуба. Ты забываешь о том - что ты знаешь, другой и понятия не имеет. Следственно учитывай это когда пересматриваешь свои решения. Ты теряешься в мечтах о том как это "круто" и "что это может давть", но забываешь что нифига это не даст, т.к. и не дойдёт до этого.

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

Топик у тебя: Clear - понятный. Значит ты ставишь на первое место пользователя. Любой проект для успешного разраба, имеет политику которая влияет на методы и идеи при разработке - если ставишь на первое место разраба, так учитывай это при разработке, начинай с простого продумывания интерфейса для самого разраба, а потом с имплементации.
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
ABTOMAT (24.12.2013), HolyDel (26.12.2013), Mr_F_ (24.12.2013), pax (27.12.2013), pozitiffcat (25.12.2013), St_AnGer (24.12.2013)
Старый 24.12.2013, 18:50   #154
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Clear Engine (Понятный движок)

Насчёт ожидания завершения действия.
Вот как сделано это в jQuery:

foobar.animate(params, что-делать-после-завершения-анимации);

На мой взгляд, очень просто этим пользоваться.
Не знаю, правда, возможна ли подобная конструкция на С++
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 24.12.2013, 19:40   #155
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от ABTOMAT Посмотреть сообщение
Насчёт ожидания завершения действия.
Вот как сделано это в jQuery:

foobar.animate(params, что-делать-после-завершения-анимации);

На мой взгляд, очень просто этим пользоваться.
Не знаю, правда, возможна ли подобная конструкция на С++
callback'и - это достояние event-driven парадигмы языка.
В C++ ты по сути можешь передать pointer на функцию (самый простой вариант?), если ещё lambda функции (подходят тут?) и anonymous функции (это по сути то что и есть в js).

Да и не jQuery а java-script, т.к. этот паттерн с каллбэками был задолго до jQuery.

Есть ещё promises паттерн, и использует chain'ы для выражения последовательности действий. Круто то что можно иметь динамично определяющуюся цепь анимаций:

player.animation
  
.do('walk')
  .
delay(1000)
  .do(
'run', { speed40 });

...
if (
player.hit) {
  var 
currentAnimation player.animation.current;

  
player.animation
    
.cancel()
    .do(
'hit')
    .
delay('500')
    .do(
curentAnimation);

  if (
curentAnimation == 'run') {
    
player.animation
      
.params({ speed20 })
      .
delay(1000)
      .
params({ speed40 })
  }

Как пример набросок, это паттерн chaining. Анимирует походку затем через секунду начинает бежать быстро. Где-то в цикле, если игрока ударили, отменяет текущую анимацию, затем анимирует что его ударили, затем через 500 мс возвращает предыдущую анимацию. Если она была "бег", то сперва поставит медленный бег, затем через секунду обратно на скорость 40.
Как пример.

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

Но удобство в том что ты можешь добавлять в цепочку разные стейты, отменять их, и манипулировать по разному. Также дать разрабу возможность расширять цепочку и влиять на стейт прямым образом.


Самый простой пример использования:
player.animation.do('run'); 
Установит анимацию на бег.
По сути разраб может юзать такой фреймворк как угодно, используя chaining или не используя и менеджить это сам.

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


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

И разраб уже сам выберет что ему по душе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (25.12.2013)
Старый 24.12.2013, 22:52   #156
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Clear Engine (Понятный движок)

Какие тут могут быть обсуждения синтаксиса? Делать для нубов значит делать GUI и никакого программирования!

Почему JavaScript самый популярный и используемый язык, который за несколько последних лет многократно увеличивает свою популярность?
Самый популярный Си, JavaScript на 11 месте.
(Offline)
 
Ответить с цитированием
Старый 25.12.2013, 01:55   #157
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Clear Engine (Понятный движок)

Java из-за android так высоко в рейтинге?
(Offline)
 
Ответить с цитированием
Старый 25.12.2013, 02:30   #158
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Clear Engine (Понятный движок)

Да сколько же вы будите путать Java и JavaScript уже?!!
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
moka (25.12.2013), pozitiffcat (25.12.2013)
Старый 25.12.2013, 04:17   #159
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от Samodelkin Посмотреть сообщение
Какие тут могут быть обсуждения синтаксиса? Делать для нубов значит делать GUI и никакого программирования!


Самый популярный Си, JavaScript на 11 месте.
Если ты прочитал внимательно методику составления рейтинга, то узнаешь о том что он базируется на количестве поисков и запросов, а также материалов в интернете по разным языкам. А не о их популярности вовсе. Если с одним языком у тебя куча проблем и нужно постоянно ссылаться в гугл, а с другим нет, это не знчит что первый более популярен.

В довесок к своим словам, я тебе покажу статистику на 2013, от github'а, котороые уж как никак, а имеют получше данные для статистики:
http://adambard.com/blog/top-github-...r-2013-so-far/

И ещё одна картинка, с количеством вопросов (stackoverflow) и та же таблица популярности на гитхабе (горизонтально)


Сообщение от Nikich Посмотреть сообщение
Java из-за android так высоко в рейтинге?
Java до сих пор считается "стабильным" Enterprise решением, бизнесов и индустрий, которые ужасно не поворотливы и не адаптируются к новым технологиям без боли. Также Android да, но больше думаю банки, финансы, гос учреждения, и ещё не мало "классических" индустрий.
(Offline)
 
Ответить с цитированием
Старый 25.12.2013, 12:31   #160
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)

Почему JavaScript самый популярный и используемый язык
как будто ты в вебе у тебя много вариантов)
это скорее говорит о том, что большинство кодеров - вебщики.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ABTOMAT (25.12.2013), den (25.12.2013), moka (25.12.2013), St_AnGer (25.12.2013)
Старый 25.12.2013, 12:56   #161
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от moka
Если ты прочитал внимательно методику составления рейтинга, то узнаешь о том что он базируется на количестве поисков и запросов, а также материалов в интернете по разным языкам. А не о их популярности вовсе. Если с одним языком у тебя куча проблем и нужно постоянно ссылаться в гугл, а с другим нет, это не знчит что первый более популярен.

В довесок к своим словам, я тебе покажу статистику на 2013, от github'а, котороые уж как никак, а имеют получше данные для статистики:
http://adambard.com/blog/top-github-...r-2013-so-far/
Ну сообщи в TIOBE, что они не компетентны и покажи им как работают настоящие профи. Я просто взял ссыль на которую ссылаются в хабре.

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

upd:
Еще раз прочитал про TIOBE
The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.
Написано же что базируется на продвинутых пользователях, курсах, разрабах. И для этого используются поисковики. Это не значит что поисковики используются для кол-ва запросов от нубов. Иначе сам рейтинг был бы весьма нубский.
(Offline)
 
Ответить с цитированием
Старый 25.12.2013, 18:46   #162
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от moka
callback'и - это достояние event-driven парадигмы языка.
В C++ ты по сути можешь передать pointer на функцию (самый простой вариант?), если ещё lambda функции (подходят тут?) и anonymous функции (это по сути то что и есть в js).
Я думаю функторы подойдут.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:47.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com