AnD4D's Forum Posts

  • You do not have permission to view this post

  • You do not have permission to view this post

  • You do not have permission to view this post

  • > It's likely I won't be using tilemap anymore, so it won't be as easy as snap. I want to be able to create the walls at runtime, so the layout can be different, and the walls are automatically placed. It'll mean combining either normal sprites or tiled backgrounds with tilemap offset.

    >

    I would still use a Tilemap (or several). You can make them invisible and put sprites over the tiles. Use tilemaps as solid obstacles for other behaviors, for collision detection, pathfinding, LoS etc. You can create different tilemap layouts and load them from JSON string for each ship. Tilemap basically works as an array, so it will make many things easier.

    Tilemap would work quite well, but while trying to do it, I found that corridors require 2 collision polygons, as the square pixel is open on 2 sides, while closed on the other 2.

    Tilemap would allow me to store the positions quickly, but I would then likely have similar issues with doors. If I build it using sprites instead, then store the positions and have the system rebuild it from an array, I can edit the tilemap quickly without issues. Say I suddenly want a different floor colour, or my doors to change. Rather than changing the tilemap, I could just change the frame on the individual sprites. Also, FTL tracks oxygen, so giving each sprite a variable also allows me to make this easier.

  • Why not

    X=int(mouse.x/64)*64

    Y=...

    I usually use int, but didn't think it would matter in this case. Wouldn't it still create an issue when trying to shift the snap position to either the left or right? Say I want to place a 64x64 tile, then surround it with walls, I still ideally want to work with a 64x64 snap, but shifted 32px so that I'm now working on the edges?

  • Just in case anyone stumbles across this, the place on grid code is:

    Create object

    x=round(Mouse.X/64)*64

    y=round(Mouse.Y/64)*64

    This should make it easier to produce a level editor. Manually placing walls and doors.

    *UPDATE*

    Having tested this, the above code is perfect for placing a sprite in the centre of a grid, but it's not superb for placing objects on the edges of the grid. Simply altering the code to:

    (round(Mouse.X/64)*64)-32

    puts the sprites in the correct location, but the mouse cursor is very much to the side of where you expect it to be. Of course, you can change the code so that instead of 64 it reads at 32, but that allows you to place walls in the middle of tiles as well as the edges. Very frustrating.

  • >

    > Now I just need to figure out how to set the destination to a grid, rather than the mouse X & Y. If I recall correctly, it's something like: X % 2) * 32... but I honestly don't remember. Will need to search around again.

    >

    Use TileMap expressions: SnapX, SnapY, PositionToTileX, PositionToTileY, TileToPositionX, TileToPositionY

    It's likely I won't be using tilemap anymore, so it won't be as easy as snap. I want to be able to create the walls at runtime, so the layout can be different, and the walls are automatically placed. It'll mean combining either normal sprites or tiled backgrounds with tilemap offset.

    It'll be tricky. I think I'll be able to save the positions of said items in an array so that multiple ships could be called on demand.

    I like to do things tough at the start so it'll be easier later on.

  • AnD4D

    Even that it sounds like you looking for something very specific and I'm sure that this is not what you want I couldn't resist to try it

    https://www.dropbox.com/s/pgvuvd0ijtwy1tp/SpaceShip%20PathFinder2.capx?dl=0

    To avoid the collisions checks you can use MoveTo >>>On Hit Target >>Pick Nearest selected Tile >> set selected to False and so on

    And on this two Places, I'm not sure if you needed to move on diagonals or to avoid those Grey pictures so I add one Blue square Tile on each to stop the diagonals, you can remove them if you don't need them

    This is With the MoveTo Behaviour

    https://www.dropbox.com/s/ou6o7jppmwk1vua/SpaceShip%20PathFinder%28MoveTo%29%20Behaivor.capx?dl=0

    Wow! Amazingly, I had just finished doing something similar. Mine doesn't use line of sight, nor 'nearest', but rather it will create sprites on the pathfinding node and will move toward the lowest node.

    It's pretty much perfect for what I need.

    Now I just need to figure out how to set the destination to a grid, rather than the mouse X & Y. If I recall correctly, it's something like: X % 2) * 32... but I honestly don't remember. Will need to search around again.

  • Guys, I don't understand - what's wrong with using a tilemap and the default pathfinding (as in the link I posted above)?

    It doesn't require any external plugins or any complex programming. And the character is moving more naturally, not like a robot in square angles. Or you can use pathfinding just to generate path and move the character from node to node with MoveTo or some other method.

    I think if I combine the default pathfinding plugin with Rex's MoveTo plugin, I can use the generated nodes to create the movement I'm looking for. I don't mind the snappy turns.

  • I think the problem I'm having is that my wall needs to be only about 5 pixels across, while the floor tiles need to be approximately 32x32.

    This possible with this plugin, or do all tiles need to be the same size?

  • I think you are missing my point. What I suggest is to make another tilemap with thick tiles (1/2 size of the main ship tiles) that will act like walls for the pathfinder plugin.

    See this demo I made:

    https://www.dropbox.com/s/isnc7nm26ekdv ... .capx?dl=0

    You can experiment with pathfinder properties (cell size, speed etc).

    Also, after the character has arrived to the destination tile of the ship, you can adjust its position (move to the center of the tile) with MoveTo.

    Ah yeah, I understood what you were saying, but I've already tried that and it caused unusual things.

    My character sprite was 16px X 16px, and the gap it was trying to walk through was about 32px. While it would navigate quite well, sometimes it would just cut corners and walk through the walls, no matter how small or large I made the cell size. Even in your example I'm seeing the character walk into the walls you've set up, or cutting corners. It also bothers me that the character will stop too early, and the only way to get him to stand exactly on the square I want is to slide him onto it at the end.

    I wanted grid based for more precision. In my grid tests, the character moves great, and ends up exactly in the middle of the room he's meant to walk to. The problem is that he doesn't give a damn about walls at all <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile">

    mOOnpunk Eep, that looks complex! I'm not enjoying using Rex's plugin(s) at the moment, because I have to use 3 or 4 just to get characters to walk around. I want players to always pick the fastest route, so giving tiles costs would be the best thing.

    newt I could use a spline path, but again, if a room is on fire, I'd like for them to be able to walk around it if it's avoidable. Never used splines before, so not sure if that's possible, having people avoid areas if it's dangerous.

    R0J0hound I've been looking for examples for the past day or so, but am yet to find anything of yours. Will look harder.

    The EasyStar example looks good, but when I use it, my character won't walk around the ship at all, but will happily walk on the outside.

    Again, that's why I think grid based is best for me.

    Shame there's not a simple plugin/behaviour this late in C2's lifetime.

  • dop2000 At the moment, my walls are 2/3 times larger than FTL's, and either the objects struggle to get through, or they phase through the walls. The pathfinding plugins seemingly don't have an issue with corner cutting either, which is really annoying.

  • dop2000 Using Rex's plugins?

    I had already tried such an approach using the default pathfinding plugin along with the EasyStar plugin. I get the best results with the default plugin, but because the walls are so thin, at times the character just walks through the walls, or gets stuck, or refuses to stand on the destination point, which is why I'm hoping to do it using a grid based system.

    I also find Rex's plugin (while superb) rather cumbersome, in the sense that I have to have 3 plugins all active at once (Board, Square and MoveTo).

    I can see the potential, but worry about the process.

  • As an exercise, I'm trying to learn how the devs of FTL: Faster Than Light did their pathfinding.

    I've been using rexrainbow 's plugins to try to get this working, but after trying out the Layout2Board, MoveTo and the Monopoly plugins, but can't quite get what I want.

    I feel that using the mentioned plugins, I could manually create a map and do the movement, but I can't figure out how to get it to avoid passing through walls. I feel I could manually choose tile by tile those that are solid (not that I can actually get similar working), but in FTL, where the grid is, say, 32px x 32px, the walls are mere pixels. I fear using this/these plugin(s), I would have to set entire tiles as solids/obstacles.

    Note how the characters will avoid walking through the walls, but how thin the walls are. This is what I can't figure out.

    If anyone has any ideas, it would be great!

  • Magistross I don't suppose there's a way to have the tilemap's collision polygon block the path? My tilemap is mainly walkable, but has walls to the side. At the moment, the objects will happily walk through walls, which I'm trying to avoid.

    Is this only useful for entire tiles being walkable or unwalkable? No way to default all tiles to walkable and collision polys to unwalkable?