Home

Awesome

<h1 align="center">Thoughts on GameMaker</h1> <p align="center">Idle thoughts on the game engine I use for my job</p>

 

GML Techniques

Over the years I've found I've been using and re-using particular GML techniques to solve problems. Below is a list of links to pages that explain them:

 

Miscellaneous

 

Formatting

You shouldn't care what formatting someone uses in GameMakerLand unless you're on the same project, at which point the first person to write a line of code wins and you should do what they do. If you must know, I use the following formatting rules:

  1. Spaces, not tabs. I want to have complete control over how code looks.
  2. Custom asset ordering in the asset browser. I want to have complete control over how scripts are introduced to the user.
  3. Allman style for curly brackets (curly brackets start on the new line)
  4. camelCase for variables and assets, PascalCase for functions/static methods, SCREAMING_SNAKE_CASE for constants/macros
  5. The actual API and internal code should use American spellings wherever relevant. UK spelling for constants etc. should not be supported. Comments are fair game for Britishisms, however.
  6. Local (var) variables should be prefixed with a single _ underscore. Private variables, i.e. variables that should not be tampered with or accessed, should be prefixed with two __ underscores. Woe betide the developer who accesses private variables and expects everything to go smoothly.

You might find some older libraries use a different formatting standard. Time makes fools of us all.

The choice to vary up the captialisation rules in my own particular way might strike people as unorthodox. This is a way of writing code that has evolved organically and no doubt will continue to evolve. Differentiating variables and functions with a different captialisation style works around GML's liberal use of the global namespace where otherwise the two token types may conflict. This is especially useful when writing constructors. The use of camelCase and PascalCase in general also avoid running into conflicts with GameMaker's native snake_case functions and constants.

 

Versioning

This is the versioning scheme I prefer for open source libraries: major.minor.patch. For example, the latest Scribble version at the time of writing is 8.7.0: major = 8, minor = 7, patch = 0.

Examples:

 

Pull Requests

I'll only accept pull requests that fulfill the following requirements:

I hate writing documentation. Special love is given to people who fix typos or broken links in documentation, or generally improve documentation at all.