<pclass="rvps10"><spanclass="rvts22">Благодаря наличию однозначной цели, создание спидранов является наиболее простым видом ТАСинга, и соответствующие приёмы хорошо изучены. Здесь приводится классификация типовых задач спидраннера, возникающих во время шлифовки Ввода. Перед чтением этого раздела рекомендуется усвоить материалы </span><aclass="rvts28"href="TASingProcess.html">Процесс ТАСинга</a><spanclass="rvts22"> и </span><aclass="rvts28"href="TASingMethodology.html">Методология ТАСинга</a><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">При создании спидрана необходимо находить кратчайший способ прохождения каждого участка игры. Процесс поиска заключается в тестировании множества подходов к прохождению участка и выборе самого лучшего подхода. Здесь мы обсудим только проблему выбора.</span></p>
<pclass="rvps10"><spanclass="rvts22">Для упрощения задачи ТАСеры обычно сравнивают между собой только два подхода: </span><spanclass="rvts26">новый рабочий</span><spanclass="rvts22"> подход и </span><spanclass="rvts26">наилучший старый</span><spanclass="rvts22"> подход, а все остальные старые подходы сразу забывают (впрочем, некоторые любопытные подходы всегда можно сохранить в Закладки).</span></p>
<pclass="rvps10"><spanclass="rvts22">Когда новый рабочий подход оказывается лучше (оптимальнее) наилучшего старого, автоматически подразумевается, что он лучше всех остальных старых подходов, поэтому этот рабочий подход сразу становится наилучшим. В случае использования Закладок следует пересохранить новый подход в тот же слот, где хранился наилучший старый подход. По окончании поиска содержимое этого слота загружается в финальный мувик.</span></p>
<pclass="rvps10"><spanclass="rvts22">Выигрывает подход, где требуемое событие происходит в рамках текущего участка (а вредное событие, соответственно, не происходит). Появление требуемого события – это всего лишь первый (и зачастую лёгкий) этап при создании Ввода, а следующим этапом будут попытки ускорить момент появления этого события.</span></p>
<pclass="rvps10"><spanclass="rvts31">Перебор подходов продолжается до первого успешного подхода, либо пока не надоест (тогда событие признаётся недостижимым).</span></p>
<pclass="rvps10"><spanclass="rvts72">Аналогия с программированием: сравнение двух Boolean (переменная логического типа), сравнение двух массивов Boolean.</span></p>
<spanclass="rvts22">A. В большинстве случаев достаточно просто помнить тот факт, что требуемого события не удалось добиться в прошлых подходах. Пример: </span><aclass="rvts28"href="SemiautomaticTASing.html#FindStartButtonPress">нажатие кнопки </a><aclass="rvts73"href="SemiautomaticTASing.html#FindStartButtonPress">Start</a><spanclass="rvts22">.</span></p>
<spanclass="rvts22">B. Если целевое событие является комплексным (например, планируется одновременно подстрелить трёх врагов), рекомендуется в процессе перебора подходов сохранять в Закладки те варианты, где требуемое событие выполнилось хотя бы частично (например, подстрелили двух врагов одновременно, а третьего позже). Если в конце концов целевое события окажется недостижимым, может сгодиться и такой частичный успех.</span></p>
<pclass="rvps10"><spanclass="rvts22">Выигрывает подход, где целевое событие наступает раньше. Время наступления целевого события определяется кадром, перед которым целевого события в игре ещё не было, а на этом кадре оно уже есть. Номер этого кадра определяется при наведении на него Курсора Проигрывателя и просмотре экрана FCEUX (или Memory Watch) для подтверждения.</span></p>
<pclass="rvps10"><spanclass="rvts31">Перебор подходов продолжается до тех пор, пока не надоест, либо пока не исчерпаются все возможные типы подходов (тогда текущий лучший подход признаётся идеальным (frame perfect), пока не обнаружены новые факторы).</span></p>
<spanclass="rvts22">A. Для простейших участков и маленьких подучастков бывает достаточно запомнить лучший номер кадра в уме и сравнивать результаты всех новых подходов с этим числом. Но в целом полагаться на человеческую память не рекомендуется. Подробнее: </span><aclass="rvts28"href="TASingProcess.html#EndOfSegment">Процесс ТАСинга</a><spanclass="rvts22">.</span></p>
<spanclass="rvts22">B. На несложных участках можно сверяться с зелёной стрелкой Тасэдитора. При её использовании подразумевается, что вы каждый раз оставляете Курсор Проигрывателя на кадре целевого события (это естественное поведение). Поэтому, если новый кадр целевого события находится выше зелёной стрелки, то новый подход быстрее предыдущего. Подробнее: </span><aclass="rvts28"href="NonlinearTASing.html#GreenArrow">Методология ТАСинга</a><spanclass="rvts22">.</span></p>
<spanclass="rvts22">C. На сложных участках используйте отвязанный Маркер, который будет всегда указывать на текущий лучший номер кадра в Piano Roll. При каждом улучшении старого результата этот Маркер вручную перетаскивается повыше. Поэтому, если новый кадр целевого события находится выше Маркера, то новый подход быстрее наилучшего старого.</span></p>
<spanclass="rvts22">D. На участках любой степени сложности рекомендуется использовать Закладки, отображаемые в столбце иконок Piano Roll. При каждом улучшении старого результата текущий подход вручную сохраняется в ту же Закладку, замещая собой наилучший старый подход. Поэтому, если новый кадр целевого события находится выше иконки Закладки, то новый подход быстрее наилучшего старого.</span></p>
<pclass="rvps10"><spanclass="rvts22">Выигрывает подход, в котором у игры в целом более выгодные характеристики. Этот тип сравнений актуально использовать для оценки сложных и многогранных игровых ситуаций. Например, в гонках Формула-1 приходится заботиться одновременно и о скорости, и о минимальной изношенности шин, поэтому на каждом участке трассы нужно искать оптимальный баланс, а не просто торопиться.</span></p>
<pclass="rvps10"><spanclass="rvts22">Здесь у участка есть чётко определённый кадр окончания, и каждый новый тест должен проиграть участок до этого кадра. Тасэдитор запоминает номер этого кадра в виде зелёной стрелки, которая автоматически останавливает эмуляцию при просмотре новых вариантов. Так что от ТАСера требуется только изменять Ввод (создавая новые подходы), запускать просмотр, дожидаться остановки и оценивать результат (по экрану FCEUX или Memory Watch).</span></p>
<pclass="rvps10"><spanclass="rvts31">Перебор подходов продолжается до тех пор, пока не надоест, либо пока не исчерпаются все возможные типы подходов (тогда текущий лучший подход признаётся идеальным, пока не обнаружены новые факторы).</span></p>
<spanclass="rvts22">A. Для простых участков бывает достаточно запомнить значение главной характеристики состояния игры, достигнутого в наилучшем подходе. Это значение сравнивается с характеристиками нового состояния игры, достигнутого в конце просмотра нового подхода. Если решено, что новое значение лучше, необходимо запомнить его вместо старого. Пример: </span><aclass="rvts28"href="NonlinearTASing.html#LuckManipulation">манипуляция удачей</a><spanclass="rvts22">.</span></p>
<spanclass="rvts22">B. На участках средней и высокой сложности, а особенно на гигантских участках (размером с целый уровень игры) используйте Закладки, хранящие альтернативные ответвления мувика. Наилучший подход к прохождению участка сохраняется в один слот, а новый тестируемый подход сохраняется в другой слот. После этого можно легко переключаться между этими слотами и сравнивать значения каждой характеристики состояния игры. Кроме того, можно наводить курсор мыши на соответствующие Закладки, чтобы видеть скриншоты состояний игры и визуально сравнивать их характеристики с текущим изображением на экране FCEUX.</span></p>
<pclass="rvps10"><spanclass="rvts22">Для отображения ячеек памяти на скриншотах рекомендуется использовать Lua-вывод на экран, тогда окно Memory Watch не понадобится, и об оптимальности можно будет успешно судить по одним скриншотам. Подробнее: </span><aclass="rvts28"href="ProgramCustomization.html#DisplayBranchScreenshots">Настройка программы</a><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">В ситуации, когда некоторые характеристики в новом подходе оказались лучше, а некоторые хуже, требуется хорошенько взвесить их все (в уме, или используя обобщающую Lua-формулу) и решить, какое состояние игры лучше.</span></p>
<pclass="rvps10"><spanclass="rvts22">При каждом улучшении старого результата новый подход вручную сохраняется в ту же Закладку, замещая собой наилучший старый подход.</span></p>
<pclass="rvps10"><spanclass="rvts22">После нахождения самого быстрого подхода к прохождению участка ТАСер может дополнительно улучшить его, добавив немного развлекательности в игровые события. Критерии оптимальности при этом могут быть самыми разными, но при этом время прохождения участка должно оставаться без изменений.</span></p>
<pclass="rvps8"><spanclass="rvts18">Created with the Personal Edition of HelpNDoc: </span><aclass="rvts19"href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>