├── .gitattributes ├── .gitignore ├── README.md ├── assets ├── astronaut │ ├── back_01.png │ ├── back_02.png │ ├── back_03.png │ ├── back_04.png │ ├── back_05.png │ ├── back_06.png │ ├── front_01.png │ ├── front_02.png │ ├── front_03.png │ ├── front_04.png │ ├── front_05.png │ ├── front_06.png │ ├── idle_01.png │ ├── idle_02.png │ ├── idle_03.png │ ├── idle_04.png │ ├── idle_05.png │ ├── left_01.png │ ├── left_02.png │ ├── left_03.png │ ├── left_04.png │ ├── left_05.png │ ├── left_06.png │ ├── right_01.png │ ├── right_02.png │ ├── right_03.png │ ├── right_04.png │ ├── right_05.png │ └── right_06.png └── tiles.png ├── doc ├── add_animation.png ├── add_animation@2x.png ├── add_images.png ├── add_images@2x.png ├── astronaut_atlas.png ├── astronaut_atlas@2x.png ├── astronaut_go.png ├── astronaut_go@2x.png ├── building_blocks.png ├── building_blocks@2x.png ├── input_bindings.png ├── intro.png ├── main_collection.png ├── main_collection@2x.png ├── select_images.png └── select_images@2x.png ├── game.project ├── input └── game.input_binding └── main ├── astronaut.atlas ├── astronaut.go ├── astronaut.script ├── level.tilemap ├── main.collection └── sandtiles.tilesource /.gitattributes: -------------------------------------------------------------------------------- 1 | *.dae binary 2 | 3 | # Defold Protocol Buffer Text Files (https://github.com/github/linguist/issues/5091) 4 | *.animationset linguist-language=JSON5 5 | *.atlas linguist-language=JSON5 6 | *.camera linguist-language=JSON5 7 | *.collection linguist-language=JSON5 8 | *.collectionfactory linguist-language=JSON5 9 | *.collectionproxy linguist-language=JSON5 10 | *.collisionobject linguist-language=JSON5 11 | *.cubemap linguist-language=JSON5 12 | *.display_profiles linguist-language=JSON5 13 | *.factory linguist-language=JSON5 14 | *.font linguist-language=JSON5 15 | *.gamepads linguist-language=JSON5 16 | *.go linguist-language=JSON5 17 | *.gui linguist-language=JSON5 18 | *.input_binding linguist-language=JSON5 19 | *.label linguist-language=JSON5 20 | *.material linguist-language=JSON5 21 | *.mesh linguist-language=JSON5 22 | *.model linguist-language=JSON5 23 | *.particlefx linguist-language=JSON5 24 | *.render linguist-language=JSON5 25 | *.sound linguist-language=JSON5 26 | *.sprite linguist-language=JSON5 27 | *.spinemodel linguist-language=JSON5 28 | *.spinescene linguist-language=JSON5 29 | *.texture_profiles linguist-language=JSON5 30 | *.tilemap linguist-language=JSON5 31 | *.tilesource linguist-language=JSON5 32 | 33 | # Defold JSON Files 34 | *.buffer linguist-language=JSON 35 | 36 | # Defold GLSL Shaders 37 | *.fp linguist-language=GLSL 38 | *.vp linguist-language=GLSL 39 | 40 | # Defold Lua Files 41 | *.editor_script linguist-language=Lua 42 | *.render_script linguist-language=Lua 43 | *.script linguist-language=Lua 44 | *.gui_script linguist-language=Lua 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.editor_settings 2 | /.internal 3 | /build 4 | .externalToolBuilders 5 | .DS_Store 6 | Thumbs.db 7 | .lock-wscript 8 | *.pyc 9 | .project 10 | .cproject 11 | builtins -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Walking astronaut tutorial 2 | 3 | In this beginner's tutorial you will learn how to capture player input and make a character move and animate. Along the way you will get an introduction to the core building blocks in Defold: game objects, components and collections. 4 | 5 | This tutorial project comes preset with all assets that you need. Start by [running the game](defold://build) (Project ▸ Build) to get a feel for what's in here. 6 | 7 | ## The building blocks of a Defold game 8 | 9 | Open ["/main/main.collection"](defold://open?path=/main/main.collection) (locate the file in the *Assets* pane to the left and double click it.) 10 | 11 | 12 | 13 | What you see in the editor is a *Collection* file. When the Defold engine starts, it loads a *bootstrap collection* as specified in the "game.project" settings file. This particular collection file is this project's bootstrap collection, which is why you see the content of it when you run the game. This collection contains two *Game Objects*. And these two game objects each contain *Components*: 14 | 15 | 16 | 17 | *COLLECTION* 18 | : Collection files contain game objects and other collections (sub-collections). You organize your game objects by adding them to collection files. You use collections to build small things like a player character or a boss, and you use them to build big things like whole levels. 19 | 20 | *GAME OBJECT* 21 | : Game objects hold sprites, sounds, 3D models, tiles or scripts (programmed behavior). A game object has position, rotation and scale. You can write script code that manipulate these properties while the game is running. A typical game object is a bullet, a pickup object or a level loader. 22 | 23 | *COMPONENT* 24 | : Components are the things that are drawn on screen, make sounds or make interactions happen. Components do not exist on their own but are placed inside game objects. Some components have properties that can be manipulated in runtime and most components can be turned on and off (enabled and disabled). Many component types source their content from separate resource files, like atlas image files, sound files, animation files etc. 25 | 26 | ## What's in the main.collection file? 27 | 28 | Looking at the "main.collection" file, the editor shows the visual content of the collection in the center editor view. In the right hand *Outline* pane, the collection content is presented as a tree structure. There are two game objects in the collection: 29 | 30 | 1. The astronaut game object which has *Id* "astronaut". It contains a *Sprite* component and a *Script* component. The game object has been added to the main collection from a blueprint game object file named "/main/astronaut.go". 31 | 32 | 2. The background level game object which has *Id* "level". It contains a *Tilemap* component. This game object has been embedded directly in the collection file so there is no separate file. The tilemap component, however, sources its tilemap data from a separate file named "/main/level.tilemap". 33 | 34 | There is no difference between game objects embedded directly in a collection or ones that are based on blueprint files. If a game object exists in only one instance, there is no real advantage to using a blueprint file, but if you want to create many copies of the same object, blueprint files are extremely convenient since they allow you to change all instances at once. In the *Outline* pane the name of the file an object or component is created from is written in italics next to the object id. 35 | 36 | ## The astronaut game object 37 | 38 | Open ["/main/astronaut.go"](defold://open?path=/main/astronaut.go) to view the blueprint file that is used to create the astronaut instance in "main.collection". As with a collection, the editor shows the game object's content in the center editor view and the *Outline* view to the right shows the structure. This game object file consists of two components: 39 | 40 | 1. A *Script* component, based on the script file "/main/astronaut.script". 41 | 2. A *Sprite* component, which is embedded in place in the game object file. 42 | 43 | 44 | 45 | Click the sprite component to select it. The *Properties* view in the lower right corner now lists all properties that are associated with the sprite component. The sprite has its own *Id*, *Position* and *Rotation* properties. These are all relative to the game object that harbours the component. There are also properties that dictate what image or animation the sprite should display: 46 | 47 | *Image* 48 | : This property points to an image resource that is used as a source for the sprite's graphics. Image resources are *Atlas* or *Tilesource* files. *Atlas* files are collections of separate images that have been baked into a larger image for efficiency. Here, the property is set to the file "/main/astronaut.atlas". 49 | 50 | *Default Animation* 51 | : This property indicates which particular image or animation in the image resource should be used. Here, the property is set to the "idle" animation. 52 | 53 | [Run the game again](defold://build). Notice that the astronaut sprite is looping through an idle animation. Let's now have a look at how that animation is set up. 54 | 55 | ## Atlas animations 56 | 57 | Open the file ["/main/astronaut.atlas"](defold://open?path=/main/astronaut.atlas). The editor view in the center shows each image that has been added to the atlas. The *Outline* view shows all the images and how animations are organized. 58 | 59 | 60 | 61 | An *Animation Group* is a list of images that are played in a specified order at a specified playback speed. There is currently only one animation group present. It's called "idle" and consists of five separate images. Select the "idle" animation in the outline and choose View ▸ Play from the menu to preview the animation. You may have to select View ▸ Frame Selection to zoom the editor camera to cover the whole atlas. 62 | 63 | To start adding the walk animations to the astronaut, right click the root of the atlas outline and select Add Animation Group. 64 | 65 | 66 | 67 | Click the new animation group (named "New Animation") and give it the *Id* "left". Then right click the animation group and select Add Images... 68 | 69 | 70 | 71 | Type "left" in the top filter text field to see only images with the name "left" in them. Select all the images that appear (hold Shift and click) and confirm with OK. 72 | 73 | 74 | 75 | The new animation has 6 images in it. Select View ▸ Play from the menu to preview the animation. The speed of the animation is too high so reduce the *Fps* (frames per second) property of the "left" animation from 60 to 15. 76 | 77 | Repeat these last steps and add animations for walking "right", "front" and "back" to the atlas in the same way as you added the "left" animation. 78 | 79 | ## The astronaut script component 80 | 81 | Remember that the astronaut game object has a *Script* component based on the file "/main/astronaut.script"? Open ["/main/astronaut.script"](defold://open?path=/main/astronaut.script) to view the Lua script file. As you can see, the script file contains a set of empty functions. These are the *lifetime functions* of the astronaut: 82 | 83 | `init(self)` 84 | : This function is called when the component is initialized, before anything appears on the screen. You will use this function to set a few things up. 85 | 86 | `final(self)` 87 | : This function is called when the component is being removed: when the game object is deleted or right before the engine shuts down your game. 88 | 89 | `update(self, dt)` 90 | : This function is called once each frame. It is useful for doing manipulations and calculations that need to happen in real-time. You will use this function to move the game object based on input. 91 | 92 | `on_message(self, message_id, message, sender)` 93 | : This function is called each time a message is sent to the script component. Message passing is a central feature of Defold but we are not doing any in this tutorial. 94 | 95 | `on_input(self, action_id, action)` 96 | : This function is called each time an input action is sent to the script component. Input actions are defined in the file ["/input/game.input_binding"](defold://open?path=/input/game.input_binding). This project has bindings already set up for the arrow buttons: "left", "right", "front" and "back" and you will use this function to react to input. 97 | 98 | `on_reload(self)` 99 | : This function is called whenever the current script component is *hot-reloaded* into a running game. This is very useful to inspect or manipulate the state of a game object at reload to test things or do debugging. 100 | 101 | ## Programming the astronaut movement 102 | 103 | You are now ready to write a bit of Lua code to play the animations and to make the astronaut game object move. First, change the content of the `init()` function to the following: 104 | 105 | ```lua 106 | local speed = 150 -- [1] 107 | 108 | function init(self) 109 | msg.post(".", "acquire_input_focus") -- [2] 110 | self.dir = vmath.vector3() -- [3] 111 | end 112 | ``` 113 | 1. Define a local variable (constant) that holds the movement speed (in pixels/s). 114 | 2. Send a built in engine message to the current game object (".") telling it to listen to input. 115 | 3. Define a variable that is part of the current script component instance (`self`). The variable will hold the movement direction, expressed as a vector. It is initially zero. 116 | 117 | Second, change the content of the `on_input()` function: 118 | 119 | ```lua 120 | function on_input(self, action_id, action) 121 | if action_id == hash("front") then -- [1] 122 | self.dir.y = -1 123 | elseif action_id == hash("back") then 124 | self.dir.y = 1 125 | elseif action_id == hash("left") then -- [2] 126 | self.dir.x = -1 127 | elseif action_id == hash("right") then 128 | self.dir.x = 1 129 | end 130 | end 131 | ``` 132 | 1. Actions defined in the input binding file are sent in the `action_id` parameter. If the user presses the "front" or "back" button, set the Y component of the movement direction vector. 133 | 2. If the user presses the "left" or "right" button, set the X component of the movement direction vector. 134 | 135 | Note that if the player presses "front" and "left" at the same time, two calls will be done to `on_input()` and both the X and Y components of the direction vector will be altered. 136 | 137 | Third, change the content of the `update()` function: 138 | 139 | ```lua 140 | function update(self, dt) 141 | if vmath.length_sqr(self.dir) > 1 then -- [1] 142 | self.dir = vmath.normalize(self.dir) 143 | end 144 | local p = go.get_position() -- [2] 145 | go.set_position(p + self.dir * speed * dt) -- [3] 146 | self.dir = vmath.vector3() -- [4] 147 | end 148 | ``` 149 | 1. When the `update()` function is called, the engine has already processed all input, meaning that the direction vector is set. In the case of diagonal movement, the length of the movement vector is greater than 1. Normalizing the direction vector makes it length 1 and diagonal movement will have the same speed as horizontal and vertical movement. 150 | 2. Get the position of the current game object. The name `go` *does not* refer to the current game object. It is the name of the Lua module that contains all game object functions. 151 | 3. Set the position of the current game object to the old position plus the direction vector scaled with the speed constant and `dt`. Multiplying with `dt` makes the movement velocity independent of the update frequency. 152 | 4. Reset the direction vector since it is set each frame in `on_input`. 153 | 154 | [Run the game again](defold://build) and verify that movement works as expected. The astronaut should move in all 8 directions. 155 | 156 | ## Adding animations to the movement 157 | 158 | The final piece of the puzzle is to change the animation that is played depending on the movement direction. For that, you have to first add a variable that holds the current animation: 159 | 160 | ```lua 161 | function init(self) 162 | msg.post(".", "acquire_input_focus") 163 | self.dir = vmath.vector3() 164 | self.current_anim = nil -- [1] 165 | end 166 | ``` 167 | 1. Store the currently running animation. 168 | 169 | Then you need to add code in `update()` that changes animation based on direction: 170 | 171 | ```lua 172 | function update(self, dt) 173 | if vmath.length_sqr(self.dir) > 1 then 174 | self.dir = vmath.normalize(self.dir) 175 | end 176 | local p = go.get_position() 177 | go.set_position(p + self.dir * speed * dt) 178 | 179 | -- animate the astronaut 180 | 181 | local anim = hash("idle") -- [1] 182 | 183 | if self.dir.x > 0 then -- [2] 184 | anim = hash("right") 185 | elseif self.dir.x < 0 then 186 | anim = hash("left") 187 | elseif self.dir.y > 0 then 188 | anim = hash("back") 189 | elseif self.dir.y < 0 then 190 | anim = hash("front") 191 | end 192 | 193 | if anim ~= self.current_anim then -- [3] 194 | sprite.play_flipbook("#sprite", anim) -- [4] 195 | self.current_anim = anim -- [5] 196 | end 197 | 198 | -- done animating 199 | 200 | self.dir = vmath.vector3() 201 | end 202 | ``` 203 | 1. Local variable that starts with the default animation id. With no input, this is the animation you get. 204 | 2. Test against the movement direction and set the `anim` variable depending on the value of the X and Y component in the direction vector. 205 | 3. If `anim` is different than the current animation: 206 | 4. then play the new animation, 207 | 5. then set the current animation id to the id in `anim`. 208 | 209 | The test against the current animation is required, otherwise the code would restart the same animation over and over again each frame. Also note that there are no separate diagonal walk animations but the code uses "left" and "right" for the diagonals. 210 | 211 | [Run the game again](defold://build) and verify that the astronaut moves and animates correctly. 212 | 213 | **Congratulations! You have now finished this tutorial. We hope that you found it instructive.** 214 | 215 | Check out the [documentation pages](https://defold.com/learn) for more examples, tutorials, manuals and API docs. 216 | 217 | If you run into trouble, help is available in [our forum](https://forum.defold.com). 218 | 219 | Happy Defolding! 220 | 221 | 222 | ## The complete movement script 223 | 224 | ```lua 225 | local speed = 150 226 | 227 | function init(self) 228 | msg.post(".", "acquire_input_focus") 229 | self.dir = vmath.vector3() 230 | self.current_anim = nil 231 | end 232 | 233 | function update(self, dt) 234 | if vmath.length_sqr(self.dir) > 1 then 235 | self.dir = vmath.normalize(self.dir) 236 | end 237 | local p = go.get_position() 238 | go.set_position(p + self.dir * speed * dt) 239 | 240 | -- animate the astronaut 241 | 242 | local anim = hash("idle") 243 | 244 | if self.dir.x > 0 then 245 | anim = hash("right") 246 | elseif self.dir.x < 0 then 247 | anim = hash("left") 248 | elseif self.dir.y > 0 then 249 | anim = hash("back") 250 | elseif self.dir.y < 0 then 251 | anim = hash("front") 252 | end 253 | 254 | if anim ~= self.current_anim then 255 | sprite.play_flipbook("#sprite", anim) 256 | self.current_anim = anim 257 | end 258 | 259 | -- done animating 260 | 261 | self.dir = vmath.vector3() 262 | end 263 | 264 | function on_input(self, action_id, action) 265 | if action_id == hash("front") then 266 | self.dir.y = -1 267 | elseif action_id == hash("back") then 268 | self.dir.y = 1 269 | elseif action_id == hash("left") then 270 | self.dir.x = -1 271 | elseif action_id == hash("right") then 272 | self.dir.x = 1 273 | end 274 | end 275 | ``` 276 | 277 | --- 278 | -------------------------------------------------------------------------------- /assets/astronaut/back_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/back_01.png -------------------------------------------------------------------------------- /assets/astronaut/back_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/back_02.png -------------------------------------------------------------------------------- /assets/astronaut/back_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/back_03.png -------------------------------------------------------------------------------- /assets/astronaut/back_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/back_04.png -------------------------------------------------------------------------------- /assets/astronaut/back_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/back_05.png -------------------------------------------------------------------------------- /assets/astronaut/back_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/back_06.png -------------------------------------------------------------------------------- /assets/astronaut/front_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/front_01.png -------------------------------------------------------------------------------- /assets/astronaut/front_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/front_02.png -------------------------------------------------------------------------------- /assets/astronaut/front_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/front_03.png -------------------------------------------------------------------------------- /assets/astronaut/front_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/front_04.png -------------------------------------------------------------------------------- /assets/astronaut/front_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/front_05.png -------------------------------------------------------------------------------- /assets/astronaut/front_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/front_06.png -------------------------------------------------------------------------------- /assets/astronaut/idle_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/idle_01.png -------------------------------------------------------------------------------- /assets/astronaut/idle_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/idle_02.png -------------------------------------------------------------------------------- /assets/astronaut/idle_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/idle_03.png -------------------------------------------------------------------------------- /assets/astronaut/idle_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/idle_04.png -------------------------------------------------------------------------------- /assets/astronaut/idle_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/idle_05.png -------------------------------------------------------------------------------- /assets/astronaut/left_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/left_01.png -------------------------------------------------------------------------------- /assets/astronaut/left_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/left_02.png -------------------------------------------------------------------------------- /assets/astronaut/left_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/left_03.png -------------------------------------------------------------------------------- /assets/astronaut/left_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/left_04.png -------------------------------------------------------------------------------- /assets/astronaut/left_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/left_05.png -------------------------------------------------------------------------------- /assets/astronaut/left_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/left_06.png -------------------------------------------------------------------------------- /assets/astronaut/right_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/right_01.png -------------------------------------------------------------------------------- /assets/astronaut/right_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/right_02.png -------------------------------------------------------------------------------- /assets/astronaut/right_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/right_03.png -------------------------------------------------------------------------------- /assets/astronaut/right_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/right_04.png -------------------------------------------------------------------------------- /assets/astronaut/right_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/right_05.png -------------------------------------------------------------------------------- /assets/astronaut/right_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/astronaut/right_06.png -------------------------------------------------------------------------------- /assets/tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/assets/tiles.png -------------------------------------------------------------------------------- /doc/add_animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/add_animation.png -------------------------------------------------------------------------------- /doc/add_animation@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/add_animation@2x.png -------------------------------------------------------------------------------- /doc/add_images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/add_images.png -------------------------------------------------------------------------------- /doc/add_images@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/add_images@2x.png -------------------------------------------------------------------------------- /doc/astronaut_atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/astronaut_atlas.png -------------------------------------------------------------------------------- /doc/astronaut_atlas@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/astronaut_atlas@2x.png -------------------------------------------------------------------------------- /doc/astronaut_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/astronaut_go.png -------------------------------------------------------------------------------- /doc/astronaut_go@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/astronaut_go@2x.png -------------------------------------------------------------------------------- /doc/building_blocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/building_blocks.png -------------------------------------------------------------------------------- /doc/building_blocks@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/building_blocks@2x.png -------------------------------------------------------------------------------- /doc/input_bindings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/input_bindings.png -------------------------------------------------------------------------------- /doc/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/intro.png -------------------------------------------------------------------------------- /doc/main_collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/main_collection.png -------------------------------------------------------------------------------- /doc/main_collection@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/main_collection@2x.png -------------------------------------------------------------------------------- /doc/select_images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/select_images.png -------------------------------------------------------------------------------- /doc/select_images@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defold/tutorial-astronaut/fb4f85ec5b905948267feca4b85a0a445111e4d9/doc/select_images@2x.png -------------------------------------------------------------------------------- /game.project: -------------------------------------------------------------------------------- 1 | [bootstrap] 2 | main_collection = /main/main.collectionc 3 | 4 | [script] 5 | shared_state = 1 6 | 7 | [project] 8 | title = Astronaut walking 9 | 10 | [display] 11 | width = 1280 12 | height = 768 13 | 14 | -------------------------------------------------------------------------------- /input/game.input_binding: -------------------------------------------------------------------------------- 1 | key_trigger { 2 | input: KEY_DOWN 3 | action: "front" 4 | } 5 | key_trigger { 6 | input: KEY_UP 7 | action: "back" 8 | } 9 | key_trigger { 10 | input: KEY_LEFT 11 | action: "left" 12 | } 13 | key_trigger { 14 | input: KEY_RIGHT 15 | action: "right" 16 | } 17 | mouse_trigger { 18 | input: MOUSE_BUTTON_1 19 | action: "touch" 20 | } 21 | -------------------------------------------------------------------------------- /main/astronaut.atlas: -------------------------------------------------------------------------------- 1 | animations { 2 | id: "idle" 3 | images { 4 | image: "/assets/astronaut/idle_01.png" 5 | } 6 | images { 7 | image: "/assets/astronaut/idle_02.png" 8 | } 9 | images { 10 | image: "/assets/astronaut/idle_03.png" 11 | } 12 | images { 13 | image: "/assets/astronaut/idle_04.png" 14 | } 15 | images { 16 | image: "/assets/astronaut/idle_05.png" 17 | } 18 | playback: PLAYBACK_LOOP_FORWARD 19 | fps: 10 20 | flip_horizontal: 0 21 | flip_vertical: 0 22 | } 23 | margin: 0 24 | extrude_borders: 0 25 | inner_padding: 0 26 | -------------------------------------------------------------------------------- /main/astronaut.go: -------------------------------------------------------------------------------- 1 | components { 2 | id: "astronaut" 3 | component: "/main/astronaut.script" 4 | position { 5 | x: 0.0 6 | y: 0.0 7 | z: 0.0 8 | } 9 | rotation { 10 | x: 0.0 11 | y: 0.0 12 | z: 0.0 13 | w: 1.0 14 | } 15 | } 16 | embedded_components { 17 | id: "sprite" 18 | type: "sprite" 19 | data: "tile_set: \"/main/astronaut.atlas\"\n" 20 | "default_animation: \"idle\"\n" 21 | "material: \"/builtins/materials/sprite.material\"\n" 22 | "blend_mode: BLEND_MODE_ALPHA\n" 23 | "" 24 | position { 25 | x: 0.0 26 | y: 0.0 27 | z: 0.0 28 | } 29 | rotation { 30 | x: 0.0 31 | y: 0.0 32 | z: 0.0 33 | w: 1.0 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /main/astronaut.script: -------------------------------------------------------------------------------- 1 | function init(self) 2 | -- Add initialization code here 3 | -- Remove this function if not needed 4 | end 5 | 6 | function final(self) 7 | -- Add finalization code here 8 | -- Remove this function if not needed 9 | end 10 | 11 | function update(self, dt) 12 | -- Add update code here 13 | -- Remove this function if not needed 14 | end 15 | 16 | function on_message(self, message_id, message, sender) 17 | -- Add message-handling code here 18 | -- Remove this function if not needed 19 | end 20 | 21 | function on_input(self, action_id, action) 22 | -- Add input-handling code here 23 | -- Remove this function if not needed 24 | end 25 | 26 | function on_reload(self) 27 | -- Add reload-handling code here 28 | -- Remove this function if not needed 29 | end -------------------------------------------------------------------------------- /main/level.tilemap: -------------------------------------------------------------------------------- 1 | tile_set: "/main/sandtiles.tilesource" 2 | layers { 3 | id: "layer1" 4 | z: 0.0 5 | is_visible: 1 6 | cell { 7 | x: 0 8 | y: 0 9 | tile: 0 10 | h_flip: 0 11 | v_flip: 0 12 | } 13 | cell { 14 | x: 1 15 | y: 0 16 | tile: 0 17 | h_flip: 0 18 | v_flip: 0 19 | } 20 | cell { 21 | x: 2 22 | y: 0 23 | tile: 0 24 | h_flip: 0 25 | v_flip: 0 26 | } 27 | cell { 28 | x: 3 29 | y: 0 30 | tile: 0 31 | h_flip: 0 32 | v_flip: 0 33 | } 34 | cell { 35 | x: 4 36 | y: 0 37 | tile: 0 38 | h_flip: 0 39 | v_flip: 0 40 | } 41 | cell { 42 | x: 5 43 | y: 0 44 | tile: 0 45 | h_flip: 0 46 | v_flip: 0 47 | } 48 | cell { 49 | x: 6 50 | y: 0 51 | tile: 0 52 | h_flip: 0 53 | v_flip: 0 54 | } 55 | cell { 56 | x: 7 57 | y: 0 58 | tile: 0 59 | h_flip: 0 60 | v_flip: 0 61 | } 62 | cell { 63 | x: 8 64 | y: 0 65 | tile: 0 66 | h_flip: 0 67 | v_flip: 0 68 | } 69 | cell { 70 | x: 9 71 | y: 0 72 | tile: 0 73 | h_flip: 0 74 | v_flip: 0 75 | } 76 | cell { 77 | x: 10 78 | y: 0 79 | tile: 0 80 | h_flip: 0 81 | v_flip: 0 82 | } 83 | cell { 84 | x: 11 85 | y: 0 86 | tile: 0 87 | h_flip: 0 88 | v_flip: 0 89 | } 90 | cell { 91 | x: 12 92 | y: 0 93 | tile: 0 94 | h_flip: 0 95 | v_flip: 0 96 | } 97 | cell { 98 | x: 13 99 | y: 0 100 | tile: 0 101 | h_flip: 0 102 | v_flip: 0 103 | } 104 | cell { 105 | x: 14 106 | y: 0 107 | tile: 0 108 | h_flip: 0 109 | v_flip: 0 110 | } 111 | cell { 112 | x: 15 113 | y: 0 114 | tile: 0 115 | h_flip: 0 116 | v_flip: 0 117 | } 118 | cell { 119 | x: 16 120 | y: 0 121 | tile: 0 122 | h_flip: 0 123 | v_flip: 0 124 | } 125 | cell { 126 | x: 17 127 | y: 0 128 | tile: 0 129 | h_flip: 0 130 | v_flip: 0 131 | } 132 | cell { 133 | x: 18 134 | y: 0 135 | tile: 0 136 | h_flip: 0 137 | v_flip: 0 138 | } 139 | cell { 140 | x: 19 141 | y: 0 142 | tile: 0 143 | h_flip: 0 144 | v_flip: 0 145 | } 146 | cell { 147 | x: 0 148 | y: 1 149 | tile: 0 150 | h_flip: 0 151 | v_flip: 0 152 | } 153 | cell { 154 | x: 1 155 | y: 1 156 | tile: 3 157 | h_flip: 0 158 | v_flip: 0 159 | } 160 | cell { 161 | x: 2 162 | y: 1 163 | tile: 2 164 | h_flip: 0 165 | v_flip: 0 166 | } 167 | cell { 168 | x: 3 169 | y: 1 170 | tile: 2 171 | h_flip: 0 172 | v_flip: 0 173 | } 174 | cell { 175 | x: 4 176 | y: 1 177 | tile: 2 178 | h_flip: 0 179 | v_flip: 0 180 | } 181 | cell { 182 | x: 5 183 | y: 1 184 | tile: 2 185 | h_flip: 0 186 | v_flip: 0 187 | } 188 | cell { 189 | x: 6 190 | y: 1 191 | tile: 2 192 | h_flip: 0 193 | v_flip: 0 194 | } 195 | cell { 196 | x: 7 197 | y: 1 198 | tile: 2 199 | h_flip: 0 200 | v_flip: 0 201 | } 202 | cell { 203 | x: 8 204 | y: 1 205 | tile: 2 206 | h_flip: 0 207 | v_flip: 0 208 | } 209 | cell { 210 | x: 9 211 | y: 1 212 | tile: 2 213 | h_flip: 0 214 | v_flip: 0 215 | } 216 | cell { 217 | x: 10 218 | y: 1 219 | tile: 2 220 | h_flip: 0 221 | v_flip: 0 222 | } 223 | cell { 224 | x: 11 225 | y: 1 226 | tile: 2 227 | h_flip: 0 228 | v_flip: 0 229 | } 230 | cell { 231 | x: 12 232 | y: 1 233 | tile: 2 234 | h_flip: 0 235 | v_flip: 0 236 | } 237 | cell { 238 | x: 13 239 | y: 1 240 | tile: 2 241 | h_flip: 0 242 | v_flip: 0 243 | } 244 | cell { 245 | x: 14 246 | y: 1 247 | tile: 2 248 | h_flip: 0 249 | v_flip: 0 250 | } 251 | cell { 252 | x: 15 253 | y: 1 254 | tile: 2 255 | h_flip: 0 256 | v_flip: 0 257 | } 258 | cell { 259 | x: 16 260 | y: 1 261 | tile: 2 262 | h_flip: 0 263 | v_flip: 0 264 | } 265 | cell { 266 | x: 17 267 | y: 1 268 | tile: 2 269 | h_flip: 0 270 | v_flip: 0 271 | } 272 | cell { 273 | x: 18 274 | y: 1 275 | tile: 3 276 | h_flip: 0 277 | v_flip: 0 278 | } 279 | cell { 280 | x: 19 281 | y: 1 282 | tile: 0 283 | h_flip: 0 284 | v_flip: 0 285 | } 286 | cell { 287 | x: 0 288 | y: 2 289 | tile: 0 290 | h_flip: 0 291 | v_flip: 0 292 | } 293 | cell { 294 | x: 1 295 | y: 2 296 | tile: 2 297 | h_flip: 0 298 | v_flip: 0 299 | } 300 | cell { 301 | x: 2 302 | y: 2 303 | tile: 3 304 | h_flip: 0 305 | v_flip: 0 306 | } 307 | cell { 308 | x: 3 309 | y: 2 310 | tile: 3 311 | h_flip: 0 312 | v_flip: 0 313 | } 314 | cell { 315 | x: 4 316 | y: 2 317 | tile: 3 318 | h_flip: 0 319 | v_flip: 0 320 | } 321 | cell { 322 | x: 5 323 | y: 2 324 | tile: 3 325 | h_flip: 0 326 | v_flip: 0 327 | } 328 | cell { 329 | x: 6 330 | y: 2 331 | tile: 3 332 | h_flip: 0 333 | v_flip: 0 334 | } 335 | cell { 336 | x: 7 337 | y: 2 338 | tile: 3 339 | h_flip: 0 340 | v_flip: 0 341 | } 342 | cell { 343 | x: 8 344 | y: 2 345 | tile: 3 346 | h_flip: 0 347 | v_flip: 0 348 | } 349 | cell { 350 | x: 9 351 | y: 2 352 | tile: 3 353 | h_flip: 0 354 | v_flip: 0 355 | } 356 | cell { 357 | x: 10 358 | y: 2 359 | tile: 3 360 | h_flip: 0 361 | v_flip: 0 362 | } 363 | cell { 364 | x: 11 365 | y: 2 366 | tile: 3 367 | h_flip: 0 368 | v_flip: 0 369 | } 370 | cell { 371 | x: 12 372 | y: 2 373 | tile: 3 374 | h_flip: 0 375 | v_flip: 0 376 | } 377 | cell { 378 | x: 13 379 | y: 2 380 | tile: 3 381 | h_flip: 0 382 | v_flip: 0 383 | } 384 | cell { 385 | x: 14 386 | y: 2 387 | tile: 3 388 | h_flip: 0 389 | v_flip: 0 390 | } 391 | cell { 392 | x: 15 393 | y: 2 394 | tile: 3 395 | h_flip: 0 396 | v_flip: 0 397 | } 398 | cell { 399 | x: 16 400 | y: 2 401 | tile: 3 402 | h_flip: 0 403 | v_flip: 0 404 | } 405 | cell { 406 | x: 17 407 | y: 2 408 | tile: 3 409 | h_flip: 0 410 | v_flip: 0 411 | } 412 | cell { 413 | x: 18 414 | y: 2 415 | tile: 2 416 | h_flip: 0 417 | v_flip: 0 418 | } 419 | cell { 420 | x: 19 421 | y: 2 422 | tile: 0 423 | h_flip: 0 424 | v_flip: 0 425 | } 426 | cell { 427 | x: 0 428 | y: 3 429 | tile: 0 430 | h_flip: 0 431 | v_flip: 0 432 | } 433 | cell { 434 | x: 1 435 | y: 3 436 | tile: 2 437 | h_flip: 0 438 | v_flip: 0 439 | } 440 | cell { 441 | x: 2 442 | y: 3 443 | tile: 3 444 | h_flip: 0 445 | v_flip: 0 446 | } 447 | cell { 448 | x: 3 449 | y: 3 450 | tile: 1 451 | h_flip: 0 452 | v_flip: 0 453 | } 454 | cell { 455 | x: 4 456 | y: 3 457 | tile: 2 458 | h_flip: 0 459 | v_flip: 0 460 | } 461 | cell { 462 | x: 5 463 | y: 3 464 | tile: 1 465 | h_flip: 0 466 | v_flip: 0 467 | } 468 | cell { 469 | x: 6 470 | y: 3 471 | tile: 2 472 | h_flip: 0 473 | v_flip: 0 474 | } 475 | cell { 476 | x: 7 477 | y: 3 478 | tile: 1 479 | h_flip: 0 480 | v_flip: 0 481 | } 482 | cell { 483 | x: 8 484 | y: 3 485 | tile: 2 486 | h_flip: 0 487 | v_flip: 0 488 | } 489 | cell { 490 | x: 9 491 | y: 3 492 | tile: 1 493 | h_flip: 0 494 | v_flip: 0 495 | } 496 | cell { 497 | x: 10 498 | y: 3 499 | tile: 2 500 | h_flip: 0 501 | v_flip: 0 502 | } 503 | cell { 504 | x: 11 505 | y: 3 506 | tile: 1 507 | h_flip: 0 508 | v_flip: 0 509 | } 510 | cell { 511 | x: 12 512 | y: 3 513 | tile: 2 514 | h_flip: 0 515 | v_flip: 0 516 | } 517 | cell { 518 | x: 13 519 | y: 3 520 | tile: 1 521 | h_flip: 0 522 | v_flip: 0 523 | } 524 | cell { 525 | x: 14 526 | y: 3 527 | tile: 2 528 | h_flip: 0 529 | v_flip: 0 530 | } 531 | cell { 532 | x: 15 533 | y: 3 534 | tile: 1 535 | h_flip: 0 536 | v_flip: 0 537 | } 538 | cell { 539 | x: 16 540 | y: 3 541 | tile: 2 542 | h_flip: 0 543 | v_flip: 0 544 | } 545 | cell { 546 | x: 17 547 | y: 3 548 | tile: 3 549 | h_flip: 0 550 | v_flip: 0 551 | } 552 | cell { 553 | x: 18 554 | y: 3 555 | tile: 2 556 | h_flip: 0 557 | v_flip: 0 558 | } 559 | cell { 560 | x: 19 561 | y: 3 562 | tile: 0 563 | h_flip: 0 564 | v_flip: 0 565 | } 566 | cell { 567 | x: 0 568 | y: 4 569 | tile: 0 570 | h_flip: 0 571 | v_flip: 0 572 | } 573 | cell { 574 | x: 1 575 | y: 4 576 | tile: 2 577 | h_flip: 0 578 | v_flip: 0 579 | } 580 | cell { 581 | x: 2 582 | y: 4 583 | tile: 3 584 | h_flip: 0 585 | v_flip: 0 586 | } 587 | cell { 588 | x: 3 589 | y: 4 590 | tile: 2 591 | h_flip: 0 592 | v_flip: 0 593 | } 594 | cell { 595 | x: 4 596 | y: 4 597 | tile: 3 598 | h_flip: 0 599 | v_flip: 0 600 | } 601 | cell { 602 | x: 5 603 | y: 4 604 | tile: 2 605 | h_flip: 0 606 | v_flip: 0 607 | } 608 | cell { 609 | x: 6 610 | y: 4 611 | tile: 3 612 | h_flip: 0 613 | v_flip: 0 614 | } 615 | cell { 616 | x: 7 617 | y: 4 618 | tile: 2 619 | h_flip: 0 620 | v_flip: 0 621 | } 622 | cell { 623 | x: 8 624 | y: 4 625 | tile: 3 626 | h_flip: 0 627 | v_flip: 0 628 | } 629 | cell { 630 | x: 9 631 | y: 4 632 | tile: 2 633 | h_flip: 0 634 | v_flip: 0 635 | } 636 | cell { 637 | x: 10 638 | y: 4 639 | tile: 2 640 | h_flip: 0 641 | v_flip: 0 642 | } 643 | cell { 644 | x: 11 645 | y: 4 646 | tile: 3 647 | h_flip: 0 648 | v_flip: 0 649 | } 650 | cell { 651 | x: 12 652 | y: 4 653 | tile: 2 654 | h_flip: 0 655 | v_flip: 0 656 | } 657 | cell { 658 | x: 13 659 | y: 4 660 | tile: 3 661 | h_flip: 0 662 | v_flip: 0 663 | } 664 | cell { 665 | x: 14 666 | y: 4 667 | tile: 2 668 | h_flip: 0 669 | v_flip: 0 670 | } 671 | cell { 672 | x: 15 673 | y: 4 674 | tile: 3 675 | h_flip: 0 676 | v_flip: 0 677 | } 678 | cell { 679 | x: 16 680 | y: 4 681 | tile: 1 682 | h_flip: 0 683 | v_flip: 0 684 | } 685 | cell { 686 | x: 17 687 | y: 4 688 | tile: 3 689 | h_flip: 0 690 | v_flip: 0 691 | } 692 | cell { 693 | x: 18 694 | y: 4 695 | tile: 2 696 | h_flip: 0 697 | v_flip: 0 698 | } 699 | cell { 700 | x: 19 701 | y: 4 702 | tile: 0 703 | h_flip: 0 704 | v_flip: 0 705 | } 706 | cell { 707 | x: 0 708 | y: 5 709 | tile: 0 710 | h_flip: 0 711 | v_flip: 0 712 | } 713 | cell { 714 | x: 1 715 | y: 5 716 | tile: 2 717 | h_flip: 0 718 | v_flip: 0 719 | } 720 | cell { 721 | x: 2 722 | y: 5 723 | tile: 3 724 | h_flip: 0 725 | v_flip: 0 726 | } 727 | cell { 728 | x: 3 729 | y: 5 730 | tile: 1 731 | h_flip: 0 732 | v_flip: 0 733 | } 734 | cell { 735 | x: 4 736 | y: 5 737 | tile: 2 738 | h_flip: 0 739 | v_flip: 0 740 | } 741 | cell { 742 | x: 5 743 | y: 5 744 | tile: 3 745 | h_flip: 0 746 | v_flip: 0 747 | } 748 | cell { 749 | x: 6 750 | y: 5 751 | tile: 2 752 | h_flip: 0 753 | v_flip: 0 754 | } 755 | cell { 756 | x: 7 757 | y: 5 758 | tile: 3 759 | h_flip: 0 760 | v_flip: 0 761 | } 762 | cell { 763 | x: 8 764 | y: 5 765 | tile: 2 766 | h_flip: 0 767 | v_flip: 0 768 | } 769 | cell { 770 | x: 9 771 | y: 5 772 | tile: 3 773 | h_flip: 0 774 | v_flip: 0 775 | } 776 | cell { 777 | x: 10 778 | y: 5 779 | tile: 3 780 | h_flip: 0 781 | v_flip: 0 782 | } 783 | cell { 784 | x: 11 785 | y: 5 786 | tile: 2 787 | h_flip: 0 788 | v_flip: 0 789 | } 790 | cell { 791 | x: 12 792 | y: 5 793 | tile: 3 794 | h_flip: 0 795 | v_flip: 0 796 | } 797 | cell { 798 | x: 13 799 | y: 5 800 | tile: 2 801 | h_flip: 0 802 | v_flip: 0 803 | } 804 | cell { 805 | x: 14 806 | y: 5 807 | tile: 3 808 | h_flip: 0 809 | v_flip: 0 810 | } 811 | cell { 812 | x: 15 813 | y: 5 814 | tile: 2 815 | h_flip: 0 816 | v_flip: 0 817 | } 818 | cell { 819 | x: 16 820 | y: 5 821 | tile: 2 822 | h_flip: 0 823 | v_flip: 0 824 | } 825 | cell { 826 | x: 17 827 | y: 5 828 | tile: 3 829 | h_flip: 0 830 | v_flip: 0 831 | } 832 | cell { 833 | x: 18 834 | y: 5 835 | tile: 2 836 | h_flip: 0 837 | v_flip: 0 838 | } 839 | cell { 840 | x: 19 841 | y: 5 842 | tile: 0 843 | h_flip: 0 844 | v_flip: 0 845 | } 846 | cell { 847 | x: 0 848 | y: 6 849 | tile: 0 850 | h_flip: 0 851 | v_flip: 0 852 | } 853 | cell { 854 | x: 1 855 | y: 6 856 | tile: 2 857 | h_flip: 0 858 | v_flip: 0 859 | } 860 | cell { 861 | x: 2 862 | y: 6 863 | tile: 3 864 | h_flip: 0 865 | v_flip: 0 866 | } 867 | cell { 868 | x: 3 869 | y: 6 870 | tile: 2 871 | h_flip: 0 872 | v_flip: 0 873 | } 874 | cell { 875 | x: 4 876 | y: 6 877 | tile: 2 878 | h_flip: 0 879 | v_flip: 0 880 | } 881 | cell { 882 | x: 5 883 | y: 6 884 | tile: 3 885 | h_flip: 0 886 | v_flip: 0 887 | } 888 | cell { 889 | x: 6 890 | y: 6 891 | tile: 2 892 | h_flip: 0 893 | v_flip: 0 894 | } 895 | cell { 896 | x: 7 897 | y: 6 898 | tile: 3 899 | h_flip: 0 900 | v_flip: 0 901 | } 902 | cell { 903 | x: 8 904 | y: 6 905 | tile: 2 906 | h_flip: 0 907 | v_flip: 0 908 | } 909 | cell { 910 | x: 9 911 | y: 6 912 | tile: 3 913 | h_flip: 0 914 | v_flip: 0 915 | } 916 | cell { 917 | x: 10 918 | y: 6 919 | tile: 3 920 | h_flip: 0 921 | v_flip: 0 922 | } 923 | cell { 924 | x: 11 925 | y: 6 926 | tile: 2 927 | h_flip: 0 928 | v_flip: 0 929 | } 930 | cell { 931 | x: 12 932 | y: 6 933 | tile: 3 934 | h_flip: 0 935 | v_flip: 0 936 | } 937 | cell { 938 | x: 13 939 | y: 6 940 | tile: 2 941 | h_flip: 0 942 | v_flip: 0 943 | } 944 | cell { 945 | x: 14 946 | y: 6 947 | tile: 3 948 | h_flip: 0 949 | v_flip: 0 950 | } 951 | cell { 952 | x: 15 953 | y: 6 954 | tile: 2 955 | h_flip: 0 956 | v_flip: 0 957 | } 958 | cell { 959 | x: 16 960 | y: 6 961 | tile: 1 962 | h_flip: 0 963 | v_flip: 0 964 | } 965 | cell { 966 | x: 17 967 | y: 6 968 | tile: 3 969 | h_flip: 0 970 | v_flip: 0 971 | } 972 | cell { 973 | x: 18 974 | y: 6 975 | tile: 2 976 | h_flip: 0 977 | v_flip: 0 978 | } 979 | cell { 980 | x: 19 981 | y: 6 982 | tile: 0 983 | h_flip: 0 984 | v_flip: 0 985 | } 986 | cell { 987 | x: 0 988 | y: 7 989 | tile: 0 990 | h_flip: 0 991 | v_flip: 0 992 | } 993 | cell { 994 | x: 1 995 | y: 7 996 | tile: 2 997 | h_flip: 0 998 | v_flip: 0 999 | } 1000 | cell { 1001 | x: 2 1002 | y: 7 1003 | tile: 3 1004 | h_flip: 0 1005 | v_flip: 0 1006 | } 1007 | cell { 1008 | x: 3 1009 | y: 7 1010 | tile: 1 1011 | h_flip: 0 1012 | v_flip: 0 1013 | } 1014 | cell { 1015 | x: 4 1016 | y: 7 1017 | tile: 3 1018 | h_flip: 0 1019 | v_flip: 0 1020 | } 1021 | cell { 1022 | x: 5 1023 | y: 7 1024 | tile: 2 1025 | h_flip: 0 1026 | v_flip: 0 1027 | } 1028 | cell { 1029 | x: 6 1030 | y: 7 1031 | tile: 3 1032 | h_flip: 0 1033 | v_flip: 0 1034 | } 1035 | cell { 1036 | x: 7 1037 | y: 7 1038 | tile: 2 1039 | h_flip: 0 1040 | v_flip: 0 1041 | } 1042 | cell { 1043 | x: 8 1044 | y: 7 1045 | tile: 3 1046 | h_flip: 0 1047 | v_flip: 0 1048 | } 1049 | cell { 1050 | x: 9 1051 | y: 7 1052 | tile: 2 1053 | h_flip: 0 1054 | v_flip: 0 1055 | } 1056 | cell { 1057 | x: 10 1058 | y: 7 1059 | tile: 2 1060 | h_flip: 0 1061 | v_flip: 0 1062 | } 1063 | cell { 1064 | x: 11 1065 | y: 7 1066 | tile: 3 1067 | h_flip: 0 1068 | v_flip: 0 1069 | } 1070 | cell { 1071 | x: 12 1072 | y: 7 1073 | tile: 2 1074 | h_flip: 0 1075 | v_flip: 0 1076 | } 1077 | cell { 1078 | x: 13 1079 | y: 7 1080 | tile: 3 1081 | h_flip: 0 1082 | v_flip: 0 1083 | } 1084 | cell { 1085 | x: 14 1086 | y: 7 1087 | tile: 2 1088 | h_flip: 0 1089 | v_flip: 0 1090 | } 1091 | cell { 1092 | x: 15 1093 | y: 7 1094 | tile: 3 1095 | h_flip: 0 1096 | v_flip: 0 1097 | } 1098 | cell { 1099 | x: 16 1100 | y: 7 1101 | tile: 2 1102 | h_flip: 0 1103 | v_flip: 0 1104 | } 1105 | cell { 1106 | x: 17 1107 | y: 7 1108 | tile: 3 1109 | h_flip: 0 1110 | v_flip: 0 1111 | } 1112 | cell { 1113 | x: 18 1114 | y: 7 1115 | tile: 2 1116 | h_flip: 0 1117 | v_flip: 0 1118 | } 1119 | cell { 1120 | x: 19 1121 | y: 7 1122 | tile: 0 1123 | h_flip: 0 1124 | v_flip: 0 1125 | } 1126 | cell { 1127 | x: 0 1128 | y: 8 1129 | tile: 0 1130 | h_flip: 0 1131 | v_flip: 0 1132 | } 1133 | cell { 1134 | x: 1 1135 | y: 8 1136 | tile: 2 1137 | h_flip: 0 1138 | v_flip: 0 1139 | } 1140 | cell { 1141 | x: 2 1142 | y: 8 1143 | tile: 3 1144 | h_flip: 0 1145 | v_flip: 0 1146 | } 1147 | cell { 1148 | x: 3 1149 | y: 8 1150 | tile: 2 1151 | h_flip: 0 1152 | v_flip: 0 1153 | } 1154 | cell { 1155 | x: 4 1156 | y: 8 1157 | tile: 1 1158 | h_flip: 0 1159 | v_flip: 0 1160 | } 1161 | cell { 1162 | x: 5 1163 | y: 8 1164 | tile: 2 1165 | h_flip: 0 1166 | v_flip: 0 1167 | } 1168 | cell { 1169 | x: 6 1170 | y: 8 1171 | tile: 1 1172 | h_flip: 0 1173 | v_flip: 0 1174 | } 1175 | cell { 1176 | x: 7 1177 | y: 8 1178 | tile: 2 1179 | h_flip: 0 1180 | v_flip: 0 1181 | } 1182 | cell { 1183 | x: 8 1184 | y: 8 1185 | tile: 1 1186 | h_flip: 0 1187 | v_flip: 0 1188 | } 1189 | cell { 1190 | x: 9 1191 | y: 8 1192 | tile: 2 1193 | h_flip: 0 1194 | v_flip: 0 1195 | } 1196 | cell { 1197 | x: 10 1198 | y: 8 1199 | tile: 1 1200 | h_flip: 0 1201 | v_flip: 0 1202 | } 1203 | cell { 1204 | x: 11 1205 | y: 8 1206 | tile: 2 1207 | h_flip: 0 1208 | v_flip: 0 1209 | } 1210 | cell { 1211 | x: 12 1212 | y: 8 1213 | tile: 1 1214 | h_flip: 0 1215 | v_flip: 0 1216 | } 1217 | cell { 1218 | x: 13 1219 | y: 8 1220 | tile: 2 1221 | h_flip: 0 1222 | v_flip: 0 1223 | } 1224 | cell { 1225 | x: 14 1226 | y: 8 1227 | tile: 1 1228 | h_flip: 0 1229 | v_flip: 0 1230 | } 1231 | cell { 1232 | x: 15 1233 | y: 8 1234 | tile: 2 1235 | h_flip: 0 1236 | v_flip: 0 1237 | } 1238 | cell { 1239 | x: 16 1240 | y: 8 1241 | tile: 1 1242 | h_flip: 0 1243 | v_flip: 0 1244 | } 1245 | cell { 1246 | x: 17 1247 | y: 8 1248 | tile: 3 1249 | h_flip: 0 1250 | v_flip: 0 1251 | } 1252 | cell { 1253 | x: 18 1254 | y: 8 1255 | tile: 2 1256 | h_flip: 0 1257 | v_flip: 0 1258 | } 1259 | cell { 1260 | x: 19 1261 | y: 8 1262 | tile: 0 1263 | h_flip: 0 1264 | v_flip: 0 1265 | } 1266 | cell { 1267 | x: 0 1268 | y: 9 1269 | tile: 0 1270 | h_flip: 0 1271 | v_flip: 0 1272 | } 1273 | cell { 1274 | x: 1 1275 | y: 9 1276 | tile: 2 1277 | h_flip: 0 1278 | v_flip: 0 1279 | } 1280 | cell { 1281 | x: 2 1282 | y: 9 1283 | tile: 3 1284 | h_flip: 0 1285 | v_flip: 0 1286 | } 1287 | cell { 1288 | x: 3 1289 | y: 9 1290 | tile: 3 1291 | h_flip: 0 1292 | v_flip: 0 1293 | } 1294 | cell { 1295 | x: 4 1296 | y: 9 1297 | tile: 3 1298 | h_flip: 0 1299 | v_flip: 0 1300 | } 1301 | cell { 1302 | x: 5 1303 | y: 9 1304 | tile: 3 1305 | h_flip: 0 1306 | v_flip: 0 1307 | } 1308 | cell { 1309 | x: 6 1310 | y: 9 1311 | tile: 3 1312 | h_flip: 0 1313 | v_flip: 0 1314 | } 1315 | cell { 1316 | x: 7 1317 | y: 9 1318 | tile: 3 1319 | h_flip: 0 1320 | v_flip: 0 1321 | } 1322 | cell { 1323 | x: 8 1324 | y: 9 1325 | tile: 3 1326 | h_flip: 0 1327 | v_flip: 0 1328 | } 1329 | cell { 1330 | x: 9 1331 | y: 9 1332 | tile: 3 1333 | h_flip: 0 1334 | v_flip: 0 1335 | } 1336 | cell { 1337 | x: 10 1338 | y: 9 1339 | tile: 3 1340 | h_flip: 0 1341 | v_flip: 0 1342 | } 1343 | cell { 1344 | x: 11 1345 | y: 9 1346 | tile: 3 1347 | h_flip: 0 1348 | v_flip: 0 1349 | } 1350 | cell { 1351 | x: 12 1352 | y: 9 1353 | tile: 3 1354 | h_flip: 0 1355 | v_flip: 0 1356 | } 1357 | cell { 1358 | x: 13 1359 | y: 9 1360 | tile: 3 1361 | h_flip: 0 1362 | v_flip: 0 1363 | } 1364 | cell { 1365 | x: 14 1366 | y: 9 1367 | tile: 3 1368 | h_flip: 0 1369 | v_flip: 0 1370 | } 1371 | cell { 1372 | x: 15 1373 | y: 9 1374 | tile: 3 1375 | h_flip: 0 1376 | v_flip: 0 1377 | } 1378 | cell { 1379 | x: 16 1380 | y: 9 1381 | tile: 3 1382 | h_flip: 0 1383 | v_flip: 0 1384 | } 1385 | cell { 1386 | x: 17 1387 | y: 9 1388 | tile: 3 1389 | h_flip: 0 1390 | v_flip: 0 1391 | } 1392 | cell { 1393 | x: 18 1394 | y: 9 1395 | tile: 2 1396 | h_flip: 0 1397 | v_flip: 0 1398 | } 1399 | cell { 1400 | x: 19 1401 | y: 9 1402 | tile: 0 1403 | h_flip: 0 1404 | v_flip: 0 1405 | } 1406 | cell { 1407 | x: 0 1408 | y: 10 1409 | tile: 0 1410 | h_flip: 0 1411 | v_flip: 0 1412 | } 1413 | cell { 1414 | x: 1 1415 | y: 10 1416 | tile: 3 1417 | h_flip: 0 1418 | v_flip: 0 1419 | } 1420 | cell { 1421 | x: 2 1422 | y: 10 1423 | tile: 2 1424 | h_flip: 0 1425 | v_flip: 0 1426 | } 1427 | cell { 1428 | x: 3 1429 | y: 10 1430 | tile: 2 1431 | h_flip: 0 1432 | v_flip: 0 1433 | } 1434 | cell { 1435 | x: 4 1436 | y: 10 1437 | tile: 2 1438 | h_flip: 0 1439 | v_flip: 0 1440 | } 1441 | cell { 1442 | x: 5 1443 | y: 10 1444 | tile: 2 1445 | h_flip: 0 1446 | v_flip: 0 1447 | } 1448 | cell { 1449 | x: 6 1450 | y: 10 1451 | tile: 2 1452 | h_flip: 0 1453 | v_flip: 0 1454 | } 1455 | cell { 1456 | x: 7 1457 | y: 10 1458 | tile: 2 1459 | h_flip: 0 1460 | v_flip: 0 1461 | } 1462 | cell { 1463 | x: 8 1464 | y: 10 1465 | tile: 2 1466 | h_flip: 0 1467 | v_flip: 0 1468 | } 1469 | cell { 1470 | x: 9 1471 | y: 10 1472 | tile: 2 1473 | h_flip: 0 1474 | v_flip: 0 1475 | } 1476 | cell { 1477 | x: 10 1478 | y: 10 1479 | tile: 2 1480 | h_flip: 0 1481 | v_flip: 0 1482 | } 1483 | cell { 1484 | x: 11 1485 | y: 10 1486 | tile: 2 1487 | h_flip: 0 1488 | v_flip: 0 1489 | } 1490 | cell { 1491 | x: 12 1492 | y: 10 1493 | tile: 2 1494 | h_flip: 0 1495 | v_flip: 0 1496 | } 1497 | cell { 1498 | x: 13 1499 | y: 10 1500 | tile: 2 1501 | h_flip: 0 1502 | v_flip: 0 1503 | } 1504 | cell { 1505 | x: 14 1506 | y: 10 1507 | tile: 2 1508 | h_flip: 0 1509 | v_flip: 0 1510 | } 1511 | cell { 1512 | x: 15 1513 | y: 10 1514 | tile: 2 1515 | h_flip: 0 1516 | v_flip: 0 1517 | } 1518 | cell { 1519 | x: 16 1520 | y: 10 1521 | tile: 2 1522 | h_flip: 0 1523 | v_flip: 0 1524 | } 1525 | cell { 1526 | x: 17 1527 | y: 10 1528 | tile: 2 1529 | h_flip: 0 1530 | v_flip: 0 1531 | } 1532 | cell { 1533 | x: 18 1534 | y: 10 1535 | tile: 3 1536 | h_flip: 0 1537 | v_flip: 0 1538 | } 1539 | cell { 1540 | x: 19 1541 | y: 10 1542 | tile: 0 1543 | h_flip: 0 1544 | v_flip: 0 1545 | } 1546 | cell { 1547 | x: 0 1548 | y: 11 1549 | tile: 0 1550 | h_flip: 0 1551 | v_flip: 0 1552 | } 1553 | cell { 1554 | x: 1 1555 | y: 11 1556 | tile: 0 1557 | h_flip: 0 1558 | v_flip: 0 1559 | } 1560 | cell { 1561 | x: 2 1562 | y: 11 1563 | tile: 0 1564 | h_flip: 0 1565 | v_flip: 0 1566 | } 1567 | cell { 1568 | x: 3 1569 | y: 11 1570 | tile: 0 1571 | h_flip: 0 1572 | v_flip: 0 1573 | } 1574 | cell { 1575 | x: 4 1576 | y: 11 1577 | tile: 0 1578 | h_flip: 0 1579 | v_flip: 0 1580 | } 1581 | cell { 1582 | x: 5 1583 | y: 11 1584 | tile: 0 1585 | h_flip: 0 1586 | v_flip: 0 1587 | } 1588 | cell { 1589 | x: 6 1590 | y: 11 1591 | tile: 0 1592 | h_flip: 0 1593 | v_flip: 0 1594 | } 1595 | cell { 1596 | x: 7 1597 | y: 11 1598 | tile: 0 1599 | h_flip: 0 1600 | v_flip: 0 1601 | } 1602 | cell { 1603 | x: 8 1604 | y: 11 1605 | tile: 0 1606 | h_flip: 0 1607 | v_flip: 0 1608 | } 1609 | cell { 1610 | x: 9 1611 | y: 11 1612 | tile: 0 1613 | h_flip: 0 1614 | v_flip: 0 1615 | } 1616 | cell { 1617 | x: 10 1618 | y: 11 1619 | tile: 0 1620 | h_flip: 0 1621 | v_flip: 0 1622 | } 1623 | cell { 1624 | x: 11 1625 | y: 11 1626 | tile: 0 1627 | h_flip: 0 1628 | v_flip: 0 1629 | } 1630 | cell { 1631 | x: 12 1632 | y: 11 1633 | tile: 0 1634 | h_flip: 0 1635 | v_flip: 0 1636 | } 1637 | cell { 1638 | x: 13 1639 | y: 11 1640 | tile: 0 1641 | h_flip: 0 1642 | v_flip: 0 1643 | } 1644 | cell { 1645 | x: 14 1646 | y: 11 1647 | tile: 0 1648 | h_flip: 0 1649 | v_flip: 0 1650 | } 1651 | cell { 1652 | x: 15 1653 | y: 11 1654 | tile: 0 1655 | h_flip: 0 1656 | v_flip: 0 1657 | } 1658 | cell { 1659 | x: 16 1660 | y: 11 1661 | tile: 0 1662 | h_flip: 0 1663 | v_flip: 0 1664 | } 1665 | cell { 1666 | x: 17 1667 | y: 11 1668 | tile: 0 1669 | h_flip: 0 1670 | v_flip: 0 1671 | } 1672 | cell { 1673 | x: 18 1674 | y: 11 1675 | tile: 0 1676 | h_flip: 0 1677 | v_flip: 0 1678 | } 1679 | cell { 1680 | x: 19 1681 | y: 11 1682 | tile: 0 1683 | h_flip: 0 1684 | v_flip: 0 1685 | } 1686 | } 1687 | layers { 1688 | id: "layer" 1689 | z: 0.1 1690 | is_visible: 1 1691 | cell { 1692 | x: 1 1693 | y: 1 1694 | tile: 5 1695 | h_flip: 0 1696 | v_flip: 0 1697 | } 1698 | cell { 1699 | x: 2 1700 | y: 1 1701 | tile: 5 1702 | h_flip: 0 1703 | v_flip: 0 1704 | } 1705 | cell { 1706 | x: 3 1707 | y: 1 1708 | tile: 4 1709 | h_flip: 0 1710 | v_flip: 0 1711 | } 1712 | cell { 1713 | x: 4 1714 | y: 1 1715 | tile: 4 1716 | h_flip: 0 1717 | v_flip: 0 1718 | } 1719 | cell { 1720 | x: 5 1721 | y: 1 1722 | tile: 5 1723 | h_flip: 0 1724 | v_flip: 0 1725 | } 1726 | cell { 1727 | x: 6 1728 | y: 1 1729 | tile: 4 1730 | h_flip: 0 1731 | v_flip: 0 1732 | } 1733 | cell { 1734 | x: 10 1735 | y: 1 1736 | tile: 4 1737 | h_flip: 0 1738 | v_flip: 0 1739 | } 1740 | cell { 1741 | x: 11 1742 | y: 1 1743 | tile: 5 1744 | h_flip: 0 1745 | v_flip: 0 1746 | } 1747 | cell { 1748 | x: 14 1749 | y: 1 1750 | tile: 4 1751 | h_flip: 0 1752 | v_flip: 0 1753 | } 1754 | cell { 1755 | x: 15 1756 | y: 1 1757 | tile: 4 1758 | h_flip: 0 1759 | v_flip: 0 1760 | } 1761 | cell { 1762 | x: 16 1763 | y: 1 1764 | tile: 5 1765 | h_flip: 0 1766 | v_flip: 0 1767 | } 1768 | cell { 1769 | x: 17 1770 | y: 1 1771 | tile: 4 1772 | h_flip: 0 1773 | v_flip: 0 1774 | } 1775 | cell { 1776 | x: 18 1777 | y: 1 1778 | tile: 4 1779 | h_flip: 0 1780 | v_flip: 0 1781 | } 1782 | cell { 1783 | x: 1 1784 | y: 2 1785 | tile: 4 1786 | h_flip: 0 1787 | v_flip: 0 1788 | } 1789 | cell { 1790 | x: 3 1791 | y: 2 1792 | tile: 4 1793 | h_flip: 0 1794 | v_flip: 0 1795 | } 1796 | cell { 1797 | x: 7 1798 | y: 2 1799 | tile: 5 1800 | h_flip: 0 1801 | v_flip: 0 1802 | } 1803 | cell { 1804 | x: 12 1805 | y: 2 1806 | tile: 4 1807 | h_flip: 0 1808 | v_flip: 0 1809 | } 1810 | cell { 1811 | x: 18 1812 | y: 2 1813 | tile: 4 1814 | h_flip: 0 1815 | v_flip: 0 1816 | } 1817 | cell { 1818 | x: 18 1819 | y: 3 1820 | tile: 5 1821 | h_flip: 0 1822 | v_flip: 0 1823 | } 1824 | cell { 1825 | x: 1 1826 | y: 4 1827 | tile: 4 1828 | h_flip: 0 1829 | v_flip: 0 1830 | } 1831 | cell { 1832 | x: 17 1833 | y: 4 1834 | tile: 4 1835 | h_flip: 0 1836 | v_flip: 0 1837 | } 1838 | cell { 1839 | x: 1 1840 | y: 5 1841 | tile: 4 1842 | h_flip: 0 1843 | v_flip: 0 1844 | } 1845 | cell { 1846 | x: 18 1847 | y: 5 1848 | tile: 5 1849 | h_flip: 0 1850 | v_flip: 0 1851 | } 1852 | cell { 1853 | x: 2 1854 | y: 6 1855 | tile: 4 1856 | h_flip: 0 1857 | v_flip: 0 1858 | } 1859 | cell { 1860 | x: 18 1861 | y: 6 1862 | tile: 4 1863 | h_flip: 0 1864 | v_flip: 0 1865 | } 1866 | cell { 1867 | x: 4 1868 | y: 7 1869 | tile: 4 1870 | h_flip: 0 1871 | v_flip: 0 1872 | } 1873 | cell { 1874 | x: 18 1875 | y: 7 1876 | tile: 5 1877 | h_flip: 0 1878 | v_flip: 0 1879 | } 1880 | cell { 1881 | x: 1 1882 | y: 8 1883 | tile: 5 1884 | h_flip: 0 1885 | v_flip: 0 1886 | } 1887 | cell { 1888 | x: 2 1889 | y: 8 1890 | tile: 4 1891 | h_flip: 0 1892 | v_flip: 0 1893 | } 1894 | cell { 1895 | x: 15 1896 | y: 8 1897 | tile: 4 1898 | h_flip: 0 1899 | v_flip: 0 1900 | } 1901 | cell { 1902 | x: 17 1903 | y: 8 1904 | tile: 4 1905 | h_flip: 0 1906 | v_flip: 0 1907 | } 1908 | cell { 1909 | x: 1 1910 | y: 9 1911 | tile: 4 1912 | h_flip: 0 1913 | v_flip: 0 1914 | } 1915 | cell { 1916 | x: 6 1917 | y: 9 1918 | tile: 4 1919 | h_flip: 0 1920 | v_flip: 0 1921 | } 1922 | cell { 1923 | x: 9 1924 | y: 9 1925 | tile: 4 1926 | h_flip: 0 1927 | v_flip: 0 1928 | } 1929 | cell { 1930 | x: 3 1931 | y: 10 1932 | tile: 4 1933 | h_flip: 0 1934 | v_flip: 0 1935 | } 1936 | cell { 1937 | x: 7 1938 | y: 10 1939 | tile: 5 1940 | h_flip: 0 1941 | v_flip: 0 1942 | } 1943 | cell { 1944 | x: 8 1945 | y: 10 1946 | tile: 4 1947 | h_flip: 0 1948 | v_flip: 0 1949 | } 1950 | cell { 1951 | x: 10 1952 | y: 10 1953 | tile: 4 1954 | h_flip: 0 1955 | v_flip: 0 1956 | } 1957 | cell { 1958 | x: 11 1959 | y: 10 1960 | tile: 5 1961 | h_flip: 0 1962 | v_flip: 0 1963 | } 1964 | cell { 1965 | x: 12 1966 | y: 10 1967 | tile: 4 1968 | h_flip: 0 1969 | v_flip: 0 1970 | } 1971 | cell { 1972 | x: 17 1973 | y: 10 1974 | tile: 4 1975 | h_flip: 0 1976 | v_flip: 0 1977 | } 1978 | cell { 1979 | x: 18 1980 | y: 10 1981 | tile: 5 1982 | h_flip: 0 1983 | v_flip: 0 1984 | } 1985 | } 1986 | material: "/builtins/materials/tile_map.material" 1987 | blend_mode: BLEND_MODE_ALPHA 1988 | -------------------------------------------------------------------------------- /main/main.collection: -------------------------------------------------------------------------------- 1 | name: "main" 2 | instances { 3 | id: "astronaut" 4 | prototype: "/main/astronaut.go" 5 | position { 6 | x: 640.0 7 | y: 384.0 8 | z: 1.0 9 | } 10 | rotation { 11 | x: 0.0 12 | y: 0.0 13 | z: 0.0 14 | w: 1.0 15 | } 16 | scale3 { 17 | x: 1.0 18 | y: 1.0 19 | z: 1.0 20 | } 21 | } 22 | scale_along_z: 0 23 | embedded_instances { 24 | id: "level" 25 | data: "components {\n" 26 | " id: \"level\"\n" 27 | " component: \"/main/level.tilemap\"\n" 28 | " position {\n" 29 | " x: 0.0\n" 30 | " y: 0.0\n" 31 | " z: 0.0\n" 32 | " }\n" 33 | " rotation {\n" 34 | " x: 0.0\n" 35 | " y: 0.0\n" 36 | " z: 0.0\n" 37 | " w: 1.0\n" 38 | " }\n" 39 | "}\n" 40 | "" 41 | position { 42 | x: 0.0 43 | y: 0.0 44 | z: 0.0 45 | } 46 | rotation { 47 | x: 0.0 48 | y: 0.0 49 | z: 0.0 50 | w: 1.0 51 | } 52 | scale3 { 53 | x: 1.0 54 | y: 1.0 55 | z: 1.0 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /main/sandtiles.tilesource: -------------------------------------------------------------------------------- 1 | image: "/assets/tiles.png" 2 | tile_width: 64 3 | tile_height: 64 4 | tile_margin: 0 5 | tile_spacing: 0 6 | collision: "" 7 | material_tag: "tile" 8 | collision_groups: "default" 9 | animations { 10 | id: "anim" 11 | start_tile: 1 12 | end_tile: 1 13 | playback: PLAYBACK_ONCE_FORWARD 14 | fps: 30 15 | flip_horizontal: 0 16 | flip_vertical: 0 17 | } 18 | extrude_borders: 2 19 | inner_padding: 0 20 | --------------------------------------------------------------------------------