游戏制作者网络

Posted

技术标签:

【中文标题】游戏制作者网络【英文标题】:Game Maker Networking 【发布时间】:2014-04-17 22:32:07 【问题描述】:

最近,我开始使用 Game Maker 制作一款非常简单的游戏,并且可以在线玩(多人游戏)。我做了一个非常简单的客户端和服务器。我可以将数据从服务器发送到客户端,但我不能将数据从客户端发送到服务器。

客户端:(创建事件)

client_socket = network_create_socket(network_socket_tcp);
var server = network_connect(client_socket, "127.0.0.1", 5200);
if(server < 0) show_message("Could not connect! Try turning on the server?");
else //Send string
    var t_buffer = buffer_create(256, buffer_grow, 1);
    buffer_seek(t_buffer, buffer_seek_start, 0);
    buffer_write(t_buffer , buffer_string, "Hello");
    network_send_packet(client_socket, t_buffer, buffer_tell(t_buffer));
    buffer_delete(t_buffer);

服务器:(创建事件)

server_socket = network_create_server(network_socket_tcp, 5200, 5);

(异步网络事件)

var n_id = ds_map_find_value(async_load, "id");
if(n_id == server_socket)
    var t = ds_map_find_value(async_load, "type");
    socketlist = ds_list_create();
    if(t == network_type_connect)
        var sock = ds_map_find_value(async_load, "socket");
        ds_list_add(socketlist, sock);
    
    if(t == network_type_data)
        var t_buffer = ds_map_find_value(async_load, "buffer"); 
        var cmd_type = buffer_read(t_buffer, buffer_string);
        show_message(cmd_type);
    
    //show_message("Something happened!");

由于某种原因,客户端发送数据时从不触发服务器中的异步网络事件。消息Something happened! 仅在客户端连接或断开连接时出现,但在发送数据时不会出现。使用几乎完全相同的代码,我可以从服务器发送,但反之则不行。这是代码问题还是只是服务器/客户端限制?

【问题讨论】:

【参考方案1】:

这是服务器端代码:

var n_id = ds_map_find_value(async_load, "id");
if(n_id == server_socket)
    var t = ds_map_find_value(async_load, "type");
    socketlist = ds_list_create();
    if(t == network_type_connect)
        sock = ds_map_find_value(async_load, "socket");
        ds_list_add(socketlist, sock);
    


if(n_id == sock) 
    var t_buffer = ds_map_find_value(async_load, "buffer"); 
    var cmd_type = buffer_read(t_buffer, buffer_string);
    show_message(cmd_type);

当消息到达时,您必须使用套接字 ID。 network_type_data 永远不会被触发。

另外,您必须在服务器的创建事件中使用负数(如 noone (-4))声明 sock 变量。

【讨论】:

以上是关于游戏制作者网络的主要内容,如果未能解决你的问题,请参考以下文章

如何制作手机游戏

如何制作小游戏

如何制作一个简单的小游戏?

求教如何在Unity中为2D游戏制作技能特效

(转)CocosCreator零基础制作游戏《极限跳跃》制作游戏开始场景

(转)CocosCreator零基础制作游戏《极限跳跃》制作游戏主场景