1) Precision of collisions seems dramatically off. When I shoot a player, the ball is colliding when it is nearly 5X the player's collision away (sometimes).
...
As you see, the balls around him should be where the hit box actually is. All of the other balls are hitting him, but shouldn't be. Is ray casting precision more precise?
That level of imprecision is not expected unless there are truly immense values involved. Convex casts use iterative methods which suffer in the presence of extreme numerical conditions (particularly with long thin shapes, which nigh-infinite rays are

). So if the projectile speeds are in the trillions, something like that might happen. Or it might just crash
A more immediately noticeable problem with velocities high enough to trigger that level of imprecision would be horrific performance issues. The bounding box of one frame of motion would be large enough to cover a large portion/all of the environment. Every overlapped triangle would need to be tested.
Ray casts are indeed more accurate in general. An infinite ray cast is perfectly acceptable because the algorithms are significantly different. Additionally, rays are tested against the acceleration structures directly rather than wrapping them in a bounding box so only objects truly near the ray need to be considered, providing much better performance for long casts.
However, there's also a possibility that the picture isn't actually showing numerical issues in a convex cast, but some other problem that ray casting won't automatically fix.
2) You can see the ball bounce before it is removed since it is moving so quickly. Is there a way to make the ball stick instead?
Here's the update-by-update look at what's happening here:
Update 1:
Update Contacts: no contacts yet; it hasn't collided
Perform Collision Response: no contacts to solve yet
Perform CCD: no impending collision
Update Position: advance all the way through the frame's motion
Update 2:
Update Contacts: no contacts yet; it hasn't collided
Perform Collision Response: no contacts to solve yet
Perform CCD: can only advance 60% of the total motion because a collision was found
Update Position: move up to the collision time
Update 3:
Update Contacts: the objects are in collision and here's the contacts
Perform Collision Response: new velocities computed because of contacts
Perform CCD: newly computed velocities will stop the objects from going through each other, no CCD needed
Update Position: update position with new velocities, sending it flying off in some new direction
So, in the first frame where there exist contacts, the object's position is already moved. To avoid visualizing the bounce, the renderer should not display the projectile body after contacts have been found.
There should not be a need to make the projectile physically 'stick.' Once the projectile is found to hit an object by checking the contacts, the physical body can be removed and then you can do whatever is desired as far as graphics are concerned. If a point of impact is needed to spawn particles, the contact position would suffice.
If I did this with ray casting, would I basically cast a ray (or 6 around the edges of the circle), find out if it hits, then just move the ball from the starting point to the end point and remove it so the bouncing didn't actually happen?
When using ray casting, any projectile body would be a purely graphical object so you could choose to do whatever you want with it. There would be no bouncing because rays are not physical; they are a query.
3)Since the ball is shot from where the camera is, and the camera is positioned slightly above the circle for the offset but still inside, the ball is shooting through the player and colliding with them. Now, I made this so it doesn't hurt them in game and isn't removed, but the problem comes if the shoot it at the right angle, the ball will make them bounce back. And the player could essentially rocket jump if you time it right. This isn't that big of a problem. Is there a way to make it so the ball doesn't collide with the player at all (remove the collision between two or more objects in the space)?
Yup,
collision rules. Check out the CollisionFilteringDemo in the BEPUphysicsDemos to see it being used. A variety of other demos also use them to set up the simulation (robot arm demo and ragdoll, for example).
I would recommend just switching over to ray casts to avoid all the complexities involved with making a physical object move at extremely high speeds. It'll end up being quite a bit simpler in the end
