Log In  
Follow
alpha_helix

Hi there,

I'm new to pico-8 and was playing around with a system to generate levels for a top-down adventure game on the fly. My setup is as follows:

  • in the map editor, I have screen-sized (16x16 tiles) compatible level blocks
  • when I call my generate_map() function, it makes a table with a predefined number of entries, each containing the coordinates to row/columns in the map
  • in my draw function, I then loop through this table and draw the map
--generate the map
function map_setup(map_size)
	total_area=map_size
	level={}
	for area=1,total_area do
		level[area]={flr(rnd(7))*16, flr(rnd(3))*16}
	end
end

--draw the map
function draw_map()
	t=1
	for i=0,sqrt(total_area)-1 do
		for j=0,sqrt(total_area)-1 do
			map(level[t][1],level[t][2],i*128,j*128,16,16)	
		 t+=1
		end
	end
end

This works for drawing the map nicely, however I am having a lot of trouble getting the collision detection with the map tiles to work. After digging around for hours, it appears my problem is that when I check player.y and player.x and feed these into mget (after dividing by 8 to convert to row/column coordinate), that mget returns whatever is at that coordinate in the map editor, not in my actually drawn map.

[ Continue Reading.. ]

2 comments