  We present Bill2d, a modern and efficient C++ package for classical
simulations of two-dimensional Hamiltonian systems. Bill2d can be used for
various billiard and diffusion problems with one or more charged particles with
interactions, different external potentials, an external magnetic field,
periodic and open boundaries, etc. The software package can also calculate many
key quantities in complex systems such as Poincar\'e sections, survival
probabilities, and diffusion coefficients. While aiming at a large class of
applicable systems, the code also strives for ease-of-use, efficiency, and
modularity for the implementation of additional features. The package comes
along with a user guide, a developer's manual, and a documentation of the
application program interface (API).
