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 - Goombert

Tips, Tutorials, Examples / Re: LateralGM Look and Feels
« on: June 20, 2020, 01:53:55 pm »
I recently made a fix related to this feature for Java 9 and newer JVMs. The method used to load the custom look and feels onto the class path was busted by newer modularity. It's not a big issue because we were in fact relying on undocumented internal features, something that's always a bad idea. Regardless, you can simply update LGM through the usual means (,, or download the Jar from the Extra Packages page on the Wiki) to get the fixes and use custom look and feels again. And don't worry if you don't have a newer JVM yet either, the fix is backwards compatible and also no longer requires a restart to find look and feel jars.

New Jar:

Announcements / An update on sales tax
« on: June 11, 2020, 01:41:02 pm »
Hi everyone,

I wanted to give you an update on some changes that we’ll be seeing which may affect some of your pledges. Due to new laws passing in several countries and US states, Patreon will be required to start charging sales tax on some pledges starting July 1st.

Less than half of all patrons will be charged sales tax, and for most, the amount will be very small. For example, sales tax rates in the US range from 4% to 11%, so on a $5 pledge, that would be between 20 cents and 55 cents.

Whether or not you will be charged sales tax depends on your location, and what is considered taxable there. Not every pledge is taxable, not all benefits are taxable in every location, and sometimes only a fraction of a pledge will be taxable. The money that Patreon collects as a result of these laws are paid directly to local governments.

I’m working closely with Patreon to ensure I’m able to save you as much money as possible when it comes to sales tax - which is not something that’s possible with other platforms.

If you’re in a location where sales tax will be required, you should expect to receive an email from Patreon with more information about this very soon, but I wanted to make sure you were aware of these changes way ahead of July 1st when they go into effect.

If you have questions, you should be able to find answers here. If you still have questions, the best place to get an answer is from Patreon’s customer support team, here.

Thank you for all of your support!

Issues Help Desk / Re: Translating -
« 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.

Announcements / Amazing Box Puzzles & Defense of the Realm
« on: July 10, 2019, 09:30:29 am »

Every now and again I like to share some exceptional games from ENIGMA's EDC or the community. Two games I've recently spotted are by community member Hugh Greene.

Amazing Box Puzzles is a fun and challenging puzzle game similar to Mystery Mansion and other titles he's released with new and refined mechanics.

Defense of the Realm is a more traditional side-scrolling shooter that's fast paced and involves finer-tuned reflexes to succeed.

If you enjoy these genres, please do check out his games. He not only puts a lot of effort into them, but I can personally vouch for their quality. Consider leaving him some reviews and feedback so he knows how to get even better. He's on his way to becoming a master game developer!

Works in Progress / Re: New Games in EDC Announcement
« on: July 10, 2019, 08:14:52 am »
Alright, I got through both games and have submitted feedback on each on the EDC postings. Thank you for such a fun experience hugar!

Works in Progress / Re: New Games in EDC Announcement
« on: July 10, 2019, 12:35:05 am »
I'm really happy to see this. I know you've been working hard on these games for a while and refining some borrowed mechanics from your previous games. I finally got some time to sit down and play them and that's what I am doing.

A tip on forum posting, you can use the img BBCode to put images into your forum post.
Code: (BBcode) [Select]
[img width=200]url[/img]

Issues Help Desk / Re: LateralGM And SHELLmain.cpp file
« on: July 08, 2019, 05:04:50 am »
No, you shouldn't need to, that specific problem was largely dealt with. We first patched in a forward-declared std::string which we later removed after merging in the newer JDI that better handles templates. Finally, we have actually restricted the user to the enigma_user namespace by default, so it's practically impossible for conflicts to occur now.

I mean, there's always a possibility you could still change SHELL main for some reason, I mean ENIGMA's whole point is you can change/modify any of it, but it's unlikely you'll need to.

Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 16, 2019, 05:29:34 pm »
Just going to make a note here for everybody else. We got this mostly squared away.

He contributed the array_set function which I've approved.

We still have some things to work out with var arrays and accessors though.

Works in Progress / Re: Sokoban clone for Enigma
« on: June 15, 2019, 01:11:06 pm »
Holy cow hugar, you are on fire making games. This one too looks like fun! Yeah i'm still planning on setting aside some time to play your new games.

PS: What's up with the broken formatting of the size BBCode in your post? I think the version of Simple Machines Forums (SMF) we have installed doesn't support percentages. I would Google "SMF BBCode font size" or maybe try using the UI button to set the font size of that link.

Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 15, 2019, 01:05:39 pm »
That's correct, yeah, what's it doing in ENIGMA? I understood you, you want to store the reference/pointer to the var array inside the ds list.

Issues Help Desk / Re: Error implementing struct
« on: June 15, 2019, 01:04:05 pm »
Yeah, I recently had the chance to try GMEdit, it's pretty cool, I recommend too.

General ENIGMA / Re: Roadmap?
« on: June 15, 2019, 12:55:38 pm »
Quote from: Dragonite
Okay, cool. Is it ok to report here if I find more pages with outdated information?
Sure, you can say so here, or Discord, or IRC, or wherever you prefer. I can also say that since you already have a forum account, you already have a Wiki account, so you are actually free to update content as you see fit. I just have to mention here that I must ask that you please consider copyright before uploading content to our servers. I've really only had one problem with somebody uploading copyright stuff in the past like 6 years~ I've been here, so it's not a big issue. Just make sure you either have the rights or the permission of the author to use any content you try to upload. Use your own original work rather than using somebody else's in general.

Quote from: Dragonite
Yeah, these days the normal build mode compiles your project into bytecode and it runs it inside a VM. It's much faster than GM8.1, but much slower than YYC.
Right, I haven't dived too much into this part of the engineering problem here. I mean, ENIGMA and GM are both software to solve an engineering problem, RAD game development. You may be interested in speaking sometime to Josh or Rusky or other individuals who are more knowledgeable in this domain. There's actually something funny if I recall about YoYo's use of LLVM, in other words, it's not using LLVM to the fullest. For example, it still uses Clang to link or something like that. Actually, I'll share this post with one of these people and maybe they'll explain it better than me.

For example, I mean the lack of execute_string and other dynamic programming language features.

General ENIGMA / Re: Sorry, I really tried
« on: June 13, 2019, 11:07:33 am »
Speaking from ignorance, wouldn't it work if someone who has the program uploads it completely to GitHub for others to download?
Hi again Waddlewaddle. This is technically possible and something we've discussed. However, for me to upload it, I'd have to upload several gigabytes as my particular MSYS installation is huge. You'll still need MSYS and at minimum GCC to compile your game's code. This is why one of the things we've considered is an installer, automated by a build server, which will upload only the minimum MSYS setup that's needed along with LateralGM and the rest of ENIGMA. That's quite the engineering job and we haven't exactly concluded on how to do it.

I am still troubled to hear about your setup and installation problems. I want to offer this video link in addition to hugar's resources above in the hopes that it may help.

Perhaps what may help is a brief high-level overview of how all these parts interact with each other.
* LateralGM is a GM file editor written in Java. It is older than ENIGMA and supports plugins. It can be used entirely on its own without ENIGMA.
* ENIGMA is both an engine and compiler. Its compiler parses and translates your game to C++ then feeds it to GCC/Clang. The build system compiles the engine when you hit run which will be linked to the executable produced by ENIGMA's compiler. Your resources are then appended to the executable in the data section, like traditional GM.
* When ENIGMA started, it did not have an IDE, but LGM existed and supported plugins. At that point a plugin, lgmplugin (aka enigma.jar), was developed to hook ENIGMA into LateralGM. This plugin loads compileEGMf using Java Native Access and adds a run/debug/compile button as well as a few other UI features to interact with ENIGMA.

General ENIGMA / Re: Roadmap?
« on: June 13, 2019, 10:52:37 am »
Quote from: Darkstar2
And how to explain why it happened in some scenarios and not others, is there interference between keyboard_string and something else ?
The fix for the backspace issue is now merged. And yes, any bug that overwrites the stack can muck up the whole program, that's why it's also the nature of buffer overflows and security vulnerabilities.

Let me slightly correct myself, some of the problems you may have had, perhaps building an empty game, may have been unrelated. I am still investigating issues I am having with empty games.

Quote from: Dragonite
The ENIGMA:ToDo page was last edited in 2013.
Ok, I've put the roadmap on that page, that's a good idea. Let me mention something though, and this is not as bad as it sounds. Many of the tasks on that page actually still need done. One of the reasons it's not so bad they haven't been done is because a few of them don't really matter to the users. For example, moving resources from arrays and vectors to our own templated container. That's not something the end user will really notice even in performance if it's done correctly. It will only improve our code maintainability.

Quote from: Dragonite
Some issues could be labeled as good "first issues" for those who want to contribute.
Josh started doing this actually. However, it's kind of not working because I gobbled up all of the good first issues since they were so easy and I want ENIGMA to work well. I can't help it so much I tend to be a bit of a busy body, but I will continue trying to identify good first issues and labeling them.

Quote from: Dragonite
I believe YYG uses the term "runner" for the actual engine nowadays, and calls the interpreted mode "VM".
I'm not so sure, I'm just going by the origin of the term. The origin was an executable, called the runner, which contained the interpreter/VM, which would be simply file copied and have your games assets appended to it in the data section. I suppose I should refer to it as VM now, though its behavior in modern GMS is not really that different from that in the classic GM.

General ENIGMA / Re: Roadmap?
« on: June 12, 2019, 09:04:44 am »
Quote from: Darkstar2
So according to you, is the keyboard_string the main reason for ALL cases or are there possibly other causes ?
Yeah, probably. Read the issue on GitHub, if you look at the stack produced when I hit backspace you'll see it's calling into some Enclave Win32 functions. An Enclave is a way of isolating code within the same executable. When [snip]keyboard_string[/snip] is empty, and length-1 is passed to substr, there's integer underflow which causes it to be INT_MAX. So what happens is it tries to copy too many characters and overflows the stack (which GCC probably confined to an enclave). It only appears in some situations because of link time optimization. Again, behavior here is undefined, which just causes it to look random.

Anyway, it's a very simple fix and I'll send it momentarily. We just need to check if the string is empty before erasing a character.

Quote from: Dragonite
Goombert, are you welcoming pull requests to put documentation on each of those projects' repo? I'd like to contribute that way, if possible.
It depends on exactly what you mean. We've actually stuck to documenting things here on our Wiki, which is more powerful, rather than doing so on the actual projects. We tend to only document exceptional things in the actual repos. Though, JDI is completely doxy commented. The Wiki is basically our version of the GM manual, but can also go into advanced topics that the typical user never needs to read. This line is drawn between "Getting Started"/"Documentation" and "Development Contribution".

Quote from: Dragonite
The runner works pretty well as it is (at least in my experience).
Well, hold your horses there buckaroo, we don't actually have an interpreter. There are actually other projects attempting to build an open source GM runner, but the ENIGMA project is closer to what YoYoCompiler does (and was also invented earlier; ENIGMA compiler was started in 2007). We take your GML/EDL and convert it to C++, then compile it and link it to our engine also written in C++. There are actually use cases for a runner, even if you compile, that's why YoYo kept their runner even after creating the YYC. A runner is better for... well.... running the game quickly. If you are developing in a hurry, you don't care so much what the runtime performance is, you just want to launch the game quickly to see if your code changes worked. A runner launches quicker because it doesn't go through compiling the whole game and optimizing it. Compiling your game is better for releases because it will optimize the game and make it run faster, which makes something like ENIGMA or YYC better for releasing games.

Quote from: Dragonite
Thanks for posting an updated roadmap.
You're absolutely welcome! I hope it gives some insight on what ENIGMA needs to prioritize at this point basically.