diff --git a/sample-tilemap/.gitignore b/sample-tilemap/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/sample-tilemap/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/sample-tilemap/16x16 DungeonTileset II by 0x72.url b/sample-tilemap/16x16 DungeonTileset II by 0x72.url
new file mode 100644
index 0000000..9b65a40
--- /dev/null
+++ b/sample-tilemap/16x16 DungeonTileset II by 0x72.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://0x72.itch.io/dungeontileset-ii
diff --git a/sample-tilemap/Zelda-like tilesets and sprites - OpenGameArt.org.url b/sample-tilemap/Zelda-like tilesets and sprites - OpenGameArt.org.url
new file mode 100644
index 0000000..d96ca66
--- /dev/null
+++ b/sample-tilemap/Zelda-like tilesets and sprites - OpenGameArt.org.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://opengameart.org/content/zelda-like-tilesets-and-sprites
diff --git a/sample-tilemap/build.gradle b/sample-tilemap/build.gradle
new file mode 100644
index 0000000..17ef8ab
--- /dev/null
+++ b/sample-tilemap/build.gradle
@@ -0,0 +1,5 @@
+apply plugin: "korge"
+
+korge {
+ id = "com.soywiz.samples.tilemap"
+}
diff --git a/sample-tilemap/src/commonMain/kotlin/main.kt b/sample-tilemap/src/commonMain/kotlin/main.kt
new file mode 100644
index 0000000..3195d8a
--- /dev/null
+++ b/sample-tilemap/src/commonMain/kotlin/main.kt
@@ -0,0 +1,31 @@
+import com.soywiz.klock.*
+import com.soywiz.korev.*
+import com.soywiz.korge.*
+import com.soywiz.korge.tiled.*
+import com.soywiz.korge.tween.*
+import com.soywiz.korge.view.*
+import com.soywiz.korio.async.*
+import com.soywiz.korio.file.std.*
+
+suspend fun main() = Korge(width = 512, height = 512) {
+ val tiledMap = resourcesVfs["gfx/sample.tmx"].readTiledMap()
+ fixedSizeContainer(256, 256, clip = true) {
+ position(128, 128)
+ val camera = camera {
+ tiledMapView(tiledMap) {
+ }
+ }
+ keys {
+ down {
+ launchImmediately {
+ when (key) {
+ Key.RIGHT -> camera.moveBy(-16, 0, 0.25.seconds)
+ Key.LEFT -> camera.moveBy(+16, 0, 0.25.seconds)
+ Key.DOWN -> camera.moveBy(0, -16, 0.25.seconds)
+ Key.UP -> camera.moveBy(0, +16, 0.25.seconds)
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/sample-tilemap/src/commonMain/resources/0x72_DungeonTilesetII_v1.3.png b/sample-tilemap/src/commonMain/resources/0x72_DungeonTilesetII_v1.3.png
new file mode 100644
index 0000000..aaecb48
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/0x72_DungeonTilesetII_v1.3.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/Inner.png b/sample-tilemap/src/commonMain/resources/gfx/Inner.png
new file mode 100644
index 0000000..a07be97
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/Inner.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/NPC_test.png b/sample-tilemap/src/commonMain/resources/gfx/NPC_test.png
new file mode 100644
index 0000000..4e3c1c9
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/NPC_test.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/Overworld.png b/sample-tilemap/src/commonMain/resources/gfx/Overworld.png
new file mode 100644
index 0000000..c03c380
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/Overworld.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/Overworld.tsx b/sample-tilemap/src/commonMain/resources/gfx/Overworld.tsx
new file mode 100644
index 0000000..d435fa6
--- /dev/null
+++ b/sample-tilemap/src/commonMain/resources/gfx/Overworld.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/sample-tilemap/src/commonMain/resources/gfx/cave.png b/sample-tilemap/src/commonMain/resources/gfx/cave.png
new file mode 100644
index 0000000..1df7b3e
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/cave.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/character.png b/sample-tilemap/src/commonMain/resources/gfx/character.png
new file mode 100644
index 0000000..a50ceb0
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/character.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/font.png b/sample-tilemap/src/commonMain/resources/gfx/font.png
new file mode 100644
index 0000000..0128151
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/font.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/log.png b/sample-tilemap/src/commonMain/resources/gfx/log.png
new file mode 100644
index 0000000..b952a9a
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/log.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/objects.png b/sample-tilemap/src/commonMain/resources/gfx/objects.png
new file mode 100644
index 0000000..f76813f
Binary files /dev/null and b/sample-tilemap/src/commonMain/resources/gfx/objects.png differ
diff --git a/sample-tilemap/src/commonMain/resources/gfx/sample.tmx b/sample-tilemap/src/commonMain/resources/gfx/sample.tmx
new file mode 100644
index 0000000..dc38e50
--- /dev/null
+++ b/sample-tilemap/src/commonMain/resources/gfx/sample.tmx
@@ -0,0 +1,212 @@
+
+