To solve the optimization problem described, we need to define the decision variables, the objective function, and the constraints. 

Let's denote:
- $K$ as the number of units of Kommand game to be sold.
- $M$ as the number of units of Kontrol game to be sold.

The objective is to minimize the total cost incurred by GameShop while attracting at least 200 customers daily.

Given costs and customer attraction rates are as follows:
- Cost per unit of Kommand: $11 (selling price) + $14 (purchase price) = $25.
- Attracts 20 fans per unit.
- Cost per unit of Kontrol: $3 (selling price) + $8 (purchase price) = $11.
- Attracts 5 fans per unit.

However, the problem seems to have inconsistent information regarding costs. The initial description mentions a cost of $14 for Kommand and $8 for Kontrol as what GameShop pays for each unit but later states different costs ($11 for Kommand and $3 for Kontrol) which seem to be selling prices or additional costs rather than purchase costs. For the purpose of this solution, we'll interpret these as total variable costs (including purchase and any additional costs like handling or sales cost), assuming:
- The effective cost for each unit of Kommand sold is $25 ($14 purchase + $11 handling/selling).
- The effective cost for each unit of Kontrol sold is $11 ($8 purchase + $3 handling/selling).

The objective function to minimize the total cost can be written as:
\[ \text{Minimize} \quad 25K + 11M \]

Subject to constraints:
1. Attract at least 200 customers: \(20K + 5M \geq 200\)
2. Daily budget constraint: \(14K + 8M \leq 500\) (assuming the $14 and $8 are the costs GameShop pays for each unit, which affects their budget directly)

Now, let's write this problem in Gurobi Python code:

```python
from gurobipy import *

# Create a model
m = Model("GameShop_Optimization")

# Decision variables
K = m.addVar(vtype=GRB.INTEGER, name="Kommand")
M = m.addVar(vtype=GRB.INTEGER, name="Kontrol")

# Objective function: Minimize total cost
m.setObjective(25*K + 11*M, GRB.MINIMIZE)

# Constraints
m.addConstr(20*K + 5*M >= 200, "Attract_at_least_200_customers")
m.addConstr(14*K + 8*M <= 500, "Daily_budget_constraint")

# Solve the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: Kommand={K.x}, Kontrol={M.x}")
else:
    print("No optimal solution found")
```