attribution: in-game ODbL credit via AGigLineHUD
The demo is built from OpenStreetMap data (ODbL 1.0) and needs attribution wherever the derived work is shown. Add it to the running game, not just the documents. - AGigLineHUD (C++): plain AHUD::DrawText in the bottom-left draws '(c) OpenStreetMap contributors' and 'Data (c) OpenStreetMap contributors, ODbL 1.0 - openstreetmap.org/copyright', with a shadow pass for legibility over bright pavement and sky. No UMG widget asset, so a cook cannot drop it through a missing widget reference. - AGigLineGameModeBase: HUDClass = AGigLineHUD, so the credit is on by default. - AGigLineShotActor: screenshots are now requested with the UI shown, so the attribution appears in every capture under Screenshots/ and the obligation is provable in review rather than only described. Docs: THIRD_PARTY_NOTICES records that the string is displayed in-game; Screenshots/README documents the overlay; TODO marks the item done and narrows the remaining ODbL question to the shipped-derivative-database posture.
This commit is contained in:
1 parent
c9eeb7df0b
commit
ef06dd7d5a
23 files changed
+114
-33
No files matched your search
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,11 @@
|
||||
#include "GigLineGameModeBase.h"
|
||||
|
||||
#include "GigLineCharacter.h"
|
||||
#include "GigLineHUD.h"
|
||||
|
||||
AGigLineGameModeBase::AGigLineGameModeBase()
|
||||
{
|
||||
DefaultPawnClass = AGigLineCharacter::StaticClass();
|
||||
// ODbL attribution must be visible in the running demo, not only in docs.
|
||||
HUDClass = AGigLineHUD::StaticClass();
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
#include "GigLineHUD.h"
|
||||
|
||||
#include "Engine/Canvas.h"
|
||||
#include "Engine/Engine.h"
|
||||
|
||||
void AGigLineHUD::DrawHUD()
|
||||
{
|
||||
Super::DrawHUD();
|
||||
|
||||
if (!Canvas || AttributionLine.IsEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Bottom-left, above any letterbox: the standard place for map/data credits.
|
||||
const float LineHeight = Canvas->ClipY > 0 ? 22.0f * TextScale : 22.0f * TextScale;
|
||||
const float X = MarginPx;
|
||||
const float Y = Canvas->ClipY - MarginPx - LineHeight * 2.1f;
|
||||
|
||||
const FLinearColor Shadow(0.0f, 0.0f, 0.0f, 0.55f);
|
||||
const FLinearColor Ink(1.0f, 1.0f, 1.0f, 0.92f);
|
||||
|
||||
// Shadow pass for legibility over bright pavement and sky.
|
||||
DrawText(AttributionLine, Shadow, X + 1.0f, Y + 1.0f, nullptr, TextScale);
|
||||
DrawText(LicenceLine, Shadow, X + 1.0f, Y + LineHeight + 1.0f, nullptr, TextScale * 0.82f);
|
||||
|
||||
DrawText(AttributionLine, Ink, X, Y, nullptr, TextScale);
|
||||
DrawText(LicenceLine, Ink, X, Y + LineHeight, nullptr, TextScale * 0.82f);
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameFramework/HUD.h"
|
||||
#include "GigLineHUD.generated.h"
|
||||
|
||||
/**
|
||||
* Always-on geographic attribution for the shipped demo.
|
||||
*
|
||||
* The demo is built from OpenStreetMap data, which is ODbL 1.0 licensed and
|
||||
* requires attribution wherever a derived database or produced work is shown.
|
||||
* This HUD draws the required credit in the bottom-left corner of the screen so
|
||||
* it is present in the game, not only in the repository documents.
|
||||
*
|
||||
* Plain AHUD::DrawText is used deliberately: no UMG widget asset is needed, so
|
||||
* the attribution cannot be accidentally dropped from a cook by a missing
|
||||
* widget reference.
|
||||
*/
|
||||
UCLASS()
|
||||
class GIGLINE_API AGigLineHUD : public AHUD
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void DrawHUD() override;
|
||||
|
||||
/** Main credit line. Must match the ODbL attribution requirement. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution")
|
||||
FString AttributionLine = TEXT("\u00A9 OpenStreetMap contributors");
|
||||
|
||||
/** Licence line, including where the licence can be read. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution")
|
||||
FString LicenceLine = TEXT("Data \u00A9 OpenStreetMap contributors, ODbL 1.0 \u2014 openstreetmap.org/copyright");
|
||||
|
||||
/** Screen-space margin in pixels. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution")
|
||||
float MarginPx = 18.0f;
|
||||
|
||||
/** Text scale relative to the default canvas font. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution")
|
||||
float TextScale = 1.45f;
|
||||
};
|
||||
@@ -34,7 +34,7 @@ void AGigLineShotActor::Tick(float DeltaSeconds)
|
||||
: FString::FromInt(CurrentShot);
|
||||
const FString FileName = FString::Printf(TEXT("review-%s"), *Name);
|
||||
// Resolution is the game window's; the runner passes -ResX/-ResY.
|
||||
FScreenshotRequest::RequestScreenshot(FileName, false, false);
|
||||
FScreenshotRequest::RequestScreenshot(FileName, /*bInShowUI=*/true, false);
|
||||
bWaitingForScreenshot = true;
|
||||
}
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user