The GameMaker: Studio networking functions are based on
sockets, which is an industry standard on all platforms.
With sockets, you have the ability to create both clients and
servers using simple GML which allows you to create even a single
player game using the client/server model (something which will
allow multiplayer to be added easily later).
Basically, a socket is an object which can send, receive, connect
and listen to ports on the network. These functions deal
with just TCP/IP connections, which is what the internet is based
on (IPv4 to be more precise). In essence this lets you connect one
socket using an IP address (let’s say 192.168.1.10) to another
socket on another IP address (say 192.168.1.11). Once connected,
these two sockets can send data back and forth using the
network_send_* functions (like network_send_packet) and
the dedicated asynchronous event that is triggered by them. This
async event will generate a ds_map containing
the data received as well as other details, and you can find the
complete details in the section on the
Network Async Event.
Instead of programs having to read and deal with every bit of
network traffic coming into a machine, IP addresses also deal with
ports, which are numbered from 0 to 65535. This allows each program
to get only the packets of data that it’s interested in, and not
everything that has been sent by every program. This also saves
considerable CPU time, as it seriously cuts down on data
processing, so with GameMaker: Studio you can also “listen”
to ports. So, a server will create a socket, and then bind it to a
specific port to listen to. It will then get notified of
connections, disconnections and data transfers from that
socket.
The data "packets" themselves are made up of binary data taken from
a buffer. This buffer can be created and manipulated using the
GameMaker: Studio Buffer
functions.
NOTE: These functions are not currently available for the
HTML5 target module.
The following functions exist for you to use for networking:
- network_create_server
- network_create_server_raw
- network_create_socket
- network_create_socket_ext
- network_connect
- network_connect_raw
- network_resolve
- network_set_config
- network_set_timeout
- network_send_broadcast
- network_send_packet
- network_send_raw
- network_send_udp
- network_send_udp_raw
- network_destroy