public void start() {
		gameThread = new Thread(new Runnable() {
			@Override
			public void run() {
				while (running && gameMap.isPlaying()) {
					try {
						Thread.sleep(CYCLE_TIME);
					} catch (InterruptedException e) {
					}

					gameMap.stepObjects();
					
					for (PlayerRunnable player : players) {
						player.sendScreen();
					}

					for (GameEngineListener listener : listeners) {
						listener.repaint();
					}

				}
			}
		}, "game-thread");
		gameThread.start();

		acceptThread = new Thread(new Runnable() {

			@Override
			public void run() {
				ServerSocket serverSocket = null;
				try {
					serverSocket = new ServerSocket(9000);
				} catch (IOException e) {
					LOG.log(Level.SEVERE, "Erreur à la création de la socket de rendez-vous", e);
				}
				if (serverSocket != null) {
					while (running) {
						try {
							final Socket socket = serverSocket.accept();
							PlayerRunnable playerRunnable = new PlayerRunnable(socket);
							playerRunnable.handleStart();
							players.add(playerRunnable);
						} catch (IOException e) {
							LOG.log(Level.SEVERE, "Erreur à l'ouverture de la socket", e);
						}
					}
				}
			}
		}, "connection-acceptor");
		acceptThread.start();
	}