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

676
General ENIGMA / Re: License Exemptions
« on: June 21, 2013, 05:57:42 AM »
You may notice that I tweaked it slightly so that individual files can be covered by this exception. I also used the terms "Exception", "ENIGMA Engine", "ENIGMA Compiler", and "ENIGMA-Endorsed Interface" without defining them. I am too afraid to attempt to define them right now.

If you want to debate the use of "ENIGMA-Endorsed Interface", do so here.

677
General ENIGMA / Re: License Exemptions
« on: June 21, 2013, 05:53:31 AM »
The linking exception [current draft]:

Quote
As a special exception to the GNU General Public License, permission is granted for additional uses of the text contained in its release of ENIGMA.

The Exception is that, if you link to code contained in the ENIGMA Engine which is covered by this Exception with other files to produce an executable, and do so using the ENIGMA Compiler via an ENIGMA-Endorsed Interface, this does not, by itself, cause the resulting executable to be covered by the GNU General Public License. Your use of that executable is in no way restricted on account of linking the ENIGMA Engine code into it.

This Exception cannot and does not, however, invalidate any other reasons why the executable file might be covered by the GNU General Public License.

This Exception applies only to the code released in the ENIGMA engine which is exempted in its copyright by this Exception. If you copy code from other releases into a copy of the ENIGMA Engine, as the General Public License permits, the exception cannot be applied to the code that you add in this way, without the express permission of its own author(s).

If you write modifications of your own for ENIGMA, it is therefore your choice whether to permit this exception to apply to your modifications. If you do not wish that, remove the exception from the affected files.

678
General ENIGMA / License Exemptions
« on: June 21, 2013, 05:47:38 AM »
Developers with tendencies to law are probably aware that ENIGMA is GPL. Whether ENIGMA is GPL or LGPL, we will run into shitloads of legal issues with people distributing our games. In principle, this is okay; we're not assholes, so we won't sue them for using our toolkit how it was intended to be used. However, as the number of contributors continues to expand out of check, the problem turns into a big chain of people to trust. Chains, weakest link, etc.

I haven't addressed this issue because I trust the current development team to not be giant dicks. However, the general (and correct) inclination of the userbase is to not trust us. The GPL gives us all the tools to be as proprietary as Yoyo, but in a way that is pleasing to Stallman instead of to Ballmer. Currently, any developer—that means any one of forthevin, HaRRiKiRi, IsmAvatar, myself,  polyfuck, or RobertBColton—any are capable of forcing someone to release the source to their game. This isn't the end of the world, obviously, but it's the end of the world to some of our userbase.

New developers are starting to show up at increasing rates. Now is the time to sort this shit. In case any of you were genuinely unaware of this issue, I apologize for leaving you in the dark about it.

The basic idea is that we need a custom Linking Exception similar to the one used in GCC. Basically, our linking exception would grant users the right to hard-link their game code to the engine when compiled using an "official" IDE. Here's the trick: How do we legally define an official IDE?

Call it selfish, but my personal inclination is to keep the code within the ENIGMA project, when closed-source. Basically, I want to allow a third party to make off with all engine code, provided that they do so in full free-and-open-source spirit; that is, with the intention of all derivative works being free and open-source, including user games. Why? It's not because I'm evil, or on a power trip.

Consider WINE. WINE is a great piece of software, in concept. In practice, it's too shitty to run Microsoft office. It's also X11-licensed. So one day, the now "Crossover Office" team decided to take WINE, fix it up professionally to be able to run MSO, and then close-source it and charge money. Puts a pit in my stomach.

Assuming we have a method for legal endorsement, this method should be conducive to our main goal, here: We need to provide incentive for any third-party distributors to contribute back to the project. That means we do not want people to fix up a critical piece of the engine that we're having trouble with, then close-source that part and charge money for it. We also, of course, don't want Yoyo making off with a chunk of ENIGMA of any size, but I don't think they'd reduce themselves to that level. They're too proud, and it's too risky for them.


Contributors:

If you hold any code in the project, I need your express and explicit permission to re-license your code according to an ENIGMA Linking Exception. The ENIGMA Linking Exception is not yet written; if you are versed in Legalese, or are an aspiring Richard Stallman, I would appreciate your help writing the exception.

If you have any aversion to the exception, I need to know about it. We have to agree. In face of disagreement, parts of ENIGMA could be GPL forever. We can only offer users as much freedom as is granted by the most-stingy developer. GPL is most stingy, X11 is least stingy. My code will be covered by this linking exception.

679
Issues Help Desk / Re: Enigma fails to start on Ubuntu 12.04
« on: June 21, 2013, 05:26:28 AM »
Whether he has or not isn't relevant; he should be getting some message. Eg, "ENIGMA is busy", "ENIGMA is not ready yet", or "ENIGMA is not operational due to previous errors."

680
Function Peer Review / Re: sprite_create_from_screen
« on: June 21, 2013, 05:25:21 AM »
I've been talking with the other devs, and I can't seem to get a straight answer regarding the way GM vs ENIGMA handles views, with respect to how this function treats views in GM.

Also, ENIGMA has licensing issues that I'm going to have to work with everyone to sort out before we start accepting code all over (right now it's been okay, because we have a very small number of frequent contributors).

The function sprite_save_from_screen is already implemented, I believe. Is its behavior with views incorrect?

681
General ENIGMA / Re: Deactivating objects outside the view ?
« on: June 20, 2013, 02:17:17 PM »
It's the same for any engine, yeah. It takes discipline, though, as you need to be sure to reactivate the flooring no later than you reactivate things that fall, for instance.

ENIGMA's instance activation functions are in need of serious TLC, but they should work.

682
Issues Help Desk / Re: Enigma fails to start on Ubuntu 12.04
« on: June 20, 2013, 12:47:37 PM »
Very peculiar. Does the Compilers/Linux/gcc.ey file actually exist? What's odd is that it finds all the other files it needs, but apparently misses that one. I might ask you to run from the command line by cd'ing to that directory and calling java -jar lgm16b4.jar. Alternatively, you could try your luck with the new build Robert maintains.

683
Issues Help Desk / Re: Enigma fails to start on Ubuntu 12.04
« on: June 20, 2013, 11:53:58 AM »
Oop, I misread that error message. It picked the correct OS name, but says that the file is missing: Compilers/Linux/gcc.ey.

Which LGM version are you running? And how are you running it? I believe that the new "lateralgm.jar" needs to be run from the enigma-dev/ directory. Are you running it from the command line? Double clicking the jar file?

684
Issues Help Desk / Re: Enigma fails to start on Ubuntu 12.04
« on: June 20, 2013, 11:43:41 AM »
Oh, fascinating. We've never had a user on a chromium kernel. Someone will have to add a case into the plugin to allow accepting chromium as a GNU kernel.

I'm not personally familiar on what checks the plugin does to determine the OS. I'll have to defer to IsmAvatar.

685
The wrong return type is because I told Robert to set up a bot to generate the pages in his new format, and he insisted that doing it by hand was better.
So every post-2010 modification to the function documentation on the Wiki was done by hand and is probably teeming with errors.

inb4 Robert saying "Everyone makes mistakes."
Bots don't make mistakes.

686
In GM, a value of -4 is false, as are all other values less than 0.5. In ENIGMA, only a value of 0 is false.

I'm working on a new type which will hint to the compiler that negatives are to be considered false.

687
Announcements / Re: The answer to 1984, is 1776!!!
« on: June 19, 2013, 11:51:53 AM »
Ahh, exciting times.

A couple points:

JDI ("Just Define It") is a dual-purpose module in ENIGMA. It serves as a C++ definitions parser (so ENIGMA knows what draw_text is) as well as a framework by which other tools can communicate definitions to ENIGMA (such as the JavaScript port). I'll say more on this in a minute.

On top of JDI sits ENIGMA's parser. The parser takes all your scripts, events, actions, etc, and breaks them into pieces which it arranges in a way that makes dealing with them abstract. That is, the concept of with() and if() and while() cease to exist; the loops are loaded into memory in a way that makes them distinguishable from one-another, but independent of the syntactical constraints of any one language (ie, EDL).

After the parser runs, the abstract data is then pretty-printed into the desired output language. The output syntax may look exactly like the input syntax, or nothing like it; what matters is only that the output language can simulate (or use directly) all the constructs of the input language. In other words, it must be able to somehow make statements such as if, for, do, while, and with work, along with EDL's general arithmetic and function call statements.

One of the challenges here is making sure that JDI is capable of handling type coercion and overload resolution perfectly. This is 90% of the reason that the existing parser does not do any code decomposition; I was fearful of my ability to correctly interpret it and put it back together. JDI (or more specifically, the framework it lays out upon which ENIGMA's own representation is based) will be responsible for finding a good overload. When the new parser is implemented, its failure to do so will result in a syntax error.

To ensure that JDI is performing correctly, I am first attempting to remove (or at least substantially reduce) the number of parse errors incurred when reading ENIGMA's runner. Since C++11, this number has more than tripled. I am presently about half done rewriting that component.

Following that, type coercion will be fixed, which includes fixing the AST to assume that any identifier followed by ( is a function (right now, it's assumed to be a missing semicolon).

Once it is clear that JDI's AST is working correctly, I will finish implementing and testing ENIGMA's extension of it, thus completing our implementation of the new EDL specification.

Following that, it will be ready for pretty-printers. There isn't much else to do in that department, C++-side.

688
ALLCAPS BOARD / Re: Poop
« on: June 19, 2013, 11:11:45 AM »
All in all, it hadn't been a good day. Bad traffic, a malfunctioning computer, incompetent coworkers and a sore back all made me a seething cauldron of rage. But more importantly for this story, it had been over forty-eight hours since I'd last taken a dump. I'd tried to jump start the process, beginning my day with a bowl of bowel-cleansing fibre cereal, following it with six cups of coffee at work, and adding a bean-laden lunch at Taco Bell. As I was returning home from work, my insides let me know with subtle rumbles and the emission of the occasional tiny fart that Big Things would be happening soon. Alas, I had to stop at the mall to pick up an order for my wife. I completed this task, and as I was walking past the stores on my way back to the car, I noticed a large sale sign proclaiming, "Everything Must Go!" This was prophetic, for my colon informed me with a sudden violent cramp and a wet, squeaky fart that everything was indeed about to go. I hurried to the mall bathrooms. I surveyed the five stalls, which I have numbered 0 through 4 (I write a lot of software) for your convenience:

0.Occupied.

1.Clean, but Bathroom Protocol forbids its use, as it's next to the occupied one.

2.Poo on seat.

3.Poo and toilet paper in bowl, unidentifiable liquid splattered on seat.

4.No toilet paper, no stall door, unidentifiable sticky object near base of
toilet.

Clearly, it had to be Stall #1. I trudged back, entered, dropped trou and sat down. I'm normally a fairly Shameful shitter. I wasn't happy about being next to the occupied stall, but Big Things were afoot.

I was just getting ready to bear down when all of a sudden the sweet sounds of Beethoven came from next door, followed by a fumbling, and then the sound of a voice answering the ringing phone. As usual for a cell phone conversation, the voice was exactly 8 dB louder than it needed to be. Out of Shameful habit, my sphincter slammed shut. The inane conversation went on and on. Mr. shitter was blathering to Mrs. shitter about the shitty day he had. I sat there, cramping and miserable, waiting for him to finish. As the loud conversation dragged on, I became angrier and angrier, thinking that I, too, had a crappy day, but I was too polite to yak about in public. My bowels let me know in no uncertain terms that if I didn't get crapping soon, my day would be getting even crappier.

Finally my anger reached a point that overcame Shamefulness. I no longer cared. I gripped the toilet paper holder with one hand, braced my other hand against the side of the stall, and pushed with all my might. I was rewarded with a fart of colossal magnitude -- a cross between the sound of someone ripping a very wet bed sheet in half and of plywood being torn off a wall. The sound gradually transitioned into a heavily modulated low-RPM tone, not unlike someone firing up a Harley. I managed to hit the resonance frequency of the stall, and it shook gently.

Once my ass cheeks stopped flapping in the breeze, three things became apparent: (1) The next-door conversation had ceased; (2) my colon's continued seizing indicated that there was more to come; and (3) the bathroom was now beset by a horrible, eldritch stench. It was as if a gateway to Hell had been opened. The foul miasma quickly made its way under the stall and began choking my poop-mate. This initial "herald" fart had ended his conversation in mid-sentence.

"Oh my God," I heard him utter, following it with suppressed sounds of choking, and then, "No, baby, that wasn't me (cough, gag), you could hear that (gag)??"

Now there was no stopping me. I pushed for all I was worth. I could swear that in the resulting cacophony of rips, squirts, splashes, poots, and blasts, I was actually lifted slightly off the pot. The amount of stuff in me was incredible. It sprayed against the bowl with tremendous force. Later, in surveying the damage, I'd see that liquid poop had actually managed to ricochet out of the bowl and run down the side on to the floor. But for now, all I could do was hang on for the ride.

Next door I could hear him fumbling with the paper dispenser as he desperately tried to finish his task. Little snatches of conversation made themselves heard over my anal symphony: "Gotta go... horrible... throw up... in my mouth... not... make it... tell the kids... love them... oh God..." followed by more sounds of suppressed gagging and retching.

Alas, it is evidently difficult to hold one's phone and wipe one's bum at the same time. Just as my high-pressure abuse of the toilet was winding down, I heard a plop and splash from next door, followed by string of swear words and gags. My poop-mate had dropped his phone into the toilet.

There was a lull in my production, and the restroom became deathly quiet. I could envision him standing there, wondering what to do. A final anal announcement came trumpeting from my behind, small chunks plopping noisily into the water. That must have been the last straw. I heard a flush, a fumbling with the lock, and then the stall door was thrown open. I heard him running out of the bathroom, slamming the door behind him.

After a considerable amount of paperwork, I got up and surveyed the damage. I felt bad for the janitor who'd be forced to deal with this, but I knew that flushing was not an option. No toilet in the world could handle that unholy mess. Flushing would only lead to a floor flooded with filth.

As I left, I glanced into the next-door stall. Nothing remained in the bowl. Had he flushed his phone, or had he plucked it out and left the bathroom with nasty unwashed hands? The world will never know.

I exited the bathroom, momentarily proud and Shameless, looking around for a face glaring at me. But I saw no one. I suspect that somehow my supernatural elimination has managed to transfer my Shamefulness to my anonymous poop-mate. I think it'll be a long time before he can bring himself to poop in public -- and I doubt he'll ever again answer his cell phone in the loo. And this, my friends, is why you should never talk on your phone in the bathroom.

689
Off-Topic / Re: Fully released
« on: June 19, 2013, 08:38:02 AM »
As I understand it, NaturalGM is under heavy revision. It may be months before it is to the point where it can support either GM or ENIGMA.

As far as supporting all GM functions, this depends on a number of factors, including what you mean by "all." GM:S doesn't support all GM's functions; they dropped roughly the same functions that we did. The biggest functions presently missing from ENIGMA are mostly functions that appeal to novice GM8 users, eg, execute_string and game_save, and also ugly functions used to work around problems in GM that ENIGMA does not have, eg, variable_local_exists. Support for those is unlikely to be added for quite a while, and even then, use of those functions will be highly discouraged.

ENIGMA's output executable will never look like GM's, bitwise. We don't include DRM in our games, or any other form of Yoyo (or ENIGMA) branding. I don't believe you will ever be able to post ENIGMA games on Yoyo's site, and depending on Yoyo's EULA, possibly not vice-versa (though the incentive to post on Yoyo's site is much greater due to its higher traffic).

690
Function Peer Review / Re: sprite_create_from_screen
« on: June 18, 2013, 07:15:38 PM »
Hi, there! Thanks much for the function; help is always welcome.

I'm concerned about a few points:
- Your view hack seems to redraw the first view, and only the first view, which means if this was called in the draw event, the game would loop, and that I can't draw a circle to the screen and create a sprite from it if view are enabled.
- You used window_get_height() - y for the y coordinate... are you sure this is necessary? Currently, the engine doesn't guarantee window_get_width/height to exist. So if that function needs it, we'll have to add that as a requirement in platforms_mandatory.h. Not a huge deal, but I'm not sure GM's/GL's screen coordinates are reversed.
- You didn't give your code a license, so I can't legally include it in the engine. Could you make a similar header to the one ENIGMA currently uses, with your screen name (or optionally, your full name and email)?

Anyway, thanks for the code! It's good to see that people can get the project working and start developing for it.

Cheers