This is an old revision of the document!


3. Game launchers si autentificare

Cerinte

Realizarea unui game launcher

  • Creati o aplicatie executabila care sa contina:
    • formular de autentificare cu username si parola
    • sistem de autentificare HTTP cu token
    • afisare nume dupa autentificare si buton de lansare joc
  • Creati o scena Unity care:
    • sa preia parametri din linie de comanda
    • sa faca o cerere HTTP si sa preia numele utilizatorului autentificat
    • ruleze ca executabil (build)

Puteti realiza aplicatia de game launcher in orice tehnologie doriti.

Documentatie video

Gasiti pe MS Teams inregistrat

Documentatie text

Parametri de linie de comanda in Unity

Un executabil Unity poate fi rulat si cu parametri de linie de comanda. Exista doua tipuri de parametri:

La lansarea aplicațiilor Unity Player, delimitatorul pentru o valoare a argumentului liniei de comandă este un singur spațiu. De exemplu, pentru a seta modul fereastră la fără margini, utilizați -window-mode borderless.

Unity ignoră orice parametru necunoscut, așa cel mai sigur, pentru a păstra clar separarea de comenzile native de unity, sugestia este sa prefixati toate comenzile cu + sau – în loc de -, de exemplu:

Exemple:

--custom-param 123 -batchMode -executeMethod Build.CommandLineMake +buildLocation Build/Output/WebPlayer +buildTarget WebPlayer 
unity.exe --user-token AAA -logFile C:/...

Pentru preluarea acestor parametri, putem folosi clasa Environment care face parte din cadrul .NET.

System.Environment.CommandLine
 
System.Environment.CommandLineArgs

Aceste două funcții nu sunt disponibile în versiunile/build web.

//read from cmdline parameters
            string[] args = System.Environment.GetCommandLineArgs ();
            for (int i = 0; i < args.Length; i++) {
                Debug.Log ("ARG " + i + ": " + args [i]);
            }

Request-uri HTTP in Unity

WWW / UnityWebRequest

Unity ofera un sistem de interactiune HTTP denumite UnityWebRequest (in versiuni <2019 WWW). Mai multe detalii despre arhitectura si capabilitati gasiti aici: https://docs.unity3d.com/Manual/web-request.html.

Aceste sistem foloseste corutine intrucat cererile HTTP sunt in general asincrone - trebuie sa asteptam un raspuns, care poate dura si cateva secunde, fara a afecta/opri rularea aplicatiei Unity/a jocului.

Mai jos gasiti un exemplu, preluat din pagina de documentatie oficiala https://docs.unity3d.com/2022.3/Documentation/ScriptReference/Networking.UnityWebRequest.Get.html, care prezinta cum se trateaza un request simplu de preluare de informatii (GET).

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
 
// UnityWebRequest.Get example
 
// Access a website and use UnityWebRequest.Get to download a page.
// Also try to download a non-existing page. Display the error.
 
public class Example : MonoBehaviour
{
    void Start()
    {
        // A correct website page.
        StartCoroutine(GetRequest("https://www.example.com"));
 
        // A non-existing page.
        StartCoroutine(GetRequest("https://error.html"));
    }
 
    IEnumerator GetRequest(string uri)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
        {
            // Request and wait for the desired page.
            yield return webRequest.SendWebRequest();
 
            string[] pages = uri.Split('/');
            int page = pages.Length - 1;
 
            switch (webRequest.result)
            {
                case UnityWebRequest.Result.ConnectionError:
                case UnityWebRequest.Result.DataProcessingError:
                    Debug.LogError(pages[page] + ": Error: " + webRequest.error);
                    break;
                case UnityWebRequest.Result.ProtocolError:
                    Debug.LogError(pages[page] + ": HTTP Error: " + webRequest.error);
                    break;
                case UnityWebRequest.Result.Success:
                    Debug.Log(pages[page] + ":\nReceived: " + webRequest.downloadHandler.text);
                    break;
            }
        }
    }
}

C#

Gestionare autentificare

Game Launcher in C#

Formulare

HTTP

pjv/laboratoare/2024/a03.1730647487.txt.gz · Last modified: 2024/11/03 17:24 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0