So psyched to see GMLive working on GMS2.3! It's not flawless yet but I spent a few days compiling every time I wanted to test something and remembered how painful it was lol Good luck on updating everything!
One thing I've found is putting calls inside static functions blows things up pretty quickly. When it was just one call per script file I was able to update every 200ms with no problems, but you get like a Button constructor going and then throw some live updates with various arg counts in some onMouseEnter, onMouseClick, draw, doAction etc functions and it crashes the entire app immediately lol
If I drop the update frequency down to like 10+ seconds it stays stable, but then you never knowing when exactly the bus is gonna arrive and you have unpredictable wait times to see the update.
So I tweaked this part:
if (live_request_time != undefined && l_now > live_request_time) { live_request_time = undefined;
...and set live_init to undefined in the Create event, then an "if F2's pressed, live_request_time = 200" and now it only updates when I alt-tab to my game and press F2 and get an immediate update. No more crash worries.
Also no worries about saving as I code and accidentally throwing a million errors into my Output log & scrambling to comment what I wrote out and re-save to stop the madness lol
This would be great as a built-in feature! Maybe a toggle for auto or manual updating because there are times where you're doing tiny GUI polish adjustments and don't want to have to press a button to update...
Also a tip for GMS2.3 users: With the automatic code-folding you can throw brackets anywhere you want and fold them up, so I just have this in a Snippet:
A - GMLive_args:live_name = "|constructor|:function"; {$ var _i = 0, _Args = array_create(argument_count);$ repeat(argument_count) {_Args[_i] = argument[_i]; _i++;}$ if (live_call_ext(_Args)) {return live_result;}$} G - GMLive:if (live_call()) {return live_result;}
...which spits out:
live_name = "constructor:function"; { var _i = 0, _Args = array_create(argument_count); repeat(argument_count) {_Args[_i] = argument[_i]; _i++;} if (live_call_ext(_Args)) {return live_result;} }
...which gives you a folding icon to the left and when you fold it you'll see the "live_name =" part before the bracket so you remember there's GMLive code there but the block doesn't look visually obnoxious lol