Updates:

Fans are welcome!

TGL: Legacy (by Sinner-KS)

Started by Sinner-KS, March 21, 2014, 12:32:00 PM

Previous topic - Next topic

Sinner-KS

Quote from: Shredder on July 24, 2014, 02:10:03 PM
Нее.. Стреляет-то оно одинаково часто, суть не в этом. Суть именно в том, что кучкой игра позволяет выпустить не более четырёх патронов за раз, а когда враг находится близко, то этот предел в 4 патрона на экране не успеет достигнуться и за счёт этого патроны вылетают непрерывной очередью. Другими словами, скорость и количество выпущенных в секунду патронов остаётся прежней. Тут в общем-то ничего и не нужно кроме кучной стрельбы с ограничением в 4 одновременно находящихся на экране патрона, никакие другие параметры патронов не меняются.

А с боссами там была такая фишка, что после того, как в них выпущены 4 патрона за раз, введена небольшая задержка перед тем, как Мирия снова может стрелять.
Нашёл у себя хороший эмуль с игрой и готовыми сохранениями - выбираются кнопками 0-9 из левого верхнего ряда клавиатуры, загружаются на F7. Стрельба кучей идёт при нажатии кнопки Num7 из правой части клавиатуры (или любой другой кнопки, которая задана в настройках). Посмотри сам. Так будет намного проще понять, о чём я говорю.
http://www.ninjaturtles.ru/uploads/nes/fceu-mm.zip

Я прекрасно понимаю механику работы пуль из оригинальной игры =)
Просто у нас совершенно разное мышление в этом плане. В упор к врагу ты слышишь звук попаданий по нему чаще чем в далеке от него? Чаще. Значит оружие выстреливает больше патронов в зависимости от расстояния. И поэтому я считаю что разработчики накосячили )

Shredder

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

Ну, хозяин - барин...))

Sinner-KS

#167
Quote from: Anegorami on July 24, 2014, 08:20:49 PM
Надеюсь, это было сказано про счетчик кадров, а не про счетчик кадров в секунду, поскольку FPS обычно вычисляются как t/dt, где t - постоянная ед. времени (секунда), а dt - время рисовки кадра.

То обычно, а я от секунд вообще отказался ) С ними сложно работать, гораздо проще когда точно знаешь что в секунду 60 кадров и игра под это подгоняется. Можно делать к примеру скорость анимации врага каждые 5 кадров, что будет равняться 83,(3) секунд.
Что проще писать в коде, 5 или 83,333333333 ? =)

А 60 к секунде подгоняется только в самом начале самим движком C# где учитываются автоматически все доли милисекунд, далее про секунды я просто забываю. Может я конечно делаю и не по канонам программирования, но если работает - почему нет?

Quote from: Anegorami on July 24, 2014, 08:20:49 PM
Если fps 60 - 5~15%, при 46 - 100% (для активного ядра).

Ну вот мы примерно и поняли в чем дело. У моего друга тоже игра грузила процессор на 100%. Это баг NET.Framework. Попробуй установить для него все последние обновления через автоапдейт Windows. У моего друга после этого перестало грузить.

Насколько я понял суть бага - при определенных условиях не отрабатывает IsRunningSlowly, из-за чего игра в цикле пытается вернуть упущенное процессорное время, но не может это сделать. Чтобы от этого избавиться я раньше писал свои временные таймеры. Процессор не грузился, но картинка дергалась 2-3 раза в секунду, что дико раздражало. А после того как Microsoft выпустили обновления, вновь стало возможным использовать стандартный синхронизатор.

Sinner-KS

#168
Quote from: Shredder on July 24, 2014, 09:50:11 PM
Странно, а мне наоборот казалось, что это одна из фишек игры, отличающих её от других "шутеров".

Ну, хозяин - барин...))

Давайте абстрагируемся от моей логики и вернемся к вопросу - а как делать бурст для НЕплазменного оружия? )
Я не буду напрочь отметать эту фишку с бурстом. Потом еще подумаю как можно безболезненно совместить эти вещи. )

P.S. насчет фишки - в игре море других фишек, отличающих ее от других шутеров. И стрельба в упор далеко не первая фишка в списке =)

Sinner-KS

#169
Кому не лень, можете помочь с поиском информации по методам борьбы с загрузкой процессора на 100%. В играх, написанных на C# (в т.ч. XNA)

Может у кого-то получится погуглить лучше чем у меня.

Проблема в командах:
IsFixedTimeStep = true;
SynchronizeWithVerticalRetrace = true;

Это стандартный синхронизатор скорости игры и вертикальной развертки. Если их отключить, то нужно писать свои собственные синхронизаторы.

Anegorami

Quote from: Sinner-KS on July 24, 2014, 09:51:15 PM
То обычно, а я от секунд вообще отказался ) С ними сложно работать, гораздо проще когда точно знаешь что в секунду 60 кадров и игра под это подгоняется. Можно делать к примеру скорость анимации врага каждые 5 кадров, что будет равняться 83,(3) секунд.
Что проще писать в коде, 5 или 83,333333333 ? =)

А 60 к секунде подгоняется только в самом начале самим движком C# где учитываются автоматически все доли милисекунд, далее про секунды я просто забываю. Может я конечно делаю и не по канонам программирования, но если работает - почему нет?
Мне наоборот - проще работать с реальным временем, чем с виртуальными кадрами, которых может быть и 60, и 120, и OVER9000.
Да и полагаться на чужой ограничитель fps не самая лучшая идея...

Quote from: Sinner-KS on July 24, 2014, 10:05:23 PM
Кому не лень, можете помочь с поиском информации по методам борьбы с загрузкой процессора на 100%. В играх, написанных на C# (в т.ч. XNA)

Может у кого-то получится погуглить лучше чем у меня.

Проблема в командах:
IsFixedTimeStep = true;
SynchronizeWithVerticalRetrace = true;

Это стандартный синхронизатор скорости игры и вертикальной развертки. Если их отключить, то нужно писать свои собственные синхронизаторы.
Выставь IsFixedTimeStep = false и перезалей.

Shredder

Quote from: Sinner-KS on July 24, 2014, 09:53:35 PMДавайте абстрагируемся от моей логики и вернемся к вопросу - а как делать бурст для НЕплазменного оружия? )
Я не буду напрочь отметать эту фишку с бурстом. Потом еще подумаю как можно безболезненно совместить эти вещи. )

Мне кажется, что для дополнительного оружия бурст не нужен. Только для обычного. Потому что так было в оригинале и это хорошо смотрелось =)

Sinner-KS

#172
Quote from: Anegorami on July 24, 2014, 10:37:26 PM
Выставь IsFixedTimeStep = false и перезалей.

В таком случае ограничитель будет только по вертикальнйо развертке. Т.е. у кого-то игра будет работать со скорость 60, у кого-то 75, у кого-то 120 (я не про FPS а про скорость игры)

Не вариант. Я все это уже тестил много раз.

Полагаться на чужой ограничитель плохо, но у меня свой идеальный сделать не получается. Я еще не настолько хорош в программировании и знании языка. Но я конечно могу пару месяцев поизучать этот вопрос - просто тогда разработка игры встанет. А получится у меня или нет - еще вопрос.
Я и так много времени на это потратил. До 12й версии был мой собственный ограничитель с разными правками. Но беда одна и та же - картинка периодически дергается (заметно), 2-3 раза в сек.

Что там с обновлениями на Net Framework?

Sinner-KS

Quote from: Shredder on July 24, 2014, 10:52:46 PM
Мне кажется, что для дополнительного оружия бурст не нужен. Только для обычного. Потому что так было в оригинале и это хорошо смотрелось =)

А речь и не идет про дополнительные оружия =)
Основных базовых оружий 5 видов. Еще 10 дополнительных. Если что-то делать, то нужно делать для всех пяти основных.

Anegorami

Quote from: Sinner-KS on July 24, 2014, 11:18:47 PM
В таком случае ограничитель будет только по вертикальнйо развертке. Т.е. у кого-то игра будет работать со скорость 60, у кого-то 75, у кого-то 120 (я не про FPS а про скорость игры)
Наиболее простой вариант - немного поправить Update в духе:

  • Получили время рисовки кадра.
  • Прибавили его к таймеру.
  • Если таймер больше чем 1/60 (если время в секундах) - исполнили остальной Update и отняли от таймера 1/60.
В теории - должно работать. Конечно, тогда будет несколько рисовок одного и того же кадра, но единственная альтернатива - переписывать Update с учетом прошедшего времени (как я, собственно, и делаю).

Quote from: Sinner-KS on July 24, 2014, 11:18:47 PM
Что там с обновлениями на Net Framework?
*Такая же или более новая версия .NET Framework 4 уже установлена на этом компьютере.*

Sinner-KS

Quote from: Anegorami on July 24, 2014, 11:46:43 PM
Наиболее простой вариант - немного поправить Update в духе:

  • Получили время рисовки кадра.
  • Прибавили его к таймеру.
  • Если таймер больше чем 1/60 (если время в секундах) - исполнили остальной Update и отняли от таймера 1/60.
В теории - должно работать. Конечно, тогда будет несколько рисовок одного и того же кадра, но единственная альтернатива - переписывать Update с учетом прошедшего времени (как я, собственно, и делаю).

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

Quote from: Anegorami on July 24, 2014, 11:46:43 PM
*Такая же или более новая версия .NET Framework 4 уже установлена на этом компьютере.*

Если через установщик ставить, то конечно не поставится. Я говорил про автоматическое обновление системы. Там всякие патчики докачиваются, которых нет в установщике на сайте MS.

Sinner-KS

Сделал один костыль - не знаю поможет или нет. Проверь.

http://www.webfile.ru/5e94c86fb547f814d770c4a2b9ea0824

Anegorami

Quote from: Sinner-KS on July 25, 2014, 02:08:21 AM
Насколько я понимаю, я так и делал. В итоге получаются периодические рывки изображения, т.к. время от времени теряется 1 кадр из 60и из-за дробных долей милисекунд.
Знакомо. Ну тогда только ждать решения от Мелкомягких, либо усложнять Update.

Quote from: Sinner-KS on July 25, 2014, 02:08:21 AM
Если через установщик ставить, то конечно не поставится. Я говорил про автоматическое обновление системы. Там всякие патчики докачиваются, которых нет в установщике на сайте MS.
Обновление включено, что-то оно периодически обновляет...

Quote from: Sinner-KS on July 25, 2014, 02:31:33 AM
Сделал один костыль - не знаю поможет или нет. Проверь.

http://www.webfile.ru/5e94c86fb547f814d770c4a2b9ea0824
Не помогло - в районе 3000 кадра симптомы повторяются. Впрочем я нашел временное решение - Cheat Engine -> Speedhack -> 2x -> Apply -> 1x -> Apply. Некоторое время после этого идут стабильные 60-в-секунду.

Sinner-KS

#178
Попробуй еще вот эту версию http://www.webfile.ru/7de573e5f1c094ff90b566db0b7544fe

У кого-то еще есть проблемы с падением скорости игры и загрузкой процессора?

Anegorami