私はGameMakerスタジオで作成されたマルチプレイヤーゲームに取り組んでいます。私はすでに完全にうまくいっているゲームメーカーにサーバーとクライアントを作成していますが、ゲームメーカーサーバーは直接的なxを使用する必要があるため、どの仮想マシンでも実行できません。だから、私は多くのためにそれらのオプションを展開するJavaでサーバーを書き直したいと思っています。私は多くのチュートリアルを見てきましたが、人々が "文字列"をメッセージとして送り、バイトで置き換えたいと思っていました。私がGameMakerで作成したサーバーでは、メッセージIDを使用して、各メッセージがどこに届くべきかを特定します。これらは、私はそれを読んでいる線です:メッセージのIDとしてJavaネットワーキングから特定のデータ型を取得する方法
buffer_seek(buffer, buffer_seek_start, 0);
var mid = buffer_read(buffer, buffer_u8);
switch(mid) {
case 0:
が、Javaに限り、私が見てきたようにのみ入力ストリームがあります。どのように私はそれがダウンして怒鳴るのコードであるように、そのメッセージを分割することができるようになります。事前に
case network_type_data:
var buffer = ds_map_find_value(async_load, "buffer");
var socket = ds_map_find_value(async_load, "id");
buffer_seek(buffer, buffer_seek_start, 0);
var mid = buffer_read(buffer, buffer_u8);
switch(mid) {
case 0:
//let's updated the first information we can get whether the user is registering or loging in
//Reads what username was assigned to player
var username = buffer_read(buffer, buffer_string);
//Updates information of players
UpdatePlayerInfo("name", username, socket);
SendRoomList(1, socket);
break;
case 1: //player wants to create a server
//find the name of the player
show_debug_message("a player created a room");
if(Room_exists(socket) == false and PlayerInRoom(socket) == false) {
var Room = CreateRoom(socket, 2);
JoinRoom(socket, Room);
SendRoomList(1, socket);
}
break;
case 2: //player wants to join the server
var desired_room = buffer_read(buffer, buffer_u8);
if(PlayerInRoom(socket) == false) {
JoinRoom(socket, desired_room);
}
break;
}
}
おかげ (()サーバーのゲーム会社のネットワーク非同期イベント)!すべての答えは高く評価されています!