1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
<?php
htmlHeader(array(), 'FAQ', 'How does the pathing work?');
?>
<?php
echo soundManager2();
topbar($headerLinks);
include_once('./includes/maps.php');
include_once('./includes/mapclass.php');
include_once('./includes/playerStats.php');
// Demo maps:
//Pathing:
// -------- DEMO1
$pathing1[] = 'roooooauo';
$pathing1[] = 'ooooooooo';
$pathing1[] = 'soooooooo';
$pathing1[] = 'oooooorof';
$pathing1[] = 'booootooo';
$myparams['checkpoints'] = 2;
$myparams['teleports'] = 1;
$myparams['rockchance'] = 999;
$myparams['walls'] = 999;
$myparams['name'] = 'Pathing Demo 1';
$map1 = GenerateShapedMap($pathing1, $myparams);
//$demo1 = displaymap($map, 1, 'example');
// --------- DEMO2
$multi1[] = 'sooXoooooXo';
$multi1[] = 'xxxXrrorxoo';
$multi1[] = 'aoooxxxrooo';
$multi1[] = 'XXXXXXorooo';
$multi1[] = 'Sooooooroof';
$myparams['checkpoints'] = 1;
$myparams['teleports'] = 0;
$myparams['rockchance'] = 999;
$myparams['walls'] = 999;
$myparams['name'] = 'Pathing Demo 2';
$map2 = GenerateShapedMap($multi1, $myparams);
//$demo2 = displaymap($map, 2, 'example');
// --------- DEMO3
$greed[] = 'soooooooa';
$greed[] = 'sooooooob';
$greed[] = 'soooooooc';
$greed[] = 'sorooroof';
$greed[] = 'sraorbroo';
$myparams['checkpoints'] = 1;
$myparams['teleports'] = 0;
$myparams['rockchance'] = 999;
$myparams['walls'] = 999;
$myparams['name'] = 'Pathing Demo 2';
$map3 = GenerateShapedMap($greed, $myparams);
//$demo3 = displaymap($map, 3, 'example');
$mapObjects[1] = new map(GenerateMapCode($map1));
$mapObjects[2] = new map(GenerateMapCode($map2));
$mapObjects[3] = new map(GenerateMapCode($map3));
?>
<div class="wrapper">
<h2 style='margin-top:65px;'>Questions and Answers</h2>
<ul>
<li><a href='#pathing'>How does the pathing work? / How does it choose which way to go?</a></li>
<li><a href='#multipath'>How does Multi-path work? (Two paths at once)</a></li>
<li><a href='#greed'>More than one of the same checkpoint?</a></li>
<li><a href='#championPoints'>What are 'Champion Points?'</a></li>
<li><a href='#cheaters'>Can players cheat?</a></li>
<li><a href='#themesong'>Does Pathery have a theme song?</a></li>
</ul>
Your question not here? Ask me via the <a href='feedback'>Feedback Page</a>.
<a name='pathing'> </a>
<h3>How does the pathing work?</h3>
<p>The pathing tries to find the best route possible.
In open areas there's lots of identical paths for it to take;
To choose which path it will go it follows these priorities:
<b> UP, RIGHT, DOWN, LEFT.</b>
This means that the path will go UP as far as it can first – then right, down, left.
<br />If the path is going to the TOP RIGHT from the BOTTOM LEFT, the path will go UP all the way to the top, then RIGHT.
<br />If the path is going to the BOTTOM LEFT, from the TOP RIGHT, the path will go all the way DOWN and then LEFT.
<br />TOP LEFT, from BOTTOM RIGHT, UP, then LEFT.
<br />So, BOTTOM LEFT, from TOP RIGHT? If you answer "DOWN then LEFT" you are correct!
<br />If you answered "uhhmm.. what's up with the directions in caps?" then you get a bonus point!
<br />Remember, teleports are traps and do not effect the path choice.
<h3>Demo 1</h3>
<div id='demo-1'></div>
<div style='clear:both'></div>
</p>
<hr width='60%' />
<a name='multipath'> </a>
<h3>How does Multi-path work? (Two paths at once)</h3>
<div class='grid_td_start' style='display: inline-block'></div>
<div class='grid_td_startB' style='display: inline-block'></div>
<p>The Green start location on a map starts the Green Path, or 'Path 1'.
<br />The Green Path noted by the green in the arrow may pass over Green Allow blocks:
<div class='grid_td_rockxpath2' style='display: inline-block'></div>
But they can't cross Red blocks:
<div class='grid_td_rockxpath1' style='display: inline-block'></div>
<br />
Likewise, the Red Path noted by red in the arrow may pass over Red Allow blocks:
<div class='grid_td_rockxpath1' style='display: inline-block'></div>
<br />
<h3>Demo 2</h3>
<div id='demo-2'></div>
<div style='clear:both'></div>
<hr width='60%' />
<a name='greed'> </a>
<h3>More than one of the same checkpoint?</h3>
<div class='grid_td_cpa' style='display: inline-block'></div>
<div class='grid_td_cpa' style='display: inline-block'></div>
<p>The pathing is very greedy. It's only looking at it's next target.
<b>It does not look at the big-picture</b>. You can use this to your advantage.
When there's more than one checkpoint, you can completely wall one off.
<br />Not many maps will contain more than one of any checkpoint.
<br />The below demo demonstrates it's greed. - The path will actually be shorter if you wall the bottom A!
<h3>Demo 3</h3>
<div id='demo-3'></div>
<div style='clear:both'></div>
<hr width='60%' />
<a name='championPoints'> </a>
<h3>What are 'Champion Points?'</h3>
<img src="../images/championpoints.png"></img>
<p>Champion Points are a way to give you recognition for your skills and dedication. They work like this:
<ul><li>Just for attempting a map, you get <?echo CP_POINTS_FOR_ATTEMPTING;?> points. That's <?echo CP_POINTS_FOR_ATTEMPTING*4;?> points a day just for clicking go!</li>
<li>If you tie the high score, you get anywhere between <?echo CP_MIN_WORTH;?> and <?echo CP_MAX_WORTH_SPECIAL;?> points,
depending on how many people tied or didn't tie the high score.</li>
<li>The winner of each map receives an additional small bonus.</li>
<li>On the weekly maps, <i>everyone</i> gets points! The more people you beat, the more points you'll get!</li>
<? /* TODO: Review after completing these */
//<li>You also receive points for completing additional tasks, like <a href="challengelist">completing challenges</a>,
//<a href="achievements">getting achievements</a>!</li>, or even <a href="ADD LINK HERE">liking us on facebook</a> ?>
</ul>
Make sure to play every day to receive as many points as possible!
</p>
<hr width='60%' />
<a name='cheaters'> </a>
<h3>Can players cheat?</h3>
<p>We'll assume you mean, "Can you write a solver?". Yes, and No...
<br />The Pathery problem is a NP-Complete problem (With or without teleports).
<br />You might think you have the best solution, or point at the scoreboard and show me that 30 people are tied at this top score.
But, you cannot mathmatically PROVE your solution is the best. And for this same reason, solvers are weak. (It would take years for
a computer to prove a solution is the best - I give you 24 hours.)
<br /><i>The larger and more complicated the map, the greater advantage a human brain has over a computer.</i>
<br />This is what motivated me to make this game. And why it continues to hold my love.
<br />So no, you can't write a solver, but Yes, you can write a <b>Pathery AI</b>. Pathery AI's do exist, and can find limited success depending on the map.
<br />You can read more about this topic @ <a href='http://www.mazetheory.com/'>Mazetheory.com</a>.
<br />
<br />Pathery has similar properties as the <a title='Wiki' href='http://en.wikipedia.org/wiki/Longest_path_problem' target='top'>The Longest Path Problem (wiki)</a>
</p>
<hr width='60%' />
<a name='themesong'> </a>
<h3>Does Pathery have a theme song?</h3>
<p>Wow, I'm surprised you asked! We do! A parody by <i><a href='http://en.wikipedia.org/wiki/Daniel_J._Barrett'>Daniel Jay Barrett</a></i>.
</p>
<audio src="sounds/music/find_the_longest_path.mp3" controls>
<a href='sounds/music/find_the_longest_path.mp3' target='top'>Find The Longest Path Song</a>
</audio>
<br />
<br /><br />
</div>
<?php
echo "<script>\n";
foreach ($mapObjects as $key => $mapObject) {
$mapObject->ID = $key;
$mapObject->isChallenge = true;
$mapJSON = json_encode($mapObject);
echo "$('#demo-$key').html(mapAsHTML(decryptJSON('$mapJSON')));\n";
}
echo "</script>\n";
htmlFooter();
?>
|