From c893e3808d3ba0dfe08b4bf0bb746a0669bd7a78 Mon Sep 17 00:00:00 2001 From: milesthenerd Date: Mon, 11 Jan 2021 19:24:40 -0600 Subject: [PATCH] Added experimental random seed auto sync --- AM2R.project.gmx | 3 ++- objects/oClient.object.gmx | 26 +++++--------------------- scripts/scr_rand_split_powerups.gml | 19 +++++++++++++++---- scripts/scr_randomizer.gml | 17 +++++++++++++++-- scripts/scr_randomizer_items.gml | 20 ++++++++++++++------ scripts/scr_randomizer_pure.gml | 19 +++++++++++++++++-- scripts/scr_randomizer_split_items.gml | 16 ++++++++++++++++ scripts/send_seed.gml | 12 ++++++++++++ 8 files changed, 96 insertions(+), 36 deletions(-) create mode 100644 scripts/send_seed.gml diff --git a/AM2R.project.gmx b/AM2R.project.gmx index f5bada82..a375c748 100644 --- a/AM2R.project.gmx +++ b/AM2R.project.gmx @@ -4373,6 +4373,7 @@ + @@ -5862,4 +5863,4 @@ 0 - \ No newline at end of file + diff --git a/objects/oClient.object.gmx b/objects/oClient.object.gmx index 63c903d5..22158976 100644 --- a/objects/oClient.object.gmx +++ b/objects/oClient.object.gmx @@ -31,8 +31,7 @@ canSend = false; connected = false; queenHealthWait = false; queenDead = false; -seedSent = false; -seedReceived = false; +seed = undefined; var type; type = network_socket_tcp; var file = file_text_open_read(working_directory + "\ipaddress.txt"); @@ -364,21 +363,6 @@ if(!is_undefined(oQueen.phase)){ } } -if(oControl.seed != 0 && !is_undefined(oControl.seed) && !seedSent){ - seedSent = true; - buffer_delete(buffer); - var size, type, alignment; - size = 1024; - type = buffer_grow; - alignment = 1; - buffer = buffer_create(size, type, alignment); - buffer_seek(buffer, buffer_seek_start, 0); - buffer_write(buffer, buffer_u8, 3); - buffer_write(buffer, buffer_f64, oControl.seed); - buffer_write(buffer, buffer_u8, global.clientID); - popup_text("Seed sent"); -} - if(keyboard_check_pressed(vk_f2)){ instance_destroy(); } @@ -491,12 +475,12 @@ switch(type_event){ } break; case 4: - seed = buffer_read(_buffer, buffer_f64); + var _seed = buffer_read(_buffer, buffer_f64); var clientID = buffer_read(_buffer, buffer_u8); if(clientID != global.clientID){ - if(oControl.seed != seed && !seedReceived){ - oControl.seed = seed; - seedReceived = true; + if(seed != _seed){ + seed = _seed; + show_debug_message("seed received"); popup_text("Seed received"); } } diff --git a/scripts/scr_rand_split_powerups.gml b/scripts/scr_rand_split_powerups.gml index aafc100b..c9cde65f 100644 --- a/scripts/scr_rand_split_powerups.gml +++ b/scripts/scr_rand_split_powerups.gml @@ -1,15 +1,26 @@ var temp_seed = random_get_seed(); randomize(); -oControl.seed = random_get_seed(); -random_set_seed(oControl.seed); +if(instance_exists(oClient)){ + if(!is_undefined(oClient.seed)){ + if(oControl.seed != oClient.seed){ + oControl.seed = oClient.seed; + random_set_seed(oControl.seed); + } + } else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); + send_seed(); + } +} else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); +} if (oControl.mod_usemanualseed == 1) { random_set_seed(oControl.mod_seed); oControl.seed = oControl.mod_seed; } - - var list = ds_list_create(); ds_list_add(list,0,2,3,4,5,6,7,8,9,10,11,12,13,14); diff --git a/scripts/scr_randomizer.gml b/scripts/scr_randomizer.gml index 0af6e3ed..67f9f189 100644 --- a/scripts/scr_randomizer.gml +++ b/scripts/scr_randomizer.gml @@ -1,7 +1,20 @@ var temp_seed = random_get_seed(); randomize(); -oControl.seed = random_get_seed(); -random_set_seed(oControl.seed); +if(instance_exists(oClient)){ + if(!is_undefined(oClient.seed)){ + if(oControl.seed != oClient.seed){ + oControl.seed = oClient.seed; + random_set_seed(oControl.seed); + } + } else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); + send_seed(); + } +} else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); +} if (oControl.mod_usemanualseed == 1) { random_set_seed(oControl.mod_seed); diff --git a/scripts/scr_randomizer_items.gml b/scripts/scr_randomizer_items.gml index 7d6b5f14..add63f84 100644 --- a/scripts/scr_randomizer_items.gml +++ b/scripts/scr_randomizer_items.gml @@ -1,11 +1,19 @@ var temp_seed = random_get_seed(); randomize(); -oControl.seed = random_get_seed(); -random_set_seed(oControl.seed); - -if (oControl.mod_usemanualseed == 1) { - random_set_seed(oControl.mod_seed); - oControl.seed = oControl.mod_seed; +if(instance_exists(oClient)){ + if(!is_undefined(oClient.seed)){ + if(oControl.seed != oClient.seed){ + oControl.seed = oClient.seed; + random_set_seed(oControl.seed); + } + } else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); + send_seed(); + } +} else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); } var randpb = argument0; diff --git a/scripts/scr_randomizer_pure.gml b/scripts/scr_randomizer_pure.gml index 24ea0606..4a087ffd 100644 --- a/scripts/scr_randomizer_pure.gml +++ b/scripts/scr_randomizer_pure.gml @@ -1,13 +1,28 @@ var temp_seed = random_get_seed(); randomize(); -oControl.seed = random_get_seed(); -random_set_seed(oControl.seed); +if(instance_exists(oClient)){ + if(!is_undefined(oClient.seed)){ + if(oControl.seed != oClient.seed){ + oControl.seed = oClient.seed; + random_set_seed(oControl.seed); + } + } else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); + send_seed(); + } +} else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); +} if (oControl.mod_usemanualseed == 1) { random_set_seed(oControl.mod_seed); oControl.seed = oControl.mod_seed; } + + // These lists no longer used after 1.3.3 oControl.list_bombs = ds_list_create(); ds_list_add(oControl.list_bombs,true,false); diff --git a/scripts/scr_randomizer_split_items.gml b/scripts/scr_randomizer_split_items.gml index 93766f31..984ad394 100644 --- a/scripts/scr_randomizer_split_items.gml +++ b/scripts/scr_randomizer_split_items.gml @@ -2,6 +2,22 @@ var temp_seed = random_get_seed(); randomize(); +if(instance_exists(oClient)){ + if(!is_undefined(oClient.seed)){ + if(oControl.seed != oClient.seed){ + oControl.seed = oClient.seed; + random_set_seed(oControl.seed); + } + } else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); + send_seed(); + } +} else { + oControl.seed = random_get_seed(); + random_set_seed(oControl.seed); +} + if (oControl.mod_usemanualseed == 1) { random_set_seed(oControl.mod_seed); } oControl.list_powerbombs = ds_list_create(); diff --git a/scripts/send_seed.gml b/scripts/send_seed.gml new file mode 100644 index 00000000..f02eb87e --- /dev/null +++ b/scripts/send_seed.gml @@ -0,0 +1,12 @@ +/// send_seed +var size, type, alignment; +size = 1024; +type = buffer_grow; +alignment = 1; +seedBuffer = buffer_create(size, type, alignment); +buffer_seek(seedBuffer, buffer_seek_start, 0); +buffer_write(seedBuffer, buffer_u8, 3); +buffer_write(seedBuffer, buffer_f64, oControl.seed); +buffer_write(seedBuffer, buffer_u8, global.clientID); +var result = network_send_packet(oClient.socket, seedBuffer, buffer_tell(seedBuffer)); +popup_text("Seed sent"); \ No newline at end of file