function restartGame()
	for _, entity in ipairs(LoadedObjects.Entities) do
		if entity.light ~= nil then entity.light:kill() end
		entity = nil
	end
	LoadedObjects.Entities = {}
	LoadedObjects.Particles = {}
	main_player = Player:new(75,50)
	activateSpawns()
end

function stepGame()
	setCollisionFlags()
	if menu_type == "no" then
		for _, particle in pairs(LoadedObjects.Particles) do
			particle:doLogic()
		end
		for _, enty in pairs(LoadedObjects.Entities) do
			enty:doLogic()
		end
	end

	for _, particle in pairs(LoadedObjects.Particles) do
		particle:doPhysics()
	end
	for _, enty in pairs(LoadedObjects.Entities) do
		enty:doPhysics()
	end

	animateTiles()
	Camera:followPlayer(main_player)
	--Camera:positionCenterAt(main_player.pos.x, main_player.pos.y)
	--camera:positionAt(main_player.pos.x, main_player.pos.y,game.width,game.height)

	if Keybind:checkPressed(Keybind.debug.debug) then
		if debug then
			debug = false
			debug_collision = true
		elseif debug_collision then
		 debug_collision = false
		else
		 debug = true
		end
	end

	if Keybind:checkPressed(Keybind.debug.reposition) then
		restartGame()
	end

	if Keybind:checkPressed(Keybind.debug.reload) then
			clearMenu()
			menu_type = "dialog"
			initMenu("dialog",dialog_sequence.example)
	end

	if Keybind:checkPressed(Keybind.debug.recording) then
		if DemoRecording then
			Demo:endRecord()
		else
			Demo:startRecord()
		end
	end

	if Keybind:checkPressed(Keybind.debug.playback) then
		if DemoPlayback then
			Demo:endPlayback()
		else
			Demo:startPlayback()
		end
	end

	cleanDeadParticles()
	cleanDeadEntities()
	cleanDeadLights()
end

function drawGame()

	-- prepare
	startGameworldDraw()
 	updateGameWorldLights()

	-- background
	drawGameworldBackground()
	drawGameworldLights()
	drawGameworldEntitiesBackground()

	-- foreground
	drawGameworldForeground()
	drawGameworldParticles()
	drawGameworldEntities()

	if LevelData.properties.darkness then
		drawGameworldDarkness()
	end
	-- end
	endGameworldDraw()

	-- hud
	text_size = 1

	-- debug
	if debug then debugUI() end
	if debug_collision then
		debugColisions()
		debugEntities()
	end
end
