Here's a simple module to add to basic archery games w/ downwards gravity. If you want make a tool to predict how far you can shoot regardless of the slope of the ground, make a projectile that is launched up, then horizontally once it runs out of momentum. Where this projectile lands should mark the maximum distance you can shoot if you aimed at the optimal angle. It should be useful to players who don't want to waste too many arrows trying different angles. (btw, if the ground is flat and there's no air resistance, aim 45° off the horizon)
it's a really old idea that may be inb4 (assuming no wind/air resistance and gravity points straight down) The maximum (up/outward, not down because it can just keep falling) range of a projectile fired in any direction seems to be bound within the line created by firing a projectile straight up, then horizontally once it stops moving up. it's pretty easy to calculate if you imagine firing projectiles in all directions at the same time, creating a circular ring that expands at a constant rate and drops quadratically. The boundary is one that won't expand further outwards when the firing angle is changed by a bit, so every point on it must be tangent to the ring at a certain point in time. 2 rings that are very close in time should also intersect there, so the intersection be a point where moving the center down a bit increases the radius by bit/t (define t=1 as the time required for the center of the ring to fall at the speed at which it expands). This means that as the border-reaching radial line gets longer over time, its up-reach remains the same (t/t=1) and the border will just be a quadratic curve moved up by a constant amount.