There exists a bunch of population genetics forward and backward (coalescence) simulation platforms. Here is a non-exhaustive list. They all differ and you'll have to go through their manual to see what is more adapted to your needs.
Here is an exhaustive (or almost exhaustive) list of such platforms.
Some are more known than others. Personally, I already saw uses of the following patforms in publication: SimCoal, Nemo, quantiNemo, Splatche, Fish, SFS_Code.
I personally use NEMO. Nemo is well updated, coded in C++ and everyone is free to bring any modifications (s)he wants to the model. But it doesn't mean it is the best model in general (and I am not qualified to make this statement) and it especially doesn't mean it is the best model for the specific thing you want to simulate.
Depending on your level in programming, it is sometimes faster and easier to just build your own model in C (or C++) if you need performance or otherwise in Python (or Julia which is faster but less people code in Julia than in Python) if you feel more confortable with sllight higher level programming language.
Hope that helps. Good luck!
EDIT
If you're planning to use Approximate Bayesian Computation (ABC) then, you'll probably want a platform that runs fast. I think NEMO is good for that as it is coded in C++. You can only have 256 alleles at a time at one locus. But you can have as many loci as you wish. You can have loci that are neutral, loci that are under selection (with various mutational scenario) and loci that code for a quantitative trait which is under selection as well, so that you can explicitly describe and heterogenous environment. You can have tons of other things as well. If you want to simulate a million loci for a big population, you may eventually run into RAM issue though.
It takes some time to learn to use Nemo and the manual is not necessarily always accurate enough. The code is well commented but is very long. You can contact the developer if you need help. He's super nice and will likely answer your questions. You can also seek help toward people that have some experience with this model. If you need any help in the future with Nemo (assuming you will be using Nemo) you can feel free to just send me an email as well.