I've done the game "Survive!" in A7.7 native multiplayer, and I switched to anet afterwards, because it's functions are far more convenient. Still I wouldn't say that the native multiplayer is worse than anet in every aspect. Okay, where to start?
1. Connection
With Commercial-Edition you need to pass -cl, -sv and/or -ip command line parameters to the engine to start connection. You need to use an external starter like I did, but it can also be made with 3dgs.
With pro edition you can use session_connect, which allows to show options, php based server lists and other stuff before starting to connect to a server.
just a hint: its easier to program all the network related stuff if you use a "dedicated server", which means that you start the server only with "-sv" command line, not with "-sv -cl". you can still start another instance of your game when you want to play on the machine that hosts the dedicated server.
3. entitys
The most important part of 3dgs multiplayer is to know WHERE your function is running. that is where most people fail. always keep that in mind!
use ent_create to create networked entitys. the function of the entity is always only run on the server, no matter where you use ent_create. thats very important and therefore your entity function needs to be completely different from what you are used to from singleplayer games. never check for any keypresses in the entity function!
If you want to access the entity on the client you have created it, use it's pointer. example for A7.70 upwards:
...
player = ent_create("pl.mdl", nullvector, pl_sv);
while (player.client_id == 0) {wait(1);}
//now you can access player and send input etc..
Another way to do this is using proc_client(..), check the manual on that. I've never used it.
You often want to have an entity function running on all clients, that does animations, lag-free movement etc. Use proc_local(...) once on the server (usually in the entity function) to set such a function. its automatically started for all connected clients and will also be started for future clients when they connect.
Skills can be send with send_skill(..). Thats often use to send input from the clients to the server. if you want the server to send something to all connected clients, use the SEND_ALL flag.
2. sending of simple data
use the send_string and send_var functions. read the manual, they are different from send_skill.
3. events.
the on_client and on_server events are really usefull, check them in the manual.
4. testing
you can run multiple instances of 3dgs on your local machine. simply start a server first, and then you can run several clients in window mode. the -ip parameter don't has to be set, the clients will automatically find the server. you can use the -pl parameter to set a client/player name.
5. scripted level:
load the level from the function main on all machines, server and clients. make sure you only use ent_createlocal function for creating the level during runtime! Everything else would be a waste of bandwith and you'd create several entitys on the same position, as every clients entity would be transferred to all other clients.
if parts of the level change and move, you should load the level on the server only with ent_create, it gets synchronised automatically then with all connecting clients.
EDIT: forget to mention that the position of networked entitys is automatically transferred. for your game idea, you'd create the player entitys and then change their positions on the server (c_move as usual) with input thats send from the clients. the clients then automatically see everything move, but it'll be a bit laggy. look up dplay_smooth, dplay_entrate and ent_sendnow if you want to try to fix that or create your own movement prediction system and set dplay_smooth to 0.
Hope that helped you, feel free to ask anything.
-SchokoKeks