Fast collision mapping?

BlitzPlus Forums/BlitzPlus Programming/Fast collision mapping?

I am wanting to have fast bullets in my game, but to do that without them going through walls with detection I would need collision mapping!

I tried the collision mapping in the archives (http://www.blitzbasic.com/codearcs/codearcs.php?code=1099) but it isnt fast enough.

There could be anywhere from 100 to 10,000 walls existing (not in screen) at once.

Any ideas are welcome, thanks :)

You could increase the frame rate and move the bullet by proportioanlly less each frame so that it never moves faster than a wall thickness, or make the walls thicker.

Or implement a timing loop that goes very fast like 200-500 frames per second but doesn't actually draw anything, then chuck out a frame when you need to. This way the bullet can move a small amount each time and will always collide.
I use this method to great sucess after reading some of the posts about frame independant timing loops on this forum.

I will do some experiments trying that, thanks.

Why even have bullett objects or anything at all? just do a line pick or equivalent.

What do you mean "line pick" ? Like a vuass cannon or something i.e. instant hit?

This is in the BlitzPlus forum, so, this is obviously being made in BlitzPlus.

Ok, line intersect then

code here
Function Ray2dintersect(x1,y1,x2,y2,x3,y3,x4,y4)
  d# = (y4-y3)*(x2-x1) - (x4-x3)*(y2-y1)
  If d = 0 Then Return 0
  ua# =((x4-x3)*(y1-y3) - (y4-y3)*(x1-x3)) / d#
  ub# =((x2-x1)*(y1-y3) - (y2-y1)*(x1-x3)) / d#
  If (ua# >= 0.0) And (ub# >= 0.0) And (ub# <= 1.0)
	intersectedx#=x1+ua*(x2-x1)
	intersectedy#=y1+ua*(y2-y1)
	Return 1
  EndIf
Return 0
End Function