Understanding Game Programming