jsge
Version:
Javascript Game Engine
105 lines (91 loc) • 6.79 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="expires" content="Wen, 05 Jun 2024 07:01:00 GMT">
<title>JSDoc: Tutorial: How to Load and Use Tilemaps</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="stage-title">Tutorial: How to Load and Use Tilemaps</h1>
<section>
<header>
<h2>How to Load and Use Tilemaps</h2>
</header>
<article>
<p>Tilemaps (.tmg files) are a great way to draw and organize system levels, and they can be created using the Tiled editor. Loading them is similar to loading other objects:</p>
<ol>
<li><a href="tutorial-assets_manager.html">Add and load a tilemap</a></li>
<li>Create a draw object in the <a href="tutorial-stages_lifecycle.html">GameStage.init() or GameStage.start()</a>:<pre class="prettyprint source"><code>init() {
this.tiledLayer = this.draw.tiledLayer("tilemap_layer_key", "tilemap_key", setBoundaries, shapeMask);
...
}
</code></pre>
This will render the tilemap layer on your canvas.</li>
</ol>
<h3>Live example</h3>
<p class="codepen" data-height="500" data-default-tab="js,result" data-slug-hash="VwgNRxN" data-user="yaalfred" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
<span>See the Pen <a href="https://codepen.io/yaalfred/pen/VwgNRxN">
Tilemaps</a> by Arturas-Alfredas Lapinskas (<a href="https://codepen.io/yaalfred">@yaalfred</a>)
on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
<br />
<h2>Extracting boundaries:</h2>
<p>For example, you have a walls layer:
<img src="tiled_boundaries.png">
And you want that tiles to be unreachable by the player, or to detect collisions, pass <code>true</code> as the third parameter to extract boundaries from the tilemap layer:</p>
<pre class="prettyprint source"><code> this.draw.tiledLayer("tilemap_layer_key", "tilemap_key", true, shapeMask);
</code></pre>
<p>These boundaries can then be retrieved using:</p>
<pre class="prettyprint source"><code>this.stageData.getBoundaries()
</code></pre>
<ul>
<li>Additionally, the <a href="GameStage.html#isBoundariesCollision">stage.isBoundariesCollision()</a> method will use these boundaries for collision calculations. For example, the code below will move the fireball only if no collision occurs:</li>
</ul>
<pre class="prettyprint source"><code>if (!stage.isBoundariesCollision(newCoordX, newCoordY, fireball)) {
fireball.x = newCoordX;
fireball.y = newCoordY;
}
</code></pre>
<p>To debug boundaries, you can enable the following options:</p>
<pre class="prettyprint source"><code>SystemSettings.gameOptions.debug.boundaries.drawLayerBoundaries = true;
SystemSettings.gameOptions.debug.boundaries.drawObjectBoundaries = true;
</code></pre>
<h3>Live Example</h3>
<p class="codepen" data-height="500" data-default-tab="js,result" data-slug-hash="mdvYrWP" data-user="yaalfred" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
<span>See the Pen <a href="https://codepen.io/yaalfred/pen/mdvYrWP">
Tiled boundries</a> by Arturas-Alfredas Lapinskas (<a href="https://codepen.io/yaalfred">@yaalfred</a>)
on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
<br />
<h3>Boundaries and animations</h3>
<p>Starting from jsge@1.4.0, support for the following features has been added:</p>
<ul>
<li><a href="https://doc.mapeditor.org/en/stable/manual/editing-tilesets/#tile-collision-editor">Tiled object collisions(boundaries)</a> with different boundaries shapes: polygons, ellipses, dots.</li>
<li><a href="https://doc.mapeditor.org/en/stable/manual/editing-tilesets/#tile-animation-editor">Tiled animations</a>.</li>
</ul>
<p>The engine will process these features automatically when the <code>tiledLayer</code> is created.</p>
</article>
</section>
</div>
<nav>
<div class="switcher"><ul><li class="active"><a href="/">1.5.9</a></li></div>
<h2><a href="/">Home</a></h2><h3>Classes</h3><ul><li><a href="DrawCircleObject.html">DrawCircleObject</a></li><li><a href="DrawConusObject.html">DrawConusObject</a></li><li><a href="DrawImageObject.html">DrawImageObject</a></li><li><a href="DrawLineObject.html">DrawLineObject</a></li><li><a href="DrawObjectFactory.html">DrawObjectFactory</a></li><li><a href="DrawPolygonObject.html">DrawPolygonObject</a></li><li><a href="DrawRectObject.html">DrawRectObject</a></li><li><a href="DrawShapeObject.html">DrawShapeObject</a></li><li><a href="DrawTextObject.html">DrawTextObject</a></li><li><a href="DrawTiledLayer.html">DrawTiledLayer</a></li><li><a href="GameStage.html">GameStage</a></li><li><a href="GameStageData.html">GameStageData</a></li><li><a href="IExtension.html">IExtension</a></li><li><a href="INetwork.html">INetwork</a></li><li><a href="IRender.html">IRender</a></li><li><a href="ISystem.html">ISystem</a></li><li><a href="ISystemAudio.html">ISystemAudio</a></li><li><a href="RenderLoop.html">RenderLoop</a></li><li><a href="RenderLoopDebug.html">RenderLoopDebug</a></li><li><a href="System.html">System</a></li><li><a href="SystemSettings.html">SystemSettings</a></li></ul><h3>Tutorials</h3><ul><li><a href="tutorial-application_scheme.html">Application Scheme</a></li><li><a href="tutorial-assets_manager.html">Assets Manager</a></li><li><a href="tutorial-common_issues.html">Common Issues</a></li><li><a href="tutorial-how_to_add_and_use_audio.html">How to add and use audio</a></li><li><a href="tutorial-how_to_do_animations.html">How to Create Animations</a></li><li><a href="tutorial-how_to_load_and_use_tilemaps.html">How to Load and Use Tilemaps</a></li><li><a href="tutorial-quick_start.html">Quick Start</a></li><li><a href="tutorial-spine_animations.html">How to Add Spine Animations</a></li><li><a href="tutorial-stages_lifecycle.html">Stages Lifecycle</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.4</a> on Wed Jun 18 2025 06:53:54 GMT+0000 (Coordinated Universal Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>