Skip to content
This repository has been archived by the owner on Feb 17, 2024. It is now read-only.
/ opengml Public archive
forked from maiple/opengml

GML interpreter

License

Notifications You must be signed in to change notification settings

gm-archive/opengml

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenGML

Github Action Build Status License Discord

Download: Nightly. (Select a workflow, scroll down to artifacts. May require logging into Github to click the links. Better download link TBD.)

What this is: a free, open-source, cross-platform interpreter for GML 1.4 (with experimental support for GML 2.0), everyone's favourite game development language and toolkit. It's easy: ogm ./MyGame.project.gmx in any terminal and your game will launch.

What this is not: an IDE or graphical user interface. If you want to OpenGML for development, you must write your code, draw your sprites, and tile your rooms with your own preferred software. Recommendations are provided in the "Other Software" section below.

Getting Started

  • Use: To get started running an existing GML project or a new project, see the Quickstart guide.
  • Debug: Try ogm --debug MyGame.project.gmx
  • Build: To compile OpenGML from source yourself, see the build instructions.
  • Link: To use OpenGML as a C++ library for building your own tool, see the Library guide.
  • Develop: If you are interested in helping to develop OpenGML, or you'd like to modify or hack it, or you just want to get an overview of the codebase, see both the build instructions and the Source Code Overview.
  • Recurse: To use OpenGML from within GML (e.g. to replace string_execute()), see the usage instructions for gig.

On Ubuntu, to compile from source using Docker and run the example (as mentioned in the build instructions, run the following bash code.

apt install docker
bash ./docker/build.sh ubuntu x86 # (x86 build is preferred for compatability with 32-bit DLLs on some projects.)
./out-ubuntu-x86/ogm demo/projects/example/example.project.gmx

Features

  • Written to be totally compatible with the 1.4 version of everyone's favourite game creation toolkit, unlike ENIGMA, which does not (and will never be able to) run all games written in GML. (100% compatability for OpenGML isn't yet achieved, but it is a design goal from the ground-up.)
  • Uses OpenGL in an SDL2 context for graphics.
  • Available as a stand-alone binary to interpret GML: ogm ./MyGame.project.gmx
  • Can also be used as a C++ library to parse, compile, and execute GML code: #include <ogm/ast/parse.h>
  • Comes with a debugger. Place conditional breakpoints and watchpoints, view and edit variables in place, and step through source code or bytecode instructions if you prefer. Available from the command-line with ogm --debug MyGame.project.gmx.
  • Compiles to an intermediate bytecode format, allowing speedy execution and the future potential for compilation to different targets (e.g. JavaScript/HTML5).
  • On UNIX systems, zugbruecke can optionally be used to run windows DLLs and extensions via wine. (This maximizes support for running existing games on Linux or Mac.)

Planned Features

  • Beautifier
  • 100% compatability with GML.
  • GML 2.0 support

Other Software

Here are some software suggestions which may be helpful for creating games with OpenGML. Not all of these have been tested for interoperability.

Code Editors

Room Editors

  • PushEd, which creates GML-compatible rooms in both 2D and 3D.

Image Editors

  • GIMP, a powerful open source, cross-platform image editing tool.
  • Krita, a powerful open source, cross-platform digital painting tool.

Other compilers and interpreters

If you decide you don't like OpenGML, you may be interested in these alternatives. Not all of them are complete or usable.

  • ENIGMA is popular compiler, though it isn't 100% accurate to GML and probably won't work for large existing codebases.
  • Game Creator, which compiles to Microsoft's .NET framework.
  • Acolyte, which compiles to C++.
  • DejaVu, an llvm-based compiler.
  • DejaVu (Rust), a rust reimplementation of the above.
  • GM8Emulator (C++), which runs GM8 projects.
  • GM8Emulator (Rust), a rust reimplementation of the above.
  • Runero, a runner written in Java.

Full-Resource IDEs

These combine all of the above to offer all of the different tools needed to create a game in GML in one comprehensive user-interface.

  • The best and most reliable IDE and compiler available for this programming language can be found here. Neither free nor open source.
  • LateralGM, an open source IDE for GML and ENIGMA. Might be out of date.

Languages

  • C++ 93.3%
  • C 3.7%
  • Python 1.6%
  • Game Maker Language 1.1%
  • Other 0.3%