J’ai mangé mon chapeau

Comme nouvelles du front : transfert du code des inventaires des blueprints vers le C++
Une folie !
J’ai cru que j’en sortirais pas, sans déconner c’était le remake du “le fil bleu sur le bouton vert et le fil rouge sur le bouton jaune”.
Je ne sais pas comment j’en suis sorti, des intuitions, des coups de chance, j’ai même brièvement envisagé de jeter l’éponge, c’est inhumain !

Pourquoi entreprendre un chantier pareil ?
Parce que mon système actuel prêtait le flanc au hackers puisque la manipulation des inventaires était laissée au client, et donc vulnérable.
Maintenant, tous les mouvements d’objets sont autorisés par le serveur.
Qui plus est, plusieurs joueurs peuvent maintenant opérer dans le même coffre, ce qui allait finalement se révéler indispensable pour un coffre de guilde, par exemple.

Ensuite, parce que je n’avais pas tout terminé, il me restait les marchands, le système de sauvegarde (persistance) et quelques bricoles, donc c’était le moment ou jamais.

Ben voilà, c’est fait !

PCG

Je n’ai même plus le temps de poster des news, c’est l’enfer pour traduire le système d’inventaires en C++ !

Juste une rapide pour une nouvelle série de Ben dont j’aurais peut-être besoin sur les PCG.

Désactiver le debugger (console) et la touche ‘

#include <GameplayDebugger.h>
#include <GameplayDebuggerPlayerManager.h>

void AMyPlayerController::BeginPlay()
{
	Super::BeginPlay();

	#if WITH_GAMEPLAY_DEBUGGER
	GetWorld()->GetTimerManager().SetTimerForNextTick(this, &AMyPlayerController::DisableGameplayDebugger);
#endif
}

void AMyPlayerController::DisableGameplayDebugger()
{
// This needs to wait until after AGameplayDebuggerPlayerManager has finished setting up, which can take multiple frames on clients.
#if WITH_GAMEPLAY_DEBUGGER
	UC0GameInstance* GI = UC0Statics::GetGameInstance();
	// Disabled in the main menu, and for clients.
	if (IGameplayDebugger::IsAvailable())
	{		
		AGameplayDebuggerPlayerManager& Manager = AGameplayDebuggerPlayerManager::GetCurrent(GetWorld());
		if (UInputComponent* ManagerInput = Manager.GetInputComponent(*this))
		{
			PopInputComponent(ManagerInput);
		}
		else
		{
			// Try again next tick until ready
			GetWorld()->GetTimerManager().SetTimerForNextTick(this, &AMyPlayerController::DisableGameplayDebugger);
		}
	}
#endif
}

En vitesse…

J’ai vraiment peu de temps, je travaille de dix à douze heures par jour, je n’ai même plus le temps de regarder une vidéo de temps en temps pour me délasser, c’est du rush full speed permanent. Alors quelques nouvelles du front, en vrac, il y a de toutes façons trop à dire.

Continue reading