GithubHelp home page GithubHelp logo

maiple / opengml Goto Github PK

View Code? Open in Web Editor NEW
47.0 2.0 7.0 4.15 MB

GML interpreter

License: MIT License

C++ 93.25% C 3.74% Game Maker Language 1.14% Shell 0.16% Python 1.57% Dockerfile 0.14%
gml gml-interpreter interpreter game-development game-engine

opengml's Introduction

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.

opengml's People

Contributors

kivutar avatar maiple avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

opengml's Issues

Can't build room that references nonexistent object

I found a room with an instance of an object that's not in the project file named "self". Game maker doesn't have any problems loading the room, it doesn't complain, doesn't remove it from the room file and even lets you select the instance from the object list.

Maybe opengml should ignore these instances and just print a warning.

"build-linux" is empty?

No files were found with the provided path: artifacts-ubuntu-x86/. No artifacts will be uploaded.
No files were found with the provided path: artifacts-ubuntu-x86_64/. No artifacts will be uploaded.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.