Page 12 of 92

Re: Simple Tiled Implementation - STI v0.6.14

Posted: Tue Mar 11, 2014 4:55 pm
by Clean3d
Unfortunately, if you want a good solution I can't help you. I have seperate .png images for each frame in the animation. All I'm doing is swapping out the image in the tileset and regenerating sprite batches. :oops: My animations are only about 1fps, so I just hold my nose and put up with the clunkiness of this method.

Isn't there a Tiled branch with animated tiles? I'm hoping they'll still put that in 0.9.2 and then I can use it instead of my hack. It works for now, though.

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Tue Mar 11, 2014 5:05 pm
by Karai17
Yeah, Tiled 0.9.2 will have animations. You can actually download a nightly with animation support. Regenerating sprite batches seems like the only real way to go about it.

Edit: The spacing bug has now been fixed!
Edit: Also made ellipses less stupid~

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Mon Mar 17, 2014 12:10 am
by Cerulean Knight
Congrats for this library, STI is very good, simple, and has a great potential!

I'm using this, and was very easy to do everything work.

I want to do a suggestion, it would be great that we can access to the properties of the objects in the map, not only to draw a polygon, but for set startpoints or events, taking the (for example) the coordinates of an object (or even a propertie that we can set in the object itself).

Maybe you can suggest me a better way to do this, I'm starting so, I have a lot to learn.

Excuse me if something is confusing, I'm no native english speaker :P

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Mon Mar 17, 2014 1:13 am
by Karai17
Thanks for choosing STI! To access Tile properties, you can do the following:

Code: Select all

local STI = require "sti"
local map = sti.new("map")

local prop = map.tiles[1234].properties -- select the properties from Tile 1234
Using Map.tiles[TILE].properties, you can access all of the properties from any tile in any tileset.

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Thu Mar 20, 2014 10:31 pm
by ochetski
Great lib, Karai17!
I've been testing it for a while now with "Tiled" generated maps, and it seems great.
Very few problems, but maybe it's just my low knowledge of your lib.

I have a few questions and hope it can help more people:

- Is there a way to get tile size from collision map? Did not found anything on your documentation.

- Have anyone used STI with a collision lib like love.physics or HardonCollider?

Links, cuz everyone löves them:
https://www.love2d.org/wiki/Tutorial:Ph ... nCallbacks
https://love2d.org/wiki/HardonCollider

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Thu Mar 20, 2014 11:20 pm
by Karai17
1) The built-in collision map has no actual size, it is just a binary map so it inherits the same size as the map tiles

2) I am unaware of anyone using STI coupled with external collision libs, but I would love to know of any results!

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Fri Mar 21, 2014 2:39 am
by ochetski
I asked because I did implemented a collision system with STI. But needed to set the tile sizes hard coded, because I wasn't able to get tiles width and height from the map.

My collision system is now ugly, complex and hard to use with multiple entities. I will probably change it to use love.physics. I will share it here as soon as I finish it.

Thanks Karai, please keep the good work because it will bring great games to life.

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Fri Mar 21, 2014 2:47 am
by Karai17
You should be able to access map.tilewidth and map.tileheight without any problem.

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Fri Mar 21, 2014 2:54 am
by Cerulean Knight
ochetski wrote:I asked because I did implemented a collision system with STI. But needed to set the tile sizes hard coded, because I wasn't able to get tiles width and height from the map.

My collision system is now ugly, complex and hard to use with multiple entities. I will probably change it to use love.physics. I will share it here as soon as I finish it.

Thanks Karai, please keep the good work because it will bring great games to life.
If you are using HardonCollider, you can add a few lines in the Map:getCollisionMap function.

So, the final result is this:

Code: Select all

function Map:getCollisionMap(index)
	local layer	= assert(self.layers[index], "Layer not found: " .. index)

	assert(layer.type == "tilelayer", "Invalid layer type: " .. layer.type .. ". Layer must be of type: tilelayer")

	local w		= self.width
	local h		= self.height
	local map	= {
		type		= layer.type,
		orientation	= layer.orientation,
		collision	= true,
		opacity		= 0.5,
		data		= {},
	}

	for y=1, h do
		map.data[y] = {}
		for x=1, w do
			if layer.data[y][x] == nil then
				map.data[y][x] = 0
			else
				map.data[y][x] = 1
				ctile = collider:addRectangle((x-1)*self.tilewidth, (y-1)*self.tileheight, self.tilewidth, self.tileheight)
				collider:setPassive(ctile) 
			end
		end
	end

	return map
end
Then, when you load a collision map, HC will create all invisible square on the map positions.

Note: collider is the variable that you define before

Code: Select all

collider = HC(100, on_collision,stop_collision)
Edit: changed size of tiles for variables.

Re: Simple Tiled Implementation - STI v0.6.16

Posted: Fri Mar 21, 2014 3:04 am
by Karai17
It might be worth adding in HC hooks for those who want to use it with STI. Feel free to file a feature request on GitHub and I'll look into it.