|
Darkstar2
|
|
Reply #1 Posted on: October 02, 2014, 03:42:46 pm |
|
|
Joined: Jan 2014
Posts: 1238
|
Long time GM user here. I have a few questions that after 20 minutes of googling I figured it would just be better to ask.
I see references to EDL. Is this an actual language or is it just GML + C++?
EDL are functions UNIQUE to ENIGMA. When using ENIGMA you can combine GML, C++ and EDL in the same project. You will not be able to open and run said projects in GM, as GM works only with GML. Here is some reading: http://enigma-dev.org/docs/Wiki/ENIGMA:Specificationand here for ENIGMA specific functions http://enigma-dev.org/docs/Wiki/Category:Function:ENIGMABe careful as this is a work in progress and not 100% compatible, some info might be outdated. IF you are not sure about a given function post on the forum. How is C++ integrated into Enigma?
ENIGMA is a native C++, and your projects are compiled and merged with the ENIGMA C++ engine. LGM is ENIGMA's IDE, written in JAVA.......you build your ENIGMA projects from inside the IDE and as with GM you have a code area where you enter your EDL/GML/C++. Everything gets compiled as C++, merged with the engine and compiled native code. No interpreter/runner here. Have there been any speed comparisons to yoyo's compiler?
ENIGMA produces smaller files, as it uses an extension system allowing you to uncheck features you are not using, making the files smaller. By default many of the basic extensions are enabled, it is up to you to manually disable the ones you won't use. Generally yes, ENIGMA is faster, however there might be some situations in reverse. The developers might go into details for the advanced technical stuff. As a work in progress you will discover pros and cons compared to GM, it depends on the type of project and functions. ENIGMA is open source, contributor driven, certain things ENIGMA does that GM does not, certain functions for windows that are deprecated on GM can be done here. Certain things are incompatible or not working ATM as you will notice some differences, for example physics here does not work through the IDE, you have to use the EDL set of functions for that. If you are comfortable with coding and troubleshooting / finding workarounds, you will love ENIGMA.
|
|
« Last Edit: October 02, 2014, 03:51:11 pm by Darkstar2 »
|
Logged
|
|
|
|
time-killer-games
|
|
Reply #2 Posted on: October 02, 2014, 03:52:00 pm |
|
|
"Guest"
|
1) GML plus C++ plus many GML-like function the GM doesn't have (video_add(), etc) = EDL. 2) yes, as explained in point #1. 3) ENIGMA has almost everything except platform-specific stuff that the current platforms in ENIGMA (Windows, Mac, Linux are the only targets supported) doesn't currently support. So that means no Windows 8 store, Windows Phone, Android, iOS, etc functions (yet). Such as virtual_key_ad(), IAP, appstore achievement functions, etc. All GML functions added are made to work exactly as it does in GM to maintain compatibility as decent as the ENIGMA developers and contributors can handle. This means all argument counts, argument usages, function names, and function capabilities are the same, unless someone broke something. Syntax is the same to, but with optional C++ syntaxing for stuff like namespace and classes also added. 4) Just type C++ code in the in the "Execute Code" DND like you normally would with GML, but you can make use of both, meaning no strict syntax shit C++ would normally force on you. Also since it's open source, you may modify the C++ of the engine itself too if you'd like. 5) Yes, modify LGM in java as the IDE is also open source. but good idea worth bouncing off with Josh, ISM, or Robert so they can do that for you. 6) yes ENIGMA's speed, performance and game file sizes KILL GM, GMStudio, and their crappy YYC. I've tested this myself, so has Robert, and others. Hopefully that's about it. You're welcome.
|
|
|
Logged
|
|
|
|
|
Goombert
|
|
Reply #4 Posted on: October 02, 2014, 04:50:41 pm |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
Are there any commands in Enigma that are not in GML? (The wiki doesn't seem to have a list of commands.) Quite a few functions are documented on these pages. http://enigma-dev.org/docs/Wiki/Function_DocumentationHow is C++ integrated into Enigma? Meaning, can I type C++ side by side with GML? Our compiler is not completely finished yet, but for instance the following should work. var str; str = "Hello, world!"; int length = string_length(str); show_message(string(length));
I just tested it on the latest master and it should work as expected, so you can see that you can mix in some C++ data types. Have there been any speed comparisons to yoyo's compiler? There have been some comparisons yes, because we wrote the graphics abstraction layer ourselves and do not use a wrapper you should expect a number of graphics routines to be quicker, especially models.
|
|
« Last Edit: October 02, 2014, 04:54:31 pm by Robert B Colton »
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
RujiK
|
|
Reply #5 Posted on: October 03, 2014, 07:42:10 am |
|
|
Joined: Oct 2014
Posts: 7
|
@Robert B Colton I can declare int's with GM functions?! Awwww snap! Oh Snap! You got me sold right there.
@IsmAvatar The icons under the file, build, edit, tasks. The icons that say "new, open... save, save as, run" when you hover the mouse over them. They can be undocked but can they be hidden? I always clicked on them by mistake in GM.
@Time-killer-games Thanks for the extra info. I don't care about mobile development so no bad news there. Good news about the speed too.
@Darkstar2 Thank you for that very thorough post! That list of Enigma specific functions was what I really wanted. You can disable extensions?! Holy cow that's awesome! Besides size, does disabling extensions have any positve effect on game speed? It's probably negligible if any...
Annnd one final question, If everything in Enigma is open source, does that mean the output executables are easily decompiled?
I'm actually leaving the country for two weeks tomorrow morning, but you can be sure I'll be back asking more questions then. Thanks everyone.
|
|
|
Logged
|
|
|
|
Goombert
|
|
Reply #6 Posted on: October 03, 2014, 08:03:46 am |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
The icons under the file, build, edit, tasks. The icons that say "new, open... save, save as, run" when you hover the mouse over them. They can be undocked but can they be hidden? I always clicked on them by mistake in GM. I am thinking about replacing LGM's output window with a new interface that allows symbolic output, basically you can click on warning messages and the editor for the resource where it occurred will automatically open. I am also planning to move the output log here and display the last time you saved and loaded, without ENIGMA it will check for generic issues with a GM project file such as sprites of 0 size. But long story short, I plan on putting some buttons to toggle that area's visibility and stuff under the "Window" menu like most IDE's. I guess we could have a button to toggle visibility of the toolbar like Eclipse as well. If everything in Enigma is open source, does that mean the output executables are easily decompiled? No, they are built executables, as in what you get from Visual Studio or Code::Blocks. JDI is our parser which converts your GML/C++ or what we call EDL into pure C++ (or JavaScript in the future) and then compiles it with GCC and tacks the resources on at the end. Anyway I hope I was helpful!
|
|
« Last Edit: October 03, 2014, 08:06:14 am by Robert B Colton »
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
|
Darkstar2
|
|
Reply #8 Posted on: October 03, 2014, 03:10:42 pm |
|
|
Joined: Jan 2014
Posts: 1238
|
@Darkstar2 Thank you for that very thorough post! That list of Enigma specific functions was what I really wanted. You can disable extensions?! Holy cow that's awesome! Besides size, does disabling extensions have any positve effect on game speed? It's probably negligible if any...
Those are very good questions you ask that should be put in a FAQ. Yes the enable/disabling features is a great thing about ENIGMA, instead of compiling the entire set with your EXE you only compile the features you will use. No physics, no particles, no video, disable their extension and these won't be included in your final exe.......so yeah, smaller file sizes for sure. About performance, since these modules are used on demand when needed, when enabled, they just are included in the compile.....Should not affect your game's performance, and any hit would be minimal you'd probably not notice it at all if any. Again might depend on the complexity of game, but on tests I've done did not see any noticeable difference.
|
|
|
Logged
|
|
|
|
TheExDeus
|
|
Reply #9 Posted on: October 03, 2014, 03:25:19 pm |
|
|
Joined: Apr 2008
Posts: 1860
|
Thank you for that very thorough post! That list of Enigma specific functions was what I really wanted. You can disable extensions?! Holy cow that's awesome! Besides size, does disabling extensions have any positve effect on game speed? It's probably negligible if any... As Darkstar2 said, they are "on demand", which actually means extensions implement functions. If you don't use these functions, then the code is never run. We actually lack (or at least recently lacked) the possibility to extensions do something without you explicitly doing it. So they couldn't run a function or execute code just because it's enabled. That is slightly changed with the path_ fixes, which allows an extension to add an instance variable. Also, the size would probably be smaller anyway, because the C++ compiler at maximum optimization actually removed unused functions and code. It sometimes might fail to do that, which is where extensions just help.
|
|
|
Logged
|
|
|
|
|
Goombert
|
|
Reply #11 Posted on: October 09, 2014, 05:04:32 am |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
But now I am to a bit of a road block that I'm hoping you guys can help with again. It seems like the buffer functions are either broken or significantly different. Sadly, I hate to tell you that they are simply broke. I am the one who attempted to write them but I am not that great with bitwise operations and I've been waiting for some free time to finally finish them, but I just haven't because more important issues keep popping up. You can see the code here. https://github.com/enigma-dev/enigma-dev/blob/master/ENIGMAsystem/SHELL/Universal_System/bufferstruct.cpp#L89It would probably be better if someone like Josh just rewrote them. is there anything different about surface_draw_part from GM? It seems to "kind of" draw part. where vertical lines of the previous surface show through. Looks like the computer got lazy and only updated half-ish of the surface at odd intervals. Hmm, that could be a scaling issue introduced by my recent viewport scaling changes that Harri currently fixed in a commit. https://github.com/enigma-dev/enigma-dev/pull/841Also, if you want to post here that's fine, but I would suggest separating issues from this topic and posting them under "Issues/Help Desk"
|
|
« Last Edit: October 09, 2014, 05:06:09 am by Robert B Colton »
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
|
Goombert
|
|
Reply #13 Posted on: October 09, 2014, 08:23:22 pm |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
I am using them as a less memory intensive alternative to ds_grids. Actually, they probably have more overhead than data structures which are raw collections, ours from the standard template library and likely theirs as well. Buffers were designed for networking, this means they have the added overhead of checking and reordering endianess. Data structures are likely much much much faster at sorting data as well. so I guess I can just keep messing around with GMS and check back here every now and again. You're welcome anytime!
|
|
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
|
|