mplay-Funktionen schießen Router ab

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mplay-Funktionen schießen Router ab

    Ich habe folgendes Problem.
    Für eine LAN-Party habe ich ein kleines Multiplayerspiel mit den GM-Standardfunktionen erstellt und dann auch mit 4 Spielern spielen können.
    Einige Zeit später war an anderem Ort wieder eine LAN-Party mit mehr Leuten, auf der ich das Spiel wieder ausprobieren wollte. Dazu habe ich das Spiel so erweitert, dass theoretisch 6 Leute mitspielen können. Dabei konnte der 6. Spieler allerdings nicht joinen (fand kein Spiel), was natürlich an dessen Rechner, Firewall, Einstellungen, weiß der Kuckuck was liegen könnte. Seltsamer dabei war aber, dass danach das Internet tot war. Wir mussten Rechner und Router neu starten, um wieder ins Internet zu kommen. Bei einem späteren Versuch starb das Internet sofort, als nur ich eine Session erstellte.

    Ich poste deshalb mal hier meinen Code, der in meinem Netzwerk funktioniert hat, in einem anderen aber zum Absturz führte.

    obj_lobby (das einzige Objekt im ersten Raum)

    GML-Quellcode

    1. // scr_lobby_create()
    2. // Dieses Skript wird vom Create Event des Lobby-Objektes aufgerufen
    3. // use a font with all characters
    4. draw_set_font(fnt_default);
    5. // show name input dialog
    6. name=get_string("Name:","");
    7. // set delay to check for new players
    8. delay=30;
    9. mplay_init_tcpip("");
    10. session=mplay_session_find();
    11. global.host=false;
    12. if (session==0)
    13. {
    14. // host
    15. mplay_session_create(name+"'s game",6,name)
    16. global.host=true;
    17. }
    18. else
    19. {
    20. // client
    21. mplay_session_join(0,name);
    22. }
    23. scr_lobby_alarm();
    Alles anzeigen


    GML-Quellcode

    1. // scr_lobby_alarm()
    2. // Dieses Skript wird vom Create Event und von alarm0 des Lobby-Objektes aufgerufen
    3. // check for new players
    4. global.players=mplay_player_find();
    5. for (i=0;i<global.players;i+=1)
    6. {
    7. global.player_name[i]=mplay_player_name(i);
    8. global.player_id[i]=mplay_player_id(i);
    9. }
    10. alarm[0]=delay;
    Alles anzeigen


    GML-Quellcode

    1. // scr_lobby_draw()
    2. // Dieses Skript wird im Draw-Event des Lobby-Objektes ausgeführt
    3. text="LOBBY##"
    4. for (i=0;i<global.players;i+=1)
    5. {
    6. text+=global.player_name[i]+"#";
    7. }
    8. if (global.host)
    9. {
    10. text+="##Press ENTER to start match"
    11. if (keyboard_check(vk_enter))
    12. {
    13. for (i=0;i<global.players;i+=1)
    14. {
    15. mplay_message_send_guaranteed(global.player_id[i],HOST_ID,i);
    16. mplay_message_send_guaranteed(global.player_id[i],PLAYER,i);
    17. }
    18. global.lan_host=global.player_id[0];
    19. global.lan_player=0;
    20. room_goto_next();
    21. }
    22. }
    23. while (mplay_message_receive(0))
    24. {
    25. switch(mplay_message_id())
    26. {
    27. case HOST_ID: global.lan_host=mplay_message_player(); break;
    28. case PLAYER:
    29. global.lan_player=mplay_message_value();
    30. room_goto_next(); break;
    31. }
    32. }
    33. if (room == room_first)
    34. {
    35. draw_text(0,0,text);
    36. }
    Alles anzeigen


    GML-Quellcode

    1. // scr_lobby_exit()
    2. // Dieses Skript wird im Game Exit Event des Lobby-Objektes ausgelöst
    3. mplay_end();


    Die großgeschriebenen Wörter sind Konstanten, die ich angelegt habe mit den Zahlenwerten 0, 1, 2...etc.
    Im Draw-Event sind die Abfragen zwar nicht wirklich schön aufgehoben, ich bezweifle aber, dass das die Probleme verursachen kann.

    Hat jemand ähnliche Erfahrungen gemacht oder findet jemand einen Fehler im Code?
    Einige meiner Spiele: