Notepad++: Syntax highlighting for FontForge Script

FontForge comes with two scripting systems - largely-regular Python and an unnamed scripting language that uses the extension .PE.

While the documentation advices to prefer Python scripting where possible, it is still nice to be able to read the existing PE scripts easier.

This User Defined Language for Notepad++ aids with that, adding folding and syntax highlighting for built-in functions and variables of the scripting language.

Continue reading

A summary of my GameMaker assets

Featured

This post serves as a collection of descriptions and links to various GameMaker-related assets and extensions that I have published over time.

Back when publishing it in 2017, I thought it was longer than expected, but it had since grown about twice in size. At least the blog has that "navigation" sidebar now.

Also should answer the "how do I support your work" question that some readers have.

Continue reading

A small guide on writing interpreters, part 2

label hello: select dialog("Hello! What would you like to do?") {
    option "Count to 5":
        for (var i = 1; i <= 5; i = i + 1) {
            wait(1);
            trace(i + "!");
        }
        return 1;
    option "Nothing": jump yousure;
}
label yousure: select dialog("You sure?") {
    option "Yes": trace("Well then,"); return 0;
    option "No": jump hello;
}

Example of supported syntax

As some might remember, earlier this year I have published a small guide on writing interpreters, which went over the process of implementing a basic interpreter capable of evaluating expressions consisting of numbers, operators, and variables.

This continuation of the guide further expands upon concept, outlining how to support calls, statements, and branching - enough for a small scripting language.

Continue reading

GameMaker: Checking whether a string is a valid number


Some things are numbers, some aren't

GameMaker Studio 2.2.2 released few days ago, bringing, among improvements, "GML consistency", which changes how automatic type conversion works in corner cases.

A little less known thing, together with that it also changed how GameMaker's string-to-number conversion function (real) works, having it throw an error if your string is definitely not a number.

A slight inconvenience, given that there is not a function to check if a string is a number before attempting conversion.

But, of course, that can be fixed.

Continue reading