I got a lot of PMs regarding Game Maker and Online Programming.
Recently I had to stop my project "Slime Online" due to loss of free-time.
However, I plan to keep on working with Game Maker,it's just that I can't work on whole game-projects any longer.
Instead I decided to share my knowledge with those that are interested.
I used the 39dll for all of the following examples.
The 39dll is a very powerfull dll which will allow you to send information between programs.
We will be using this dll to get into the basics of Online Game Programming.
I created a couple of scripts that make it even easier to use the 39dll.
You can check them out below.
They exist in GM7 and GM6 format now.
I also started a documentation-series about
Online Programming with Game Maker which will guide newcomers through the trouble and joy of online programming.
As I am a big fan of online games I will try to support those that are interested as good as possible =)
However, if you really want to learn you won't get around reading, so, get ready to read

Good luck, and welcome to the wonderful world of online games
~BlaXun
IMPORTANT:
Those of you that use a router to connect to the internet, you will have to open/forward a port on your router to enable other people to connect to your server.
If you only plan to use the engine for network then there is no need to do this.
Here is a site that will help you on opening a port:
http://portforward.com/routers.htm
(thanks to Lycondone for the link)
So, here you go:
[b][09.01.2008][/b] Uploaded a new Version. News: -Server shows upload and download (send/recieve) traffic per second and total -Server/Client now use decrypting/encrypthing based on the string in the variable "global._buffsize" -Server and Client have a script "_used_variables" which contain a list of all used variables -To send a message from the server use the function "send_client()" This function will encrypt the message, log the traffic and send the message -To send a message from the client use the function "send_server()" This function will encrypt the message and then send it -When you sent a message from the server that had "writeshort(playerid)" as first input after the message-case you can now call "get_player()" on the recieve part of the client to perform the following action directly just for that one object. (Dont forget to use the "with")
[b][10.01.2008][/b] -Uploaded a new Version -Changed Players sprite -Changed mvement system, use the mouse to move -The function "send_client()" on the server was changed. It now uses the following arguments: send_client(arg0,arg1) arg0 = 0 = send the message to all players 1 = send the message to all palyers in the same room 2 = send the message only to the player/socket it came from 3 = send the message only to the player with the player id = arg1 Its pretty simple =) Hope you like it!
[b][10.01.08][/b] -Added room changing -Graphical changes -the function "send_client()" on the server now has new indexes for argument 0: 4 = send to the players that are in the room with the number argument1 5 = send to the player with the instance id defined in argument1
[b][10.01.08][/b] Uplaoded a new Version: -When a Player is moving in a anohter room and you enter that room you will get the new move_to position of the other players now -when creating an account unwanted characters are blocked (Those that windows wont accept or those that will cause trouble with GM) -The variable "global._maxname" will hold the maximum number of allowed characters for Name and Password (Can be changed in the script "scr_init_engine" on the client) -The variable "global._contactdelay" will define how many steps delay there should be between creating a new contact-object -Players now can not login twice with the same account (uses a ds_list) -The Players name is shown above the head -Added trees :P
[10.01.08] -Uploaded Basic Engine with ingame Chat
[10.01.08] -Uploaded Basic Engine with Collectibles
[20.01.08] -Uploaded Basic Engine with Position Saving
[01.02.08] -Uploaded Basic Engine with Keyboard-Movement
[03.02.08] -Uploaded GM6 Versions (thanks to GMREC1111 for converting)
[05.02.08] -Uploaded GM6 Version of the Basic "BlaXgine" (thanks to GMREC1111 for converting)
[05.02.08] -Uploaded "Lesson 1 - GM and Online Programming" and "Lesson 2 - Types of Servers" of my series of Online Programming documentation.
[05.02.08] -Uploaded "Lesson 3 - Preventing Common-Errors" of my series of Online Programming documentation.
[05.02.08] -Uploaded a slightly modified version of the "BlaXgine" v.01 which is now v.02 It contains a small txt file on what was changed. The changes are minimalistic, no need to change from v.01 to v.02;)
[06.02.08] -Uploaded a "Blank"-Version of the Engine v.02 This version only has the [b]most[/b] basic function that you may use to build a full blown game from there on. I created this version for those that get confused by to much unncecassary code. Please make sure to read teh Instructions.txt which is included in the archive.
[22.02.08] After quite some time I am back for now. I added a small and really simple example on how to create an inventory. It covers just the real basics, but I still think that this is enough...I dont want to make the game for you... So, enjoy. Next one will propably be a PING-System
[03.03.08] Finally did the example with the Ping system. Oh, there is another important note: [b]I found a bug in ALL eamples. It was within the "send_client() script" on the server. The bug would count traffic even if it was NOT send from server to client[/b] I fixed this for all [b]GM7[/b]-files and uploaded those new files. If you are using one of the old files please update the script. It isn't anything malicious, but it provides false info.
[10.07.08] I started a new documentation on creating a Online-Engine with GameMaker. This documentation will be divided into different parts. Part 1 - Theoretical knowledge [released]
[22.01.09] I used the Basic Engine v.02 and improved it with many nice things and now it is v.03 New Version has a new way for Player IDs and uses Toon Masters MyIni.dll I recommend this version above all others (that I released so far :P) Changes: [General] Added the gml files for the MyIni.dll and the 39dll.dll [Server] each obj_player will now have a variable _accpth. This variable contains the path of the players account file Server now uses the "MyIni.dll" which was created by ToonMaster Most writeshort functions were replaced by writeushort functions. This will allow us to send values up to 65536 instead of 32767, but we cant send negative values anymore. removed unnecassary lines from the User(0) event of obj_player scr_server_setup was renamed to scr_server_init scr_server_setup() is now placed in the Creation code of rm_server The variable global._ServerInIpth will now hold a string with the path of the [Srvr]Setup.ini file case_msg_account_create script will now use myini.dll case_msg_login script uses the myini.dll now case_msg_account_create script will now give static Player IDs and save it in the account file New script scr_vars_init is called in obj_controller Create Event. Argument0 is the string that is used for encrypting 39dll is now intialized in the scr_server_init script Player IDs are now static and wont be handled dynamic. This can prevent confusin when you have to deal with Players Added detailed description to all scripts! All scripts for the 39dll.dll and the MyIni.dll are stored in a [dlls] folder in the Scripts category [Client] case_warp script was renamed to start_warp because it wasnt a real "case" that would send information to the server removed an annoying mistake... rm_presented and rm_menu both set the ip and port...this would lead some people to overwrite their previous set values only rm_presented will now call the scr_init_engine script now
[27.01.09] Some of you had problems with keyboard movement. I made a new version of v.03 which features keyboard movement. Hope this helps. Please make sure to read the text-file which comes with the archive!!!
[01.01.2010] Fixed an annoying bug in v 0.3 + Keyboad Movement (GM7), please note that the GM6 version of this version is still bugged and I don't own a copy of GM6 and won't work on it.
[04.01.2010] Added a new verison of the engine v 1.0. This new version uses the mouse movement again and comes with more comments and a documentation. Currently only a GM7 version exists.
----------Online Engine Game Maker 7 Versions-----------
Basic Engine v.01(provided by host-a.net)
Basic Engine v.01 + Chat
Basic Engine v.01 + Collectibles
Basic Engine v.01 + Position Saving
Basic Engine v.01 + Keyboard Movement
Basic Engine v.02
Blank Engine v.02 - Read the instructions.txt!
Basic Engine v.02 + Simple Inventory
Basic Engine v.02 + Ping System
Basic Engine v.03
Basic Engine v.03 + Keyboard Movement
Basic Engine v 1.0 - Mouse Movement and Documentation<-- This is the latest Version [04.01.10]
---------------------------------------------------------------------------------------
----------Online Engine Game Maker 6 Versions----------- Thanks to GMREC1111
Basic Engine v.01
Basic Engine v.01 + Chat
Basic Engine v.01 + Collectibles
Basic Engine v.01 + Keyboard Movement
Basic Engine v.01 + Position Saving
Basic Engine v.02
Blank Basic Engine v.02
Basic Engine v.02 + Inventory
Basic Engine v.02 + Ping-System
Basic Engine v.03
Basic Engine v.03 + Keyboard Movement <- This version is bugged, on page 62 in this topic you can get the correction for the small bug. Or just check the GM7 version which has been fixed.
----------Documentation "Game Maker and Online Programming with the 39dll"-----------
Lesson 1 - Game Maker and Online Programming
Lesson 2 - Different Types of Connections
Lesson 3 - Preventing common-errors
Lesson 1 - 3 Summary in a CHM file, made by Postality
Documentation Course: "Developing a Online-Engine with Game Maker"
[10.07.08] Part 1 - Theoretical Knowledge
Edited by BlaXun, 04 January 2010 - 02:16 PM.