diff --git a/README.md b/README.md index 4d26eff..2d3d714 100644 --- a/README.md +++ b/README.md @@ -1,277 +1,401 @@ -# Walking astronaut tutorial +# Character movement tutorial -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. +Welcome to the tutorial about character movement suited for beginners starting game development with Defold. You will start from a prepared project and make the stationary character move in all directions. The knowledge gathered here might be useful in both 2D and 3D top-down view games. -This tutorial project comes preset with all assets that you need. Start by [running the game](defold://project.build) (Project ▸ Build) to get a feel for what's in here. +## What you'll learn? -## The building blocks of a Defold game +- Building Blocks: How collections, game objects, and components relate to each other +- Animations: How to add new animation groups to an atlas +- Input: How to capture key presses in a script, and add new bindings +- Logic: How to move a game object using vectors and `dt`, and switch animations based on movement direction +- Camera: How to follow character and zoom -Open ["/main/main.collection"](defold://open?path=/main/main.collection) (locate the file in the *Assets* pane to the left and double click it.) +This is a short tutorial, it will take about 15 minutes to complete, but you can stay and play around with it more. - +## Before you start -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*: +This tutorial requires no prior knowledge, but in order not to get lost inside the Defold Editor, check out the [Editor overview](https://defold.com/manuals/editor/) before. - +This project already contains everything you need: -*COLLECTION* -: 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. +- character art and an atlas with an `idle` animation +- a background tilemap +- input bindings for `left`, `right`, `up`, and `down` key arrows on keyboard -*GAME OBJECT* -: 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. +## Try the game -*COMPONENT* -: 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. +Before beginning the tutorial, [build and run the project](defold://project.build) (<- by clicking this link) or use ProjectBuild in the top menu or shortcut Ctrl+B (Cmd+B on Mac). -## What's in the main.collection file? +You should see a tiled background and a character staying in the middle of the screen. That is the starting point. Close the game. -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: + -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". +## Get familiar with the project -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". +Open the ["/main/main.collection"](defold://open?path=/main/main.collection) - you can click here or click ProjectOpen in the top menu or shortcut Ctrl+P (Cmd+P on Mac). This will open a popup where you can start typing the name of the file, you're looking for, so type "main" and double-click on the `main.collection` in the list (or select it and click Open button). -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. +It will be opened in the main editor pane. -## The astronaut game object +This is the **bootstrap** collection referenced from the project setting file: ["/game.project"](defold://open?path=/game.project). Defold loads it when the game starts. -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: + -1. A *Script* component, based on the script file "/main/astronaut.script". -2. A *Sprite* component, which is embedded in place in the game object file. +Tip: The tutorial works best, if the `README.md` file is opened inside the Defold editor, because the links in this document can open files directly in Defold and build the project for you. You can also split the view in half, by right-clicking on a tab and selecting Move to Other Tab Pane. - + -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: +A few core terms will appear throughout the tutorial: -*Image* -: 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". +- `Collection`: a container for game objects and sub-collections. +- `Game object`: a plain simple object with transform (position, rotation, scale) that can hold components. +- `Component`: a piece of behavior or data such as a sprite, tilemap, or script. -*Default Animation* -: This property indicates which particular image or animation in the image resource should be used. Here, the property is set to the "idle" animation. + -[Run the game again](defold://project.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. +So `main.collection` is a file with all the game objects, that are spawned into the game's world. The components are part of game objects. You can see on the right side, in the Outline pane the root "Collection" and the tree-like structure of what's in it. -## Atlas animations +In this collection there are 3 game objects: -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. +1. `camera`, an embedded game object with camera component to see the game's world +2. `character`, created from the prototype file (also known as "prefab" or "blueprint" in other engines) ["/main/character.go"](defold://open?path=/main/character.go). +3. `level`, an embedded game object with a tilemap component that uses ["/main/level.tilemap"](defold://open?path=/main/level.tilemap). - + -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. +Using a prototype file such as `character.go` makes an object reusable. Embedded objects (like the `camera` or `level`) are fine when you only need a single instance. You can read more about [Basic Building Blocks of Defold here](https://defold.com/manuals/building-blocks/). -To start adding the walk animations to the astronaut, right click the root of the atlas outline and select Add Animation. +## Inspect the character - +Open ["/main/character.go"](defold://open?path=/main/character.go) - by clicking here, or double-clicking on it in the `Outline`, or right-clicking on it and select Open, or using shortcut Ctrl+O (Cmd+O on Mac), when it's selected in the `Outline`. -Click the new animation group (named "New Animation") and give it the *Id* "left". Then right click the animation group and select Add Images... +This game object contains: - +- `character` - a script component referencing the file ["/main/character.script"](defold://open?path=/main/character.script) +- `sprite` - an embedded sprite component with our character visuals -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. + - +Select the sprite component in the `Outline` and look at its properties: -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 30 to 15. +- `Image` points to ["/main/character.atlas"](defold://open?path=/main/character.atlas) +- `Default Animation` is set to `idle` -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. +The sprite already knows how to play the idle animation. You can preview it by pressing the Space key, when it's selected in the Outline. -## The astronaut script component +But we want the character to move, so we will add the walk animations that the script can switch between. -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: +## Add the walk animations -`init(self)` -: 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. +Open ["/main/character.atlas"](defold://open?path=/main/character.atlas). -`final(self)` -: 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. +An atlas stores separate images and animations. Right now it only contains the `idle` animation - you can select it in the `Outline` and preview with ViewPlay or by pressing Space key. -`update(self, dt)` -: 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. -`on_message(self, message_id, message, sender)` -: 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. +1. Right click the root of the Atlas outline and choose Add Animation (or shortcutA). +2. Rename the new animation group to `left` - type it in the Properties pane in the Id field, or right-click and select Rename (shortcut F2) to edit its name in the Outline directly. -`on_input(self, action_id, action)` -: 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. + -`on_reload(self)` -: 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. +3. Right click the `left` animation and choose Add Images.... +4. Filter for `left`, select all 8 matching images from `run_left_1` to `run_left_8`, and confirm. +5. Repeat the same process (steps 1-4) for `right`, `front`, and `back`. -## Programming the astronaut movement + -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: +6. You can notice that when you preview the animation (with Space) key it's too fast, so, while holding Shift select all of the new animations added in the `Outline` and in the `Properties` pane set the FPS property to 15. -```lua -local speed = 150 -- [1] + + +## Saving changes + +At the end of the steps in the tutorial, don't forget to save everything. Select FileSave All in the top menu or shortcut Ctrl+S (Cmd+S on Mac) + +If the atlas is zoomed out too far, use ViewFrame Selection (shortcut F) or scroll to adjust the zooom. + +At this point the atlas contains every animation the character needs, but the script still only plays `idle`. + +## Open the movement script + +Open ["/main/character.script"](defold://open?path=/main/character.script). +You can get back to our character game object and double-click on the character script, or open it using learned methods. + +The script will be opened in a built-in code editor, and it includes already the standard script template with empty lifecycle functions. For this tutorial you only need three callbacks: + +- `init(self)` runs when the component is created +- `update(self, dt)` runs every frame +- `on_input(self, action_id, action)` receives input actions +So remove the rest. + + + +## Initialize the script + +Inside the `init()` function we will initialize needed data and acquire input focus, so write: + +```lua function init(self) - msg.post(".", "acquire_input_focus") -- [2] - self.dir = vmath.vector3() -- [3] + self.direction = vmath.vector3() -- a vector of direction + self.current_animation = hash("idle") -- initial animation + msg.post(".", "acquire_input_focus") -- acquiring input focus end ``` -1. Define a local variable (constant) that holds the movement speed (in pixels/s). -2. Send a built in engine message to the current game object (".") telling it to listen to input. -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. -Second, change the content of the `on_input()` function: +As you can see, here we have a very simple variables initialization. The `self` is an instance table that we have available in all lifecycle functions, so inside it we define `direction` as an empty 3-dimensional vector, and `current_animation` as our `idle` animation, but Defold doesn't operates on strings for animations, so we need to make it hashed. + +Then we post a message to our current game object (shorthand `"."`) to `acquire_input_focus`, meaning, we will now get inputs in `on_input`. + +## Input bindings + +Input bindings are already prepared in ["/input/game.input_binding"](defold://open?path=/input/game.input_binding). The four actions you will use are: + +- `left` +- `right` +- `up` +- `down` + +And those are assigned to the arrow keys. You can look at this, but it's optional now, all is already set up. + + + +## Make the character move + +Now, in our `on_input()` function write simple `if-else` branches: ```lua function on_input(self, action_id, action) - if action_id == hash("front") then -- [1] - self.dir.y = -1 - elseif action_id == hash("back") then - self.dir.y = 1 - elseif action_id == hash("left") then -- [2] - self.dir.x = -1 - elseif action_id == hash("right") then - self.dir.x = 1 - end + -- Change the direction vector based on current inputs: + if action_id == hash("up") then + self.direction.y = -1 + elseif action_id == hash("down") then + self.direction.y = 1 + elseif action_id == hash("left") then + self.direction.x = -1 + elseif action_id == hash("right") then + self.direction.x = 1 + end end ``` -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. -2. If the user presses the "left" or "right" button, set the X component of the movement direction vector. -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. +We simply compare here the current action_id with each of the ones defined in input bindings as `actions` and modify the `direction` vector. Each active input action updates one part of the direction vector. If two keys are held at the same time, both axis can be set, which gives diagonal movement. + +### Move the game object every frame -Third, change the content of the `update()` function: +And finally in the `update()` function write: ```lua function update(self, dt) - if vmath.length_sqr(self.dir) > 1 then -- [1] - self.dir = vmath.normalize(self.dir) - end - local p = go.get_position() -- [2] - go.set_position(p + self.dir * speed * dt) -- [3] - self.dir = vmath.vector3() -- [4] + -- Get current position of the game object: + local current_position = go.get_position() + + -- Add to it a direction vector multiplied by speed and delta time: + local new_position = current_position + self.direction * 150 * dt + + -- Set the new position to the game object: + go.set_position(new_position) + + -- Reset the direction + self.direction = vmath.vector3() end ``` -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. -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. -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. -4. Reset the direction vector since it is set each frame in `on_input`. -[Run the game again](defold://project.build) and verify that movement works as expected. The astronaut should move in all 8 directions. +Comments in the code should explain what we are doing here, so read them carefully. We calculate the new position based on the simple physics movement formula, by taking our current direction vector, that we modify by our inputs, multiplying it by 150, which is the speed value, and then by delta time, which is an amount of a time that passed since last frame update. -## Adding animations to the movement +You can save it, [build and run the project](defold://project.build). -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: +You are now able to move around, but beside lacking animations, the movement, while holding two keys to move diagonally is too fast, because the direction is not normalized. To fix it, add on the top of our current update function, this code fragment: ```lua -function init(self) - msg.post(".", "acquire_input_focus") - self.dir = vmath.vector3() - self.current_anim = nil -- [1] -end + if vmath.length_sqr(self.direction) > 1 then + self.direction = vmath.normalize(self.direction) + end ``` -1. Store the currently running animation. -Then you need to add code in `update()` that changes animation based on direction: +Save and [test the project](defold://project.build). + +The diagonal movement is now normalized, so it is not faster than straight movement. + +The `150` in the update function is a speed value - such paramaters are good to be defined in the top of the file as local variables: ```lua -function update(self, dt) - if vmath.length_sqr(self.dir) > 1 then - self.dir = vmath.normalize(self.dir) - end - local p = go.get_position() - go.set_position(p + self.dir * speed * dt) - - -- animate the astronaut - - local anim = hash("idle") -- [1] - - if self.dir.x > 0 then -- [2] - anim = hash("right") - elseif self.dir.x < 0 then - anim = hash("left") - elseif self.dir.y > 0 then - anim = hash("back") - elseif self.dir.y < 0 then - anim = hash("front") - end - - if anim ~= self.current_anim then -- [3] - sprite.play_flipbook("#sprite", anim) -- [4] - self.current_anim = anim -- [5] - end - - -- done animating - - self.dir = vmath.vector3() -end +local speed = 150 ``` -1. Local variable that starts with the default animation id. With no input, this is the animation you get. -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. -3. If `anim` is different than the current animation: -4. then play the new animation, -5. then set the current animation id to the id in `anim`. -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. +and then used in script: -[Run the game again](defold://project.build) and verify that the astronaut moves and animates correctly. +```lua + local new_position = current_position + self.direction * speed * dt +``` -**Congratulations! You have now finished this tutorial. We hope that you found it instructive.** +so that you can change them, save it, and Hot Reload the running game, to see the change instantly applied. Read more about [Hot Reloading here](https://defold.com/manuals/hot-reload/). -Check out the [documentation pages](https://defold.com/learn) for more examples, tutorials, manuals and API docs. +Play with the speed value to adjust the speed of the movement of the character to its animation. -If you run into trouble, help is available in [our forum](https://forum.defold.com). +## Play the correct animation -Happy Defolding! +The character moves now, but the sprite still stays in the `idle` animation. +To fix it add at the end of our `update()` function, after setting the position, but just before reseting the direction, this fragment: -## The complete movement script +```lua + -- Initialize a local variable to decide which animation we should play: + local animation = hash("idle") + + -- Depending on the direction vector change it to a proper animation: + if self.direction.x > 0 then + animation = hash("right") + elseif self.direction.x < 0 then + animation = hash("left") + elseif self.direction.y > 0 then + animation = hash("up") + elseif self.direction.y < 0 then + animation = hash("down") + end + + -- If the animation we decided to play is different from the current one playing: + if animation ~= self.current_animation then + -- Play the new animation: + sprite.play_flipbook("#sprite", animation) + -- and update the variable tracking the current animation: + self.current_animation = animation + end +``` + +Read the comments to understand what the code does. Because we track the currently played animation, the `sprite.play_flipbook()` is only called when the animation changes, so the same animation does not restart every frame. Diagonal movement uses `left` or `right`, simply because those checks run before the vertical ones. If no input is being pressed, it gets back to the default `idle` animation. + +[Build and run the project](defold://project.build) again. The character should now both move and animate correctly. + +## Limiting the movement space + +You'll quickly notice, that we can "stand" on the decorations, like rocks or walls in the tilemap, and we can even move out of the map! You could fix this by checking collisions, and setting up the walls and obstacles collision shapes, but that's for the other tutorial! Right now, let's simply limit the movement, by adding those two lines just before setting the new position in the update loop: + +```lua + -- Limit the position inside a rectangle: + new_position.x = math.max(100, math.min(570, new_position.x)) + new_position.y = math.max(55, math.min(300, new_position.y)) +``` + +This is enough to have a rectangle area for movement of our character. +And that's the end of the tutorial! + + + +## Final script + +Here's how your final version of the script should look like: ```lua local speed = 150 function init(self) - msg.post(".", "acquire_input_focus") - self.dir = vmath.vector3() - self.current_anim = nil + self.direction = vmath.vector3() -- a vector of direction + self.current_animation = hash("idle") -- initial animation + msg.post(".", "acquire_input_focus") -- acquiring input focus end function update(self, dt) - if vmath.length_sqr(self.dir) > 1 then - self.dir = vmath.normalize(self.dir) - end - local p = go.get_position() - go.set_position(p + self.dir * speed * dt) - - -- animate the astronaut - - local anim = hash("idle") - - if self.dir.x > 0 then - anim = hash("right") - elseif self.dir.x < 0 then - anim = hash("left") - elseif self.dir.y > 0 then - anim = hash("back") - elseif self.dir.y < 0 then - anim = hash("front") - end - - if anim ~= self.current_anim then - sprite.play_flipbook("#sprite", anim) - self.current_anim = anim - end - - -- done animating - - self.dir = vmath.vector3() + if vmath.length_sqr(self.direction) > 1 then + self.direction = vmath.normalize(self.direction) + end + -- Get current position of the game object: + local current_position = go.get_position() + + -- Add to it a direction vector multiplied by speed and delta time: + local new_position = current_position + self.direction * speed * dt + + -- Limit the position inside a rectangle: + new_position.x = math.max(100, math.min(570, new_position.x)) + new_position.y = math.max(55, math.min(300, new_position.y)) + + -- Set the new position to the game object: + go.set_position(new_position) + + -- Initialize a local variable to decide which animation we should play: + local animation = hash("idle") + + -- Depending on the direction vector change it to a proper animation: + if self.direction.x > 0 then + animation = hash("right") + elseif self.direction.x < 0 then + animation = hash("left") + elseif self.direction.y > 0 then + animation = hash("up") + elseif self.direction.y < 0 then + animation = hash("down") + end + + -- If the animation we decided to play is different from the current one playing: + if animation ~= self.current_animation then + -- Play the new animation: + sprite.play_flipbook("#sprite", animation) + -- and update the variable tracking the current animation: + self.current_animation = animation + end + + -- Reset the direction + self.direction = vmath.vector3() end function on_input(self, action_id, action) - if action_id == hash("front") then - self.dir.y = -1 - elseif action_id == hash("back") then - self.dir.y = 1 - elseif action_id == hash("left") then - self.dir.x = -1 - elseif action_id == hash("right") then - self.dir.x = 1 - end + -- Change the direction vector based on current inputs: + if action_id == hash("down") then + self.direction.y = -1 + elseif action_id == hash("up") then + self.direction.y = 1 + elseif action_id == hash("left") then + self.direction.x = -1 + elseif action_id == hash("right") then + self.direction.x = 1 + end end ``` ---- +Also, you can checkout to the `tutorial-done` branch to see the final version of the game from this tutorial. + +And that's the end of the tutorial! + +## Excercises + +You can try the following excersises next: + +### Camera follows the character + +Make the camera follow the character with a quick trick: + +1. Open the ["main.collection"](defold://open?path=/main/main.collection). +2. In the `Outline` drag and drop the camera game object beneath the character game object. + +This creates a parent-child relationship. Because camera was set to be in the (320,190,0) position in the world, it's now also like this, but related to the `character` position, so modify the position of the `camera` to (0,0,0). + + + +Try the game - now camera strictly follows our character! + +### Add WSAD controls + +Optionally, if you would like also to control your character with the commonly used `WSAD` keys, define this in the input bindings: + +1. Open ["/input/game.input_binding"](defold://open?path=/input/game.input_binding). +2. Add the new bindings in this table - click `+` icon to add a new binding. +3. Click in the Input column, type `W` key to find this input +4. Type `up` in the Action column. + +Then repeat it for the rest of the keys. Make sure the action names matches the ones defined already, as we will be using those in the code. Read more about [inputs here](https://defold.com/manuals/input/). + +### Enlarge the level + +You now have a small, but working top down game. Try to expand the level by modifying the ["/main/level.tilemap"](defold://open?path=/main/level.tilemap)! Read more about [tilemaps here](https://defold.com/manuals/tilemap/). + +## What's next? + +If you have a game, now you'd usually want to add GUI and switch between levels - try the [Colorslide tutorial](https://defold.com/tutorials/colorslide/) next! + +Then you can get back to this and apply the gathered knowledge to add more levels! + +For more tutorials and manuals, visit [defold.com/learn](https://defold.com/learn). If you get stuck, ask for help on the [Defold forum](https://forum.defold.com). + +## Credits + +This project uses the following free art assets: +- Pixel Art Adventurer 2D Top-Down by Mattz Art: [https://xzany.itch.io/top-down-adventurer-character](https://xzany.itch.io/top-down-adventurer-character) +- Pixel Art Top Down Basic tilesets by Cainos: [https://cainos.itch.io/pixel-art-top-down-basic](https://cainos.itch.io/pixel-art-top-down-basic) diff --git a/assets/astronaut/back_01.png b/assets/astronaut/back_01.png deleted file mode 100644 index 6a10212..0000000 Binary files a/assets/astronaut/back_01.png and /dev/null differ diff --git a/assets/astronaut/back_02.png b/assets/astronaut/back_02.png deleted file mode 100644 index a5f0e4b..0000000 Binary files a/assets/astronaut/back_02.png and /dev/null differ diff --git a/assets/astronaut/back_03.png b/assets/astronaut/back_03.png deleted file mode 100644 index 45f36f6..0000000 Binary files a/assets/astronaut/back_03.png and /dev/null differ diff --git a/assets/astronaut/back_04.png b/assets/astronaut/back_04.png deleted file mode 100644 index 4a0bcec..0000000 Binary files a/assets/astronaut/back_04.png and /dev/null differ diff --git a/assets/astronaut/back_05.png b/assets/astronaut/back_05.png deleted file mode 100644 index 7ead562..0000000 Binary files a/assets/astronaut/back_05.png and /dev/null differ diff --git a/assets/astronaut/back_06.png b/assets/astronaut/back_06.png deleted file mode 100644 index 51af807..0000000 Binary files a/assets/astronaut/back_06.png and /dev/null differ diff --git a/assets/astronaut/front_01.png b/assets/astronaut/front_01.png deleted file mode 100644 index 4f17f33..0000000 Binary files a/assets/astronaut/front_01.png and /dev/null differ diff --git a/assets/astronaut/front_02.png b/assets/astronaut/front_02.png deleted file mode 100644 index fa53947..0000000 Binary files a/assets/astronaut/front_02.png and /dev/null differ diff --git a/assets/astronaut/front_03.png b/assets/astronaut/front_03.png deleted file mode 100644 index b19d8f4..0000000 Binary files a/assets/astronaut/front_03.png and /dev/null differ diff --git a/assets/astronaut/front_04.png b/assets/astronaut/front_04.png deleted file mode 100644 index 5825a89..0000000 Binary files a/assets/astronaut/front_04.png and /dev/null differ diff --git a/assets/astronaut/front_05.png b/assets/astronaut/front_05.png deleted file mode 100644 index 0f1b59e..0000000 Binary files a/assets/astronaut/front_05.png and /dev/null differ diff --git a/assets/astronaut/front_06.png b/assets/astronaut/front_06.png deleted file mode 100644 index 6491e58..0000000 Binary files a/assets/astronaut/front_06.png and /dev/null differ diff --git a/assets/astronaut/idle_01.png b/assets/astronaut/idle_01.png deleted file mode 100644 index 4f17f33..0000000 Binary files a/assets/astronaut/idle_01.png and /dev/null differ diff --git a/assets/astronaut/idle_02.png b/assets/astronaut/idle_02.png deleted file mode 100644 index fc7224e..0000000 Binary files a/assets/astronaut/idle_02.png and /dev/null differ diff --git a/assets/astronaut/idle_03.png b/assets/astronaut/idle_03.png deleted file mode 100644 index 6fd169f..0000000 Binary files a/assets/astronaut/idle_03.png and /dev/null differ diff --git a/assets/astronaut/idle_04.png b/assets/astronaut/idle_04.png deleted file mode 100644 index 6f35927..0000000 Binary files a/assets/astronaut/idle_04.png and /dev/null differ diff --git a/assets/astronaut/idle_05.png b/assets/astronaut/idle_05.png deleted file mode 100644 index f5bde82..0000000 Binary files a/assets/astronaut/idle_05.png and /dev/null differ diff --git a/assets/astronaut/left_01.png b/assets/astronaut/left_01.png deleted file mode 100644 index ab92318..0000000 Binary files a/assets/astronaut/left_01.png and /dev/null differ diff --git a/assets/astronaut/left_02.png b/assets/astronaut/left_02.png deleted file mode 100644 index ebf270b..0000000 Binary files a/assets/astronaut/left_02.png and /dev/null differ diff --git a/assets/astronaut/left_03.png b/assets/astronaut/left_03.png deleted file mode 100644 index aea42fa..0000000 Binary files a/assets/astronaut/left_03.png and /dev/null differ diff --git a/assets/astronaut/left_04.png b/assets/astronaut/left_04.png deleted file mode 100644 index 57b6b5d..0000000 Binary files a/assets/astronaut/left_04.png and /dev/null differ diff --git a/assets/astronaut/left_05.png b/assets/astronaut/left_05.png deleted file mode 100644 index 77a5e61..0000000 Binary files a/assets/astronaut/left_05.png and /dev/null differ diff --git a/assets/astronaut/left_06.png b/assets/astronaut/left_06.png deleted file mode 100644 index ad871d0..0000000 Binary files a/assets/astronaut/left_06.png and /dev/null differ diff --git a/assets/astronaut/right_01.png b/assets/astronaut/right_01.png deleted file mode 100644 index fdb5f1c..0000000 Binary files a/assets/astronaut/right_01.png and /dev/null differ diff --git a/assets/astronaut/right_02.png b/assets/astronaut/right_02.png deleted file mode 100644 index a149957..0000000 Binary files a/assets/astronaut/right_02.png and /dev/null differ diff --git a/assets/astronaut/right_03.png b/assets/astronaut/right_03.png deleted file mode 100644 index 8c2d889..0000000 Binary files a/assets/astronaut/right_03.png and /dev/null differ diff --git a/assets/astronaut/right_04.png b/assets/astronaut/right_04.png deleted file mode 100644 index ccb1e75..0000000 Binary files a/assets/astronaut/right_04.png and /dev/null differ diff --git a/assets/astronaut/right_05.png b/assets/astronaut/right_05.png deleted file mode 100644 index 7a129f3..0000000 Binary files a/assets/astronaut/right_05.png and /dev/null differ diff --git a/assets/astronaut/right_06.png b/assets/astronaut/right_06.png deleted file mode 100644 index 678bd56..0000000 Binary files a/assets/astronaut/right_06.png and /dev/null differ diff --git a/assets/character/character.atlas b/assets/character/character.atlas new file mode 100644 index 0000000..175fa5f --- /dev/null +++ b/assets/character/character.atlas @@ -0,0 +1,29 @@ +animations { + id: "idle" + images { + image: "/assets/character/idle/idle_down_1.png" + } + images { + image: "/assets/character/idle/idle_down_2.png" + } + images { + image: "/assets/character/idle/idle_down_3.png" + } + images { + image: "/assets/character/idle/idle_down_4.png" + } + images { + image: "/assets/character/idle/idle_down_5.png" + } + images { + image: "/assets/character/idle/idle_down_6.png" + } + images { + image: "/assets/character/idle/idle_down_7.png" + } + images { + image: "/assets/character/idle/idle_down_8.png" + } + playback: PLAYBACK_LOOP_FORWARD + fps: 15 +} diff --git a/assets/character/down/run_down_1.png b/assets/character/down/run_down_1.png new file mode 100644 index 0000000..b22226c Binary files /dev/null and b/assets/character/down/run_down_1.png differ diff --git a/assets/character/down/run_down_2.png b/assets/character/down/run_down_2.png new file mode 100644 index 0000000..924b077 Binary files /dev/null and b/assets/character/down/run_down_2.png differ diff --git a/assets/character/down/run_down_3.png b/assets/character/down/run_down_3.png new file mode 100644 index 0000000..67225fc Binary files /dev/null and b/assets/character/down/run_down_3.png differ diff --git a/assets/character/down/run_down_4.png b/assets/character/down/run_down_4.png new file mode 100644 index 0000000..b6640da Binary files /dev/null and b/assets/character/down/run_down_4.png differ diff --git a/assets/character/down/run_down_5.png b/assets/character/down/run_down_5.png new file mode 100644 index 0000000..6398fc8 Binary files /dev/null and b/assets/character/down/run_down_5.png differ diff --git a/assets/character/down/run_down_6.png b/assets/character/down/run_down_6.png new file mode 100644 index 0000000..66dd6a1 Binary files /dev/null and b/assets/character/down/run_down_6.png differ diff --git a/assets/character/down/run_down_7.png b/assets/character/down/run_down_7.png new file mode 100644 index 0000000..82c71f5 Binary files /dev/null and b/assets/character/down/run_down_7.png differ diff --git a/assets/character/down/run_down_8.png b/assets/character/down/run_down_8.png new file mode 100644 index 0000000..b9e89cd Binary files /dev/null and b/assets/character/down/run_down_8.png differ diff --git a/assets/character/idle/idle_down_1.png b/assets/character/idle/idle_down_1.png new file mode 100644 index 0000000..c375f22 Binary files /dev/null and b/assets/character/idle/idle_down_1.png differ diff --git a/assets/character/idle/idle_down_2.png b/assets/character/idle/idle_down_2.png new file mode 100644 index 0000000..c81f867 Binary files /dev/null and b/assets/character/idle/idle_down_2.png differ diff --git a/assets/character/idle/idle_down_3.png b/assets/character/idle/idle_down_3.png new file mode 100644 index 0000000..7680dc0 Binary files /dev/null and b/assets/character/idle/idle_down_3.png differ diff --git a/assets/character/idle/idle_down_4.png b/assets/character/idle/idle_down_4.png new file mode 100644 index 0000000..217f689 Binary files /dev/null and b/assets/character/idle/idle_down_4.png differ diff --git a/assets/character/idle/idle_down_5.png b/assets/character/idle/idle_down_5.png new file mode 100644 index 0000000..7ff8e34 Binary files /dev/null and b/assets/character/idle/idle_down_5.png differ diff --git a/assets/character/idle/idle_down_6.png b/assets/character/idle/idle_down_6.png new file mode 100644 index 0000000..d913c69 Binary files /dev/null and b/assets/character/idle/idle_down_6.png differ diff --git a/assets/character/idle/idle_down_7.png b/assets/character/idle/idle_down_7.png new file mode 100644 index 0000000..ff2d533 Binary files /dev/null and b/assets/character/idle/idle_down_7.png differ diff --git a/assets/character/idle/idle_down_8.png b/assets/character/idle/idle_down_8.png new file mode 100644 index 0000000..0fa10e8 Binary files /dev/null and b/assets/character/idle/idle_down_8.png differ diff --git a/assets/character/left/run_left_1.png b/assets/character/left/run_left_1.png new file mode 100644 index 0000000..92db5f3 Binary files /dev/null and b/assets/character/left/run_left_1.png differ diff --git a/assets/character/left/run_left_2.png b/assets/character/left/run_left_2.png new file mode 100644 index 0000000..8a6fbda Binary files /dev/null and b/assets/character/left/run_left_2.png differ diff --git a/assets/character/left/run_left_3.png b/assets/character/left/run_left_3.png new file mode 100644 index 0000000..0234574 Binary files /dev/null and b/assets/character/left/run_left_3.png differ diff --git a/assets/character/left/run_left_4.png b/assets/character/left/run_left_4.png new file mode 100644 index 0000000..4262c5a Binary files /dev/null and b/assets/character/left/run_left_4.png differ diff --git a/assets/character/left/run_left_5.png b/assets/character/left/run_left_5.png new file mode 100644 index 0000000..1c33362 Binary files /dev/null and b/assets/character/left/run_left_5.png differ diff --git a/assets/character/left/run_left_6.png b/assets/character/left/run_left_6.png new file mode 100644 index 0000000..54949ba Binary files /dev/null and b/assets/character/left/run_left_6.png differ diff --git a/assets/character/left/run_left_7.png b/assets/character/left/run_left_7.png new file mode 100644 index 0000000..ae2a8f8 Binary files /dev/null and b/assets/character/left/run_left_7.png differ diff --git a/assets/character/left/run_left_8.png b/assets/character/left/run_left_8.png new file mode 100644 index 0000000..126d3cc Binary files /dev/null and b/assets/character/left/run_left_8.png differ diff --git a/assets/character/right/run_right_1.png b/assets/character/right/run_right_1.png new file mode 100644 index 0000000..d8cb7dc Binary files /dev/null and b/assets/character/right/run_right_1.png differ diff --git a/assets/character/right/run_right_2.png b/assets/character/right/run_right_2.png new file mode 100644 index 0000000..3d21837 Binary files /dev/null and b/assets/character/right/run_right_2.png differ diff --git a/assets/character/right/run_right_3.png b/assets/character/right/run_right_3.png new file mode 100644 index 0000000..8a342ca Binary files /dev/null and b/assets/character/right/run_right_3.png differ diff --git a/assets/character/right/run_right_4.png b/assets/character/right/run_right_4.png new file mode 100644 index 0000000..391bbbc Binary files /dev/null and b/assets/character/right/run_right_4.png differ diff --git a/assets/character/right/run_right_5.png b/assets/character/right/run_right_5.png new file mode 100644 index 0000000..63c0965 Binary files /dev/null and b/assets/character/right/run_right_5.png differ diff --git a/assets/character/right/run_right_6.png b/assets/character/right/run_right_6.png new file mode 100644 index 0000000..850d083 Binary files /dev/null and b/assets/character/right/run_right_6.png differ diff --git a/assets/character/right/run_right_7.png b/assets/character/right/run_right_7.png new file mode 100644 index 0000000..ee690bf Binary files /dev/null and b/assets/character/right/run_right_7.png differ diff --git a/assets/character/right/run_right_8.png b/assets/character/right/run_right_8.png new file mode 100644 index 0000000..ebc1749 Binary files /dev/null and b/assets/character/right/run_right_8.png differ diff --git a/assets/character/up/run_up_1.png b/assets/character/up/run_up_1.png new file mode 100644 index 0000000..3691f05 Binary files /dev/null and b/assets/character/up/run_up_1.png differ diff --git a/assets/character/up/run_up_2.png b/assets/character/up/run_up_2.png new file mode 100644 index 0000000..19f01d7 Binary files /dev/null and b/assets/character/up/run_up_2.png differ diff --git a/assets/character/up/run_up_3.png b/assets/character/up/run_up_3.png new file mode 100644 index 0000000..284a634 Binary files /dev/null and b/assets/character/up/run_up_3.png differ diff --git a/assets/character/up/run_up_4.png b/assets/character/up/run_up_4.png new file mode 100644 index 0000000..a368257 Binary files /dev/null and b/assets/character/up/run_up_4.png differ diff --git a/assets/character/up/run_up_5.png b/assets/character/up/run_up_5.png new file mode 100644 index 0000000..01e9728 Binary files /dev/null and b/assets/character/up/run_up_5.png differ diff --git a/assets/character/up/run_up_6.png b/assets/character/up/run_up_6.png new file mode 100644 index 0000000..4ec56be Binary files /dev/null and b/assets/character/up/run_up_6.png differ diff --git a/assets/character/up/run_up_7.png b/assets/character/up/run_up_7.png new file mode 100644 index 0000000..308f706 Binary files /dev/null and b/assets/character/up/run_up_7.png differ diff --git a/assets/character/up/run_up_8.png b/assets/character/up/run_up_8.png new file mode 100644 index 0000000..a5a4ff5 Binary files /dev/null and b/assets/character/up/run_up_8.png differ diff --git a/assets/tiles.png b/assets/tiles.png deleted file mode 100644 index e50071d..0000000 Binary files a/assets/tiles.png and /dev/null differ diff --git a/assets/tiles/level.tilemap b/assets/tiles/level.tilemap new file mode 100644 index 0000000..bd991fc --- /dev/null +++ b/assets/tiles/level.tilemap @@ -0,0 +1,1910 @@ +tile_set: "/assets/tiles/tiles.tilesource" +layers { + id: "layer1" + z: 0.0 + cell { + x: 0 + y: 0 + tile: 96 + } + cell { + x: 1 + y: 0 + tile: 96 + } + cell { + x: 2 + y: 0 + tile: 96 + } + cell { + x: 3 + y: 0 + tile: 97 + } + cell { + x: 4 + y: 0 + tile: 96 + } + cell { + x: 5 + y: 0 + tile: 0 + } + cell { + x: 6 + y: 0 + tile: 97 + } + cell { + x: 7 + y: 0 + tile: 98 + } + cell { + x: 8 + y: 0 + tile: 99 + } + cell { + x: 9 + y: 0 + tile: 34 + } + cell { + x: 10 + y: 0 + tile: 35 + } + cell { + x: 11 + y: 0 + tile: 96 + } + cell { + x: 12 + y: 0 + tile: 0 + } + cell { + x: 13 + y: 0 + tile: 97 + } + cell { + x: 14 + y: 0 + tile: 96 + } + cell { + x: 15 + y: 0 + tile: 0 + } + cell { + x: 16 + y: 0 + tile: 100 + } + cell { + x: 17 + y: 0 + tile: 0 + } + cell { + x: 18 + y: 0 + tile: 1 + } + cell { + x: 19 + y: 0 + tile: 1 + } + cell { + x: 0 + y: 1 + tile: 6 + } + cell { + x: 1 + y: 1 + tile: 64 + } + cell { + x: 2 + y: 1 + tile: 68 + } + cell { + x: 3 + y: 1 + tile: 71 + } + cell { + x: 4 + y: 1 + tile: 66 + } + cell { + x: 5 + y: 1 + tile: 103 + } + cell { + x: 6 + y: 1 + tile: 0 + } + cell { + x: 7 + y: 1 + tile: 0 + } + cell { + x: 8 + y: 1 + tile: 99 + } + cell { + x: 9 + y: 1 + tile: 2 + } + cell { + x: 10 + y: 1 + tile: 199 + } + cell { + x: 11 + y: 1 + tile: 224 + } + cell { + x: 12 + y: 1 + tile: 97 + } + cell { + x: 13 + y: 1 + tile: 226 + } + cell { + x: 14 + y: 1 + tile: 96 + } + cell { + x: 15 + y: 1 + tile: 97 + } + cell { + x: 16 + y: 1 + tile: 0 + } + cell { + x: 17 + y: 1 + tile: 96 + } + cell { + x: 18 + y: 1 + tile: 34 + } + cell { + x: 19 + y: 1 + tile: 101 + } + cell { + x: 0 + y: 2 + tile: 1 + } + cell { + x: 1 + y: 2 + tile: 97 + } + cell { + x: 2 + y: 2 + tile: 32 + } + cell { + x: 3 + y: 2 + tile: 32 + } + cell { + x: 4 + y: 2 + tile: 32 + } + cell { + x: 5 + y: 2 + tile: 64 + } + cell { + x: 6 + y: 2 + tile: 36 + } + cell { + x: 7 + y: 2 + tile: 226 + } + cell { + x: 8 + y: 2 + tile: 198 + } + cell { + x: 9 + y: 2 + tile: 7 + } + cell { + x: 10 + y: 2 + tile: 4 + } + cell { + x: 11 + y: 2 + tile: 5 + } + cell { + x: 12 + y: 2 + tile: 199 + } + cell { + x: 13 + y: 2 + tile: 194 + } + cell { + x: 14 + y: 2 + tile: 195 + } + cell { + x: 15 + y: 2 + tile: 165 + } + cell { + x: 16 + y: 2 + tile: 166 + } + cell { + x: 17 + y: 2 + tile: 196 + } + cell { + x: 18 + y: 2 + tile: 34 + } + cell { + x: 19 + y: 2 + tile: 96 + } + cell { + x: 0 + y: 3 + tile: 1 + } + cell { + x: 1 + y: 3 + tile: 103 + } + cell { + x: 2 + y: 3 + tile: 161 + } + cell { + x: 3 + y: 3 + tile: 196 + } + cell { + x: 4 + y: 3 + tile: 2 + } + cell { + x: 5 + y: 3 + tile: 32 + } + cell { + x: 6 + y: 3 + tile: 197 + } + cell { + x: 7 + y: 3 + tile: 229 + } + cell { + x: 8 + y: 3 + tile: 66 + } + cell { + x: 9 + y: 3 + tile: 34 + } + cell { + x: 10 + y: 3 + tile: 2 + } + cell { + x: 11 + y: 3 + tile: 71 + } + cell { + x: 12 + y: 3 + tile: 1 + } + cell { + x: 13 + y: 3 + tile: 2 + } + cell { + x: 14 + y: 3 + tile: 71 + } + cell { + x: 15 + y: 3 + tile: 133 + } + cell { + x: 16 + y: 3 + tile: 134 + } + cell { + x: 17 + y: 3 + tile: 135 + } + cell { + x: 18 + y: 3 + tile: 199 + } + cell { + x: 19 + y: 3 + tile: 2 + } + cell { + x: 0 + y: 4 + tile: 35 + rotate90: 1 + } + cell { + x: 1 + y: 4 + tile: 35 + rotate90: 1 + } + cell { + x: 2 + y: 4 + tile: 199 + } + cell { + x: 3 + y: 4 + tile: 160 + } + cell { + x: 4 + y: 4 + tile: 161 + } + cell { + x: 5 + y: 4 + tile: 224 + } + cell { + x: 6 + y: 4 + tile: 2 + } + cell { + x: 7 + y: 4 + tile: 97 + } + cell { + x: 8 + y: 4 + tile: 2 + } + cell { + x: 9 + y: 4 + tile: 1 + } + cell { + x: 10 + y: 4 + tile: 2 + } + cell { + x: 11 + y: 4 + tile: 6 + } + cell { + x: 12 + y: 4 + tile: 1 + } + cell { + x: 13 + y: 4 + tile: 2 + } + cell { + x: 14 + y: 4 + tile: 6 + } + cell { + x: 15 + y: 4 + tile: 2 + } + cell { + x: 16 + y: 4 + tile: 229 + } + cell { + x: 17 + y: 4 + tile: 1 + } + cell { + x: 18 + y: 4 + tile: 34 + } + cell { + x: 19 + y: 4 + tile: 96 + } + cell { + x: 0 + y: 5 + tile: 0 + } + cell { + x: 1 + y: 5 + tile: 0 + } + cell { + x: 2 + y: 5 + tile: 2 + } + cell { + x: 3 + y: 5 + tile: 97 + } + cell { + x: 4 + y: 5 + tile: 199 + } + cell { + x: 5 + y: 5 + tile: 160 + } + cell { + x: 6 + y: 5 + tile: 161 + } + cell { + x: 7 + y: 5 + tile: 164 + } + cell { + x: 8 + y: 5 + tile: 165 + } + cell { + x: 9 + y: 5 + tile: 166 + } + cell { + x: 10 + y: 5 + tile: 167 + } + cell { + x: 11 + y: 5 + tile: 197 + } + cell { + x: 12 + y: 5 + tile: 167 + } + cell { + x: 13 + y: 5 + tile: 71 + } + cell { + x: 14 + y: 5 + tile: 2 + } + cell { + x: 15 + y: 5 + tile: 197 + } + cell { + x: 16 + y: 5 + tile: 198 + } + cell { + x: 17 + y: 5 + tile: 32 + } + cell { + x: 18 + y: 5 + tile: 34 + } + cell { + x: 19 + y: 5 + tile: 1 + } + cell { + x: 0 + y: 6 + tile: 35 + rotate90: 1 + } + cell { + x: 1 + y: 6 + tile: 1 + } + cell { + x: 2 + y: 6 + tile: 71 + } + cell { + x: 3 + y: 6 + tile: 1 + } + cell { + x: 4 + y: 6 + tile: 32 + } + cell { + x: 5 + y: 6 + tile: 1 + } + cell { + x: 6 + y: 6 + tile: 199 + } + cell { + x: 7 + y: 6 + tile: 132 + } + cell { + x: 8 + y: 6 + tile: 198 + } + cell { + x: 9 + y: 6 + tile: 134 + } + cell { + x: 10 + y: 6 + tile: 198 + } + cell { + x: 11 + y: 6 + tile: 71 + } + cell { + x: 12 + y: 6 + tile: 135 + } + cell { + x: 13 + y: 6 + tile: 34 + } + cell { + x: 14 + y: 6 + tile: 71 + } + cell { + x: 15 + y: 6 + tile: 199 + } + cell { + x: 16 + y: 6 + tile: 71 + } + cell { + x: 17 + y: 6 + tile: 4 + } + cell { + x: 18 + y: 6 + tile: 1 + } + cell { + x: 19 + y: 6 + tile: 6 + } + cell { + x: 0 + y: 7 + tile: 101 + } + cell { + x: 1 + y: 7 + tile: 0 + } + cell { + x: 2 + y: 7 + tile: 103 + } + cell { + x: 3 + y: 7 + tile: 3 + } + cell { + x: 4 + y: 7 + tile: 66 + } + cell { + x: 5 + y: 7 + tile: 96 + } + cell { + x: 6 + y: 7 + tile: 96 + } + cell { + x: 7 + y: 7 + tile: 36 + } + cell { + x: 8 + y: 7 + tile: 0 + } + cell { + x: 9 + y: 7 + tile: 34 + } + cell { + x: 10 + y: 7 + tile: 32 + } + cell { + x: 11 + y: 7 + tile: 1 + } + cell { + x: 12 + y: 7 + tile: 64 + } + cell { + x: 13 + y: 7 + tile: 224 + } + cell { + x: 14 + y: 7 + tile: 35 + rotate90: 1 + } + cell { + x: 15 + y: 7 + tile: 96 + } + cell { + x: 16 + y: 7 + tile: 35 + rotate90: 1 + } + cell { + x: 17 + y: 7 + tile: 96 + } + cell { + x: 18 + y: 7 + tile: 34 + } + cell { + x: 19 + y: 7 + tile: 34 + } + cell { + x: 0 + y: 8 + tile: 103 + } + cell { + x: 1 + y: 8 + tile: 96 + } + cell { + x: 2 + y: 8 + tile: 36 + } + cell { + x: 3 + y: 8 + tile: 96 + } + cell { + x: 4 + y: 8 + tile: 2 + } + cell { + x: 5 + y: 8 + tile: 64 + } + cell { + x: 6 + y: 8 + tile: 64 + } + cell { + x: 7 + y: 8 + tile: 5 + } + cell { + x: 8 + y: 8 + tile: 1 + } + cell { + x: 9 + y: 8 + tile: 2 + } + cell { + x: 10 + y: 8 + tile: 71 + } + cell { + x: 11 + y: 8 + tile: 69 + } + cell { + x: 12 + y: 8 + tile: 101 + } + cell { + x: 13 + y: 8 + tile: 167 + } + cell { + x: 14 + y: 8 + tile: 64 + } + cell { + x: 15 + y: 8 + tile: 97 + } + cell { + x: 16 + y: 8 + tile: 64 + } + cell { + x: 17 + y: 8 + tile: 97 + } + cell { + x: 18 + y: 8 + tile: 34 + } + cell { + x: 19 + y: 8 + tile: 96 + } + cell { + x: 0 + y: 9 + tile: 64 + } + cell { + x: 1 + y: 9 + tile: 64 + } + cell { + x: 2 + y: 9 + tile: 71 + } + cell { + x: 3 + y: 9 + tile: 64 + } + cell { + x: 4 + y: 9 + tile: 7 + } + cell { + x: 5 + y: 9 + tile: 32 + } + cell { + x: 6 + y: 9 + tile: 1 + } + cell { + x: 7 + y: 9 + tile: 71 + } + cell { + x: 8 + y: 9 + tile: 1 + } + cell { + x: 9 + y: 9 + tile: 2 + } + cell { + x: 10 + y: 9 + tile: 64 + } + cell { + x: 11 + y: 9 + tile: 1 + } + cell { + x: 12 + y: 9 + tile: 97 + } + cell { + x: 13 + y: 9 + tile: 135 + } + cell { + x: 14 + y: 9 + tile: 160 + } + cell { + x: 15 + y: 9 + tile: 229 + } + cell { + x: 16 + y: 9 + tile: 5 + } + cell { + x: 17 + y: 9 + tile: 32 + } + cell { + x: 18 + y: 9 + tile: 34 + } + cell { + x: 19 + y: 9 + tile: 96 + } + cell { + x: 0 + y: 10 + tile: 1 + } + cell { + x: 1 + y: 10 + tile: 1 + } + cell { + x: 2 + y: 10 + tile: 200 + } + cell { + x: 3 + y: 10 + tile: 205 + } + cell { + x: 4 + y: 10 + tile: 299 + } + cell { + x: 5 + y: 10 + tile: 300 + } + cell { + x: 6 + y: 10 + tile: 200 + } + cell { + x: 7 + y: 10 + tile: 296 + } + cell { + x: 8 + y: 10 + tile: 297 + } + cell { + x: 9 + y: 10 + tile: 200 + } + cell { + x: 10 + y: 10 + tile: 205 + } + cell { + x: 11 + y: 10 + tile: 200 + } + cell { + x: 12 + y: 10 + tile: 200 + } + cell { + x: 13 + y: 10 + tile: 200 + } + cell { + x: 14 + y: 10 + tile: 205 + } + cell { + x: 15 + y: 10 + tile: 201 + } + cell { + x: 16 + y: 10 + tile: 200 + } + cell { + x: 17 + y: 10 + tile: 201 + } + cell { + x: 18 + y: 10 + tile: 202 + } + cell { + x: 19 + y: 10 + tile: 6 + } + cell { + x: 0 + y: 11 + tile: 1 + } + cell { + x: 1 + y: 11 + tile: 36 + } + cell { + x: 2 + y: 11 + tile: 168 + } + cell { + x: 3 + y: 11 + tile: 173 + } + cell { + x: 4 + y: 11 + tile: 267 + } + cell { + x: 5 + y: 11 + tile: 268 + } + cell { + x: 6 + y: 11 + tile: 168 + } + cell { + x: 7 + y: 11 + tile: 264 + } + cell { + x: 8 + y: 11 + tile: 265 + } + cell { + x: 9 + y: 11 + tile: 168 + } + cell { + x: 10 + y: 11 + tile: 173 + } + cell { + x: 11 + y: 11 + tile: 168 + } + cell { + x: 12 + y: 11 + tile: 168 + } + cell { + x: 13 + y: 11 + tile: 168 + } + cell { + x: 14 + y: 11 + tile: 173 + } + cell { + x: 15 + y: 11 + tile: 169 + } + cell { + x: 16 + y: 11 + tile: 168 + } + cell { + x: 17 + y: 11 + tile: 169 + } + cell { + x: 18 + y: 11 + tile: 170 + } + cell { + x: 19 + y: 11 + tile: 34 + } +} +layers { + id: "layer" + z: 0.0 + cell { + x: 0 + y: 0 + tile: 749 + } + cell { + x: 1 + y: 0 + tile: 107 + } + cell { + x: 2 + y: 0 + tile: 19 + } + cell { + x: 3 + y: 0 + tile: 19 + } + cell { + x: 4 + y: 0 + tile: 19 + } + cell { + x: 5 + y: 0 + tile: 19 + } + cell { + x: 6 + y: 0 + tile: 19 + } + cell { + x: 7 + y: 0 + tile: 19 + } + cell { + x: 8 + y: 0 + tile: 19 + } + cell { + x: 9 + y: 0 + tile: 19 + } + cell { + x: 10 + y: 0 + tile: 19 + } + cell { + x: 11 + y: 0 + tile: 19 + } + cell { + x: 12 + y: 0 + tile: 19 + } + cell { + x: 13 + y: 0 + tile: 19 + } + cell { + x: 14 + y: 0 + tile: 19 + } + cell { + x: 15 + y: 0 + tile: 19 + } + cell { + x: 16 + y: 0 + tile: 19 + } + cell { + x: 17 + y: 0 + tile: 20 + } + cell { + x: 18 + y: 0 + tile: 21 + } + cell { + x: 19 + y: 0 + tile: 111 + } + cell { + x: 0 + y: 1 + tile: 717 + } + cell { + x: 1 + y: 1 + tile: 49 + } + cell { + x: 2 + y: 1 + tile: 993 + } + cell { + x: 4 + y: 1 + tile: 1009 + } + cell { + x: 5 + y: 1 + tile: 1010 + } + cell { + x: 10 + y: 1 + tile: 978 + } + cell { + x: 18 + y: 1 + tile: 1000 + } + cell { + x: 19 + y: 1 + tile: 48 + } + cell { + x: 0 + y: 2 + tile: 663 + } + cell { + x: 1 + y: 2 + tile: 17 + } + cell { + x: 2 + y: 2 + tile: 739 + } + cell { + x: 4 + y: 2 + tile: 1011 + } + cell { + x: 15 + y: 2 + tile: 912 + } + cell { + x: 18 + y: 2 + tile: 675 + } + cell { + x: 19 + y: 2 + tile: 16 + } + cell { + x: 0 + y: 3 + tile: 747 + } + cell { + x: 1 + y: 3 + tile: 81 + } + cell { + x: 4 + y: 3 + tile: 945 + } + cell { + x: 5 + y: 3 + tile: 946 + } + cell { + x: 19 + y: 3 + tile: 80 + } + cell { + x: 0 + y: 4 + tile: 715 + } + cell { + x: 1 + y: 4 + tile: 49 + } + cell { + x: 5 + y: 4 + tile: 947 + } + cell { + x: 9 + y: 4 + tile: 778 + } + cell { + x: 15 + y: 4 + tile: 912 + } + cell { + x: 18 + y: 4 + tile: 723 + } + cell { + x: 19 + y: 4 + tile: 48 + } + cell { + x: 0 + y: 5 + tile: 683 + } + cell { + x: 1 + y: 5 + tile: 17 + } + cell { + x: 2 + y: 5 + tile: 992 + } + cell { + x: 3 + y: 5 + tile: 912 + } + cell { + x: 7 + y: 5 + tile: 912 + } + cell { + x: 12 + y: 5 + tile: 914 + } + cell { + x: 19 + y: 5 + tile: 16 + } + cell { + x: 0 + y: 6 + tile: 663 + } + cell { + x: 1 + y: 6 + tile: 81 + } + cell { + x: 2 + y: 6 + tile: 723 + } + cell { + x: 14 + y: 6 + tile: 648 + } + cell { + x: 18 + y: 6 + tile: 712 + } + cell { + x: 19 + y: 6 + tile: 80 + } + cell { + x: 0 + y: 7 + tile: 663 + } + cell { + x: 1 + y: 7 + tile: 49 + } + cell { + x: 2 + y: 7 + tile: 721 + } + cell { + x: 4 + y: 7 + tile: 552 + } + cell { + x: 8 + y: 7 + tile: 913 + } + cell { + x: 14 + y: 7 + tile: 616 + } + cell { + x: 18 + y: 7 + tile: 613 + } + cell { + x: 19 + y: 7 + tile: 48 + } + cell { + x: -2 + y: 7 + tile: 661 + } + cell { + x: 0 + y: 8 + tile: 747 + } + cell { + x: 1 + y: 8 + tile: 17 + } + cell { + x: 4 + y: 8 + tile: 520 + } + cell { + x: 18 + y: 8 + tile: 581 + } + cell { + x: 19 + y: 8 + tile: 16 + } + cell { + x: 0 + y: 9 + tile: 715 + } + cell { + x: 1 + y: 9 + tile: 75 + } + cell { + x: 2 + y: 9 + tile: 677 + } + cell { + x: 4 + y: 9 + tile: 647 + } + cell { + x: 6 + y: 9 + tile: 553 + } + cell { + x: 7 + y: 9 + tile: 554 + } + cell { + x: 9 + y: 9 + tile: 711 + } + cell { + x: 10 + y: 9 + tile: 993 + } + cell { + x: 11 + y: 9 + tile: 665 + } + cell { + x: 12 + y: 9 + tile: 666 + } + cell { + x: 13 + y: 9 + tile: 1011 + } + cell { + x: 14 + y: 9 + tile: 656 + } + cell { + x: 15 + y: 9 + tile: 657 + } + cell { + x: 16 + y: 9 + tile: 658 + } + cell { + x: 17 + y: 9 + tile: 659 + } + cell { + x: 18 + y: 9 + tile: 547 + } + cell { + x: 19 + y: 9 + tile: 79 + } + cell { + x: 0 + y: 10 + tile: 683 + } + cell { + x: 1 + y: 10 + tile: 43 + } + cell { + x: 2 + y: 10 + tile: 645 + } + cell { + x: 4 + y: 10 + tile: 615 + } + cell { + x: 6 + y: 10 + tile: 521 + } + cell { + x: 7 + y: 10 + tile: 522 + } + cell { + x: 8 + y: 10 + tile: 778 + } + cell { + x: 9 + y: 10 + tile: 679 + } + cell { + x: 11 + y: 10 + tile: 633 + } + cell { + x: 12 + y: 10 + tile: 634 + } + cell { + x: 13 + y: 10 + tile: 635 + } + cell { + x: 14 + y: 10 + tile: 624 + } + cell { + x: 15 + y: 10 + tile: 625 + } + cell { + x: 16 + y: 10 + tile: 626 + } + cell { + x: 17 + y: 10 + tile: 627 + } + cell { + x: 18 + y: 10 + tile: 515 + } + cell { + x: 19 + y: 10 + tile: 47 + } + cell { + x: 0 + y: 11 + tile: 663 + } + cell { + x: 1 + y: 11 + tile: 11 + } + cell { + x: 4 + y: 11 + tile: 583 + } + cell { + x: 11 + y: 11 + tile: 601 + } + cell { + x: 12 + y: 11 + tile: 602 + } + cell { + x: 13 + y: 11 + tile: 603 + } + cell { + x: 14 + y: 11 + tile: 592 + } + cell { + x: 15 + y: 11 + tile: 593 + } + cell { + x: 16 + y: 11 + tile: 594 + } + cell { + x: 17 + y: 11 + tile: 595 + } + cell { + x: 18 + y: 11 + tile: 596 + } + cell { + x: 19 + y: 11 + tile: 15 + } + cell { + x: 0 + y: 12 + tile: 560 + } + cell { + x: 1 + y: 12 + tile: 560 + } + cell { + x: 11 + y: 12 + tile: 569 + } + cell { + x: 12 + y: 12 + tile: 570 + } + cell { + x: 13 + y: 12 + tile: 571 + } + cell { + x: 14 + y: 12 + tile: 560 + } + cell { + x: 15 + y: 12 + tile: 561 + } + cell { + x: 16 + y: 12 + tile: 562 + } + cell { + x: 17 + y: 12 + tile: 563 + } + cell { + x: 18 + y: 12 + tile: 564 + } + cell { + x: 0 + y: 13 + tile: 528 + } + cell { + x: 11 + y: 13 + tile: 537 + } + cell { + x: 12 + y: 13 + tile: 538 + } + cell { + x: 13 + y: 13 + tile: 539 + } + cell { + x: 14 + y: 13 + tile: 528 + } + cell { + x: 15 + y: 13 + tile: 529 + } + cell { + x: 16 + y: 13 + tile: 530 + } + cell { + x: 17 + y: 13 + tile: 531 + } + cell { + x: 18 + y: 13 + tile: 532 + } +} +material: "/builtins/materials/tile_map.material" diff --git a/assets/tiles/tiles.tilesource b/assets/tiles/tiles.tilesource new file mode 100644 index 0000000..f328991 --- /dev/null +++ b/assets/tiles/tiles.tilesource @@ -0,0 +1,5132 @@ +image: "/assets/tiles/tileset.png" +tile_width: 32 +tile_height: 32 +collision: "/assets/tiles/tileset.png" +convex_hulls { + index: 0 + count: 4 + collision_group: "" +} +convex_hulls { + index: 4 + count: 4 + collision_group: "" +} +convex_hulls { + index: 8 + count: 4 + collision_group: "" +} +convex_hulls { + index: 12 + count: 4 + collision_group: "" +} +convex_hulls { + index: 16 + count: 4 + collision_group: "" +} +convex_hulls { + index: 20 + count: 4 + collision_group: "" +} +convex_hulls { + index: 24 + count: 4 + collision_group: "" +} +convex_hulls { + index: 28 + count: 4 + collision_group: "" +} +convex_hulls { + index: 32 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 38 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 42 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 48 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 53 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 57 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 61 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 65 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 70 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 74 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 78 + count: 0 + collision_group: "" +} +convex_hulls { + index: 78 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 82 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 86 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 90 + count: 4 + collision_group: "" +} +convex_hulls { + index: 94 + count: 4 + collision_group: "" +} +convex_hulls { + index: 98 + count: 0 + collision_group: "" +} +convex_hulls { + index: 98 + count: 4 + collision_group: "" +} +convex_hulls { + index: 102 + count: 4 + collision_group: "" +} +convex_hulls { + index: 106 + count: 0 + collision_group: "" +} +convex_hulls { + index: 106 + count: 4 + collision_group: "" +} +convex_hulls { + index: 110 + count: 4 + collision_group: "" +} +convex_hulls { + index: 114 + count: 0 + collision_group: "" +} +convex_hulls { + index: 114 + count: 0 + collision_group: "" +} +convex_hulls { + index: 114 + count: 4 + collision_group: "" +} +convex_hulls { + index: 118 + count: 4 + collision_group: "" +} +convex_hulls { + index: 122 + count: 4 + collision_group: "" +} +convex_hulls { + index: 126 + count: 4 + collision_group: "" +} +convex_hulls { + index: 130 + count: 4 + collision_group: "" +} +convex_hulls { + index: 134 + count: 4 + collision_group: "" +} +convex_hulls { + index: 138 + count: 4 + collision_group: "" +} +convex_hulls { + index: 142 + count: 4 + collision_group: "" +} +convex_hulls { + index: 146 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 150 + count: 0 + collision_group: "" +} +convex_hulls { + index: 150 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 154 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 158 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 162 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 166 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 170 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 174 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 178 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 182 + count: 0 + collision_group: "" +} +convex_hulls { + index: 182 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 188 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 194 + count: 0 + collision_group: "" +} +convex_hulls { + index: 194 + count: 4 + collision_group: "" +} +convex_hulls { + index: 198 + count: 4 + collision_group: "" +} +convex_hulls { + index: 202 + count: 0 + collision_group: "" +} +convex_hulls { + index: 202 + count: 4 + collision_group: "" +} +convex_hulls { + index: 206 + count: 4 + collision_group: "" +} +convex_hulls { + index: 210 + count: 0 + collision_group: "" +} +convex_hulls { + index: 210 + count: 4 + collision_group: "" +} +convex_hulls { + index: 214 + count: 4 + collision_group: "" +} +convex_hulls { + index: 218 + count: 0 + collision_group: "" +} +convex_hulls { + index: 218 + count: 0 + collision_group: "" +} +convex_hulls { + index: 218 + count: 4 + collision_group: "" +} +convex_hulls { + index: 222 + count: 4 + collision_group: "" +} +convex_hulls { + index: 226 + count: 4 + collision_group: "" +} +convex_hulls { + index: 230 + count: 4 + collision_group: "" +} +convex_hulls { + index: 234 + count: 4 + collision_group: "" +} +convex_hulls { + index: 238 + count: 4 + collision_group: "" +} +convex_hulls { + index: 242 + count: 4 + collision_group: "" +} +convex_hulls { + index: 246 + count: 4 + collision_group: "" +} +convex_hulls { + index: 250 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 255 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 259 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 264 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 268 + count: 0 + collision_group: "" +} +convex_hulls { + index: 268 + count: 0 + collision_group: "" +} +convex_hulls { + index: 268 + count: 0 + collision_group: "" +} +convex_hulls { + index: 268 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 272 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 276 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 280 + count: 0 + collision_group: "" +} +convex_hulls { + index: 280 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 285 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 290 + count: 0 + collision_group: "" +} +convex_hulls { + index: 290 + count: 5 + collision_group: "" +} +convex_hulls { + index: 295 + count: 5 + collision_group: "" +} +convex_hulls { + index: 300 + count: 0 + collision_group: "" +} +convex_hulls { + index: 300 + count: 5 + collision_group: "" +} +convex_hulls { + index: 305 + count: 4 + collision_group: "" +} +convex_hulls { + index: 309 + count: 0 + collision_group: "" +} +convex_hulls { + index: 309 + count: 5 + collision_group: "" +} +convex_hulls { + index: 314 + count: 4 + collision_group: "" +} +convex_hulls { + index: 318 + count: 0 + collision_group: "" +} +convex_hulls { + index: 318 + count: 0 + collision_group: "" +} +convex_hulls { + index: 318 + count: 4 + collision_group: "" +} +convex_hulls { + index: 322 + count: 4 + collision_group: "" +} +convex_hulls { + index: 326 + count: 4 + collision_group: "" +} +convex_hulls { + index: 330 + count: 4 + collision_group: "" +} +convex_hulls { + index: 334 + count: 4 + collision_group: "" +} +convex_hulls { + index: 338 + count: 4 + collision_group: "" +} +convex_hulls { + index: 342 + count: 4 + collision_group: "" +} +convex_hulls { + index: 346 + count: 4 + collision_group: "" +} +convex_hulls { + index: 350 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 355 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 359 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 364 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 369 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 373 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 377 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 381 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 386 + count: 0 + collision_group: "" +} +convex_hulls { + index: 386 + count: 0 + collision_group: "" +} +convex_hulls { + index: 386 + count: 0 + collision_group: "" +} +convex_hulls { + index: 386 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 391 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 0 + collision_group: "" +} +convex_hulls { + index: 396 + count: 4 + collision_group: "" +} +convex_hulls { + index: 400 + count: 4 + collision_group: "" +} +convex_hulls { + index: 404 + count: 4 + collision_group: "" +} +convex_hulls { + index: 408 + count: 4 + collision_group: "" +} +convex_hulls { + index: 412 + count: 4 + collision_group: "" +} +convex_hulls { + index: 416 + count: 4 + collision_group: "" +} +convex_hulls { + index: 420 + count: 4 + collision_group: "" +} +convex_hulls { + index: 424 + count: 4 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 0 + collision_group: "" +} +convex_hulls { + index: 428 + count: 4 + collision_group: "" +} +convex_hulls { + index: 432 + count: 4 + collision_group: "" +} +convex_hulls { + index: 436 + count: 0 + collision_group: "" +} +convex_hulls { + index: 436 + count: 4 + collision_group: "" +} +convex_hulls { + index: 440 + count: 4 + collision_group: "" +} +convex_hulls { + index: 444 + count: 0 + collision_group: "" +} +convex_hulls { + index: 444 + count: 4 + collision_group: "" +} +convex_hulls { + index: 448 + count: 4 + collision_group: "" +} +convex_hulls { + index: 452 + count: 0 + collision_group: "" +} +convex_hulls { + index: 452 + count: 0 + collision_group: "" +} +convex_hulls { + index: 452 + count: 4 + collision_group: "" +} +convex_hulls { + index: 456 + count: 4 + collision_group: "" +} +convex_hulls { + index: 460 + count: 4 + collision_group: "" +} +convex_hulls { + index: 464 + count: 4 + collision_group: "" +} +convex_hulls { + index: 468 + count: 4 + collision_group: "" +} +convex_hulls { + index: 472 + count: 4 + collision_group: "" +} +convex_hulls { + index: 476 + count: 4 + collision_group: "" +} +convex_hulls { + index: 480 + count: 4 + collision_group: "" +} +convex_hulls { + index: 484 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 488 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 492 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 496 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 500 + count: 0 + collision_group: "" +} +convex_hulls { + index: 500 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 0 + collision_group: "" +} +convex_hulls { + index: 504 + count: 4 + collision_group: "" +} +convex_hulls { + index: 508 + count: 4 + collision_group: "" +} +convex_hulls { + index: 512 + count: 0 + collision_group: "" +} +convex_hulls { + index: 512 + count: 4 + collision_group: "" +} +convex_hulls { + index: 516 + count: 4 + collision_group: "" +} +convex_hulls { + index: 520 + count: 0 + collision_group: "" +} +convex_hulls { + index: 520 + count: 4 + collision_group: "" +} +convex_hulls { + index: 524 + count: 4 + collision_group: "" +} +convex_hulls { + index: 528 + count: 0 + collision_group: "" +} +convex_hulls { + index: 528 + count: 0 + collision_group: "" +} +convex_hulls { + index: 528 + count: 4 + collision_group: "" +} +convex_hulls { + index: 532 + count: 4 + collision_group: "" +} +convex_hulls { + index: 536 + count: 4 + collision_group: "" +} +convex_hulls { + index: 540 + count: 4 + collision_group: "" +} +convex_hulls { + index: 544 + count: 4 + collision_group: "" +} +convex_hulls { + index: 548 + count: 4 + collision_group: "" +} +convex_hulls { + index: 552 + count: 4 + collision_group: "" +} +convex_hulls { + index: 556 + count: 4 + collision_group: "" +} +convex_hulls { + index: 560 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 564 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 568 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 572 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 576 + count: 0 + collision_group: "" +} +convex_hulls { + index: 576 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 0 + collision_group: "" +} +convex_hulls { + index: 580 + count: 5 + collision_group: "" +} +convex_hulls { + index: 585 + count: 5 + collision_group: "" +} +convex_hulls { + index: 590 + count: 0 + collision_group: "" +} +convex_hulls { + index: 590 + count: 5 + collision_group: "" +} +convex_hulls { + index: 595 + count: 4 + collision_group: "" +} +convex_hulls { + index: 599 + count: 0 + collision_group: "" +} +convex_hulls { + index: 599 + count: 5 + collision_group: "" +} +convex_hulls { + index: 604 + count: 4 + collision_group: "" +} +convex_hulls { + index: 608 + count: 0 + collision_group: "" +} +convex_hulls { + index: 608 + count: 0 + collision_group: "" +} +convex_hulls { + index: 608 + count: 4 + collision_group: "" +} +convex_hulls { + index: 612 + count: 4 + collision_group: "" +} +convex_hulls { + index: 616 + count: 4 + collision_group: "" +} +convex_hulls { + index: 620 + count: 4 + collision_group: "" +} +convex_hulls { + index: 624 + count: 4 + collision_group: "" +} +convex_hulls { + index: 628 + count: 4 + collision_group: "" +} +convex_hulls { + index: 632 + count: 5 + collision_group: "" +} +convex_hulls { + index: 637 + count: 5 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 0 + collision_group: "" +} +convex_hulls { + index: 642 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 646 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 650 + count: 0 + collision_group: "" +} +convex_hulls { + index: 650 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 654 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 0 + collision_group: "" +} +convex_hulls { + index: 658 + count: 4 + collision_group: "" +} +convex_hulls { + index: 662 + count: 6 + collision_group: "" +} +convex_hulls { + index: 668 + count: 5 + collision_group: "" +} +convex_hulls { + index: 673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 673 + count: 4 + collision_group: "" +} +convex_hulls { + index: 677 + count: 6 + collision_group: "" +} +convex_hulls { + index: 683 + count: 5 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 688 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 692 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 696 + count: 0 + collision_group: "" +} +convex_hulls { + index: 696 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 700 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 0 + collision_group: "" +} +convex_hulls { + index: 704 + count: 7 + collision_group: "" +} +convex_hulls { + index: 711 + count: 4 + collision_group: "" +} +convex_hulls { + index: 715 + count: 4 + collision_group: "" +} +convex_hulls { + index: 719 + count: 5 + collision_group: "" +} +convex_hulls { + index: 724 + count: 7 + collision_group: "" +} +convex_hulls { + index: 731 + count: 4 + collision_group: "" +} +convex_hulls { + index: 735 + count: 4 + collision_group: "" +} +convex_hulls { + index: 739 + count: 5 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 744 + count: 6 + collision_group: "" +} +convex_hulls { + index: 750 + count: 5 + collision_group: "" +} +convex_hulls { + index: 755 + count: 4 + collision_group: "" +} +convex_hulls { + index: 759 + count: 4 + collision_group: "" +} +convex_hulls { + index: 763 + count: 6 + collision_group: "" +} +convex_hulls { + index: 769 + count: 5 + collision_group: "" +} +convex_hulls { + index: 774 + count: 4 + collision_group: "" +} +convex_hulls { + index: 778 + count: 4 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 0 + collision_group: "" +} +convex_hulls { + index: 782 + count: 4 + collision_group: "" +} +convex_hulls { + index: 786 + count: 6 + collision_group: "" +} +convex_hulls { + index: 792 + count: 4 + collision_group: "" +} +convex_hulls { + index: 796 + count: 0 + collision_group: "" +} +convex_hulls { + index: 796 + count: 4 + collision_group: "" +} +convex_hulls { + index: 800 + count: 6 + collision_group: "" +} +convex_hulls { + index: 806 + count: 4 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 0 + collision_group: "" +} +convex_hulls { + index: 810 + count: 4 + collision_group: "" +} +convex_hulls { + index: 814 + count: 4 + collision_group: "" +} +convex_hulls { + index: 818 + count: 4 + collision_group: "" +} +convex_hulls { + index: 822 + count: 7 + collision_group: "" +} +convex_hulls { + index: 829 + count: 4 + collision_group: "" +} +convex_hulls { + index: 833 + count: 4 + collision_group: "" +} +convex_hulls { + index: 837 + count: 4 + collision_group: "" +} +convex_hulls { + index: 841 + count: 7 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 848 + count: 4 + collision_group: "" +} +convex_hulls { + index: 852 + count: 4 + collision_group: "" +} +convex_hulls { + index: 856 + count: 5 + collision_group: "" +} +convex_hulls { + index: 861 + count: 6 + collision_group: "" +} +convex_hulls { + index: 867 + count: 4 + collision_group: "" +} +convex_hulls { + index: 871 + count: 4 + collision_group: "" +} +convex_hulls { + index: 875 + count: 5 + collision_group: "" +} +convex_hulls { + index: 880 + count: 6 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 0 + collision_group: "" +} +convex_hulls { + index: 886 + count: 6 + collision_group: "" +} +convex_hulls { + index: 892 + count: 0 + collision_group: "" +} +convex_hulls { + index: 892 + count: 4 + collision_group: "" +} +convex_hulls { + index: 896 + count: 0 + collision_group: "" +} +convex_hulls { + index: 896 + count: 4 + collision_group: "" +} +convex_hulls { + index: 900 + count: 0 + collision_group: "" +} +convex_hulls { + index: 900 + count: 6 + collision_group: "" +} +convex_hulls { + index: 906 + count: 4 + collision_group: "" +} +convex_hulls { + index: 910 + count: 6 + collision_group: "" +} +convex_hulls { + index: 916 + count: 6 + collision_group: "" +} +convex_hulls { + index: 922 + count: 0 + collision_group: "" +} +convex_hulls { + index: 922 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 930 + count: 0 + collision_group: "" +} +convex_hulls { + index: 930 + count: 10 + collision_group: "" +} +convex_hulls { + index: 940 + count: 0 + collision_group: "" +} +convex_hulls { + index: 940 + count: 0 + collision_group: "" +} +convex_hulls { + index: 940 + count: 6 + collision_group: "" +} +convex_hulls { + index: 946 + count: 10 + collision_group: "" +} +convex_hulls { + index: 956 + count: 4 + collision_group: "" +} +convex_hulls { + index: 960 + count: 0 + collision_group: "" +} +convex_hulls { + index: 960 + count: 4 + collision_group: "" +} +convex_hulls { + index: 964 + count: 8 + collision_group: "" +} +convex_hulls { + index: 972 + count: 3 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 0 + collision_group: "" +} +convex_hulls { + index: 975 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 981 + count: 0 + collision_group: "" +} +convex_hulls { + index: 981 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 985 + count: 0 + collision_group: "" +} +convex_hulls { + index: 985 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 989 + count: 0 + collision_group: "" +} +convex_hulls { + index: 989 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 995 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1000 + count: 7 + collision_group: "ground" +} +convex_hulls { + index: 1007 + count: 7 + collision_group: "ground" +} +convex_hulls { + index: 1014 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1014 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1022 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1022 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1028 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1028 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1028 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1034 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1038 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1044 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1044 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1051 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1055 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1062 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1062 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1068 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1077 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1083 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1089 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1089 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1093 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1093 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1099 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1099 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1104 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1109 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1109 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1109 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1115 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1121 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1126 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1133 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1138 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1142 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1148 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1157 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1163 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1167 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1174 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1178 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1186 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1190 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1199 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1199 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1199 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1199 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1199 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1204 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1212 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1216 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 1220 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1220 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 1224 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1224 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1228 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1232 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 1237 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 1242 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1242 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1250 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1250 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1254 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1254 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1260 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1268 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1276 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1283 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1283 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1289 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1295 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1303 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1303 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1312 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1320 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1328 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1328 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1328 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1328 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1328 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1333 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 1337 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1342 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1342 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1342 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1348 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1348 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1354 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1358 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1362 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1362 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1362 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1370 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1370 + count: 5 + collision_group: "ground" +} +convex_hulls { + index: 1375 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1375 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1375 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1375 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1383 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1383 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1383 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1383 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1389 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1389 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1389 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1389 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1397 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1397 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1397 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1397 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1397 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1397 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1401 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1408 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1412 + count: 11 + collision_group: "ground" +} +convex_hulls { + index: 1423 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1423 + count: 14 + collision_group: "ground" +} +convex_hulls { + index: 1437 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1437 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1445 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1445 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1451 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1451 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1458 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1462 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1462 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1468 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1468 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1476 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1476 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1480 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1480 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1480 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1480 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1480 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1484 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1488 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1492 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1492 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1492 + count: 10 + collision_group: "" +} +convex_hulls { + index: 1502 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1502 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1508 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1513 + count: 4 + collision_group: "ground" +} +convex_hulls { + index: 1517 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1517 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1525 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1525 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1534 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1534 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1534 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1534 + count: 12 + collision_group: "ground" +} +convex_hulls { + index: 1546 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1546 + count: 14 + collision_group: "ground" +} +convex_hulls { + index: 1560 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1566 + count: 14 + collision_group: "ground" +} +convex_hulls { + index: 1580 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1585 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1593 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1597 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1605 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1609 + count: 11 + collision_group: "ground" +} +convex_hulls { + index: 1620 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1624 + count: 12 + collision_group: "ground" +} +convex_hulls { + index: 1636 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1636 + count: 11 + collision_group: "ground" +} +convex_hulls { + index: 1647 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1647 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1655 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1655 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1661 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1661 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1667 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1667 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1673 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1677 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1677 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1682 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1688 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1688 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1694 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1700 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1705 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1711 + count: 5 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1716 + count: 16 + collision_group: "ground" +} +convex_hulls { + index: 1732 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1732 + count: 12 + collision_group: "" +} +convex_hulls { + index: 1744 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1744 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1750 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1750 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1758 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1762 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1770 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1778 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1778 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1784 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1784 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1790 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1790 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1796 + count: 6 + collision_group: "" +} +convex_hulls { + index: 1802 + count: 4 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1806 + count: 12 + collision_group: "ground" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1818 + count: 9 + collision_group: "ground" +} +convex_hulls { + index: 1827 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1833 + count: 8 + collision_group: "ground" +} +convex_hulls { + index: 1841 + count: 7 + collision_group: "ground" +} +convex_hulls { + index: 1848 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1848 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1855 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1864 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1873 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1882 + count: 7 + collision_group: "ground" +} +convex_hulls { + index: 1889 + count: 6 + collision_group: "ground" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1895 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1904 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1912 + count: 9 + collision_group: "" +} +convex_hulls { + index: 1921 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1929 + count: 7 + collision_group: "ground" +} +convex_hulls { + index: 1936 + count: 10 + collision_group: "ground" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1946 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1954 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1962 + count: 8 + collision_group: "" +} +convex_hulls { + index: 1970 + count: 7 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 0 + collision_group: "" +} +convex_hulls { + index: 1977 + count: 10 + collision_group: "" +} +convex_hulls { + index: 1987 + count: 12 + collision_group: "" +} +convex_hulls { + index: 1999 + count: 12 + collision_group: "" +} +convex_hulls { + index: 2011 + count: 11 + collision_group: "" +} +convex_hulls { + index: 2022 + count: 12 + collision_group: "ground" +} +convex_hulls { + index: 2034 + count: 15 + collision_group: "ground" +} +convex_hulls { + index: 2049 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2049 + count: 9 + collision_group: "" +} +convex_hulls { + index: 2058 + count: 10 + collision_group: "" +} +convex_hulls { + index: 2068 + count: 13 + collision_group: "ground" +} +convex_hulls { + index: 2081 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2081 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2081 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2081 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2081 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2081 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2081 + count: 7 + collision_group: "" +} +convex_hulls { + index: 2088 + count: 7 + collision_group: "" +} +convex_hulls { + index: 2095 + count: 7 + collision_group: "" +} +convex_hulls { + index: 2102 + count: 6 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +convex_hulls { + index: 2108 + count: 0 + collision_group: "" +} +collision_groups: "default" +collision_groups: "ground" +animations { + id: "anim" + start_tile: 1 + end_tile: 1 +} +extrude_borders: 2 diff --git a/assets/tiles/tileset.png b/assets/tiles/tileset.png new file mode 100644 index 0000000..321fd66 Binary files /dev/null and b/assets/tiles/tileset.png differ diff --git a/doc/1.png b/doc/1.png new file mode 100644 index 0000000..0a5f9ad Binary files /dev/null and b/doc/1.png differ diff --git a/doc/10.png b/doc/10.png new file mode 100644 index 0000000..ca5167e Binary files /dev/null and b/doc/10.png differ diff --git a/doc/2.png b/doc/2.png new file mode 100644 index 0000000..0ad6ef6 Binary files /dev/null and b/doc/2.png differ diff --git a/doc/3.png b/doc/3.png new file mode 100644 index 0000000..b4a1cd8 Binary files /dev/null and b/doc/3.png differ diff --git a/doc/4.png b/doc/4.png new file mode 100644 index 0000000..8fb8ee3 Binary files /dev/null and b/doc/4.png differ diff --git a/doc/5.png b/doc/5.png new file mode 100644 index 0000000..27088f2 Binary files /dev/null and b/doc/5.png differ diff --git a/doc/6.png b/doc/6.png new file mode 100644 index 0000000..b6389dc Binary files /dev/null and b/doc/6.png differ diff --git a/doc/7.png b/doc/7.png new file mode 100644 index 0000000..f6244a9 Binary files /dev/null and b/doc/7.png differ diff --git a/doc/8.png b/doc/8.png new file mode 100644 index 0000000..d275fa3 Binary files /dev/null and b/doc/8.png differ diff --git a/doc/9.png b/doc/9.png new file mode 100644 index 0000000..7468402 Binary files /dev/null and b/doc/9.png differ diff --git a/doc/add_animation.png b/doc/add_animation.png deleted file mode 100644 index 91423b6..0000000 Binary files a/doc/add_animation.png and /dev/null differ diff --git a/doc/add_animation@2x.png b/doc/add_animation@2x.png deleted file mode 100644 index 08cb0e1..0000000 Binary files a/doc/add_animation@2x.png and /dev/null differ diff --git a/doc/add_images.png b/doc/add_images.png deleted file mode 100644 index 284132e..0000000 Binary files a/doc/add_images.png and /dev/null differ diff --git a/doc/add_images@2x.png b/doc/add_images@2x.png deleted file mode 100644 index 694b86e..0000000 Binary files a/doc/add_images@2x.png and /dev/null differ diff --git a/doc/astronaut_atlas.png b/doc/astronaut_atlas.png deleted file mode 100644 index f779163..0000000 Binary files a/doc/astronaut_atlas.png and /dev/null differ diff --git a/doc/astronaut_atlas@2x.png b/doc/astronaut_atlas@2x.png deleted file mode 100644 index 44b2570..0000000 Binary files a/doc/astronaut_atlas@2x.png and /dev/null differ diff --git a/doc/astronaut_go.png b/doc/astronaut_go.png deleted file mode 100644 index 9dd1764..0000000 Binary files a/doc/astronaut_go.png and /dev/null differ diff --git a/doc/astronaut_go@2x.png b/doc/astronaut_go@2x.png deleted file mode 100644 index 6c21cbd..0000000 Binary files a/doc/astronaut_go@2x.png and /dev/null differ diff --git a/doc/building_blocks.png b/doc/building_blocks.png deleted file mode 100644 index 6fb6168..0000000 Binary files a/doc/building_blocks.png and /dev/null differ diff --git a/doc/building_blocks@2x.png b/doc/building_blocks@2x.png deleted file mode 100644 index d3366b1..0000000 Binary files a/doc/building_blocks@2x.png and /dev/null differ diff --git a/doc/camera.png b/doc/camera.png new file mode 100644 index 0000000..0fc8bae Binary files /dev/null and b/doc/camera.png differ diff --git a/doc/game.png b/doc/game.png new file mode 100644 index 0000000..8bb70ee Binary files /dev/null and b/doc/game.png differ diff --git a/doc/input_bindings.png b/doc/input_bindings.png index a083c64..dac5177 100644 Binary files a/doc/input_bindings.png and b/doc/input_bindings.png differ diff --git a/doc/intro.png b/doc/intro.png deleted file mode 100644 index cfe4656..0000000 Binary files a/doc/intro.png and /dev/null differ diff --git a/doc/main_collection.png b/doc/main_collection.png deleted file mode 100644 index 9b4e4c5..0000000 Binary files a/doc/main_collection.png and /dev/null differ diff --git a/doc/main_collection@2x.png b/doc/main_collection@2x.png deleted file mode 100644 index 733365d..0000000 Binary files a/doc/main_collection@2x.png and /dev/null differ diff --git a/doc/select_images.png b/doc/select_images.png deleted file mode 100644 index 5cdbc1a..0000000 Binary files a/doc/select_images.png and /dev/null differ diff --git a/doc/select_images@2x.png b/doc/select_images@2x.png deleted file mode 100644 index fa1f620..0000000 Binary files a/doc/select_images@2x.png and /dev/null differ diff --git a/doc/side-by-side.png b/doc/side-by-side.png new file mode 100644 index 0000000..8fba42a Binary files /dev/null and b/doc/side-by-side.png differ diff --git a/game.project b/game.project index 380e35a..3e9efc7 100644 --- a/game.project +++ b/game.project @@ -5,9 +5,19 @@ main_collection = /main/main.collectionc shared_state = 1 [project] -title = Astronaut walking +title = Top Down Movement Tutorial +developer = Defold Foundation [display] width = 1280 height = 768 +[graphics] +default_texture_min_filter = nearest +default_texture_mag_filter = nearest + +[render] +clear_color_red = 0.445313 +clear_color_green = 0.457031 +clear_color_blue = 0.105469 + diff --git a/main/astronaut.atlas b/main/astronaut.atlas deleted file mode 100644 index cecca6d..0000000 --- a/main/astronaut.atlas +++ /dev/null @@ -1,25 +0,0 @@ -animations { - id: "idle" - images { - image: "/assets/astronaut/idle_01.png" - } - images { - image: "/assets/astronaut/idle_02.png" - } - images { - image: "/assets/astronaut/idle_03.png" - } - images { - image: "/assets/astronaut/idle_04.png" - } - images { - image: "/assets/astronaut/idle_05.png" - } - playback: PLAYBACK_LOOP_FORWARD - fps: 10 - flip_horizontal: 0 - flip_vertical: 0 -} -margin: 0 -extrude_borders: 0 -inner_padding: 0 diff --git a/main/astronaut.go b/main/astronaut.go deleted file mode 100644 index b6c324b..0000000 --- a/main/astronaut.go +++ /dev/null @@ -1,35 +0,0 @@ -components { - id: "astronaut" - component: "/main/astronaut.script" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } -} -embedded_components { - id: "sprite" - type: "sprite" - data: "tile_set: \"/main/astronaut.atlas\"\n" - "default_animation: \"idle\"\n" - "material: \"/builtins/materials/sprite.material\"\n" - "blend_mode: BLEND_MODE_ALPHA\n" - "" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } -} diff --git a/main/astronaut.script b/main/astronaut.script deleted file mode 100644 index 34acd4d..0000000 --- a/main/astronaut.script +++ /dev/null @@ -1,29 +0,0 @@ -function init(self) - -- Add initialization code here - -- Remove this function if not needed -end - -function final(self) - -- Add finalization code here - -- Remove this function if not needed -end - -function update(self, dt) - -- Add update code here - -- Remove this function if not needed -end - -function on_message(self, message_id, message, sender) - -- Add message-handling code here - -- Remove this function if not needed -end - -function on_input(self, action_id, action) - -- Add input-handling code here - -- Remove this function if not needed -end - -function on_reload(self) - -- Add reload-handling code here - -- Remove this function if not needed -end \ No newline at end of file diff --git a/main/character.go b/main/character.go new file mode 100644 index 0000000..c732721 --- /dev/null +++ b/main/character.go @@ -0,0 +1,18 @@ +components { + id: "character" + component: "/main/character.script" +} +embedded_components { + id: "sprite" + type: "sprite" + data: "default_animation: \"idle\"\n" + "material: \"/builtins/materials/sprite.material\"\n" + "textures {\n" + " sampler: \"texture_sampler\"\n" + " texture: \"/assets/character/character.atlas\"\n" + "}\n" + "" + position { + z: 0.1 + } +} diff --git a/main/character.script b/main/character.script new file mode 100644 index 0000000..3f95ef0 --- /dev/null +++ b/main/character.script @@ -0,0 +1,56 @@ +function init(self) + -- Add initialization code here + -- Learn more: https://defold.com/manuals/script/ + -- Remove this function if not needed +end + +function final(self) + -- Add finalization code here + -- Learn more: https://defold.com/manuals/script/ + -- Remove this function if not needed +end + +function update(self, dt) + -- Add update code here + -- Learn more: https://defold.com/manuals/script/ + -- Remove this function if not needed +end + +function late_update(self, dt) + -- This function is called at the end of update cycle but before render + -- Learn more: https://defold.com/manuals/script/ + -- Remove this function if not needed +end + +function fixed_update(self, dt) + -- This function is called if 'Fixed Update Frequency' is enabled in the Engine section of game.project + -- Can be coupled with fixed updates of the physics simulation if 'Use Fixed Timestep' is enabled in + -- Physics section of game.project + -- Add update code here + -- Learn more: https://defold.com/manuals/script/ + -- Remove this function if not needed +end + +function on_message(self, message_id, message, sender) + -- Add message-handling code here + -- Learn more: https://defold.com/manuals/message-passing/ + -- Remove this function if not needed +end + +function on_input(self, action_id, action) + -- Add input-handling code here. The game object this script is attached to + -- must have acquired input focus: + -- + -- msg.post(".", "acquire_input_focus") + -- + -- All mapped input bindings will be received. Mouse and touch input will + -- be received regardless of where on the screen it happened. + -- Learn more: https://defold.com/manuals/input/ + -- Remove this function if not needed +end + +function on_reload(self) + -- Add reload-handling code here + -- Learn more: https://defold.com/manuals/hot-reload/ + -- Remove this function if not needed +end diff --git a/main/level.tilemap b/main/level.tilemap deleted file mode 100644 index 89d4e5c..0000000 --- a/main/level.tilemap +++ /dev/null @@ -1,1987 +0,0 @@ -tile_set: "/main/sandtiles.tilesource" -layers { - id: "layer1" - z: 0.0 - is_visible: 1 - cell { - x: 0 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 0 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 1 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 1 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 1 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 1 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 1 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 2 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 2 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 2 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 2 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 2 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 3 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 3 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 3 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 3 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 3 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 3 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 4 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 4 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 4 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 4 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 4 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 5 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 5 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 5 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 5 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 5 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 6 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 6 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 6 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 6 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 6 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 7 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 7 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 7 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 7 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 7 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 8 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 8 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 8 - tile: 1 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 8 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 8 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 8 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 9 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 9 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 9 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 9 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 9 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 10 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 10 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 10 - tile: 2 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 10 - tile: 3 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 10 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 0 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 13 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } - cell { - x: 19 - y: 11 - tile: 0 - h_flip: 0 - v_flip: 0 - } -} -layers { - id: "layer" - z: 0.1 - is_visible: 1 - cell { - x: 1 - y: 1 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 1 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 5 - y: 1 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 1 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 14 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 16 - y: 1 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 1 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 2 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 2 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 2 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 2 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 2 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 3 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 4 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 4 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 5 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 5 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 6 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 6 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 4 - y: 7 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 7 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 8 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 2 - y: 8 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 15 - y: 8 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 8 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 1 - y: 9 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 6 - y: 9 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 9 - y: 9 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 3 - y: 10 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 7 - y: 10 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 8 - y: 10 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 10 - y: 10 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 11 - y: 10 - tile: 5 - h_flip: 0 - v_flip: 0 - } - cell { - x: 12 - y: 10 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 17 - y: 10 - tile: 4 - h_flip: 0 - v_flip: 0 - } - cell { - x: 18 - y: 10 - tile: 5 - h_flip: 0 - v_flip: 0 - } -} -material: "/builtins/materials/tile_map.material" -blend_mode: BLEND_MODE_ALPHA diff --git a/main/main.collection b/main/main.collection index 0196465..1e0a558 100644 --- a/main/main.collection +++ b/main/main.collection @@ -1,21 +1,10 @@ name: "main" instances { - id: "astronaut" - prototype: "/main/astronaut.go" + id: "character" + prototype: "/main/character.go" position { - x: 640.0 - y: 384.0 - z: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 + x: 320.0 + y: 190.0 z: 1.0 } } @@ -24,34 +13,27 @@ embedded_instances { id: "level" data: "components {\n" " id: \"level\"\n" - " component: \"/main/level.tilemap\"\n" - " position {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " }\n" - " rotation {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " w: 1.0\n" - " }\n" + " component: \"/assets/tiles/level.tilemap\"\n" + "}\n" + "" +} +embedded_instances { + id: "camera" + data: "embedded_components {\n" + " id: \"camera\"\n" + " type: \"camera\"\n" + " data: \"aspect_ratio: 1.0\\n" + "fov: 0.7854\\n" + "near_z: 0.1\\n" + "far_z: 20.0\\n" + "orthographic_projection: 1\\n" + "orthographic_zoom: 2.0\\n" + "\"\n" "}\n" "" position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 - z: 1.0 + x: 320.0 + y: 190.0 + z: 10.0 } } diff --git a/main/sandtiles.tilesource b/main/sandtiles.tilesource deleted file mode 100644 index 0f5d02c..0000000 --- a/main/sandtiles.tilesource +++ /dev/null @@ -1,19 +0,0 @@ -image: "/assets/tiles.png" -tile_width: 64 -tile_height: 64 -tile_margin: 0 -tile_spacing: 0 -collision: "" -material_tag: "tile" -collision_groups: "default" -animations { - id: "anim" - start_tile: 1 - end_tile: 1 - playback: PLAYBACK_ONCE_FORWARD - fps: 30 - flip_horizontal: 0 - flip_vertical: 0 -} -extrude_borders: 2 -inner_padding: 0