Chris Pratt plays Jim Preston in a sci-fi film written by who?