We introduce a game theoretic framework for studying a restricted form of network coding in a general wireless network. The network is fixed and known, and the system performance is measured as the number of wireless transmissions required to meet n unicast demands. Game theory is here employed as a tool for improving distributed network coding solutions. The approach involves designing cost functions for individual "players" (unicast sessions) so that players independently pursuing their own selfish interests (i.e., minimizing their individual costs) achieve a desirable system performance in a shared network environment. We propose a family of cost functions and compare the performance of the resulting distributed algorithms to the best performance that could be found and implemented using a centralized controller. We focus on the performance of stable solutions -- where stability here refers to a form of Nash equilibrium. Results include bounds on the best- and worst-case stable solutions as compared to the optimal centralized solution. We show that our bound on the worstcase stable performance cannot be improved using cost functions that are independent of the network structure. Results in learning in games prove that the bbest-case stable solution can be learned by self-interested players with probability approaching 1.