71
General ENIGMA / Re: OpenSuse Support for Enigma
« Last post by time-killer-games on June 09, 2020, 03:22:07 pm »yeeeaah boi
72
Works in Progress / PolyOne (Now on Itch.io!)
« Last post by Foxide on June 08, 2020, 12:51:22 pm »***Download the latest version for free from itch.io here!***
Greetings, ENIGMA developers and fans. I would like to share with you a piece of game development software I have been iteratively improving since some time in 2011/2012 using ENIGMA and LateralGM. It's a level editor that takes advantage of the draw_vertex feature of GM and by extension ENIGMA, with the original idea being to get around some of the limitations of the room and to a large extent the tile editor in GM 6.1 (which is what I was using way back in 2012!). At a certain point I realised a piece of software like this could have uses outside of just the specific game I had been making.
If you don't like text walls and want the TL;DR, scroll to the end for a few screenshots! No hard feelings because I'm pretty bad when it comes to brevity.
The software saves and loads level data as JSV files, with JSV being like a combination of JSON and CSV that was conceived by ServiceStack and is typically more compact. However, you can export loaded files as JSON for use in ENIGMA or other game engines, even those that might use different programming languages. Once you have the data in your game, the obvious thing to do would be to fill vertex array objects or vertex buffer objects (it's a long time since I worked with GLSL or other low-level shader languages so please correct me if I'm using these terms incorrectly) and render as needed. Admittedly, PolyOne only supports 2D at the moment and realistically would need a lot of rework, or so I'd imagine, to be able to display 3D polygon data in an intuitive way. The technical chops needed to be able to make it work are kind of beyond me at the moment in my opinion.
Despite the original goal of PolyOne, you could use it in a number of other ways. Being able to export a portion of the level indicated by a rectangular selection as a PNG means you can reload it into PolyOne as a texture by restarting the application. In the future, I intend to make it possible to "refresh" the available textures with just a click, whereupon the editor will check the user-definable folder from the config file and one subfolder deep for the PNG files which it loads as textures. The capability available already means you could use PolyOne as an unorthodox way to create gestalt textures, tilesheets, or 2D models.
The user interface is inspired by image editing software, as well as some level creation software for other game engines and even a certain IDE.
Some points and/or features that I'd like to brag about:
1. Although very much incomplete and with lots of plans for the future, PolyOne already has a decent set of features that streamline the creation process. You can create polygons vertex by vertex, as full polygons, quads, copy and paste whole sets of polygons, flip selections horizontal/vertical, etc.
2. The program has no theoretical limit to window size, although the size of the window can't be adjusted once it's open. The minimum size is 1024x768.
3. The user interface is written from scratch in GML, which absolutely has been a big development time sink, but means things can be made very bespoke in a way that makes sense for PolyOne and might even set it ahead of the products it was inspired by... Rarely. The UI scale can also be set in the config file, although not changed while the application is running. That's yet another feature planned for the future. Text does the built-in draw_text feature though, so font size scales in increments.
4. A basic implementation of custom themes, which really just gives you some control over the colours of the user interface. This is one thing I need to test again to make sure everything is working.
5. As of the time of writing, the software is probably about 10k lines of GML including scripts. I say this being well aware that quantity does not equal quality! However, this does include little abstractions like using the same dialog and dropdown objects and passing the behavior it must carry out at creation time, with yet another object being passed from the instantiator of the dialog/dropdown carrying the parameter information needed by the function, in other words passed from instantiator to dropdown/dialog to script.
6. An offline HTML & CSS manual is included and accessible by F1, right now it just functions as a glorified Game Information, but of course it could be improved and made easier to navigate with JavaScript.
7. Nearly everything has tooltips!
And now the parts I'm not so proud of:
1. The vestiges of an undo/redo feature are present and cause things to break if you instinctively use them. I should just complete the feature or remove it until it's presentable.
2. It's been made in a really old version of the ENIGMA portable version. I tried installing MSYS2 but Avast ruined the install and I couldn't find a way to make Avast leave it alone. Which brings me to my next point
3. I've only built and tested it on Windows 7 and Windows 10.
4. There's a bug with file writing in which the saved file doesn't finish writing content until the application is closed. This can cause the file to become corrupt and data to be lost when overwriting the original file. I am unsure as of yet whether this is a problem with my own file reading/writing code or as a result of using such an old portable version of ENIGMA. I have made sure the files being written to are closed when writing is complete as far as the GML is concerned, but I could always triple-check this.
5. There's not much that can be configured now, and what there is requires you to jump into the config.ini file, change things and restart the application, but I intend to address this problem.
6. There's no way to integrate your own game objects with the editor, but I plan to address this in future versions
7. You can't open multiple files and edit them in separate tabs
8. There are numerous dialogs that have a checkbox labelled "don't show again". So far it's ignored if you leave this checked.
9. Text fields don't behave precisely as they do in other applications. This can be improved, but I haven't gotten around to it yet.
10. It can be clunky and slow to create stuff at times, but this is somewhat dependent on what you're trying to achieve and your patience and/or foresight for saving things that can/would be reused
11. There are no restrictions, and this can be as much of a detriment as it is an advantage, as you could use forbidden characters in a text field and break your entire file!
When development reaches a certain point that I have already planned ahead for, I plan to make PolyOne a commercial product for sale on itch.io for $10. With that in mind, not to mention the embarrassing quality of the codebase in places, I don't have plans to open source this as of yet. However, I am open to the idea of creating DLLs and modules in other programming languages, and posting my own GML for reading the JSV files for those that might desire it; the current reader simply converts the read contents into a few arrays without any context of what that means for PolyOne, so could therefore be adapted to read PolyOne JSV files from any project.
Enough of the talk, here, have some screenshots!

This is one example of something I was putting together for a tabletop RPG, but also as a demo of the kind of thing that can be achieved! Many of the textures are from Half-Life 2 (these will never be included with the download, some sub-par pixel art textures I made years ago are included instead to demonstrate the texture loading capabilities).

A little sample of the JSV file that is the above map.

The config file.

One of many dialogs.
Thanks for checking this out and I hope you'll like the concept! I would love to hear your thoughts, positive and/or negative. This is my first time really sharing anything about this publicly, after so long so it'd be really interesting.
Get the latest version (0.3.4.4 RC2) here
Changelogs are contained in the Manual folder.
Old versions:
0.3.4.4
0.3.4.2 RC2
Greetings, ENIGMA developers and fans. I would like to share with you a piece of game development software I have been iteratively improving since some time in 2011/2012 using ENIGMA and LateralGM. It's a level editor that takes advantage of the draw_vertex feature of GM and by extension ENIGMA, with the original idea being to get around some of the limitations of the room and to a large extent the tile editor in GM 6.1 (which is what I was using way back in 2012!). At a certain point I realised a piece of software like this could have uses outside of just the specific game I had been making.
If you don't like text walls and want the TL;DR, scroll to the end for a few screenshots! No hard feelings because I'm pretty bad when it comes to brevity.
The software saves and loads level data as JSV files, with JSV being like a combination of JSON and CSV that was conceived by ServiceStack and is typically more compact. However, you can export loaded files as JSON for use in ENIGMA or other game engines, even those that might use different programming languages. Once you have the data in your game, the obvious thing to do would be to fill vertex array objects or vertex buffer objects (it's a long time since I worked with GLSL or other low-level shader languages so please correct me if I'm using these terms incorrectly) and render as needed. Admittedly, PolyOne only supports 2D at the moment and realistically would need a lot of rework, or so I'd imagine, to be able to display 3D polygon data in an intuitive way. The technical chops needed to be able to make it work are kind of beyond me at the moment in my opinion.
Despite the original goal of PolyOne, you could use it in a number of other ways. Being able to export a portion of the level indicated by a rectangular selection as a PNG means you can reload it into PolyOne as a texture by restarting the application. In the future, I intend to make it possible to "refresh" the available textures with just a click, whereupon the editor will check the user-definable folder from the config file and one subfolder deep for the PNG files which it loads as textures. The capability available already means you could use PolyOne as an unorthodox way to create gestalt textures, tilesheets, or 2D models.
The user interface is inspired by image editing software, as well as some level creation software for other game engines and even a certain IDE.
Some points and/or features that I'd like to brag about:
1. Although very much incomplete and with lots of plans for the future, PolyOne already has a decent set of features that streamline the creation process. You can create polygons vertex by vertex, as full polygons, quads, copy and paste whole sets of polygons, flip selections horizontal/vertical, etc.
2. The program has no theoretical limit to window size, although the size of the window can't be adjusted once it's open. The minimum size is 1024x768.
3. The user interface is written from scratch in GML, which absolutely has been a big development time sink, but means things can be made very bespoke in a way that makes sense for PolyOne and might even set it ahead of the products it was inspired by... Rarely. The UI scale can also be set in the config file, although not changed while the application is running. That's yet another feature planned for the future. Text does the built-in draw_text feature though, so font size scales in increments.
4. A basic implementation of custom themes, which really just gives you some control over the colours of the user interface. This is one thing I need to test again to make sure everything is working.
5. As of the time of writing, the software is probably about 10k lines of GML including scripts. I say this being well aware that quantity does not equal quality! However, this does include little abstractions like using the same dialog and dropdown objects and passing the behavior it must carry out at creation time, with yet another object being passed from the instantiator of the dialog/dropdown carrying the parameter information needed by the function, in other words passed from instantiator to dropdown/dialog to script.
6. An offline HTML & CSS manual is included and accessible by F1, right now it just functions as a glorified Game Information, but of course it could be improved and made easier to navigate with JavaScript.
7. Nearly everything has tooltips!
And now the parts I'm not so proud of:
1. The vestiges of an undo/redo feature are present and cause things to break if you instinctively use them. I should just complete the feature or remove it until it's presentable.
2. It's been made in a really old version of the ENIGMA portable version. I tried installing MSYS2 but Avast ruined the install and I couldn't find a way to make Avast leave it alone. Which brings me to my next point
3. I've only built and tested it on Windows 7 and Windows 10.
4. There's a bug with file writing in which the saved file doesn't finish writing content until the application is closed. This can cause the file to become corrupt and data to be lost when overwriting the original file. I am unsure as of yet whether this is a problem with my own file reading/writing code or as a result of using such an old portable version of ENIGMA. I have made sure the files being written to are closed when writing is complete as far as the GML is concerned, but I could always triple-check this.
5. There's not much that can be configured now, and what there is requires you to jump into the config.ini file, change things and restart the application, but I intend to address this problem.
6. There's no way to integrate your own game objects with the editor, but I plan to address this in future versions
7. You can't open multiple files and edit them in separate tabs
8. There are numerous dialogs that have a checkbox labelled "don't show again". So far it's ignored if you leave this checked.
9. Text fields don't behave precisely as they do in other applications. This can be improved, but I haven't gotten around to it yet.
10. It can be clunky and slow to create stuff at times, but this is somewhat dependent on what you're trying to achieve and your patience and/or foresight for saving things that can/would be reused
11. There are no restrictions, and this can be as much of a detriment as it is an advantage, as you could use forbidden characters in a text field and break your entire file!
When development reaches a certain point that I have already planned ahead for, I plan to make PolyOne a commercial product for sale on itch.io for $10. With that in mind, not to mention the embarrassing quality of the codebase in places, I don't have plans to open source this as of yet. However, I am open to the idea of creating DLLs and modules in other programming languages, and posting my own GML for reading the JSV files for those that might desire it; the current reader simply converts the read contents into a few arrays without any context of what that means for PolyOne, so could therefore be adapted to read PolyOne JSV files from any project.
Enough of the talk, here, have some screenshots!

This is one example of something I was putting together for a tabletop RPG, but also as a demo of the kind of thing that can be achieved! Many of the textures are from Half-Life 2 (these will never be included with the download, some sub-par pixel art textures I made years ago are included instead to demonstrate the texture loading capabilities).
A little sample of the JSV file that is the above map.
The config file.
One of many dialogs.
Thanks for checking this out and I hope you'll like the concept! I would love to hear your thoughts, positive and/or negative. This is my first time really sharing anything about this publicly, after so long so it'd be really interesting.
Get the latest version (0.3.4.4 RC2) here
Changelogs are contained in the Manual folder.
Old versions:
0.3.4.4
0.3.4.2 RC2
73
General ENIGMA / Re: OpenSuse Support for Enigma
« Last post by hpg678 on May 27, 2020, 06:27:01 pm »You can find the instructions on install ENIGMA on Opensuse here.
If you need any further help, post here in the Forums or drop a request on the Discord channel in the #troubleshooting section.
If you need any further help, post here in the Forums or drop a request on the Discord channel in the #troubleshooting section.
74
General ENIGMA / OpenSuse Support for Enigma
« Last post by hpg678 on May 22, 2020, 06:11:26 pm »Now users using Opensuse can develop games with Enigma for that platform. For now i can say it is a bit experimental as there are a few 'kinks' to smooth out. Sound support for other formats other than .wav is an example. When sufficient testing has been done, the procedures will be outlined in the Wiki.
I dont have that much experience with Opensuse. I do find it fascinating though. It is very sleek and efficient OS. From its package manager to YaST, you can find just about any package you need. Commands in the terminal and very easy and simple to remember. Need to update your OS......you can type " sudo zypper update" or "sudo zypper up" .to remove a package............you can type 'sudo remove <package name>' or 'sudo rm <package name>'.
It had been tedious finding all the dependecies to get Enigma to work. With Opensuse being totally, open source, libraries that had a hint of being proprietry could not be used/found. It does allow one to use proprietry software from 3rd party vendors but doing so could break the system. Opensuse does not test/check for any flaws or bugs from such software, so the risk is all on you, the user.
Click on the link to see some screenshots.
https://imgur.com/gallery/0G3dfkm
I dont have that much experience with Opensuse. I do find it fascinating though. It is very sleek and efficient OS. From its package manager to YaST, you can find just about any package you need. Commands in the terminal and very easy and simple to remember. Need to update your OS......you can type " sudo zypper update" or "sudo zypper up" .to remove a package............you can type 'sudo remove <package name>' or 'sudo rm <package name>'.
It had been tedious finding all the dependecies to get Enigma to work. With Opensuse being totally, open source, libraries that had a hint of being proprietry could not be used/found. It does allow one to use proprietry software from 3rd party vendors but doing so could break the system. Opensuse does not test/check for any flaws or bugs from such software, so the risk is all on you, the user.
Click on the link to see some screenshots.
https://imgur.com/gallery/0G3dfkm
75
Announcements / Cross-Platform External DLL Functions Now Supported
« Last post by time-killer-games 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:
https://enigma-dev.org/edc/games.php?game=111
Example DLL source code:
https://github.com/time-killer-games/DialogModule
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:
Arch/Manjaro-Linux based:
FreeBSD-based:
Have a wonderful day.
Samuel
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:
https://enigma-dev.org/edc/games.php?game=111
Example DLL source code:
https://github.com/time-killer-games/DialogModule
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
FreeBSD-based:
Code: [Select]
sudo pkg ins libffi
Have a wonderful day.
Samuel
76
Off-Topic / Re: I just want to express my gratitude to you guys
« Last post by time-killer-games 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.
77
Off-Topic / Re: I just want to express my gratitude to you guys
« Last post by hpg678 on April 15, 2020, 09:46:51 pm »i'm sure everyone else have also missed you too. Be safe and be cool!
78
Off-Topic / I just want to express my gratitude to you guys
« Last post by HitCoder on April 14, 2020, 10:47:05 pm »Hey everyone. I have been dead for a long time. I've not spoken to anyone in this community, at all, for months.
Things have been tough for me. I haven't been able to keep up with much Enigma, but I hopped over hear to have a look at what's been going on.
I'm really impressed that there's now a Free BSD port. You guys have been doing really well and I admire that. Keep up the great work.
I will be back soon. I miss all of you. Robert, Hugar, Josh, Sam, Fundies, YellowAfterlife, Rusky, Daspirit, there are so many of you i can't even process my thoughts to put all of your names into an intelligible list.
You're all wonderful people. Thank you for helping me with work, thank you for helping me cope. Thank you for making Enigma, and thank you for being persistent and keeping the work up. I'm so happy to see the project still going strong.
I've missed you all. I hope you're all doing okay.
If you've been wondering what I've been doing, it's mostly just been UTAU
I love you guys, and sorry I haven't been around. I'll be back someday, I promise.
Things have been tough for me. I haven't been able to keep up with much Enigma, but I hopped over hear to have a look at what's been going on.
I'm really impressed that there's now a Free BSD port. You guys have been doing really well and I admire that. Keep up the great work.
I will be back soon. I miss all of you. Robert, Hugar, Josh, Sam, Fundies, YellowAfterlife, Rusky, Daspirit, there are so many of you i can't even process my thoughts to put all of your names into an intelligible list.
You're all wonderful people. Thank you for helping me with work, thank you for helping me cope. Thank you for making Enigma, and thank you for being persistent and keeping the work up. I'm so happy to see the project still going strong.
I've missed you all. I hope you're all doing okay.
If you've been wondering what I've been doing, it's mostly just been UTAU
I love you guys, and sorry I haven't been around. I'll be back someday, I promise.
79
Issues Help Desk / Re: Translating - messages.properties
« Last post by Goombert on April 07, 2020, 10:55:37 am »Hi! I'm familiar with the LGM code base, you could try creating a folder named "messages" next to the jar file and put your message properties file there, mimicking the directory structure of the jar itself. I can't guarantee that it will work as I don't think we've programmed an override to pick up external message properties in LGM, but it may be built into Java.
If you are still unable to get it to work, this is a reasonable feature I could add to LGM for you if you would like. I would also be willing to accept your properties file in the master repository.
If you are still unable to get it to work, this is a reasonable feature I could add to LGM for you if you would like. I would also be willing to accept your properties file in the master repository.
80
Issues Help Desk / Translating - messages.properties
« Last post by AGPLCZ on March 30, 2020, 10:54:49 am »I don't speak English very much. I am a teacher, I want to create a translation of lateralGM for children.
I read -> https://enigma-dev.org/docs/Wiki/Translate
Where to paste?
org/lateralgm/messages/messages.properties
org/enigma/messages/messages.properties
*messages_cs_CZ.properties
Here? -> enigma-dev/plugins/
I tried to put in but it doesn't work.
LateralGM (no recompile necessary) ??
lateralGM/org/lateralgm/messages_cs_CZ.properties
Where to paste? to enigma?
msys32/home/user/enigma-dev/
I can't compile the lateralGM project to create .jar
My translation beta 0.001
https://github.com/AGPLCZ/LateralGM/blob/master/org/lateralgm/messages/messages_cs_CZ.properties
Don't have a screenshot or video?
Or do I have to "install" again and do "make" or something like that? install.sh
Thank you
I read -> https://enigma-dev.org/docs/Wiki/Translate
Where to paste?
org/lateralgm/messages/messages.properties
org/enigma/messages/messages.properties
*messages_cs_CZ.properties
Here? -> enigma-dev/plugins/
I tried to put in but it doesn't work.
LateralGM (no recompile necessary) ??
lateralGM/org/lateralgm/messages_cs_CZ.properties
Where to paste? to enigma?
msys32/home/user/enigma-dev/
I can't compile the lateralGM project to create .jar
My translation beta 0.001
https://github.com/AGPLCZ/LateralGM/blob/master/org/lateralgm/messages/messages_cs_CZ.properties
Don't have a screenshot or video?
Or do I have to "install" again and do "make" or something like that? install.sh
Thank you