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 - Josh @ Dreamland

Issues Help Desk / Re: just started
« on: July 03, 2011, 12:49:15 PM »
By the way, how do I declare the type of variable I want to use? I only know how to program in GM...
In GM you have var and globalvar to declare a variable of any type. In ENIGMA, you can replace var with numerous types for different purposes:
int declares an integer; these are bounded between -2147483648 and 2147483647.
float declares a floating point (decimal) number; these values can be extremely large or small.
double declares a double-precision float; a float with more digits. This is how GM stores numbers.
char declares a single byte; an integer between -128 and 127. These are often treated as letters.
string declares a C++ string; this behaves almost exactly like Game Maker's string types.
variant declares a scalar var in ENIGMA. It behaves like var, but cannot be used as an array.

Example Game Maker code:
var my_integer; my_integer = 12;

Example ENIGMA code:
int my_integer; my_integer = 12; // Or
int my_integer = 12;

The equivalent to GM's "globalvar" simply reuses the keyword global in ENIGMA.
globalvar my_global_integer;

global int my_global_integer;

To allow declaring local variables as faster C++ types, the local keyword can be used the same.
local int my_local_integer;

I meant GM, but I still havent tested the compilation many times yet. I'll make a decent comparation soon.
ENIGMA's first compilation for a given platform takes between 30 seconds and a couple minutes. This is because ENIGMA is building and optimizing its entire engine for your machine. Subsequent runs can take under a second. On my machine, running takes almost exactly one second from the time I press Run.

Every function I know regarding GM's surfaces - includding surface_create - are listed on IsmAvatar's link. As I said, since I thought Enigma was slow, my plan was to develop games using GM and compile using Enigma, but I feared using a wide list of functions while developing just to find out, at the end of the project, that they should not have been used.
Ideally, we will come to support all of Game Maker's functions. Even the really dumb ones. One of our goals for the EGM format we are working on is to make development of large games quick and easy--Our format is laid out such that very little information needs changed at save time, and only small pieces of info from each resource need read at load time. We also intend to bring back a feature from our previous release soon that will put development in ENIGMA far ahead of that in Game Maker--It's a surprise.

And how do I play my games on a plataform other than my own computer? I heard it is already able to compile to other plataforms, like Android. I do not own an Adroid, so I can't tell. It runs .exe files? What about Macs?
At the moment, only Mac users can compile for Android, and only Linux users can compile for other platforms (namely, Windows). TGMG is working on making the Android and iPhone ports work from other platforms. At the moment, you need to be using Windows to compile for Windows, Linux to compile for Linux, etc. We're working on it.

Besides, it doesn't matter if C++ offers a useless keyword here and there; we all know C++ is indisputably the best language known the man, if not the best language of all time.

Off-Topic / Re: <Spam>
« on: July 01, 2011, 07:06:27 PM »
Some part of me worries he was a human. Or helped by a human. You pretty much have to have an IQ to join this board.
Oh well.

Someone hates regular expressions?

Issues Help Desk / Re: enigma can't find 'make'
« on: June 28, 2011, 05:47:19 PM »
I'll look into that issue; maybe I can reproduce it myself. It seems it's just being obstinate. Give me a bit; I'm working on something else at the moment.

Issues Help Desk / Re: enigma can't find 'make'
« on: June 28, 2011, 12:08:09 PM »
Interesting. It seems it's finding another make somewhere on your computer. Have you (or anyone else who may use your computer) ever used a console development kit such as DevKitPro? Unless I miss my guess, some program in your PATH makes use of some version of Make, but LGM seems unable to use it.

As you can see, the Path: ENIGMA generated is empty, meaning it didn't need to check a specific path to find Make. So it's most likely in your path.

Now, if you did let ENIGMA install its own MinGW, but it still failed, we have a real issue; in that case, Path should have been set to C:\MinGW\bin, where it was installed.

Issues Help Desk / Re: enigma can't find 'make'
« on: June 28, 2011, 10:04:58 AM »
That's interesting; if ENIGMA.exe reported a find, it should be working. However, if you say it found it, but has not installed it, that may be an issue of its own.

Did you already have an installation of MinGW before running ENIGMA?

At any rate, please paste the contents of Compilers/Windows/gcc.ey either here or on pastebin. Unfortunately, IsmAvatar doesn't catch that exception and report useful information. :P

If I'm correct, it's opened the descriptor successfully, but cannot run the make it describes... I'll talk to her about how she runs those. You may need to edit that file manually, or delete it as well as your current installation of MinGW and let ENIGMA reinstall it from scratch.

General ENIGMA / Re: Game Maker and LLVM
« on: June 21, 2011, 09:17:01 AM »
Fede, read the first letter of every paragraph.

Off-Topic / Re: jailbreak download
« on: June 20, 2011, 11:17:32 PM »
I have no idea the legitimacy of this download; have you had success with it and ENIGMA?

General ENIGMA / Re: Game Maker and LLVM
« on: June 20, 2011, 12:45:21 PM »
Well played.

General ENIGMA / Re: Game Maker and LLVM
« on: June 20, 2011, 11:15:07 AM »
The first question I have for you is, how does them actually freeing memory they aren't using jeopardize my chance of using less? I don't keep a great lot of memory allocated that I won't need--some systems keep bits of memory allocated at all times, yes, like the sound system, but since any sound can be played at any time, so freeing them for no reason would be silly. Other than that, there's not a whole lot I can free. Unless you're suggesting I unload resources after a while of not being used, then just load them in again when they are. ENIGMA could use to change the delivery mechanism of rooms such that they aren't kept loaded, but they're relatively low-impact.

Hell, I doubt they will be able to type-trace even object event codes--instance_change() could make an object using myVar as a double into one using it as a string. Then what? LLVM's garbage collection run would be ruined!!

Eh, I fear I don't follow your third paragraph; could you rephrase to sound less like Sandy and Co.?

Great, I don't understand a bunch of your paragraphs; they look as though LLVM took its built-in switch()-powered garbage collector to them. I'll do my best to generate a response, but I fear the worst.

Architecture issues don't concern me, really; that's why ENIGMA has some 600 different APIs in it and uses fifty different compilers. I trust native compilation on one platform to work well on other computers running that same platform. I don't imagine argument[N] is needed for execute_string(), since it is without script.

Meh, I don't really care about Haskell at this point. I'm more concerned about C++, GML, and now, JavaScript. I really doubt GM will ever build large, gnarly projects well, though; their setup is rather limited and it seems the best they can do is outsource to the magical garbage collecting and code crawling powers of LLVM.

Enough of that, though; I guess we'll just have to wait and see what happens to both projects as they go their separate ways. But I won't include two copies of V8.

General ENIGMA / Re: Game Maker and LLVM
« on: June 20, 2011, 09:46:03 AM »
What do you mean, replacing it wouldn't be a step? I thought we needed the base to be LLVM'd into a lovely, garbage collected heap of nonsense before we could link more dynamic code against it. Either way, though, I hate garbage collection, so I'd probably never do it. I don't even see why GML needs a garbage collector; it doesn't do anything very messy, and there's no way to tell if you have a reference to something you _create()'d because they're all just integers.

Anyway, assuming V8 doesn't do any tracing now, it's bound to do so in the future. No way Google's not going to keep chrome ahead of the game if Mozilla's optimizations are proving marginally more effective. Either way, I don't think it's necessary considering how short most snippets of execute_string() are. Honestly, 95% of the use cases are divided between "script0()", "return spr_box_red;", and "return sqrt(1 + 10)/15;", where each of those have segments of user input or a color or number by which a resource should be looked up. Not much to optimize, and even if it did have a tracer, it would be impossible for either LLVM's stock passes or even a particularly brilliant pass to resolve types on the fly, since the scope can change randomly in GML, changing everything.

Anyway, Clang's always been good at compiling C things; they're just constantly hemming and hawing about whether they support C++. I saw geordi had been replaced by clang for a bit on freenode, and I thought it was finally becoming production ready, but clang has since disappeared so I guessed I just assumed the project failed because C++ doesn't get along well with garbage collected JIT stuff.

General ENIGMA / Re: Game Maker and LLVM
« on: June 19, 2011, 06:48:49 PM »
I was insinuating that GCC could be replaced with something like Clang, which would be a fundamental step towards writing an execute_string based on LLVM. If Clang is the only C++ frontend to LLVM, then so be it.
I was also insinuating that type tracing would already be implemented for me in V8, and since JavaScript and GML are so similar, I could easily take advantage of Google's astounding job on it. How are you so sure that the optimizations Google makes to their code would be any less than completely sufficient for ENIGMA's purposes? My assumption is that being specifically catered to JavaScript would make V8 better for the job. With all the scoping changes involved in running GML, I don't see LLVM's generalized optimizations being perfect for the job.

For simpler code, LLVM is likely to do a great job on it without intervention. But for the purposes of execute_string(), which is completely dynamic, scope-wise, and very likely to employ with() and co, I believe at very least I am better off with V8.

Besides, V8 encorporates optimizations LLVM won't handle for them. How's LLVM like switch()? Oh, that's right, it just does what it's told; it has no more an idea of switch() than a CPU. This means while V8 handles that for me, Yoyo will just generate a string of if() jumps, as GM has always done. V8 optimizes its switch() for anything var can represent. LLVM won't automagically take care of all of GM's optimization woes. It can handle a great deal of them and, indeed, potentially even get their variables to outperform ENIGMA's own var class if I never have ENIGMA's compiler intervene. Potentially. We'll see how that works out for them.

By the by, did anyone ever finish Clang?

General ENIGMA / Re: Game Maker and LLVM
« on: June 19, 2011, 02:08:10 PM »
We'll see how it does against my personal choice. It seems to me that V8 is a more likely candidate to be good at optimising GML; JavaScript's own var is ten times more capable than Game Maker's as far as storing <all sorts of shit>. Of course, the optimization effect may well be dampened by the fact that I'll have to declare all variables as an Array ahead of time. :P
To be honest, though, I'm not really worried about that.

What does concern me is how big a parse hack with() will be, and how array = 1; will set all of array to 1 (except for ENIGMA arrays such as alarm[] or view_*[]).

General ENIGMA / Re: Game Maker and LLVM
« on: June 19, 2011, 07:17:03 AM »
That's a good bit of news. Now even if they do hook up LLVM, they'd have to triple overhaul everything to pretend to approach ENIGMA's speed, and they'd still not offer the versatility. Enjoy typing sixteen letters to instantiate anything, GM fans ^_^

Oh, and by the way, Rusky; in case this is what you were getting at, it'd take sixty, maybe 120 seconds to hook up LLVM to ENIGMA if you have both installed, at this point. Just copy gcc.ey in Compilers/Windows to llvm.ey, and change the PATH and command attributes in the file to cater to it. Then just select it from LGM's "ENIGMA Settings" pane.

How good is LLVM at JITing a plain-text string of C++? :P