User Tag List

Страница 36 из 67 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя
Показано с 351 по 360 из 677

Тема: Dizzy-AGE: новые идеи

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,082
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    483
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от osa Посмотреть сообщение
    если упадет в воду и умрет сразу, то восстановится на месте прыжка. если пропрыгает под водой, то восстановится в воде. Для воды делается отдельный обработчик с заранее определенными координатами.
    Не всё так просто. Я за основу беру алгоритмы оригинального Dizzy-5.
    Так вот, если мы падаем в воду без акваланга, то тут несколько вариантов:
    умереть можно от потери воздуха, от столкновения с хищной рыбой. При этом успев прогуляться на значительное расстояние 1-2 экрана.

    Тут как мне кажется должна быть поправка на снаряжение. Да, и в воду можно успать с разных экранов, например.

    --
    Я так понимаю, точно описаных алгоритмов нет? Придётся изобретать самому?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,438
    Спасибо Благодарностей отдано 
    1,723
    Спасибо Благодарностей получено 
    2,269
    Поблагодарили
    892 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Я так понимаю, точно описаных алгоритмов нет? Придётся изобретать самому?
    В DizzyAge сделано так.

    Каждый обьект, наносящий повреждения (а стало быть могущий причинить смерть персонажа) имеет свой код (тип смерти).

    Когда Диззи погибает, вызывается или стандартный обработчик восстановления PlayerRespawn(), или, если для данного кода смерти был специальный обработчик, то вызывается специальный.

    В стандартном обработчике PlayerRespawn(), координаты Диззи восстанавливаются из переменных P_XSAFE и P_YSAFE. В них хранятся последние запомненные координаты 'стабильного' положения Диззи, т.е. безопасного. Например, когда диззи падает, эти координаты не обновляются. Когда катится головой вниз, хоть он и касается земли, но тоже не обновляются. А вот если встал лапками на твердую землю и при этом в этом месте нет обьектов отнимающих жизнь, то обновляются. Т.е. здесь стоять безопасно, а, стало быть, если чего, то воосстановиться можно отсюда.

    Вот пример си-подобного кода из движка с обновлением этих координат:

    Код:
    	// Check Respawn Position
    	status = PlayerGet(P_STATUS);
    	if( ( status==STATUS_IDLE || status==STATUS_WALK ) && 
    		IsPlayerSafe() && IsPlayerStable() && 
    		PlayerGet(P_SAFE) &&
    		PlayerGet(P_LIFE)>0 )
    	{
    		// remember relevant info to use in case of a respawn event
    		PlayerSet(P_XSAFE,PlayerGet(P_X));
    		PlayerSet(P_YSAFE,PlayerGet(P_Y));
    		MusicStore();
    	}
    Перевожу на русский: Если Диззи находится в статусе СТОИТ или ИДЕТ (а есть еще статусы ПРЫГАЕТ, ПАДАЕТ и т.д.), кроме того его позиция стабильная и безопасная (об этом позже), а так же никакой опасный обьект не сбросил флаг безопасности P_SAFE, то обновляем текущие координаты P_XSAFE и P_YSAFE.

    Безопасность позиции определяется так:
    Код:
    func IsPlayerSafe()
    {
    	matmask = (1<<MAT_AIR)|(1<<MAT_WATER)|(1<<MAT_CLOUD)|(1<<MAT_CLIMB)|(1<<MAT_WIND); // only those are allowed inside player's box
    	return ( 0 == ( PlayerGet(P_MATINSIDE) & (~matmask) ) ); // no other materials are allowed
    }
    По-русски: Если внутри прямоугольника с Диззи находятся безопасные материалы ВОЗДУХ, ВОДА, ОБЛАКА и т.д.), то функция дает положительный ответ. Соответственно, присутствие других материалов (приносящих смерть, или выталкивающих Диззи выше, например, нахождение внутри твердого обьекта), дают отрицательный ответ.

    Стабильность позиции определяется так:
    Код:
    func IsPlayerStable()
    {
    	matmask = (1<<MAT_BLOCK)|(1<<MAT_JUMPFIX)|(1<<MAT_JUMPPRO)|(1<<MAT_CLIMB); // at least one material with hard density must be under the player
    	return ( 0 != ( PlayerGet(P_MATUNDER) & matmask ) );
    }
    По-русски: Если под лапками персонажами есть как минимум один из материалов ТВЕРДОЕ, ТРАМПЛИН и т.д., то позиция считается стабильной.


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

    Вот и весь алгоритм движка.

  4. #3

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,082
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    483
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Вот и весь алгоритм движка.
    У меня похожим образом работает, эти переменные доступны в том или ином виде. Буду прикручивать условия.

    Ты лучше здесь спроси чего надо.
    Да, пока вроде всё более менее есть. Графика рисуется, код пишется... влезло бы в памяти всё. Спектрум заставляет думать и оптимизировать всё

  5. #4

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,438
    Спасибо Благодарностей отдано 
    1,723
    Спасибо Благодарностей получено 
    2,269
    Поблагодарили
    892 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Да, пока вроде всё более менее есть. Графика рисуется, код пишется... влезло бы в памяти всё. Спектрум заставляет думать и оптимизировать всё
    Год 2147. В огне металлических войн выросло новое поколение солдат. Их зовут - Капитан Пауэр и солдаты будущего!
    Код для Диззи все еще пишется, графика рисуется)

  6. #5

    Регистрация
    10.11.2007
    Адрес
    Khimki
    Сообщений
    18,222
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Я так понимаю, точно описаных алгоритмов нет? Придётся изобретать самому?
    Что-то написано тут, и даже основное на русский Титус перевёл. Может поможет.

    http://dizzyage.narod.ru/
    Может, мы обидели кого-то зря,
    Сбросив пару лишних мегатонн,
    И горит зелёным пламенем земля,
    Там, где был когда-то Пентагон!..

    Profi-576 v3.2/AY-3-8912A GI/FDD-5.25'

  7. #6

    Регистрация
    10.11.2007
    Адрес
    Khimki
    Сообщений
    18,222
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Titus, ты лучше мне ответь на вопрос про игру сам знаешь где. Как идея?
    Может, мы обидели кого-то зря,
    Сбросив пару лишних мегатонн,
    И горит зелёным пламенем земля,
    Там, где был когда-то Пентагон!..

    Profi-576 v3.2/AY-3-8912A GI/FDD-5.25'

  8. #7

    Регистрация
    10.03.2011
    Адрес
    Украина, г. Днепропетровск
    Сообщений
    892
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    drbars, куча вопросов хотелось бы задать, жуть как интересно, но не буду, ибо сам не люблю раскрывать подробности. Тока не забрасывай. Ждём.

  9. #8

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,438
    Спасибо Благодарностей отдано 
    1,723
    Спасибо Благодарностей получено 
    2,269
    Поблагодарили
    892 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Если бы писать эту игру на движке DizzyAge, ее бы можно было бы уже год назад закончить)

  10. #9

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,082
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    483
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Если бы писать эту игру на движке DizzyAge, ее бы можно было бы уже год назад закончить)
    Можно, но на ПЦ. У меня другие цели, а ПЦ не интересен вообще.

  11. #10

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,438
    Спасибо Благодарностей отдано 
    1,723
    Спасибо Благодарностей получено 
    2,269
    Поблагодарили
    892 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Можно, но на ПЦ. У меня другие цели, а ПЦ не интересен вообще.
    Да понимаю я) Это лирическое отступление) У всех тут другие цели)

Страница 36 из 67 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Идеи демо
    от GM BIT в разделе Демо
    Ответов: 711
    Последнее: 24.03.2019, 19:24
  2. Dizzy-AGE: Winter World Dizzy
    от Titus в разделе Dizzy-AGE
    Ответов: 6
    Последнее: 12.11.2011, 00:13
  3. Dizzy-AGE: Magic Star Dizzy
    от Titus в разделе Dizzy-AGE
    Ответов: 43
    Последнее: 22.04.2010, 15:28
  4. идеи устройств
    от next в разделе Несортированное железо
    Ответов: 13
    Последнее: 10.08.2006, 19:24

Ваши права

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