luiscubal
|
|
Posted on: April 09, 2010, 04:18:47 pm |
|
|
Joined: Jun 2009
Posts: 452
|
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... 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: 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: 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
|
|
|
|
|
|
|
|
Post made April 11, 2010, 01:42:31 am was deleted at the author's request.
|
|
Josh @ Dreamland
|
|
Reply #7 Posted on: April 11, 2010, 09:50:05 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
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
|
|
|
Josh @ Dreamland
|
|
Reply #8 Posted on: April 11, 2010, 09:52:27 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
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
|
|
|
|
|
luiscubal
|
|
Reply #11 Posted on: April 11, 2010, 02:34:40 pm |
|
|
Joined: Jun 2009
Posts: 452
|
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
|
|
|
|
Josh @ Dreamland
|
|
Reply #12 Posted on: April 11, 2010, 03:13:34 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
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
|
|
|
luiscubal
|
|
Reply #13 Posted on: April 11, 2010, 03:44:41 pm |
|
|
Joined: Jun 2009
Posts: 452
|
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
|
|
|
|
|
|