Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - time-killer-games

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 »
Third Party / Embed and Play Video Files with MPV Media Player
« on: June 09, 2020, 03:14:59 PM »

Currently requires installing ENIGMA as described in the for this repository because Josh is against playing videos, (he thinks it's a security risk, weird, I know)...

Bypasses the GPL of MPV Media Player because you aren't linking with it and you are not using its source code compiled into your exe, you are just running it from the command line, and embedding it in your game window using the --wid=whatever flag; this means you don't have to share the source code of your app.

Windows needs the mpv.exe executable and d3dcompiler.dll downloaded and placed in the working directory of your game, and Linux/FreeBSD users can install the mpv package with their package manager. More info from the MPV Media Player site:

Ubuntu/Debian Linux:
Code: [Select]
sudo apt-get install mpv
Arch/Manjaro Linux:
Code: [Select]
sudo pacman -Sy mpv
Code: [Select]
sudo pkg ins mpv
The MPV Media Player is kinda buggy and a lot of videos freeze on Windows, I recommend only using it on Linux or FreeBSD.

Download the demo project here:

The example video is the one included in the second screenshot, becuase it also works on windows.

For a video that only works in Linux and FreeBSD you may download it from youtube here:

...which is the one from the first screenshot. Use whatever youtube downloader you want.


Announcements / Cross-Platform External DLL Functions Now Supported
« on: May 03, 2020, 03:22:16 PM »
Hey guys!

Robert fixed our Windows functions for calling DLL's so that they can use strings correctly. I decided to add to this vast improvement by making these functions work on Mac OS X, Linux, and FreeBSD. Mac is still broken so it's not tested on there, but there's no reason why it wouldn't work, once the Cocoa and Mac SDL platforms get patched.

Functions introduced by this extension:
- external_define(dll, name, calltype, restype, argnumb, argtype[0], argtype[1], ...argtype[10])
- external_call(id, args[0...15])
- external_free(id)

Example project demonstrating the use of external functions:

Example DLL source code:

This means nearly all GameMaker extensions for Desktop Platforms should now work in ENIGMA out-of-the-box, whether for GameMaker Studio or older versions of GameMaker. Although you will need to set a compatibility mode for the version of GM your extension is built for in order to get window_handle() working. The only thing to be done is to convert your extension to use scripts with the external functions because we don't support GameMaker's special extension package formats yet. Due to POSIX and/or X11 compliance, a lot of Linux and Mac OS X extensions can be rebuilt and "just work" on FreeBSD in a lot of cases if you have the source code handy.

To get access to these new features, simply update enigma to the latest version and enable the "External Functions" extension like so:

You will also need to install libffi. Windows users should already have this installed because we've included it on our Windows Installation page for a long time now. As for everyone else, the dependency can be installed for your platform using the terminal commands below...

Ubuntu/Debian-Linux based:
Code: [Select]
sudo apt-get install libffi-dev
Arch/Manjaro-Linux based:
Code: [Select]
sudo pacman -Sy libffi
Code: [Select]
sudo pkg ins libffi
Have a wonderful day.

Announcements / Announcing FreeBSD Support
« on: March 12, 2020, 09:15:29 PM »
Hey guys...

Here's a game by community member hpg678 running natively on BSD that was compiled with ENIGMA:

Waiting for Josh to finish some stuff with JDI, in the meantime, you can make games for FreeBSD using my branch; make sure you build with the clang compiler instead of gcc otherwise projects that use sound or audio functions will have a segmentation fault and won't run.

Install instructions:

Here's the pull request that adds support to FreeBSD for those waiting anxiously for it to be merged into master and want updates on it:


Platform: Windows
API: Win32 (VC++)

Platform: macOS
API: Cocoa (Obj-C)

Platform: Ubuntu
API: Zenity (GTK)

Platform: Ubuntu
API: KDialog (Qt)

What's Changed?

First of all, for those of you targeting Linux who aren't aware, click here for the  terminal commands needed to install the appropriate packages and dependencies used in the Linux widget systems - Zenity and KDialog. Installation instructions will be different depending on your Linux distro. Other info is there that Linux and non-Linux users alike may benefit from.

We recently updated Windows Widgets to include the same GML and EDL function set as the other actively supported systems - Cocoa Widgets for macOS, Zenity for Linux distro's using GTK+ for windowing, and KDialog for Linux distro's using KDE for windowing. Windows Widgets also now has full UTF-8 support with these same functions, just as the other systems and platforms already supported. This means we now have a fully cross-platform API that will work seamlessly on all platforms and windowing systems we support.

If you want to use these same exact functions in GameMaker Studio 2 or Unity, you may override GameMaker's implementations with these functions using my Dialog Module extension, or the Unity plugin, which are both free and open source. MIT License. Links to GameMaker Marketplace, Unity, and as well as GitHub and SourceForge here.

Known Issues

- get_open_filenames() and get_open_filenames_ext() can only return a maximum of 3 files from a given drive's root, so if your files are selected directly from C:\, I:\, etc. without being within a subfolder or subfolders of the given drive, i.e. Program Files, Users, etc. you will not be able to return more than 3 files regardless of how man files you actually selected, if not in drive's root, you will be able to select up to the buffer limit. This is a Windows-only issue. Mac and Linux have no limit to the amount of files you may select. I don't know how to fix this and will need help with it. I don't know what the source of the problem is with Windows multi-select and how I chose to write it.

- get_directory() and get_directory_alt() do not work on Windows XP, this will be fixed in a patch which will check the current Windows Version and if Windows XP then use an older API to take care of the same desired effect - selecting a directory. This will be fixed at some point. I have other priorities ahead of this one right now.

- get_string(), get_password(), get_integer(), and get_passcode() do not resize to fit the contents of the string provided by the first argument to each function. Windows-only  bug. Instead, the string will get truncated if long enough. This will probably be fixed when we support the Visual Studio compiler, CMake, so that I may use the same InputBox API I use in the GameMaker extension equivalent which does not have this bug.

- TODO: I need to wipe Josh's ass for him by renaming the current show_error() implementation to show_error_retriable(), this will eliminate the need for the second argument and it will be removed, and also this will mean Josh will let me give the function a return value, like what the GameMaker extension equivalent currently does. Then I'll write a new show_error() implementation from scratch that will only have a 'Abort' and an 'Ignore' button when non-fatal, and just an 'Abort' button when fatal. This can't be done until KDialog support's changing the 'OK' button's text on a single button dialog. It's on KDialog's roadmap, but KDE developers have yet to add it.


General ENIGMA / anyone here used pling?
« on: June 29, 2019, 08:36:47 PM »
I published my game there recently, seems like a halfway decent platform to share open source games.

It doesn't have many games on it yet though sadly. Might be an opportunity to get exposure. Maybe. Maybe not.

We have recently updated the Windows Installation Wiki Page to reflect some missing information that explains how to get OpenAL working on Windows machines.

First, you'll need libmodplug installed in your MSYS2 packages. This will be required for your game executable to build properly.

Install libmodplug for 32-bit MSYS2
Code: [Select]
pacboy -S libmodplug:i
Install libmodplug for 64-bit MSYS2
Code: [Select]
pacboy -S libmodplug:x
If you want to use OpenAL for audio, instead of DirectSound, you'll want to make sure you have "libopenal-1.dll" in your game's working directory.

You can see below a quote below of the information and downloads for libopenal-1.dll found at the link above.

libopenal-1.dll (REQUIRED for the OpenAL Audio System on Windows)

If you want to build ENIGMA games on Windows that use the OpenAL Audio System, which is required for external sound resource loading via sound_add() and other various features DirectSound and other alternatives do not offer, you need to have this DLL in the same directory as your game executable when running and distributing your game.

- Download the 32-bit DLL and put that in the same directory as you 32-bit game executables.

- Download the 64-bit DLL and put that in the same directory as you 64-bit game executables.

- You can not put your 32-bit and 64-bit games in the same directory otherwise you will end up with a name conflict because both the 32-bit and the 64-bit DLL have the same file name and you can't rename them without breaking the ability for your games to recognize them.

Downloads (2):

Windows 32-bit

Windows 64-bit

Also due to a bug with ENIGMA currently, you may also need "libgcc_s_dw2-1.dll" and "libwinpthread-1.dll" in your game executable's working directory when compiling for 32-bit specifically. This is not an issue with 64-bit, from what I can gather from my testing. You can find those in your MSYS2 installation folder, or for ease of access, you may also download them from my dropbox: Extra 32-bit DLL'

I hope this helps clear up any questions, comments, or concerns you all may have regarding this audio system.


Works in Progress / Virtual Visit Maker (Prototype)
« on: May 13, 2019, 01:53:38 AM »

The source code is very messy. This project is just meant to demonstrate you can make an entire game with one GameMaker / ENIGMA object instance with the help of an INI file and loading / unloading external resources at run-time. In this particular case you would be making a first person, point-and-click, adventure-puzzler game.

Please do not steal my sound or graphics that I created and shipped with this project. They are included for demoing and educational purposes only. You may however use the GM81 file however you see fit, to reiterate, without the external resources that I made available with it. Make your own games with this, using your own graphics and audio. The only graphical pieces you are permitted to use are inside the binary blob GM81 file itself and can be viewed when you load the project into GM / LGM.

GM81 project file can be built with the ENIGMA Development Environment using:

- Compiler: MinGW | Platform: Win32 | Graphics: OpenGL 1.1 | Audio: OpenAL

- Compiler: G++ | Platform: Linux X11 | Graphics: OpenGL 1.1 | Audio: OpenAL

...or GameMaker 8.1, but make sure you install the extension package included.

There is a 64-bit Windows EXE included, which was compiled with ENIGMA.

Yeah bro, please check it out. You will be blessed.

Finished Games / Steal the Gold
« on: April 21, 2019, 03:27:53 PM »
Made with GameMaker Studio 2 and ENIGMA.

Gameplay Video -

The video is outdated. I've added a lot of new stuff since then.

You can download it here.


By default, ENIGMA does not export an application bundle for you; it just creates an executable.

Normally how apps are distributed, whether inside or outside the Mac App Store, an App Bundle is required.

It also enables you to add an application icon to your game, version and copyright information, package dependencies and resources, etc. It is just convenient to have overall anyway so in this topic I will be going over how to create this App Bundle.

Step 1: Download the App Bundle Template

Good news! I did most of the work for you already.

Download this ZIP archive:

Once you have that file, open it it in the default program macOS has and it should extract to the same directory automatically.

Step 2: Edit the Info.plist File

In the folder you just extracted, you will see a sample app I built that demonstrates the different functions that come with the Tiny File Dialogs widget system. The contents of this app will be completely replaced with the contents of your application and its associated files.

But for starters, let's take a look at that Info.plist.

Right click on "Tiny File" -> click "Show Package Contents".

This should look like the image below:

Now you'll see a "Contents" folder, open that...

Now we found the Info.plist. Yay!

Right click "Info.plist" -> open it with Xcode.

Now what you see is Xcode's PLIST file editor:

In the screenshot above, I recommend editing everything except for the last two lines at the bottom.

The two places where you see "Tiny File Dialogs" can be replaced with your game's title.

The two places where you see "" can be changed to whatever version number you want for your game.

The Bundle ID "org.samuelvenable.tinyfiledialogs" can be replaced with your own.

I recommend using either "org" or "com" before the first period. Between the two periods you want either your real name, user name, company name, w/e your author name. After the second period you want the title of your game typically. Don't use spaces for this string. If you really want something that is at least close to spaces, use dashes or underscores.

Here's some example Bundle ID's:


...and so on.

Change the copyright to your copyright. This I really shouldn't have to explain at this point.

Step 3: Replace Game Executable and Icon Files

Go back to your extracted ZIP Finder window, and you will also see in the "Contents" folder, a folder named "MacOS":

Open "MacOS" and you will see a file named "executable", as seen below:

As you can see for yourself by trying to open "executable" - this is my Tiny File Dialogs example game. Replace this file with your game executable that was built with ENIGMA. Make sure it has the same file name, otherwise you will need to go back and change the "Executable file" slot in the Info.plist file, so that they match.

If your game is not statically linked with its dependencies, you will need to include any DYLIB files that you rely on in the same "MacOS" folder as your executable.

Same goes for any "Included Files" or externally loaded sprites, sounds, scripts, text files, INI, and other external resources you might have - make sure they are all put in this directory so they may be read by your game.

Now for the icon.

Go back up a directory and you'll be in "Contents" again. You'll see a folder named "Resources" like the one in the screenshot below:

Open the "Resources" folder.

Now you'll see the game's icon -  replace this with your own icon file, simply create a PNG in your favorite drawing program with a standard resolution of 256 x 256 pixels, and convert it to an ICNS file using some downloadable or online converter - I recommend downloading the software available at or using their online converter.

Just like the executable file, make sure your icon has the same file name as the original, "icon.icns", otherwise you will need to edit the "Icon file" textfield in the Info.plist file, so that it matches the new name you gave it.


And that's pretty much it. You are now ready to distribute your app. Just don't forget to rename "Tiny File" to your desired file name.

Note: In the first 2 screenshots at the top, "Tiny File" does not have the correct icon, this is because sometimes due to a bug with macOS, icons will not update like they are supposed to automatically.

I hope this is of any use to my fellow Mac users.

Third Party / Tiny File Dialogs for ENIGMA (Windows, Mac, and Linux)
« on: March 30, 2018, 04:41:51 PM »
Some users were having trouble getting GTK+ dialogs to work on Mac and Linux, so I decided to create a quick solution to this problem, based on "Tiny File Dialogs" from, which was licensed under zlib.

Note: currently only works on Mac and Linux. Will update the code soon, so that it will work on Windows as well, out of the box.

As you can see from the screenshots, this extension is also available for GameMaker Studio. It works the same in both.

Here's the progress I've made with the Windows version; (I can't publish it until a certain bug is fixed with MinGW):

What you see in the Windows screenshots above, was actually made with Microsoft's compiler, which is why it works in GMStudio but not ENIGMA yet.

All of pre-Studio GameMaker and GameMaker Studio's dialog functions are mirrored with the *_tfd() suffix.

Download here:
[link removed] Note: This ENIGMA extension is now it's own Widget System and is shipped with ENIGMA.

Extract that zip under this directory:

Comes with an editable GM81 file and two Linux demo executables, (one for 32-bit and one for 64-bit).

To install all of your game's dependencies on Linux, along with the Linux dependencies that are needed to use this extension, use this terminal command:

Code: [Select]
sudo apt-get install g++ zlib1g-dev libglew-dev libglu1-mesa-dev libalure-dev libvorbisfile3 libvorbis-dev libdumb1-dev libbox2d-dev zenity
The only dependencies this modified version of Tiny File Dialogs uses are zenity and GTK, as far as I know.


Third Party / Get Directory XP
« on: March 19, 2018, 03:46:34 PM »
Extension Preview

Extension Screenshot

Installation Instructions

1) Download ENIGMA extension ZIP
(there's also a demo EXE available)

2) Extract the zip under:

3) Make sure the path to the extension's files after extraction looks like this:

4) and NOT like this:

Function Documentation

This extension allows you to use the function get_directory_xp(dname), which is basically the same thing as get_directory(dname) in pre-Studio versions of GameMaker (v4.3 to v8.1 to be exact). This function asks for a directory. dname is the default name. If the user presses "Cancel" an empty string "" is returned. Supports UTF-8 encoding, unlike most of ENIGMA, for the moment. ENIGMA's current implementation of get_directory(dname) uses a much newer dialog, which only works on Windows Vista and upwards.

Backwards Compatibility, GameMaker Compatibility

If you happen to need this function working on Vista and up, but also on XP and older, this extension was made for just that. Another advantage of this function is unlike ENIGMA's get_directory(dname), and get_directory_alt(capt, root), you have a listbox that allows you to see the file contents of the currently selected folder, which is how GameMaker works. The dialog looks and works 99% like GameMaker's get_directory(dname) implementation.

Miscellaneous Information

This will be added to ENIGMA's portable and on GitHub eventually, I just need to make a few minor adjustments, that will not effect how the extension works, such as adding copyright information in the code comments at the top of the source and header files.

Issues Help Desk / can someone tell me why this no longer works?
« on: February 20, 2018, 04:00:52 PM »
i created a panorama virtual visit demo project, which used to work in enigma ages ago. but now, it crashes every time it first opens, (after the title screen)....


Proposals / Microsoft Script Control
« on: February 14, 2018, 11:45:30 AM »
I know most people on here are Linux fans who hate Windows, so I'm not betting on anyone actually using this anytime soon.

License and Installation

I'm posting this topic as a reminder for me to make my GameMaker Windows DLL into an ENIGMA extension once Josh and Robert are ready for that, as well as to advertise to everyone ahead of time what I plan to contribute to ENIGMA, just to see what everyone thinks or if anyone finds it particularly useful. It is free on the YoYoGames Marketplace, and is soon going to be available for the same price on

For GameMaker users, the library is both open source but also commercial, it is mandatory to pay for it in order to use it in your GameMaker Studio projects. However, when it will be encorperated into ENIGMA, for ENIGMA users, the code will be license under GPL, the ENIGMA extension will be free and open source, and in time, once the linking exception is written, will also have the linking exception applied to it as well. Anyways...

If you would like the DLL and an example GM81 formatted project for free, and if you are either an ENIGMA or GameMaker v5.0-v8.1 user, send me a PM on these forums, (sign up if you must), and I'll be more than happy to give you it for free, provided you will still pay for it if you intend to use it in GameMaker Studio 1.4 or 2. No credit required, for project use only. Derivative works allowed. Do not sell or redistribute as-is.

ENIGMA and Legacy GameMaker do not have an installer export, so you will need to make your own installer from the installer creator of your choosing. I highly recommend NSIS which is what GameMaker Studio 1.4 and 2 uses, or Inno Setup Compiler, which is also very popular for creating installers.

The installer you create, will need to register on installation, and unregister on uninstallation, the following dependencies:

● VideoPlayer.ocx
● WebBrowser.ocx
● DialogEx.dll

BEFORE those are registered, your installer will need to launch and wait for the VB5 runtime to install, which is also included with the sample project. This is a lot easier to do in GMStudio, because most of the work I did for you. If you don't need to use the splash functions, none of this is needed and you won't need to write or compile your own installer script. The rest is easy.

Description (What's it do?)

The original GMC topic can be seen here.

The GMC topic's contents:

[Tutorial] ActiveX Extension Creation for GameMaker Studio pt. 1: ActiveX DLL
[Tutorial] ActiveX Extension Creation for GameMaker Studio pt. 2: NS Installer

This extension is [strictly] Windows-only.

This extension is 100% free, open source, and public domain.

Execute VBScript and JScript, (using Microsoft Script Control).

You may execute the code you write within the GMStudio IDE.

You may also execute the code from a given *.VBS or *.JS file.

For more information, see the VBScript and JScript docs here.

The DLL's full source code included.

IMPORTANT NOTE: In order to use the scripts in the "SplashFunctions", "VB5/6Functions", and "JScriptFunctions" resource folders, you will need to build the game as an installer - this is required. You will also need to replace the contents of your project's default NSIS Windows installer script, with the contents of the "ActiveXInstaller.nsi" installer script, in the included files. If you do not intend to use these functions, you will not need to build your game as an installer, or replace the contents of the default Windows installer script. When testing a game with these functions, you will need to have the required ActiveX controls installed. The easiest way to do that is to install using the "Install.exe" file.

Please contact me if you have any questions.

Download Now for GameMaker Studio 1.4 and 2

Issues Help Desk / [SLOVED] enigmofo fucked after java update
« on: January 04, 2018, 07:01:37 PM »
i've fixed this error before many times, but i forgot how again


Issues Help Desk / calling all Mac users
« on: September 29, 2017, 03:16:34 AM »
I have a GameMaker extension I'd like ported to Mac and I wrote all the code and it should compile without errors because it pretty much uses all the same code as my Linux version, since they are both Unix based and yes I made sure everything I used in my code does in fact exist on Mac because I checked their online documentation.

So, anyone ok with trying to compile my code as a dylib using Code::Blocks (GCC for the compiler)?

I'll send the source in a PM.

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 »