I think we need more details to judge the difficulty. By my understanding:
- You have objects that follow simple physics. Every object has a position, velocity, and acceleration, all of which are floating points.
- However, the position displayed to the end user is part of a discretized grid. So for example, divide the coordinate plane into 1 x 1 x 1 cubes, and an object whose position falls inside that box takes up the entire box.
- At every timestep, you recompute the (floating point) position, velocity, and acceleration, then turn it into the discrete location in the grid, then check for collision detection.
This sounds like it will have tons of edge cases. If you compute the state in the next frame ignoring collisions, you'll have to manually move objects back. If projectiles can collide with each other, you'll have to handle collision detection with moving objects which sounds awful. (Say 2 projectiles are in adjacent boxes, moving towards each other at 1 box per frame. If you do things naively, the two will go through each other because they'll never both occupy the same box at the same time. So then you'll either have to accept that or do some interpolation between the two to make things act according to intuition.)
Basically this seems like one of those things that is mildly interesting to think about and a huge pain to actually make.