LateralGM - hpgDesigns/hpgdesigns-dev.io GitHub Wiki

lateralgmlogo.png LateralGM (LGM) is an alternate Game Maker IDE compatible with both ENIGMA and Game Maker. It can be used to edit projects, but cannot run them without the use of an additional plugin. It has many other uses, including GM8 -> GM6/7 conversion. It is written in Java. The lead programmer is User:IsmAvatar.

Within the ENIGMA project, LateralGM is everything you see visually that does not involve the ENIGMA menu.

Compiler

Lgm_ide.png Through the use of The Plugin, LGM may interface with ENIGMA so as to provide compiling and running of the projects. The LGM and ENIGMA projects are largely independent and modular, so that you can usually plug in a newer or older version of either and both will usually still function normally. Normally, when you obtain ENIGMA, it includes LateralGM and the relevant plugin.

Modularity

LateralGM is designed to be very modular so interested projects can splice it up, reuse code, or create spin-offs however they like. Of course, there's the possibility of designing plugins for the purpose of compilers, runners, or internal modifications. The really interesting modularity, though, is that LateralGM keeps front-end (UI) completely separate from the back-end (file, resource), which allows easy replacement or removal of the UI, if desired, or simply only reusing the back-end. Finally, several of the internal classes or some groups of classes are completely independent and can be copied and reused without generating a dependency on LGM itself, such as certain UI components, as well as several of the File-related classes. This doesn't even mention the independent projects that get hooked into LGM, such as the code editor.

Building

Building LGM is a process that is not as simple as running make on the directory with the source code, as there are many complex tasks that need to be done which make is less capable of, so we usually use ant instead. Generally, the tasks that need to be done to build are:

  • Apply revision branding to the image and About box (although this may be phased out)
  • Compile the classes with an appropriate compiler and settings (currently LGM doesn't compile with the standard Javac, and compiling requires an additional dependency on the Eclipse Java Compiler, although we're working on this)
  • Zip it up into an executable jar

As you can see, this can be a complex task, so it is usually performed by a developer, but instructions are also available for anyone who wishes to build it, even from scratch.

Overriding settings

LGM has several settings/preferences which can be changed, but currently it lacks a settings panel to do this. In the meantime, you can override these settings with Java Preferences. Please see Overriding settings for more details on these methods.

Disabling Automatic Updates

  • Note, with the recent switch to Git, the installation and update processes have been renovated, and "Automatic Updates" have gone away. This section is just left for people who still are stuck with the older process.
  • Additionally note that because of the switch to Git, the "Automatic Update" process will no longer get you the *very latest* version, as we have stopped maintaining that process. It should still get you a working copy, but you should not receive any more updates after that. You might consider looking at the new install process to ensure that you continue getting the latest updates.

When opening LateralGM in Windows, by default an automatic check for updates is done. This can get tiresome as it takes a little while before you can use ENIGMA and you are greeted with the 'ENIGMA is not ready get message' when attempting to compile. The easiest way to turn off automatic updates is to go to the directory ENIGMA\plugins\shared and then rename svnkit to something else. By doing this updates will no longer automatically happen, then if you wish to turn them back on you can simply rename it back to svnkit again.

Developing plugins

Plugins developed for LateralGM are usually written in Java, although they can be written in other languages as long as there is a java port in between that calls your module. The main article explaining how to develop a plugin is LateralGM:Plugins. An example of a plugin is the ENIGMA compiler plugin, aka The Plugin.

Known issues

LGM is intended to be run in Java 7 or later, but will function on Java 6 or Java 5.

All versions suffer from Java bug 7035369 on Linux where Desktop.edit is not implemented, meaning that you can't use the default system editor to edit sprites, backgrounds, and sounds. For a workaround, specify a preferred editor for each. See No internal or system editor as well as #Overriding settings for a workaround.

Java 6 intermittently suffers from bug 6826104 on Linux which causes the dialog that appears when X'ing out of a resource frame ("Keep changes?") to throw a NullPointerException in sun.awt.X11.XWindowPeer.restoreTransientFor when you try to click on one of the buttons (like "No"). This bug is fixed in Java 7.

Java 5 is missing some key functionality that Java 6 has, but most of it can be reproduced by downloading an additional SwingLayout-LGM.jar and placing it next to lgm16b4.jar. You are, however, strongly recommended to upgrade your Java to a later version.