Computer Programming General Game Design