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.

Messages - time-killer-games

Announcements / Video Player Extension for ENIGMA Early Access
« on: August 12, 2020, 08:21:44 PM »
The pull request will be more up-to-date than the information and download available in this thread.

To get the latest scoop on what progress has been made, please check out the actual pull request:

Finally, official video playback functionality is being added to ENIGMA.

For early access to download and installation instructions, read on...

This extension bypasses the GPL of mpv media player it uses 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. If you provide the mpv media player executable bundled with your game distribution you will also be responsible for providing the source code to mpv media player itself with your game as that part of the GPL license still applies. Not the source of your game; mpv's source. Since Linux and FreeBSD allow you to install mpv media player via your package manager, on those platforms this doesn't apply.


    - override Windows DirectShow with mpv if "mpv.exe" exists.
    - note: overriding to use mpv allows for more video formats.
    - move "insecure_bullshit.cpp" files to engine for easy reuse.
    - remove unused functionality for async std output reading.

Supports / Details:

    - Windows with all the graphics systems supported by Win32.
    - Windows needs MPEG-2 video + MP2 audio + *.MPG format.
    - Use XMedia Recode to convert videos to the required format.
    - Windows uses DirectShow so no need for mpv dependency.
    - X11 on Linux and FreeBSD under most Window Managers.
    - X11 on Linux and FreeBSD support everything ffmpeg does.
    - Supports Environment Variables in video path %VAR% $VAR.
    - embed the video in an existing window id or embed in-game.
    - use window_identifier() EDL for the window id of your game.
    - you can get the window id a given video index is embedded.

Doesn't Support:

    - Won't work on macOS unless we use libmpv directly instead of the command line program which has licensing issues.
    - macOS can't embed windows belonging to other processes that are not the current one. So a libmpv version is needed.
    - mpv media player has no way to use --wid on a Wayland-based window so Linux/BSD+SDL will not work until later on.
    - Doesn't seem to work on SDL for X11 either, which is odd, because it is getting the right window identifier so that's odd.
    - Some less common X11 Window Managers causes the embedded mpv media player window to flicker, (like OpenBox).
    - SDL doesn't work on Windows either (wtf). The game just opens and then closes as soon as a video_play's been called.

Download Demo GM81 Project + Windows EXE:

Download "Video Player" Extension for ENIGMA:

Microsoft Windows Installation:
Code: [Select]
Download 7zip archiver; use it to extract the folder to this location:

Ubuntu / Debian Linux Installation:
Code: [Select]
sudo apt-get install ffmpeg mpv libprocps-dev
mv ~/Downloads/VideoPlayer.tar.gz ~/enigma-dev/ENIGMAsystem/SHELL/Universal_System/Extensions/VideoPlayer.tar.gz
cd ~/enigma-dev/ENIGMAsystem/SHELL/Universal_System/Extensions
tar -xvf VideoPlayer.tar.gz
rm VideoPlayer.tar.gz

Arch / Manjaro Linux Installation:
Code: [Select]
sudo pacman -Sy ffmpeg mpv
mv ~/Downloads/VideoPlayer.tar.gz ~/enigma-dev/ENIGMAsystem/SHELL/Universal_System/Extensions/VideoPlayer.tar.gz
cd ~/enigma-dev/ENIGMAsystem/SHELL/Universal_System/Extensions
tar -xvf VideoPlayer.tar.gz
rm VideoPlayer.tar.gz

FreeBSD Installation:
Code: [Select]
sudo pkg install ffmpeg mpv
mv ~/Downloads/VideoPlayer.tar.gz ~/enigma-dev/ENIGMAsystem/SHELL/Universal_System/Extensions/VideoPlayer.tar.gz
cd ~/enigma-dev/ENIGMAsystem/SHELL/Universal_System/Extensions
tar -xvf VideoPlayer.tar.gz
rm VideoPlayer.tar.gz


General ENIGMA / Re: OpenSuse Support for Enigma
« on: June 09, 2020, 03:22:07 PM »
yeeeaah boi

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.

Off-Topic / Re: I just want to express my gratitude to you guys
« on: April 22, 2020, 08:54:57 PM »
Yeah, hopefully things will be more peaceful by the time you get back, and I'll be more proactive at watching my tongue. It's good to hear you haven't forgotten about us, and we all certainly haven't forgotten about you. Thank you for being such a positive person, it helps everyone greatly.

Announcements / Re: Announcing FreeBSD Support
« on: March 27, 2020, 08:18:09 PM »
You're welcome! :)

General ENIGMA / Re: Android Support viable!
« on: March 13, 2020, 02:27:36 AM »

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:


Announcements / Re: Regression Testers Wanted
« on: February 23, 2020, 09:03:32 AM »
I noticed a regression with my key to success game.  pressing space to unpause the game will also make the player jump, as though I pressed the spacebar twice in the same step, when i only pressed it once. So well done, you fucked up keyboard input. Also noticed some minor problems with the collision event, specifically once you've climbed up to the top of a ladder in some levels it behaves different than GM now. I'm too lazy to include a small test case reproducible for these two regressions, so feel free to gut away my key to success game yourself to narrow it down.

If you need further details on the collision bug I can provide a video if you aren't able to find out what I'm talking about on your own. The compiled executables are built with an older version of enigma which behave the same as GM, so you may use that as a reference. Ctrl+Enter to skip levels until you get to level 3 and that's where you'll notice the collision regression at the top of the ladder if you pay close attention, at the very beginning of the level..

Also what magical reason did you need to rewrite events for, if they were working just perfect previously, but they are not in this branch of yours?

You get mad at me for causing a so-called "regression" with Robert's game, but in his case it was a bad programming practice of his, not mine. What I did was take a bad implementation and made it a good one. He was using a string where it would make more sense logically by the function's name and purpose to use a number instead. Then you, as the big almighty project lead developer came out here with this big pr that potentially breaks every game made with enigma in existence, with both broken input and collisions, you out of arrogance are too afraid to merge my icon pull request, because of a "regression" I caused, that again, in reality, was just Robert being stupid and something really weird possessed him to put quotes around a number argument, turning it into a string for absolutely no reason. You blame his bad practices on my good practices. get_integer() should take a number, as the name implies, and as the function's intended purposes serve, it would only make natural sense it would take a number argument, yet you call Robert expecting to use a string where a number makes more sense to be used, "a regression".

I question the state your mental health if this is honestly how you feel, even now. Just don't use that crap as a weird-ass excuse to be afraid to merge my icon pr. As this pr of yours clearly demonstrates, you are more prone to killing the entire project than I am, where as I was very lucky to have very loosely-speaking "break" a single game. Do you have any idea how many games even use get_integer()? Robert's might have been the only one in our community that used it. You, on the other hand, broke our entire input and collision systems, in ways that are very specific, quirky, and extremely hard to narrow down, and debug, the root causes for it.

Good day to you, ween.

Announcements / Re: Taking on Xinerama dependency on Linux
« on: February 15, 2020, 11:04:33 PM »
I wonder what idiot whose pull request is responsible for this.

Announcements / Re: Permanently Taking on Yaml-CPP Dependency
« on: February 14, 2020, 12:47:55 AM »
YADPADBM - yet another dialog penetration and domination bondage masterbation

I updated the screenshots to reflect some new functionality that is soon to be added to ENIGMA, and has already been added to my GameMaker extension's equivalent code. Please do not be confused, these are upcoming features, and they are not available yet. But it won't take long because most of the code is already written and will need minimal tweaking. These changes only apply to the macOS Cocoa and Linux X11 Widgets Systems. In the case of Linux, only the KDialog Widgets are effected. I updated the Zenity screenshots too, but only because the older ones were taken on a version of Ubuntu that had problems updating to Bionic Beaver, so there were some visual flaws with it such as using Unity instead of GNOME still, for the desktop environment, which was a huge eye-sore for me.

Changes Include:

- [macOS] A dirty subclass hack which makes some macOS dialogs display as sheets; while normally sheet dialogs are async, the subclass forces them to be modal, (unless you run the async equivalents via the async extension ofc). This relies on a small Objective-C++ *.mm source file that was not originally written by me nor was it written for ENIGMA in specific, however it was licensed under BSD, so it is permissive and compatible with both our GPL and upcoming linking exception. The dialogs that will be displayed as sheets include show_message(), show_message_cancelable(), show_question(), show_question_cancelable(), show_attempt(), show_error(), get_string(), get_password(), get_integer(), and get_passcode(). More information on what exactly a sheet dialog even is and its distinction from a child window dialog may be read in the next bullet point found below.

- [macOS] As for the rest of the macOS dialog functions, they will not be sheets, however, they will be child windows once this update is released. Child windows by Apple's definition is a window that moves when it's parent is being dragged by the title bar to move, relative to where the parent is being dragged. However, the child window will move independent to the parent window's position if the child window is dragged by the title bar to move and the parent window will stay at the same position uneffected. So, these dialogs are child windows, they will inherit this behavior. Sheet dialogs are almost no different except they can't have a title bar so sheet dialogs will always be at a position relative to the window they are attached to, more specifically at the top-center of the window it is attached to, i.e. the parent. The child window dialogs include the file, folder, and color pickers.

- [macOS] The functions widget_get_icon() and widget_set_icon() will be added, which will allow for setting an icon for the dialogs should you want an icon to be displayed that is different from the default, which is the icon you have set for your game in the Info.plist of your macOS App Bundle. This will require you to bundle your game manually as normal. Only *.PNG is supported. You can technically use other formats as well, such as *.ICNS but formats such these won't be compatible with the Linux X11 Widgets; not cross-platform.

- [Linux X11 (KDialog)] Once this update is released you'll notice that KDialog will have a more appealing icon in the title bar of each dialog that will either match the icon used in the client area of the dialog or the game's custom icon if there is no icon in the window's client area. This custom icon can be set once another important update of mine is merged. If you want the dialogs to have a different icon in the title bar than the one used for the game window, this update, as stated in the previous bullet point, will also introduce the new functions widget_get_icon() and widget_set_icon() to get/set the current icon to use for the dialogs. Again, PNG-only. There might be other formats supported but like with Mac they probably aren't going to be supported in a cross-platform manner.

You need to use OpenAL instead of DirectSound for this.

Install instructions can be found there, which will fix the error.

Issues Help Desk / Re: Compile enigma on ClockworkPI GameShell
« on: August 25, 2019, 02:50:16 AM »
Join our discord and I'll help you with emake. It's not that hard once you know what you can use for each command line option, and where you get that info. My username on there is Samuel Venable.

What i was trying to say is this is an obvious bug, and someone should report it if it hasn't been already. No, there is no way to 'turn it off', and no, it has no direct meaning. It needs to be fixed by one of the developers, most likely Josh. I only work on the engine, and don't know anything about how the compiler works. If it bothers you enough, make a GitHub ticket.

Yeah, normally it's a lot easier for me to debug errors like this with my own projects, simply because it's apparent enough what the exact code it is referencing is. I don't have access to your code, so it makes it that much more difficult for me to understand, I would recommend joining our discord and getting help from Josh there, or posting this as an issue on GitHub if there isn't already one posted for this.