dev15

Czasem nie rozumiem, dlaczego ludzie komplikują proste rzeczy. Przykład z projektu obok: głupie wersjowanie buildów. Zamiast poszukać w dokumentacji, ludzie potrafią w blueprintowym gameinstance zrobić trzy zmienne integer, które będą przechowywać numerki builda jako major/minor/patch’a. I każdorazowo, zmieniając builda i de facto generując go trzeba pamiętać, żeby tam wchodzić, zmienić odpowiednio te zmienne, zapisać, skompilować blueprint. To już bym prędzej to w C++ zrobił jako trzy bajty (int8, a w zasadzie uint8 jak już tak unrealowo precyzyjnie), przy wywołaniu projektu Unreal Engine z poziomu VS jako Development czy Debut Editor i tak by się to skompilowało i uaktualniło.

Tymczasem wariant nie leniwy to dokumentacja i zrobienie sobie w minutę czegoś praktycznego.

A jest to banalna funkcja o deklaracji w jakiejś naszej klasie:

UFUNCTION(BlueprintCallable, meta = (DisplayName = "JakToChcemySobieNazwacZebyToSieNazywaloWblueprintach"), Category = "Game Config")
    static FString GetGameBuildVersion();

i definicji:

FString KlasaWJakiejUzylismyDeklaracji::GetGameBuildVersion()
{
FString AppVersion;
GConfig->GetString(
TEXT("/Script/EngineSettings.GeneralProjectSettings"),
TEXT("ProjectVersion"),
AppVersion,
GGameIni
);
return AppVersion;
}

Jak z tego korzystać ma blueprintowiec? Dzięki “BlueprintCallable” w deklaracji funkcji np. tak:

Tutaj używam tego do wrzucenia wartości numeru builda do pola tekstowego w widget blueprincie.

Aha – oczywiście – wersja projektu zapisze się dopiero w pliku ini jak będzie różna od defaultowej 1.0.0.0 z ProjectSettings.

Oczywiście jest jeszcze jeden plus tego, można sobie robić hermetyczne żarciki jak ten:

A jak tam z grą? Cotamjaktam? Nic bardziej wkurzającego niż to pytanie. Idzie jak krew z nosa, bo dużo się dzieje dookoła i obok, rodzinnie, ale zbieram okruch do okrucha i jest cały czas progres. A dzisiaj – jest po północy, piątek, zamiast się najebać jak prawdziwy Polak, to siedzę i klepię. Ten wpis i trochę kodu, trochę fixów.

Znowu zmieniłem strukturę, ale podniesie to replaybility oraz rozwiąże problematykę wersjowania tekstów ze względu na płeć, poprawiłem kod obsługujący warunki progress baru czasu decyzji, zrobiłem wstępny setup pod finalizację dokumentacji. Ponoć jestem wyjątkiem wśród programistów, bo nie mam problemów z robieniem dokumentacji i jeszczę piłuję o to innych. Patologia to się nazywa chyba.

Powiecie mi po co komuś, kto ma dziesiątki starych komputerów 8/16 bitowych, konsol, nowych konsol (Nintendo Switch, Playstation 5, SteamDeck) jeszcze Xbox X? Oto ja. Xbox fajny, wypełnił mi brak po Xbox One S, którego przejął już dokumentnie jakiś czas temu syn. A mi był potrzebny pad więc czaicie – kupiłem konsolę z padem 🙂

I najważniejsze. Od teraz roboczo nazywam ten projekt Nemesis. Projekt Nemesis.