Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Coding Releases > Coding Snippets
You last visited: Today at 07:28

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Unreal Engine Random Id Generator

Discussion on Unreal Engine Random Id Generator within the Coding Snippets forum part of the Coding Releases category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2015
Posts: 433
Received Thanks: 361
Unreal Engine Random Id Generator

Wer mal einen Session Id Generator für die Unreal Engine möchte oder nur einen Random Wert

SessionIdGenerator.cpp
PHP Code:
/**

    Generates a session id.

  [MENTION=1332190]author[/MENTION] Metho
  [MENTION=1805674]Version[/MENTION] 1.0 10/02/17

*/

// Session->SessionId
unsigned int Session::SessionId 0;

// Session->GetSessionId()
unsigned int Session::GetSessionId()
{
    return 
this->SessionId;
}

// Session->IncreaseSessionId()
void Session::IncreaseSessionId() {
    
this->SessionId++;
}

// Session->GetProcessId()
uint32 Session::GetProcessId()
{
    return 
FPlatformProcess::GetCurrentProcessId();
}

// Session->UpdateTime()
void Session::UpdateTime()
{
    
this->Time FDateTime::UtcNow();
    
this->Seconds Time.ToUnixTimestamp();
    
this->Milliseconds Time.ToUnixTimestamp() * 1000 Time.GetMillisecond();
    
this->UpdateLinearCongruential();
}

// Session->GetSeconds()
unsigned long long Session::GetSeconds()
{
    return 
this->Seconds;
}

// Session->GetMilliseconds()
unsigned long long Session::GetMilliseconds()
{
    return 
this->Milliseconds;
}

// Session->UpdateLinearCongruential()
void Session::UpdateLinearCongruential()
{
#define MODMULT(a, b, c, m, s) x = s / a; s = b * (s - a * x) - c * x; if (s < 0) s += m
#define A1 53668
#define A2 52774
#define B1 40014
#define B2 40692
#define C1 12211
#define C2 3791
#define M1 2147483563L
#define M2 2147483399L
#define SH 2147483562
#define FA 4.656613e-10

    
auto x this->GetSeconds() ^ (this->GetMilliseconds() << 11);
    
auto y this->GetProcessId() ^ (this->GetMilliseconds() << 11);

    
MODMULT(A1B1C1M1x);
    
MODMULT(A2B2C2M2y);

    
auto z y;

    if (
1)
    {
        
+= SH;
    }

    
this->LinearCongruential z;

#undef MODMULT
#undef A1
#undef A2
#undef B1
#undef B2
#undef C1
#undef C2
#undef M1
#undef M2
#undef SH
#undef FA
}

// Session->GetLinearCongruential()
long long Session::GetLinearCongruential()
{
    return 
this->LinearCongruential;
}

// Session->GenerateId()
FString Session::GenerateId()
{
    
this->IncreaseSessionId();
    
this->UpdateTime();
    
FMD5 MD5;

    
// Phase 1 --[[
    
uint8 SystemSeed[2048];
    
FString SystemString FString::Printf(TEXT("%.15s%ld%ld%0.8F"),
        
this->GetSessionId(),
        
this->GetSeconds(),
        
this->GetMilliseconds(),
        
this->GetLinearCongruential()
    );
    
FString::ToBlob(SystemStringSystemSeedsizeof(SystemSeed));
    
MD5.Update(SystemSeedsizeof(SystemSeed));
    
// ]]-- Phase 1

    // Phase 2 --[[
#define RandomSeedLength 2048
    
uint8 RandomSeed[RandomSeedLength];
#define RandomSeedSize sizeof(RandomSeed)
    
FString RandomString FString::FromInt(FMath::RandRange(10 ^ (RandomSeedLength 1), 10 RandomSeedLength 1));
    
FString::ToBlob(RandomStringRandomSeedRandomSeedSize);
    
MD5.Update(RandomSeedRandomSeedSize);
#undef RandomSeedLength
#undef RandomSeedSize
    // ]]-- Phase 2

    // Phase 3 --[[
#define DigestLength 32
    
uint8 Digest[DigestLength];
    
MD5.Final(Digest);

    
FString HashString;

    for (
unsigned short i 0DigestLengthi++)
    {
        
HashString += FString::Printf(TEXT("%02x"), Digest[i]);
    }
#undef DigestLength
    // ]]-- Phase 3

    // UE_LOG(LogTemp, Log, TEXT("Session was generated. Session id: %d, Session string: %s"), this->GetSessionId(), HashString);

    
return HashString;

SessionIdGenerator.h

PHP Code:
/**

Generates a session id.

  [MENTION=1332190]author[/MENTION] Metho
  [MENTION=1805674]Version[/MENTION] 1.0 10/02/17

*/

// Session
class Session {

public:

    
// *->GenerateId()
    
FString GenerateId();

    
// *->GetSessionId()
    
unsigned int GetSessionId();

    
// *->GetProcessId()
    
uint32 GetProcessId();

    
// *->GetSeconds()
    
unsigned long long GetSeconds();

    
// *->GetMilliseconds()
    
unsigned long long GetMilliseconds();

    
// *->GetLinearCongruential()
    
long long GetLinearCongruential();

private:

    
// *->SessionId
    
static unsigned int SessionId;

    
// *->IncreaseSessionId
    
void IncreaseSessionId();

    
// *->Time
    
FDateTime Time;

    
// *->UpdateTime()
    
void UpdateTime();

    
// *->Seconds
    
unsigned long long Seconds;

    
// *->Milliseconds
    
unsigned long long Milliseconds;

    
// *->UpdateLinearCongruential()
    
void UpdateLinearCongruential();

    
// *->LinearCongruential
    
long long LinearCongruential;

}; 
#Metho is offline  
Thanks
1 User
Old 03/09/2017, 02:59   #2
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 122
MD5 and SHA1 are both known for having hash collisions. You may want to look into using a different hashing algo to avoid such issues.
atom0s is offline  
Reply


Similar Threads Similar Threads
Unreal Engine - Metin2
11/28/2017 - Metin2 Private Server - 24 Replies
hat eigentlich schonmal jemand versucht Metin2 mit der Unreal Engine irgendwie zu bearbeiten oder ein Remake zu machen? Wäre mega geil. So mit neuer Grafik oder auch der alten aber dafür HD Maps mit richtig nicer Vegetation und so weiter. Anyone?
Unreal Engine
03/04/2016 - Off Topic - 0 Replies
sind hier Dudes am Start die mit der Unreal Engine arbeiten? Intressiere mich sehr dafür, zeigt mal eure Werke (kenne auch schon alles ausm Unrealforum) ?
Streetfighter 5 - Entwicklung mit Unreal Engine 4
12/20/2014 - User Submitted News - 0 Replies
Wenn man an Street Fighter denkt, schwelgt man in Erinnerungen an die letzten 4 Teile der Kampfspiel-Serie. Für den fünften Teil hat sich Entwickler Capcom die Unreal Engine 4 lizenziert, und wird sein Spiel auf dessen Basis Entwickeln. Sie wollen dem Spieler die beste und neuste auf dem Markt verfügbare Technik bieten. Teil 5 ist damit der erste der Serie, bei dem auf die Technik der Unreal Engine zurückgegriffen wird. Bochan Kim von Capcom äußerte sich wortwörtlich wie folgt zu der...
Unreal Engine
05/27/2013 - General Coding - 10 Replies
Hallo Community, Ich suche mehrere Leute die sich gut mit der Unreal Engine auskennen. Gesucht werden Leute für ein Projekt die sich damit allgemein auskennen oder Modelle etc dafür machen können. Was für ein Projekt es wird steht aber noch nicht fest. Wenn ihr Interesse habt meldet euch bei mir über private Nachricht oder in Skype. Wenn ihr gut seid werdet ihr im übrigen auch von uns bezahlt. Gruß,
Unreal Engine 4 running on PS4
04/26/2013 - Gaming News - EN - 21 Replies
There has been some advancement in the development of the PlayStation 4; and now it is possible to watch the Unreal Engine 4 running on it (we know this demo has been shown before, yet it was always shown on PC, not on PS4). We are getting closer and closer to this next-gen console's release, and Sony is all up to create more hype to it, showing more videos about engines running on it, people creating rumors about how will the console look like and so on. This is the demo of the Unreal...



All times are GMT +1. The time now is 07:28.


Powered by vBulletin®
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2023 elitepvpers All Rights Reserved.