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

Announcements / Re: Trello
« on: January 26, 2013, 02:21:27 PM »
Nicely done.
Maybe tonight or tomorrow night I'll be back on Linux and can do something myself.

Announcements / Re: Trello
« on: January 26, 2013, 11:58:10 AM »
> In regards to committing, I have decided to make the change in a fork and then make a pull request, just to keep things cleaner.
That's fine. I'll review it before I pull it, then.

> I must admit that I prefer tagged unions when the language used provides support for them
Indeed, such a system would be messier in C++. You'll find that the structures JDI uses to represent macros are similar to a tagged union; instead of a vtable, they rely on a boolean to determine whether they contain a function or a scalar. Dealing with those in C++ can be a headache, though, and so I try to limit my use of them.

Another consideration was to pack all the functions for dealing with ASTs into an array, and then use the type enum to choose the correct call from it, but arrays of member functions could prove problematic. Virtual classes seemed like the best way of dealing with the problem, but if you have a better way, it would honestly not be hard to switch them out.

> I don't like that (Const)ASTOperator and AST_Node are so tightly coupled
If this were C#, we'd use its built-in "Extension method" system that seemingly violates all manner of encapsulation, and we wouldn't need AST_Operator at all. However, this is C++, so sometimes promoting extensibility requires putting in more code to make the object extensible.

> I found out that the "friend" concept does not extend to subclasses.
Yikes. I assumed that since the methods were pure virtuals, C++ would have to let you implement them in children of any kind. Somewhat of an unfounded assumption, I suppose. Anyway, go ahead and make them all public, then; I very rarely use protected: and almost never use private: for this sort of reason. I thought it would be good to denote which members serve typical use-case purposes in JDI and which are for people extending or developing it, but I suppose we'll probably be the only people to ever use JDI, anyway.

Another idea, though: Could this be handled using a typedef from within the ASTOperator class? It probably cannot, but you could try it if you value the protection level.

> What kind of operations do you have in mind should be performed on the abstract syntax tree (apart from printing EDL to C++ and javascript)?
Really, I don't have any plans for them apart from pretty-printing. Those two classes were created to replace the lack of ability to add member functions to the node classes, for general-purpose recursive operations. My having a plan for them would therefore be a detriment to that purpose. In the event that there exists a more elegant way to add this capability, those classes can be scrapped. I'm open to suggestions.

> I don't have much in terms of plans regarding what to work on after the first to-do, but I believe that I will work towards finishing up the particle systems. It works pretty well at the moment, but there are some non-core functionality that is still missing, such as effects, attractors, changers, destroyers and deflectors, and emitters are not fully implemented yet.
That's fine. Like I said, I wasn't actually expecting that anyone would pick up the torch while I'm doing school things.

Even if I had the pretty-printer ready right now, there's still a cluster of little shit that needs done to the compiler to maintain its interface with the API LGM currently uses to work with ENIGMA. For instance, the new parser throws multiple syntax errors and warnings; LGM displays only one, like GM. LGM (or to be more accurate, the ENIGMA plugin for LGM) will eventually need fixed up, and Ism isn't really available to do the work, either. I have no idea how long this will get delayed as a result of the two of us being busy.

When I do have the free-time required to finish this integration and test it, the real test for this new system will be if TGMG is able to hook in his JavaScript port. That will prove that the system is modular enough to support any kind of language we want to add to it, and that it's simple enough to be read and understood by someone who did not write it.

In the meantime, the project will limp by with the old translator, which seems to be doing an "ok" job.

When this thing is all in, though, the first thing on my list is to get rid of the globals used to identify the current instance. The new pretty-printer should be in charge of passing the necessary information to each function to work with the current instance. I will probably want all the help I can get doing that.

Announcements / Re: Trello
« on: January 25, 2013, 09:49:19 PM »
    Heh, all right. I certainly won't object, because I'm not making any headway while I'm stranded on Windows.

    I have added the account "forthevin" to the project. I hope that's yours (I assume you'd have otherwise specified the account).

    I will review your commit to make sure it's not missing anything. I can do that much from GitHub during class. I'll also admit that I got a little sidetracked and started going over the way JDI handles templates, which could be a sizey operation. That said, don't bother to start on point (2).

    <rant level="2">
      To be honest, though, I did the JDI one in ten minutes using regular expressions. So if it's going to take you much longer than that, don't worry about it. As I mentioned earlier, I mostly put that up so cheeseboy had something to do other than bitch at me (he can't really bitch if he's not capable of doing any of my to-do points).
      <rant level="over 9000">
        To be even more honest, the to-do point evolved into somewhat of a curiosity project of mine wherein I postulated that no one would even try figuring out anything to do with how the parser worked. I wanted to see how long it would be before someone offered an attempt at it. I would have you do it more to get your opinion on how it is handled and to have someone else understand so much as one God-damned component of the new parser system than to save myself effort.
      So yes, feel free to do so, but do so in the spirit of learning (and possibly of improving) rather than of really breaking ground. :P
    Then again, if you're really on a roll, maybe you can write the whole pretty printer using that entirely untested system, and the new parser will be ready-to-rock without the other to-do points (if slightly incomplete).


    I have added you. Have fun.

Proposals / Re: Proposals for implementing ASTOperator for EDL_AST
« on: January 20, 2013, 11:37:32 AM »
I mostly put the task on Trello to give cheeseboy something to do instead of bitching at me to do it. Your (1) is more than sufficient.

The ASTOperator class is just an interface: the node types themselves call it. So when a node needs operated on, instead of calling a function in ASTOperator, you call one in node; ie, instead of astOperator->operate(node), you call node->operate(astOperator). The vtable in the node handles making the correct call.

So even if JDI AST elements could end up accidentally storing an EDL AST element (which doesn't happen, presently), the vtable would still call the correct method (but it would have to cast from jdi::ASTOperator to EDL_ASTOperator, which is potentially dangerous).

So yeah, no templates necessary. Just vtables.

Issues Help Desk / Re: Hi there, I am new to ENIGMA
« on: January 19, 2013, 04:32:04 PM »
If it only does that for one particular game file, it's probably a problem parsing or building that particular file. It would be useful if you could try to narrow a test case down for us to fix. Otherwise, just post the game that breaks it and we'll have a look.

Issues Help Desk / Re: Hi there, I am new to ENIGMA
« on: January 18, 2013, 10:33:54 PM »
Are you certain it is finding the ENIGMA plugin? It's quite possible it isn't. Or, it's not finding JNA. Both are necessary.
The output from the terminal might help; open the ENIGMA directory in your terminal and run LGM manually with java -jar lgm16b4.jar. Just copy the contents here on the forum or to pastebin so we can see what's going on.

If plugins/shared/jna.jar is missing, there's your problem. Also, if it failed to build, there's your problem. The latter shouldn't be your problem, though, since the menus would still appear in LGM.

If you are running the jar by double clicking it, it is quite possible LGM is being run from the wrong path, in which case running it from the console will fix your issue. That's a bug with your file manager's Java launcher; I'm not sure how to fix it.

Issues Help Desk / Re: A few quick questions
« on: January 18, 2013, 11:39:28 AM »
Ew, it's a VS project.
Anyway, I'll check it out at some point.

Issues Help Desk / Re: A few quick questions
« on: January 17, 2013, 09:03:12 PM »
If you have the source code for GMOgre or the other 3D library you mentioned, you could plug them in directly with very little modification. Or one of us could on your behalf. I don't know if that source code is available.

Issues Help Desk / Re: A few quick questions
« on: January 16, 2013, 08:48:32 PM »
1) Not at the moment. Possibly not ever; chances are, the thing you were using it for in GM is no longer required in ENIGMA. Nine times in ten, that function is used to check if room instance creation code has set a variable already. In ENIGMA, the room creation codes are executed after the object creation codes.

2) You have the entirety of OpenGL at your disposal; I would encourage you to write an Ogre system to replace the main graphics system (in ENIGMA, the graphics system is interchangeable). If you don't want to, you can either include C++ sources in the ENIGMA engine directly, or modify and rebuild the DLL to hijack ENIGMA's classes instead. Stop in on the IRC on a quiet day and one of us would be happy to help you integrate such a system.

3) Those DLL's are what we'd call a "hack"; last I checked (this may have changed in the meantime), they work by dismissing GM's own DirectX context, replacing the context in the window with their own. That fundamentally will not work in ENIGMA since the windows are named differently. However, a modification should be relatively easy. Again, feel free to stop in on the IRC if you are interested in making such a modification.

If you have the source to those DLLs, I don't mind walking you through installing them in ENIGMA from here in this topic, either.

Issues Help Desk / Re: Help please, I can't run 'make' in enigma
« on: January 15, 2013, 09:38:13 PM »
You can also change the location of MinGW in Compilers/Windows/gcc.ey Polyfuck or cheeseshit (can't remember which) decided that letting ENIGMA.exe generate that file was cumbersome, and that they should hard-code it instead. So that's what they did, thereby breaking it for users who have multiple drives.

Anyway, glad to hear you got it working. Cheers!

Issues Help Desk / Re: Help please, I can't run 'make' in enigma
« on: January 15, 2013, 04:02:36 PM »
Could you pastebin the following, Salvakiya?

1) The contents of your console up to and including the error,
2) The output of the following in cmd: cd C:\MinGW\bin, dir
3) The output of these in cmd: cd C:\MinGW\msys\1.0\bin, dir

That should give us some insight into what you have installed. If you need to redirect that output to a file, just use > C:\Users\yourname\Desktop\file.txt at the end of your command.

Announcements / Re: Trello
« on: January 14, 2013, 09:28:59 AM »
The parser is done, or basically done. It's in the JDI branch with my other changes. The pretty-printer needs written, after those two to-do points are done.

All right, let me use my little remaining free-time to elaborate.
To-do point (1) on the Trello defines a class that can be used to create recursive AST operations from outside of the AST. To-do point number two helps in building the AST in more complicated EDL situations--the kind that aren't supported in the current parser, even.

Once to-do point one is complete, the pretty-printer will be written to simply implement the EDL_ASTOperator class, defining each method as necessary to print the AST out as valid C++. So AST_Node_Statement_for will print a for() statement (or hack something together with goto's if necessary), AST_Node_Statement_repeat will print a while() statement, etc.

Depending on what my schedule looks like today, I might actually get around to work on it. But I also wanted to do some maintenance on JDI, whose template handling is pretty weak.

Announcements / Re: Trello
« on: January 13, 2013, 11:03:43 PM »

You may or may not have guessed this, but I ran out of time and everything went south. I'm stuck using XNA, of all libraries, to make my game in this quarter, so development of an Ogre ass-end for ENIGMA is out of the question. One of my group members seems to know what he's doing, so this may be painless enough that I have enough time to work. I committed all of my changes to the compiler before I got engrossed in this semester's workload: if you are feeling brave, you might be able to finish it, or at least tackle the to-do points I have made for it on Trello.

If not, I will deal with it as soon as I can.

If you'll excuse me, in the meantime, I have stillborn game code to write.

Announcements / Re: Trello
« on: January 09, 2013, 07:29:16 PM »
Maybe it's an OS-specific feature of the JTree? It's worth looking into more.

May very well be; it's working for me on Linux as well. I made a request on the card anyway, though. Space and enter do nothing, even on Linux.

Also, commenting is open to the public.

Announcements / Re: Trello
« on: January 09, 2013, 11:57:15 AM »
Yeah, the Trello is for immediate-priority or very short-order stuff, otherwise I would have added my plans for the engine to it. Feature requests belong on the wiki or in the bug tracker if they're pretty small and pretty widely used. Plans for later belong on the Proposals board, or elsewhere on the forums.