<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wolfire.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Doctorgester</id>
	<title>Wolfire Games Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wolfire.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Doctorgester"/>
	<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=Special:Contributions/Doctorgester"/>
	<updated>2026-05-04T19:08:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.wolfire.com/index.php?title=Checkpoints&amp;diff=4758</id>
		<title>Checkpoints</title>
		<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=Checkpoints&amp;diff=4758"/>
		<updated>2017-09-09T22:21:18Z</updated>

		<summary type="html">&lt;p&gt;Doctorgester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Checkpoints allow you to set up goals that the player can achieve to advance progress in a level.&lt;br /&gt;
&lt;br /&gt;
With them you can move the player spawn point upon death and allow defeated enemies to remain dead.&lt;br /&gt;
&lt;br /&gt;
When the player advances progress, you can do nothing, play a dialog, spawn new enemies, or trigger a level win (load the next level).&lt;br /&gt;
&lt;br /&gt;
You can make some of the checkpoints optional, so player progress is saved, but the player does not have to touch them to complete the level.&lt;br /&gt;
&lt;br /&gt;
== Using the checkpoint system ==&lt;br /&gt;
&lt;br /&gt;
Start by creating a new level, or opening an existing level, and activating the editor by hitting &amp;quot;F1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You might want to enable debug text (Settings -&amp;gt; Debug -&amp;gt; Enable &amp;quot;Draw In-Game Debug Window&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debug keys (these will work once a level has checkpoints):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|reset the level to the currently achieved checkpoint&lt;br /&gt;
|-&lt;br /&gt;
|K&lt;br /&gt;
|swap to the next checkpoint, or wrap around to the first (remember to hit &amp;quot;L&amp;quot; after to reset)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add the checkpoint system to a level:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Load -&amp;gt; Load Item... -&amp;gt; Data/Objects/Hotspots/overgrowth_level.xml&lt;br /&gt;
&lt;br /&gt;
The table below shows the types of goals that can be used as checkpoints. Below the table are instructions for how to use each goal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|reach&lt;br /&gt;
|when touched, moves the player spawn point and saves defeated enemies. must touch it to complete the level/advance progress&lt;br /&gt;
|-&lt;br /&gt;
|reach_skippable&lt;br /&gt;
|same as &amp;quot;reach&amp;quot; checkpoint but the player never has to reach it to complete the level/advance progress&lt;br /&gt;
|-&lt;br /&gt;
|defeat&lt;br /&gt;
|the player must defeat a list of enemies to complete the level/advance progress&lt;br /&gt;
|-&lt;br /&gt;
|spawn_defeat&lt;br /&gt;
|same as &amp;quot;defeat&amp;quot; checkpoint but the enemies to defeat are spawned at the beginning of that checkpoint&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;reach&amp;quot; checkpoint ===&lt;br /&gt;
&lt;br /&gt;
# Add the checkpoint hotspot to the scene. This is the trigger for the checkpoint. Load -&amp;gt; Load Item... -&amp;gt; Data/Objects/Hotspots/overgrowth_level_checkpoint.xml&lt;br /&gt;
# Add the placeholder object to the scene. This is the player spawn. Load -&amp;gt; Utility -&amp;gt; Placeholder &lt;br /&gt;
# Set the checkpoint hotspot &amp;quot;checkpoint_id&amp;quot; parameter to a value starting at 0 and increasing for each checkpoint you add&lt;br /&gt;
# Set the checkpoint hotspot &amp;quot;level_hotspot_id&amp;quot; parameter to the object id of the overgrowth_level hotspot&lt;br /&gt;
# Add a &amp;quot;goal_&amp;lt;number&amp;gt;&amp;quot; parameter to the overgrowth_level hotspot and set the value to &amp;quot;reach &amp;lt;number&amp;gt;&amp;quot;, with the number from step 3&lt;br /&gt;
# Add a value to the overgrowth_level hotspot &amp;quot;player_spawn&amp;quot; parameter, delimited with spaces, with the id of the placeholder object from step 2 (&amp;quot;437 243 121&amp;quot;). The order matters, and the id for checkpoint 0 should go in the first spot, checkpoint 1 in the second spot, etc. You can see that you&#039;ve written the correct ID if a transparent character model appears in the placeholder hotspot.&lt;br /&gt;
&lt;br /&gt;
The numbers in checkpoints are tricky to get right. To add an additional checkpoint:&lt;br /&gt;
&lt;br /&gt;
# Add another goal param to the overgrowth_level hotspot, and give it a number one higher than the previous goal. So if your previous goal was &amp;lt;code&amp;gt;goal_0&amp;lt;/code&amp;gt;, you would add another one with the name &amp;lt;code&amp;gt;goal_1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the goal param&#039;s value to one higher than the previous goal. So if the previous one was &amp;lt;code&amp;gt;reach 5&amp;lt;/code&amp;gt;, this new param&#039;s value would be &amp;lt;code&amp;gt;reach 6&amp;lt;/code&amp;gt;&lt;br /&gt;
# Load a checkpoint object, and set its &amp;lt;code&amp;gt;checkpoint_id&amp;lt;/code&amp;gt; parameter to a value that matches the reach goal in step #2. So, if the goal is &amp;lt;code&amp;gt;reach 6&amp;lt;/code&amp;gt;, then this would just be &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the checkpoint object&#039;s &amp;lt;code&amp;gt;level_hotspot_id&amp;lt;/code&amp;gt; param&lt;br /&gt;
# Load a placeholder object for the player to spawn at&lt;br /&gt;
# Add the id of the placeholder object to the end of the overgrowth_level&#039;s &amp;lt;code&amp;gt;player_spawn&amp;lt;/code&amp;gt; param. So if it was previously &amp;lt;code&amp;gt;123 456&amp;lt;/code&amp;gt; then it would now be something like &amp;lt;code&amp;gt;123 456 784&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;reach_skippable&amp;quot; checkpoint ===&lt;br /&gt;
&lt;br /&gt;
Do all the same as a &amp;quot;reach&amp;quot; hotspot, but in step 5 set the value to &amp;quot;reach_skippable &amp;lt;number&amp;gt;&amp;quot; instead of &amp;quot;reach &amp;lt;number&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;defeat&amp;quot; checkpoint ===&lt;br /&gt;
&lt;br /&gt;
# Add an enemy to the level&lt;br /&gt;
# Add a &amp;quot;goal_&amp;lt;number&amp;gt;&amp;quot; parameter to the overgrowth_level hotspot and set the value to &amp;quot;defeat &amp;lt;number&amp;gt;&amp;quot;, with the object id of the enemy from step 1&lt;br /&gt;
# Add additional enemy ids in the form of &amp;quot;defeat &amp;lt;some_enemy_id&amp;gt; &amp;lt;other_enemy_id&amp;gt;&amp;quot;, just like in step two (e.g. &amp;quot;defeat 4 72 8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;spawn_defeat&amp;quot; checkpoint ===&lt;br /&gt;
&lt;br /&gt;
Do all the same as a &amp;quot;defeat&amp;quot; hotspot, but in step 2 set the value to &amp;quot;spawn_defeat &amp;lt;numbers...&amp;gt;&amp;quot; instead of &amp;quot;defeat &amp;lt;numbers...&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Triggering dialogs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To trigger a dialog just before starting on a new goal (whether a &amp;quot;reach&amp;quot; or &amp;quot;defeat&amp;quot; goal):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a dialog to the level and get it working with the dialog editor&lt;br /&gt;
# Add a &amp;quot;goal_&amp;lt;number&amp;gt;_pre&amp;quot; parameter to the overgrowth_level hotspot and set the value to &amp;quot;dialog &amp;lt;dialogname&amp;gt;&amp;quot;, with the dialog name from step 1, and the number of the goal you want the dialog to be triggered before. (e.g. &amp;quot;goal_5_pre&amp;quot;)&lt;br /&gt;
# Note that the dialog will be started again if you die and respawn, and the dialog can be used to set a new spawn point for the player&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To trigger a dialog just after achieving a checkpoint goal (whether a &amp;quot;reach&amp;quot; or &amp;quot;defeat&amp;quot; checkpoint):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Do all the same as a dialog triggered before progressing to a given checkpoint, but name the parameter &amp;quot;goal_&amp;lt;number&amp;gt;_post&amp;quot; (e.g. &amp;quot;goal_5_post&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Doctorgester</name></author>
	</entry>
</feed>