How to manage GameModeBase in both Blueprint and C++ Class

Hey everybody, I am relatively new to UE4 and I have a basic question about game mode. I have finished [this][1] great tutorial on how to make a simple game via Blueprint. As an exercise I want to remake this game via C++. My first problem is with the GameModeBase, In the mentioned tutorial, there are lots of variables within the GameMode Blueprint, variables like CurrentScore, MaxHealth and etc. And it makes sense to define these variables in a C++ class. But the problem is when I add these variables to GameModeBase like this:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "SpaceShooterCPPGameModeBase.generated.h"

/**
 * 
 */
UCLASS()
class SPACESHOOTERCPP_API ASpaceShooterCPPGameModeBase : public AGameModeBase
{
	GENERATED_BODY()	
	
public: 
	float SpawnIntervals;
	float LiveEnemies;
	float MaxWaves;
	float ActiveWaves;
	float Score;
	float CoinsEarned;
	float Coins;
	bool PlayerIsDead;
	FVector EnemySpawnLocationMax;
	FVector EnemySpawnLocationMax;
};

and go to Maps and Modes in project setting the selected GameMode is deactive:

234275-capture.png

Is there a way to specify these parameters without having to code them in GameModeBase?

My second question is: Is there a better way of doing so? like creating a GameManager class or something like this, and just use a simple blueprint for GameMode?

No, only way to do it is to make blueprint based of your C++ class which let you set the default of your properties there and then use that as game mode

You also need to use UPROPERTY() to 1. make varable visible by UE4 at all 2. make them editable in blueprints, you need to add EditAnywhere or EditDefaultsOnly (2nd option makes varable editable only in defaults) and you do this like this:

UPROPERTY(EditAnywhere) 
float SpawnIntervals;
UPROPERTY(EditAnywhere) 
float LiveEnemies;

You can also add BlueprintReadWrite or BlueprintReadOnly to make those varable accessible in blueprint scripts

Other option is to use custom AWorldSettings which allows to add propeties in World Settings, you make class based from AWorldSettings add UPROPERTYs in it with EditAnywhere and set it as WorldSettings class in Project Settings and htey should apper in World Settings of oyur level. Yo can read them from ():

There downside (or not) to this is that it saves those settings in level, same as Level Blueprint. Thsoe varbales also wont be attached to gamemode ofcorse so they will be there regardless which game mode you gonna use, but that might be actually benifit