fceux/help/taseditor-ru/SpeedrunnersSynopsis.html

146 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<title>Конспект спидраннера</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript"><!--
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "index.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("SpeedrunnersSynopsis");
}
</script>
</head>
<body>
<div id="topic_header">
<div id="topic_header_content">
<h1>Конспект спидраннера</h1>
<div id="topic_breadcrumb">
<a href="Reference.html">Справочник</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Reference.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="FAQ.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="TASEditorInside.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p><span class="rvts20">Конспект спидраннера</span></p>
<p class="rvps2"><span class="rvts6"><br></span></p>
<p class="rvps2"><span class="rvts6"><br></span></p>
<p class="rvps10"><span class="rvts22">Создание спидранов является наиболее простым видом ТАСинга, и его основные приёмы давно изучены. Здесь приводится классификация типовых задач спидраннера, возникающих во время шлифовки Ввода на участках. Перед чтением этого раздела рекомендуется усвоить материалы </span><a class="rvts28" href="TASingProcess.html">Процесс ТАСинга</a><span class="rvts22"> и </span><a class="rvts28" href="TASingMethodology.html">Методология ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">При создании спидрана необходимо находить кратчайший способ прохождения каждого участка игры. Процесс поиска заключается в тестировании множества вариантов прохождения участка и выборе самого лучшего варианта.</span></p>
<p class="rvps10"><span class="rvts22">Для ускорения этого процесса обычно сравниваются между собой только два варианта: </span><span class="rvts26">новый</span><span class="rvts22"> рабочий вариант и наилучший </span><span class="rvts26">старый</span><span class="rvts22"> вариант, а все остальные старые варианты забываются (впрочем, некоторые любопытные варианты можно сохранить в Закладки) .</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">Самый лучший из всех ранее протестированных (старых) вариантов может храниться:</span></p>
<p class="rvps15" style="text-indent: 30px; margin-left: 0px;"><span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000; width: 15px;"></span>
<span class="rvts22">в Закладках рекомендуется</span></p>
<p class="rvps15" style="text-indent: 30px; margin-left: 0px;"><span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000; width: 15px;"></span>
<span class="rvts22">в Журнале Истории автоматически</span></p>
<p class="rvps15" style="text-indent: 30px; margin-left: 0px;"><span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000; width: 15px;"></span>
<span class="rvts22">в памяти ТАСера не рекомендуется</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">Когда новый рабочий вариант оказывается лучше (оптимальнее) наилучшего старого, автоматически подразумевается, что он лучше всех остальных старых вариантов, поэтому этот рабочий вариант становится наилучшим. В случае использования Закладок следует сохранить новый вариант в тот же слот, где хранился наилучший старый вариант.</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">Критерием оптимальности может быть:</span></p>
<p class="rvps15" style="text-indent: 30px; margin-left: 0px;"><span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000; width: 15px;"></span>
<span class="rvts22">наличие/отсутствие требуемого события в новом и старом варианте </span><span class="rvts74">(bool)</span></p>
<p class="rvps15" style="text-indent: 30px; margin-left: 0px;"><span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000; width: 15px;"></span>
<span class="rvts22">время наступления целевого события в новом и старом варианте </span><span class="rvts74">(int)</span></p>
<p class="rvps15" style="text-indent: 30px; margin-left: 0px;"><span style="font-size: 10pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000; width: 15px;"></span>
<span class="rvts22">состояние игры на одном и том же кадре нового и старого мувика </span><span class="rvts74">(string)</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">Соответственно, при сравнении двух вариантов требуется делать одно из трёх:</span></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunnersSynopsis.html#CompareEvent">1. Сравнивать наличие/отсутствие требуемого события.</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareEvent-A">А. По памяти</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareEvent-B">B. С помощью Закладок</a></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunnersSynopsis.html#CompareTime">2. Сравнивать время наступления целевого события.</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareTime-A">A. По памяти</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareTime-B">B. С помощью зелёной стрелки</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareTime-C">C. С помощью Маркера</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareTime-D">D. С помощью Закладок</a></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunnersSynopsis.html#CompareState">3. Сравнивать состояние игры на одном и том же кадре</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareState-A">А. По памяти</a></p>
<p class="rvps27"><a class="rvts60" href="SpeedrunnersSynopsis.html#CompareState-B">B. С помощью Закладок</a></p>
<p class="rvps10"><a name="CompareEvent"></a>
<span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">1. Сравнивать наличие/отсутствие требуемого события.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, где требуемое событие происходит в рамках текущего участка (а вредное событие, соответственно, не происходит). Обычно появление требуемого события - это всего лишь первый этап при создании Ввода на участке, а следующим этапом будут попытки ускорить момент появления этого события.</span></p>
<p class="rvps10"><span class="rvts22">Перебор вариантов проходит до первого успешного варианта, либо пока не надоест.</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух Boolean (переменная логического типа), сравнение двух массивов Boolean.</span></p>
<p class="rvps10"><a name="CompareEvent-A"></a>
<span class="rvts22">A. Для большинства участков подходит простое запоминание того факта, что требуемого события пока не удалось добиться. Пример: </span><a class="rvts28" href="SemiautomaticTASing.html#FindStartButtonPress">нажатие кнопки </a><a class="rvts75" href="SemiautomaticTASing.html#FindStartButtonPress">Start</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareEvent-B"></a>
<span class="rvts22">B. Если требуемое событие является комплексным (например, требуется одновременно подстрелить нескольких врагов), рекомендуется в процессе перебора вариантов сохранять в Закладки те варианты, где требуемое событие выполнилось хотя бы частично (например, игрок подстрелил одновременно двух врагов из трёх). Если в конце концов требуемого события так и не удастся добиться, может сгодиться и такой частичный успех.</span></p>
<p class="rvps10"><a name="CompareTime"></a>
<span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">2. Сравнивать время наступления целевого события.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, где целевое событие наступает раньше всего. Время наступления целевого события определяется кадром, перед которым целевого события в игре ещё не было, а на этом кадре оно уже есть. Номер этого кадра определяется при наведении на него Курсора Проигрывателя и просмотре экорана FCEUX.</span></p>
<p class="rvps10"><span class="rvts22">Перебор вариантов проходит до тех пор, пока не надоест.</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух целых чисел.</span></p>
<p class="rvps10"><a name="CompareTime-A"></a>
<span class="rvts22">A. Для простейших участков и подучастков бывает достаточно запомнить лучший номер кадра в уме и сравнивать все последующие номера с этим числом. Для более-менее сложных участков такое не рекомендуется. Подробнее: </span><a class="rvts28" href="TASingProcess.html#EndOfSegment">Процесс ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareTime-B"></a>
<span class="rvts22">B. Для несложных участков можно воспользоваться зелёной стрелкой. Для этого нужно после просмотра каждого варианта оставлять Курсор Проигрывателя на кадре целевого события. Если новый кадр целевого события находится выше зелёной стрелки, то новый вариант лучше предыдущего варианта. Подробнее: </span><a class="rvts28" href="NonlinearTASing.html#GreenArrow">Методология ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareTime-C"></a>
<span class="rvts22">C. Для участков средней и высокой сложности используйте Маркеры, отвязанные от Ввода. При каждом смещении целевого события во времени нужно вручную перетаскивать соответствующий Маркер. Если новый кадр целевого события находится выше Маркера, то новый вариант лучше наилучшего старого. Подробнее: </span><a class="rvts28" href="ProgramCustomization.html#BindMarkerstoInput">Настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareTime-D"></a>
<span class="rvts22">D. Для участков средней и высокой сложности используйте Закладки, отображаемые в столбце иконок Piano Roll. Если новый кадр целевого события находится выше иконки Закладки, то новый вариант лучше старого варианта из этой Закладки, и вам следует установить эту Закладку на этот новый кадр, сделав быстрый сэйв.</span></p>
<p class="rvps10"><a name="CompareState"></a>
<span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">3. Сравнивать состояние игры на одном и том же кадре.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, в котором у игры в целом более выгодные характеристики. Этот тип сравнений рекомендуется использовать для оценки сложных и многогранных игровых ситуаций. Например, в гонке Формула-1 цель найти оптимальный баланс между максимальным продвижением вперёд и минимальной изношенностью шин.</span></p>
<p class="rvps10"><span class="rvts22">Перебор вариантов проходит до тех пор, пока не надоест.</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух строк, сравнение двух массивов целых чисел.</span></p>
<p class="rvps10"><a name="CompareState-A"></a>
<span class="rvts22">A. Для простых участков бывает достаточно запомнить некоторые характеристики состояния игры, достигнутого в наилучшем варианте прохождения участка. При просмотре новых вариантов Курсор Проигрывателя всегда останавливается на том же самом кадре, и в окне FCEUX и в Memory Watch отображаются новые значения интересующих характеристик. Если некоторые характеристики оказались лучше, а некоторые хуже, то требуется взвесить их в уме (или использовать обобщающую Lua-формулу) и решить, стал ли новый вариант в целом лучше, чем старый. Если решено, что новый вариант лучше, необходимо запомнить его характеристики вместо характеристик предыдущего наилучшего варианта. Однако, когда таких характеристик больше, чем одно число, рекомендуется не полагаться на память, а использовать Закладки. Пример: </span><a class="rvts28" href="NonlinearTASing.html#LuckManipulation">манипуляция удачей</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareState-B"></a>
<span class="rvts22">B. Для участков средней и высокой сложности, а также для гигантских участков (размером с целый уровень игры) используйте Закладки, хранящие альтернативные ответвления мувика. Наилучший вариант сохраняется в один слот, а тестируемые варианты сохраняются в другой слот. После этого можно легко переключаться между этими слотами и сравнивать значения каждой существенной характеристики. Кроме того, можно наводить курсор мыши на соответствующие Закладки в Списке Закладок или Дереве ответвлений, чтобы видеть скриншоты состояний игры и сравнивать характеристики визуально. Также можно не сохранять текущий вариант в Закладку, а визуально сравнивать текущее изображение в окне FCEUX со скриншотом наилучшего варианта прохождения участка. Для отображения ячеек памяти на скриншотах рекомендуется использовать Lua-вывод, тогда окно Memory Watch не понадобится, и об оптимальности можно будит судить по скриншотам. Подробнее: </span><a class="rvts28" href="ProgramCustomization.html#DisplayBranchScreenshots">Настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22">После нахождения самого быстрого варианта прохождения ТАСер может дополнительно улучшить участок, добавив немного развлекательности в игровые события. Критерии оптимальности при этом могут быть самыми разными, но время прохождения участка должно оставаться без изменений.</span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps10"><span class="rvts22"><br></span></p>
<p class="rvps8"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="http://www.helpndoc.com">Full featured Documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
Copyright &copy; 2011-2012 АнС</div>
</div>
</body>
</html>