This was a personal project I did many years ago using the Unreal 2 engine.