Pages: 1
  Print  
Author Topic: First questions  (Read 1720 times)
Offline (Male) fredcobain
Posted on: April 07, 2011, 10:27:59 PM

Member
Location: Brazil
Joined: Apr 2011
Posts: 40
MSN Messenger - fredcobain@gmail.com
View Profile
Hi all,

this is my very first post.

I found about the Enigma Project by accident, and I am very impressed of what I see.

I follow GM and the GMC forum since 2004 (it not means that I am a great game developer / programmer hehehe) and I am an enthusiastic in this area.

What excites me more than a fast/performer compiled game is the ambition to provide the portability to other plataforms (non windows).

Reading some threads here I found some information but I still not sure if I understood... I have some questions I want to clarify:

1) Is there a real intention to perform a compiled file (in other words, run the game) to others platforms ? When do you expect to have the option to "compile" for:
a) Linux
b) Mac
c) Android
d) IPhone
e) Nintendo DS
f) HTML (embbeded on a page)
g) JAR
f) Are there other plans ?

2) When some of these "compile-to" options were done, will be showed like a compile option in LateralGM (probably in Enigma menu)?

3) Can I easily use LIBS, Extensions and DLL's like I do in GameMaker ?

4) I see you are working on a "proprietary" file format for Enigma/LateralGM (source file). Will be the default filetype ? Can I easily open GMK and GM6 formats in LateralGM/Enigma (even in future) ? It will still supporting GM file formats ? (of course we are talking about plans and tendencies...)


Sorry if some questions are too much noob. 2 hours ago I never heard about.... =)

Anyway... congratulations, the initiative is fantastic!! I am very excite to contribute.

« Last Edit: April 07, 2011, 10:32:57 PM by fredcobain » Logged
Offline (Female) IsmAvatar
Reply #1 Posted on: April 07, 2011, 11:07:48 PM

LateralGM Developer
LGM Developer
Location: Pennsylvania/USA
Joined: Apr 2008
Posts: 886

View Profile Email
1) Yes.
a) Now
b) Now
c) Now
d) Now
e) Soon (if not now)
f) Not planned
g) Not planned (Game is in C++, not Java)
f) Yes. We're currently considering Solaris.

2) It's already there. To select which platform to compile for, go to Enigma Settings (should be in the tree), and click on the API tab. Please notice that you need to have a C++ compiler capable of compiling for the intended platform.

3) Libs are already supported, as they are completely UI-side (LGM). In fact, we even have our own lib format called LGL. Extensions are not fully supported at this time, but we're working on it (should be mostly if not entirely UI-side). DLLs are already supported.

4) There are plans to create our own format, however it will NOT be proprietary (we were thinking zip text-based), and I don't expect it to happen anytime terribly soon. If it happens, we will do our best to make it backwards compatible with GM (meaning that you should be able to open a .LGM/ENIGMA file and save it as a .GMK/GM6), and it is guaranteed to be fully frontwards compatible with GM (you will be able to open a .GMK/GM6 and save in our special format).


Also, you should consider joining the IRC, where most development chat happens. irc.freenode.net #enigma-dev
Logged
Offline (Unknown gender) MrGriggs
Reply #2 Posted on: April 08, 2011, 05:41:15 AM

Member
Joined: Dec 2010
Posts: 128

View Profile Email
So it now works if I choose to compile for Android?

Where would I find the Iphone c++ compiler?

Do i just need the Iphone SDK?
Logged
Offline (Male) Josh @ Dreamland
Reply #3 Posted on: April 08, 2011, 11:34:53 AM

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2960

View Profile Email
@Griggs
Unfortunately, no. The new options panel has been on its feet for less than three cycles and TGMG hasn't surfaced in that time (or if he has, I wasn't there to greet him and help it through it).

But we're ready to make the three Apple platforms compile as soon as someone with access to them shows up to help.

@fredcobain
Hey, and welcome to the ENIGMA board!

IsmAvatar said most of what needs said, but I should add a couple things, and, well, may as well go off on a huge tangent about where ENIGMA stands and how it works. ENIGMA can already compile on most platforms, and some consoles. The issue is getting it to work from one to another without massive modification. The way we have set up ENIGMA thus far, thanks in good part to its Java interface, is such that it can compile itself on any platform actually capable of running Java and a compiler (this is basically Windows, Linux, and MacOSX). On each of those platforms, you can of course compile and run your game. To compile for other platforms, you have to select them.

The issue is that the location of the compiler along with the libraries it uses varies impressively from platform to platform. That being the case, we have been developing a system that allows ENIGMA to keep track of where these compilers are and how it can interface with them on each platform the interface will run on (Windows, Linux, MacOSX). That being the case, you will need to set up compilers for those alternate systems, which we are working on automating.

So, say you set up ENIGMA on Windows. In its Windows compilers folder, it will make an entry, Compilers\Windows\gcc.ey (the default compiler). When you try to use ENIGMA, it will read that file to figure out how to interface with the GCC, which will tell ENIGMA exactly what it can do, and exactly what you can do as the user. If you want to compile for a different platform, you will, ideally, simply download an installer that sets up the compiler for your machine and places the configuration file in Compilers\Windows\ where ENIGMA can find it.

Using the same data files, the interface can determine what platforms are available to you to compile on. What this comes down to is the interface looking at all the files under .\Compilers\Windows\ and offering you choices based on what the files say they can compile for. So when you go to choose your compiler, the IDE roots through them, reading for the destination:
  • gcc.ey claims that it can compile for Windows and names itself the default, so LGM places it in the list and selects it.
  • devkitppc.ey claims that it can compile for Wii, so LGM lists "Wii" as well.
  • devkitarm.ey claims it can do NintendoDS, so LGM adds that.
  • xgccmac.ey claims it can compile for OS X, so LGM offers it.

At the moment, approximately half of the ENIGMA project actually acknowledges the existence of those files. So, even though TGMG has gotten ENIGMA to compile on MacOSX, iPhone, iPad, Android, the PSP, and even NintendoDS (I've not seen his NDS code, so don't quote me), he did so by making hard-coded modifications to the way ENIGMA's compiler processes things, because this system was not yet around. The changes he made aren't the kind that the IDE could just slap in, so what we have to do is re-implement them as vaguely as possible to allow the .ey files I mentioned above to be able to dictate them. For instance, to get it to work on iPhone, he had to write resources in a separate wad (NOT as part of the executable), which meant changing some four lines of code and recompiling. A simple if() based on what appears in iphone.ey could take its place. So, that's what we're working on next.

Anyway, sorry for the wall of text.

The short answer to your question is that, while ENIGMA is presently capable of compiling for all the platforms you mentioned and more, it will not be as easy as choosing them from a menu for another couple weeks.

As for JAR, like Ism said, ENIGMA compiles as C++. You'll find companies like Yahoo have other ways of embedding games in browsers (Yahoo games are largely C++), and ENIGMA can compile to the three major platforms anyway, so there isn't much advantage to running a fork that compiles to Java.

And as for HTML5... No, we'll let Yoyo fall off that cliff themselves, if they like. There's no advantage to using HTML5 over using Java, that I can see, other than it's "kinda neato," and as you can see, Sandy gets his knickers in a knot every time it's mentioned, probably due to the dilution of the project it would introduce and the impossibility of securing it.
« Last Edit: April 08, 2011, 11:37:35 AM by Josh @ Dreamland » Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Male) fredcobain
Reply #4 Posted on: April 08, 2011, 11:59:49 AM

Member
Location: Brazil
Joined: Apr 2011
Posts: 40
MSN Messenger - fredcobain@gmail.com
View Profile
Hi Josh,

first of all, thank you so much for your attention and explanation. I really appreciate it.

If I understood correctly, you are working hard to automate the process to compile for a lot of platforms easily (like just clicking the option)... and some of then can be available even in this semester....

This is very exciting!

Unfortunately I do not have enough knowledge to contribute significantly to perform these compiling functions/operations.... but make sure I'll get involved and try to contribute the way I can (even testing, searching bugs, or making suggestions to make this project even better).

I asked about JAR and HTML5 because it would be very impressive to have the games embedded in  your own homepage... (I also think you have knowledge to do that just opening gmbed).

Anyway, thanks again for the attention.I'll be following from close the steps of this fantastic project.

Fred.
Logged
Offline (Male) RetroX
Reply #5 Posted on: April 09, 2011, 07:46:08 PM

Master of all things Linux
Contributor
Location: US
Joined: Apr 2008
Posts: 1055
MSN Messenger - classixretrox@gmail.com
View Profile Email
3) Can I easily use LIBS, Extensions and DLL's like I do in GameMaker ?
Adding onto this: while these three are supported, people will be encouraged to use raw C++.

The reason why Game Maker supports DLLs is because you can't directly include code from another language (usually C/C++) in GM.  Thus, people have to compile them into a DLL and load that into GM.  While this won't apply to languages other than C or C++ (which is usually uncommon), people can inject the code directly into the program.  GML in ENIGMA is entirely translated into C++, and because of similarities in syntax, you can inject raw C++ code and functions into the program.  I'd expect that, once ENIGMA is finished, people will release source code rather than compiling DLLs, however, a few stubborn people that don't like open-source will compile DLLs and SOs (SO is essentially the Linux version of a DLL).

In ENIGMA, there's a special function called whitespace Definitions (which might eventually be changed to a C++ code resource of some kind) where you can basically paste in a bunch of C++ code that will be included into ENIGMA.  This means that you can define your own C++ functions and such to use if you wish for a tiny bit of a performance boost from the scripts that are currently used.

LIBs, however, would be useful to people that still want to use DnD. :P


ENIGMA is a really neat project because it enables you to have the functionality of GM while being able to use C++ in the program.  It'd be a great way to learn the language.
« Last Edit: April 10, 2011, 02:48:40 AM by IsmAvatar » Logged
My Box: Phenom II 3.4GHz X4 | ASUS ATI RadeonHD 5770, 1GB GDDR5 RAM | 1x4GB DDR3 SRAM | Arch Linux, x86_64 (Cube) / Windows 7 x64 (Blob)
Quote from: Fede-lasse
Why do all the pro-Microsoft people have troll avatars? :(
Offline (Unknown gender) luiscubal
Reply #6 Posted on: April 09, 2011, 08:11:38 PM
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Quote
The reason why Game Maker supports DLLs is because you can't directly include code from another language (usually C/C++) in GM.
While that may be the most common reason, it might be worth reminding that sometimes just including code isn't an option - not even for ENIGMA. Think about LGPL libraries.

Quote
people will be encouraged to use raw C++
Separating libraries from application code can be useful. For instance, implementing a DLC system without DLL support(or execute_file/execute_string, which might be way worse than plain DLLs) can be painful. And open-sourcing the code will not magically solve the problem here.

Quote
people can inject the code directly into the program
Also, in some cases, it is WAY simpler to provide a DLL+headers than to provide source code, even for open-source projects. Many open-source projects have "source" and "binary" packages.
Let's say I want to include WebKit or LLVM in my game, for some reason. To setup ENIGMA to properly compile the source code of these projects(considering their makefiles wouldn't be used in ENIGMA, right?) would be incredibly painful.
However, just letting the projects build their DLLs using common makefiles, and then linking the game against their libraries and with their headers, would be MUCH faster to compile and MUCH simpler to use and maintain.(not to mention the size of the GMK file - I'd like to see LGM and ENIGMA handle THAT)

So, in some cases, even if you CAN use raw C++, that doesn't mean you SHOULD use raw C++.
The old "Right tool for the right job" rule still applies.

I'd always keep third-party libraries(such as SDL, ffmpeg, etc.) isolated as DLLs.
Logged
Offline (Male) RetroX
Reply #7 Posted on: April 10, 2011, 09:37:32 AM

Master of all things Linux
Contributor
Location: US
Joined: Apr 2008
Posts: 1055
MSN Messenger - classixretrox@gmail.com
View Profile Email
Well, yeah, third-party libraries will be included as DLLs.  I like the Linux mentality of using SOs for central code in a system.  I just don't like simple code being wrapped into a DLL.

GMPhysics is just a wrapper to PhysX.  I don't see why that wouldn't be included in the program - it's essentially a DLL acting as a wrapper for another DLL, which is kind of pointless.

The point that I was trying to make, I guess, is that you don't have to make DLLs for simple C++ features - they're already there.
« Last Edit: April 10, 2011, 11:42:22 AM by RetroX » Logged
My Box: Phenom II 3.4GHz X4 | ASUS ATI RadeonHD 5770, 1GB GDDR5 RAM | 1x4GB DDR3 SRAM | Arch Linux, x86_64 (Cube) / Windows 7 x64 (Blob)
Quote from: Fede-lasse
Why do all the pro-Microsoft people have troll avatars? :(
Offline (Male) fredcobain
Reply #8 Posted on: April 10, 2011, 10:29:42 AM

Member
Location: Brazil
Joined: Apr 2011
Posts: 40
MSN Messenger - fredcobain@gmail.com
View Profile
Quote
The reason why Game Maker supports DLLs is because you can't directly include code from another language (usually C/C++) in GM.
While that may be the most common reason, it might be worth reminding that sometimes just including code isn't an option - not even for ENIGMA. Think about LGPL libraries.

Quote
people will be encouraged to use raw C++
Separating libraries from application code can be useful. For instance, implementing a DLC system without DLL support(or execute_file/execute_string, which might be way worse than plain DLLs) can be painful. And open-sourcing the code will not magically solve the problem here.

Quote
people can inject the code directly into the program
Also, in some cases, it is WAY simpler to provide a DLL+headers than to provide source code, even for open-source projects. Many open-source projects have "source" and "binary" packages.
Let's say I want to include WebKit or LLVM in my game, for some reason. To setup ENIGMA to properly compile the source code of these projects(considering their makefiles wouldn't be used in ENIGMA, right?) would be incredibly painful.
However, just letting the projects build their DLLs using common makefiles, and then linking the game against their libraries and with their headers, would be MUCH faster to compile and MUCH simpler to use and maintain.(not to mention the size of the GMK file - I'd like to see LGM and ENIGMA handle THAT)

So, in some cases, even if you CAN use raw C++, that doesn't mean you SHOULD use raw C++.
The old "Right tool for the right job" rule still applies.

I'd always keep third-party libraries(such as SDL, ffmpeg, etc.) isolated as DLLs.

Very nice, RetroX.

Thank you for the explanation.
 :)
Logged
Pages: 1
  Print