UE4でサーバーにログインする場合、そのままではできないのでC++でノードを作ってHTTP/HTTPSで通信するんですが、フリーのプラグインでこれを実現するものがあったのでこれを使って実装してみる。
VaRestって言うプラグイン。標準では入ってないのでこちらからDLする。
DLはEpicのランチャーが起動し、これからDLしてインストールする。インストールし終わったらEnabledにチェックを入れてUE4を再起動ボタンを押す
説明(英語)を読むとC++で構築する必要はなく、これだけでHTTP/HTTPS通信ができるとのこと。
それではこれでHTTP/HTTPS通信のテストをしてみます。
まず、サーバー側に次のphpファイルを用意します。
<?php $user = "user"; $pass = "pass"; //this script path $script_php=$_SERVER['SCRIPT_NAME']; if ($_SERVER["REQUEST_METHOD"]=="POST"){ if ($_POST['user']==$user && $_POST['pass']==$pass){ echo $user."で、パスワード".$pass."にてログインしました\n"; } }else{ //テーブルタグ echo (" <form method=\"POST\" action=\" $script_php \"> <table cellpadding=\"4\" cellspacing=\"1\" border=\"0\" width=\"800\" align=\"center\" bgcolor=\"#336666\"> <tbody> <tr> <td height=\"100\" valign=\"middle\" align=\"center\" bgcolor=\"#ffffff\"> USERを入力してください。<br><br> USER:<input type=\"text\" name=\"user\"> <br><br> パスワード:<input type=\"password\" name=\"pass\"> <br><input type=\"submit\" value=\"ログイン\"> </td> </tr> </tbody> </table> </form> "); }
GETは簡単なので割愛します。まず、POSTが行われたらPOSTを検知してUSER名とパスワードを確認して正しければPOSTされたユーザー名とパスワードを出力します。
POSTされてないとフォームを出力しますがこれは動作確認用です。設置したらまずPCから動作確認しましょう。
post.phpという名前で設置しました。こんな感じで出力されます。
ではUE4側の処理です。Zキーを押すとPOSTされて出力をUE4で受け取る処理です。
まず、適当にProjectを作ってレベルBPで構築します。
こんな感じです。UE4.24.3+VaRestです。
解説
まず、VaRestプラグインをEnableにします。で、キーボードイベントでZキーイベントを置きます。で、ConstractJsonRequestを配置し、VerbをPOSTにして、ContentTypeをRequestBodyにしてRequestをサーバーに投げるようにします。
VaRestRequestJson型の変数を作ってそこにRequestを格納します。
OnRequestCompleteにイベントをバインドして変数からRequestObujectを取り出しアカウント情報をセットします。
最後にphpスクリプトにPOSTして呼びます。
Zキーを押すとサーバーにログインしてデータを受け取ります。
次はこれでログインしてアカウントの作成とアカウントがある場合はログインしてSQLからデータを得るものを作成しますね