Games Academy – PRO 2017 BER – CR350

Links zur Präsentation und anderem Material für die CR350 (Web Advanced) Vorlesung an der Games Academy Berlin.

Wichtig: Bevorzugte Engine auswählen

Beide Engines können parallel installiert werden. Dafür einfach den Artikel erneut befolgen und die andere Engine beim zweiten Durchlauf auswählen.


Präsentation

…gibts bei Google Sheets. (Spoiler!)

Vorraussetzungen

Installationen überprüfen

Es folgt eine Liste an Kommandozeilenbefehlen.

Kommandozeilenfenster öffnen (Windows + R drücken und cmd eingeben), den hellen Codeblock eingeben und den resultieren Text mit dem dunkleren Codeblock direkt darunter vergleichen.

wmic datafile where "drive='c:' and path='\\Program Files\\Unity\\Editor\\' and extension='exe' and version is not null" get Name, Version
Name                                         Version
c:\program files\unity\editor\uninstall.exe  2018.2.11.0
c:\program files\unity\editor\unity.exe      2018.2.11.48509
find /c "4.20" "C:\ProgramData\Epic\UnrealEngineLauncher\LauncherInstalled.dat"
---------- C:\PROGRAMDATA\EPIC\UNREALENGINELAUNCHER\LAUNCHERINSTALLED.DAT: 3

Ersetze XYZ mit der installierten Visual Studio Versionsnummer (VS2015 = 14, VS2017 = 15, etc.)

reg query HKEY_CLASSES_ROOT\VisualStudio.DTE.XYZ.0
HKEY_CLASSES_ROOT\VisualStudio.DTE.XYZ.0
    (Default)    REG_SZ    Microsoft Visual Studio DTE Object
git --version
git version 2.18.0.windows.1
node -v
v10.9.0
npm -v
6.4.1

Projekte vorbereiten

Mit dem Kommandozeilenfenster in einen leeren Ordner, der die Projektdateien beinhalten soll, springen (oder dort ein neues Fenster öffnen).

Engine Projekt Repository klonen

git clone https://github.com/ViMaSter/CS320_2017_Unity.git unity
Cloning into 'unity'...
remote: Enumerating objects: 308, done.
remote: Counting objects: 100% (308/308), done.
remote: Compressing objects: 100% (115/115), done.
remote: Total 308 (delta 195), reused 304 (delta 191), pack-reused 0R
Receiving objects: 100% (308/308), 169.44 KiB | 393.00 KiB/s, done.
Resolving deltas: 100% (195/195), done.

Den herruntergeladenen unity-Ordner als Unity-Projekt öffnen – das Projekt sollte ohne Fehler zu öffnen sein.
Öffne die Scenes/Game-Szene und drücke den Play-Button innerhalb der Unity-Toolbar und stelle sicher, dass weiterhin keine Fehler im Konsolentab zu sehen sind.

git clone https://github.com/ViMaSter/CS320_2017_UE4.git unreal
Cloning into 'unreal'...
remote: Enumerating objects: 547, done.
remote: Counting objects: 100% (547/547), done.
remote: Compressing objects: 100% (272/272), done.
remote: Total 547 (delta 281), reused 532 (delta 266), pack-reused 0
Receiving objects: 100% (547/547), 9.20 MiB | 5.20 MiB/s, done.
Resolving deltas: 100% (281/281), done.
Checking out files: 100% (621/621), done.

Innerhalb des unreal-Ordners sollte ein C++- (cpp_prj) und Blueprint-Projekt (bp_prj) zu finden sein.
Beide können identisch gestartet werden:

  1. Die .uproject-Datei rechts anklicken und Generate Visual Studio project files auswählen
  2. Die generierte .sln-Datei in Visual Studio öffnen
  3. Das prj-Projekt innerhalb des Projektmappen-Explorers rechts anklicken und Als Startprojekt festlegen auswählen
  4. Projektmappe kompilieren und prj-Projekt starten

Wichtig: Dieser Schritt ist einmalig auch für das Blueprint-Projekt zu erledigen, da wir von einem Unreal Plugin gebrauch machen. (Das Plugin selbst kann durch Blueprint benutzt werden und das Projekt nach einmaligem Kompilieren auch ohne Visual Studio gestartet werden.)
Wenn der Editor einmal erfolgreich mit Visual Studio gestartet wurde, kann der Editor direkt (ohne Visual Studio) gestartet werden, indem die .uproject-Datei doppelt angeklickt wird.

Server Repository klonen

git clone https://github.com/ViMaSter/CS320_2017_Server.git server
Cloning into 'server'...
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 33 (delta 14), reused 33 (delta 14), pack-reused 0
Unpacking objects: 100% (33/33), done.
cd server
npm install
> websocket@1.0.28 install [YOURPATH]\server\\node_modules\websocket
> (node-gyp rebuild 2> builderror.log) || (exit 0)


[YOURPATH]\server\node_modules\websocket>if not defined npm_config_node_gyp (node "C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )

> CS3202017DemoServer@0.1.0 prepare [YOURPATH]\server
> npm run build


> CS3202017DemoServer@0.1.0 build [YOURPATH]\server
> tsc

npm WARN CS3202017DemoServer@0.1.0 No description
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 870 packages from 504 contributors and audited 22982 packages in 53.9s
found 0 vulnerabilities
npm start
> CS3202017DemoServer@0.1.0 start [YOURPATH]\server
> node build/server.js

[SessionServer] Listening on port 7000...

Wenn die letzte Zeile zu sehen ist, sind alle Projekte erfolgreich eingerichtet und der Server kann durch ein SIGINT (Strg + C drücken) oder das Schließen des Kommandozeilenfensters beendet werden.

Optional: Vorbereitung für Änderungen am Server

Die folgende Zeile wird nur benötigt, wenn tatsächlich mit TypeScript gearbeitet wird und kann auch nachträglich jederzeit ausgeführt werden.

npm install -g typescript
[USERNAME]\AppData\Roaming\npm\tsc -> [USERNAME]\AppData\Roaming\npm\node_modules\typescript\bin\tsc
[USERNAME]\AppData\Roaming\npm\tsserver -> [USERNAME]\AppData\Roaming\npm\node_modules\typescript\bin\tsserver
+ typescript@3.3.1
added 1 package from 1 contributor in 1.231s

Referenzmaterial

Header und .cpp Quelltext der Blueprint Bibliothek des Websocket Plugins – alle Funktionen sind auch über C++ aufrufbar

Nutzungsdokumentation der websocket-sharp Bibliothek

Datenstrukturen und benötigte Kommandos

Beispiel der Kommunikation zwischen Server und Client

WebSocket-Nachrichten im Browser senden

Unreal Engine 4 in AWS (Amazon Web Services)-Cloud bauen