HomeGamesUpdatesPricingMethodology
Steam News9 October 20205y ago

Stability update

Great news! I've finally squashed the last elusive bug in the game, and it was terrrrrrible.

Full notes

Full Horror Movie Bingo update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

1 fix1 addition4 changes0 removals
  • Server
  • Performance
  • Gameplay
  • Balance
  • Fixes
changedMy games run on APIs instead - so you tell the server you want something and it says "here's where you're at" and you can always stay up-to-date, even if something goes wrong. Just reload the page, or pull up your browser history, and you're right back in.
changedThese APIs have been extremely reliable, and they fire every second, but there was a bug that would silently crash the game after 2 or 3 hours. No debug messages, no error log, just a hard crash that reported nothing.
changedif (ds_map_find_value(async_load, "id") == get) { if (ds_map_find_value(async_load, "status") == 0) { returnString = async_load[? "result"]; var resultMap = json_decode(returnString); full_list = resultMap[? "default"]; // Stuff happens // Cleanup ds_map_destroy(resultMap); ds_list_destroy(full_list);
changedfull_list contains all the information from the API call, but on very, very rare occasions (we're talking a 1 in 10,000 chance here), the service I'm using to host the API will say it's successful, but return nothing. This gets picked up by Gamemaker as "undefined," and since undefined is not a valid thing to stick into ds_list_destroy(), it completely breaks.
addedBy checking in the middle if is_undefined(full_list), I can now ignore any API call that comes back as undefined, saving the game from crashing after it's been up for a few hours. There would seriously be nothing worse than you playing this game with friends, having a bunch of people close to a bingo, and then suddenly the game just disappears.
fixedSo it's fixed now hooray!

Horror Movie Bingo changes

changedMy games run on APIs instead - so you tell the server you want something and it says "here's where you're at" and you can always stay up-to-date, even if something goes wrong. Just reload the page, or pull up your browser history, and you're right back in.
changedThese APIs have been extremely reliable, and they fire every second, but there was a bug that would silently crash the game after 2 or 3 hours. No debug messages, no error log, just a hard crash that reported nothing.
changedif (ds_map_find_value(async_load, "id") == get) { if (ds_map_find_value(async_load, "status") == 0) { returnString = async_load[? "result"]; var resultMap = json_decode(returnString); full_list = resultMap[? "default"]; // Stuff happens // Cleanup ds_map_destroy(resultMap); ds_list_destroy(full_list);
changedfull_list contains all the information from the API call, but on very, very rare occasions (we're talking a 1 in 10,000 chance here), the service I'm using to host the API will say it's successful, but return nothing. This gets picked up by Gamemaker as "undefined," and since undefined is not a valid thing to stick into ds_list_destroy(), it completely breaks.
addedBy checking in the middle if is_undefined(full_list), I can now ignore any API call that comes back as undefined, saving the game from crashing after it's been up for a few hours. There would seriously be nothing worse than you playing this game with friends, having a bunch of people close to a bingo, and then suddenly the game just disappears.

Great news! I've finally squashed the last elusive bug in the game, and it was terrrrrrible. For those of you that like to understand more about game development, here's the story:

Have you ever played a game where your phone was the controller and then suddenly you got disconnected and you couldn't get back into the game?

Well most games use a thing called websockets to make the connection happen, and they are fantastic (and cheap and insanely fast) when everything goes right. But when something goes wrong, it takes a ton of work to recover someone to the right place. Which means there's always something you don't account for that can mess you up.

My games run on APIs instead - so you tell the server you want something and it says "here's where you're at" and you can always stay up-to-date, even if something goes wrong. Just reload the page, or pull up your browser history, and you're right back in.

These APIs have been extremely reliable, and they fire every second, but there was a bug that would silently crash the game after 2 or 3 hours. No debug messages, no error log, just a hard crash that reported nothing.

When you deal with a situation with this, you have to rule things out. I knew it was happening during the main game loop, but to really isolate things, I had to start ripping out large blocks of code, and rerunning the game for 2 hours or more until it crashed, sometimes overnight. I even had OBS videotaping the screen and Task Manager to see if that provided any information.

It took days to find this thing, but I eventually found the issue:

In Gamemaker Studio, an Asynchronous HTTP call has a very specific way of getting information back. It looks something like...

if (ds_map_find_value(async_load, "id") == get) { if (ds_map_find_value(async_load, "status") == 0) { returnString = async_load[? "result"]; var resultMap = json_decode(returnString); full_list = resultMap[? "default"]; // Stuff happens // Cleanup ds_map_destroy(resultMap); ds_list_destroy(full_list);

full_list contains all the information from the API call, but on very, very rare occasions (we're talking a 1 in 10,000 chance here), the service I'm using to host the API will say it's successful, but return nothing. This gets picked up by Gamemaker as "undefined," and since undefined is not a valid thing to stick into ds_list_destroy(), it completely breaks.

By checking in the middle if is_undefined(full_list), I can now ignore any API call that comes back as undefined, saving the game from crashing after it's been up for a few hours. There would seriously be nothing worse than you playing this game with friends, having a bunch of people close to a bingo, and then suddenly the game just disappears.

So it's fixed now hooray!

I hope you like it, and if you see anything weird, let me know and I'll get on it.

Thanks! -Jaime

Source

Steam News / 9 October 2020

Open original post

Changelog.gg summarizes and formats this update. How we read updates.