diff --git a/src/main.cpp b/src/main.cpp
index d9fa8faa2f749aa988a8be59545dae0012318d24..73964c2b0d0208fb593593f32441ef32e55af57b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1395,6 +1395,12 @@ static bool determine_subgame(GameParams *game_params)
 		} else { // Otherwise we will be using "minetest"
 			gamespec = findSubgame(g_settings->get("default_game"));
 			infostream << "Using default gameid [" << gamespec.id << "]" << std::endl;
+			if (!gamespec.isValid()) {
+				errorstream << "Subgame specified in default_game ["
+				            << g_settings->get("default_game")
+				            << "] is invalid." << std::endl;
+				return false;
+			}
 		}
 	} else { // World exists
 		std::string world_gameid = getWorldGameId(game_params->world_path, false);