Pages: [1] 2 3 ... 5
  Print  
Author Topic: ENIGMA on iPhone - Now legally impossible  (Read 7178 times)
Offline (Unknown gender) luiscubal
Posted on: April 09, 2010, 04:18:47 PM
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Maybe some of you are waiting for ENIGMA to compile iPhone games? Are you?

iPhone terms&conditions previously were against interpreted/JIT applications. However, using C# was OK if you AOT it(ahead-of-time compiled it).

So maybe ENIGMA should be OK as long as Josh doesn't include V8? After all, ENIGMA *compiles* games...

Quote
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

The initial sentence is OK. However, the problem starts in:
Quote
Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine
(emphasis mine)
This means, no C#, no Java, no Python, no Lua, no Flash, no HaXe, no ASM and... no GML.
ENIGMA translates hybrid GML/C++ to plain C++, which this now specifically forbids.

Maybe now you're saying: Hell, screw GML. I'll just use plain C++!
Well, first of all you'll have to find a way to skip Josh's parser and, in second place...
What happens to your objects? Your rooms? Are they originally written in C++? No.

So you'll have to manually position all your rooms' objects in a C++ file.

But wait, this gets better:
Quote
Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited
So, you can't even have some intermediate layer, such as create_room, etc.

Lovely, heh?
So kiss your iPhone ENIGMA gaming hopes good bye.
Since Windows Phone 7 only allows .NET programming, that means the only smartphone ENIGMA can possibly ever run in is Android(maybe BlackBerry or Palm? I haven't looked into those two...)
Logged
Offline (Unknown gender) Game_boy
Reply #1 Posted on: April 09, 2010, 04:35:08 PM
Member
Joined: Apr 2008
Posts: 228

View Profile
Moral: Don't buy into a closed platform and expect it to work.
Logged
Offline (Unknown gender) score_under
Reply #2 Posted on: April 09, 2010, 04:45:45 PM

Member
Joined: Aug 2008
Posts: 308

View Profile
iPhone app store's T&C are worse than ridiculous.
Logged
Offline (Unknown gender) Micah
Reply #3 Posted on: April 09, 2010, 04:50:58 PM

Resident Troll
Joined: May 2008
Posts: 129

View Profile
Porting Enigma to Android would be as much work as porting it to Windows Phone 7--it uses Java on a custom VM made by Google. Although I think there is a way to compile native apps using C++.

I believe that Blackberry also uses Java.

I think that Palm Pre uses HTML and JavaScript, so that would be a huge lot of work too.
Logged
Offline (Unknown gender) luiscubal
Reply #4 Posted on: April 09, 2010, 04:52:32 PM
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Android allows native code.
That's how Mozilla's porting Firefox to Android.
Logged
Post made April 11, 2010, 01:42:31 AM was deleted at the author's request.
Offline (Unknown gender) Game_boy
Reply #6 Posted on: April 11, 2010, 06:05:14 AM
Member
Joined: Apr 2008
Posts: 228

View Profile
What happens if I compile a game on it anyway? No one is going to know.

But you need to put it on the App Store or no one will be able to use it without jailbreaking. And then they'll notice and remove it.
Logged
Offline (Male) Josh @ Dreamland
Reply #7 Posted on: April 11, 2010, 09:50:05 AM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2946

View Profile Email
Their clause on originality is easily worked around; regardless of who (or, in this case, what) wrote the code, it is written in C++ by compile time.
Also, look at Unity. They use JavaScript. How does this fare with that license?

Furthermore, the "compatibility layer" can't really apply to ENIGMA; ENIGMA's API is entirely platform-specific code. Using ENIGMA's API is no different than making your own calls in a separate function, or using someone else's in library form.

This license has essentially no bearing on the project; if anything should make them kiss their hopes good bye, it's me neither owning nor intending to own an iPhone. The closest lexical match between their newly founded restrictions and the concept of ENIGMA is that ENIGMA would enable you to compile your code on multiple platforms without changing any of your own code. This isn't done dynamically, though, from a separate API such as SDL; it's a (usually) custom-coded (at compile time, by ENIGMA) part of your game.

It's worth mentioning that the only true function of the parser is to add semicolons and declare variables. That's hardly a cause for license violations; the newest was targeted primarily at Flash compilers. They don't want Flash games being compiled and sold.

So basically, to accuse ENIGMA of being illegal on the iPhone would say that Unity (for one) and most libraries/user-defined functions are also illegal. The trick is that the parser does a lot of coding for the user, ultimately producing an "original" C++ source code.

Argument, as synopsis:
i. ENIGMA lacks a compatibility layer; it's just a library-esque implementation of GML-like functions, making it no different from an entirely user-coded library. Since the API they will be using is a static set of simple functions designed solely and entirely for the iPhone, it is not a compatibility layer.
ii. ENIGMA games' source is originally C++. Since ENIGMA is not a compiler, but a parser, the original code they will be compiling is still C++.
iii. ENIGMA does not "link to Documented APIs" at all. GCC does the linking for ENIGMA; GCC is an authorized tool.
iv. To outlaw ENIGMA is to outlaw anyone else doing any coding for you, as well as to outlaw the creation of functions for the sole purpose of calling one or more Apple Documented API functions.
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) Josh @ Dreamland
Reply #8 Posted on: April 11, 2010, 09:52:27 AM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2946

View Profile Email
On a separate note,
"But you need to put it on the App Store or no one will be able to use it without jailbreaking. And then they'll notice and remove it."
How will they notice it? ENIGMA doesn't contain a DLL labeled make_enigma_games_work_for_iphone_lulz.dll. An ENIGMA game is indistinguishable from a standardly compiled C++ game: It IS a standardly compiled C++ game.
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 (Unknown gender) luiscubal
Reply #9 Posted on: April 11, 2010, 12:02:22 PM
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Unity is going to have real trouble with these new terms&conditions indeed.
The problem is the *originally* word, which really sucks.

That "originally" word means compiled Flash(as opposed to the common interpreted/JITed flash we're used to run on the internet), AOTed Mono(used by Unity) and ENIGMA are, indeed, disallowed.
How exactly they find out is a different issue. I suppose they can check for specific patterns and ENIGMA is small enough to go unnoticed.

I am interested in seeing where this is going. I think Apple is trying to stop anything that'd make cross-platform coding easier to prevent people from coding for Android.
Mono and Adobe could easily make their code output C so it'd be compiled by Apple's compilers, however that's still be prevented due to the "originally" word.
Logged
Offline (Male) retep998
Reply #10 Posted on: April 11, 2010, 12:10:38 PM

Member
Location: Where else?
Joined: Jan 2010
Posts: 248
MSN Messenger - retep998@charter.net AOL Instant Messenger - retep998 Yahoo Instant Messenger - retep998
View Profile Email
Just say that enigma wrote the original c code.
You just told it what to write, so your EDL junk isn't actually code, it's just telling enigma what to write, and then enigma creates the actual code.
Yay loopholes?
Logged
Offline (Unknown gender) luiscubal
Reply #11 Posted on: April 11, 2010, 02:34:40 PM
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Quote
Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited
draw_circle is an intermediate layer. Most GML functions can not be used.
"intermediary translation" excludes EDL, object editor, timeline editor and room editor.
Logged
Offline (Male) Josh @ Dreamland
Reply #12 Posted on: April 11, 2010, 03:13:34 PM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2946

View Profile Email
int main() is an intermediate layer.
No? Well, then int game_step() is.
Therefore, all games containing more than one source file or function calling from the Apple iPhone API are hereby outlawed.

I'll bet any sum of money that the vast majority of iPhone games keep calls to make the main game screen, &c., in a separate, easy-to-call function. They can't outlaw ENIGMA without outlawing those.

Also, this message was posted from the Eclipse IDE. If that makes sense, *mumble mumble*.
« Last Edit: April 11, 2010, 03:18:21 PM 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 (Unknown gender) luiscubal
Reply #13 Posted on: April 11, 2010, 03:44:41 PM
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Quote
Therefore, all games containing more than one source file or function calling from the Apple iPhone API are hereby outlawed.
Therefore, Apple is stupid. I thought about that too, but I don't think that's what Apple meant - but literally one could interpret it that way.
Then again, Apple has had the ability to randomly exclude apps from the store for a long time. They just made that a lot easier for them.
No ENIGMA, no Flash, no Unity, no wxWidgets, no anything that enables cross-platform porting.
Logged
Offline (Male) Rusky
Reply #14 Posted on: April 11, 2010, 06:25:02 PM

Resident Troll
Joined: Feb 2008
Posts: 960
MSN Messenger - rpjohnst@gmail.com
View Profile WWW Email
Enigma is a compatibility layer. At some point, every compatibility layer has an interface implemented multiple ways so it works on different platforms. The same Enigma project will work with GL or DX- that is banned, modular code is not. I don't see how you could interpret it your way... O_o
Logged
Pages: [1] 2 3 ... 5
  Print