ENIGMA Forums

General fluff => Announcements => Topic started by: Goombert on March 03, 2013, 10:40:16 PM

Title: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 03, 2013, 10:40:16 PM
(http://enigma-dev.org/docs/wiki/images/7/71/Wxenigmawelcome.png) (http://enigma-dev.org/docs/wiki/images/7/71/Wxenigmawelcome.png)

This is our new cross platform IDE written in C++ using wxWidgets for the GUI and Code::Blocks for the project management. I am the lead developer for it and we will soon be allowing contributions to the repo.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: gra on March 04, 2013, 01:15:38 AM
wow , i follow this project, java is problem,
after 3-4hour java dont refresh screen viev and give problem,
i restart after 3-4hours  ;) but new ide is real solution
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: fervi on March 04, 2013, 08:29:59 AM
Wow! Java isn't crossplatform ...

OFC. Project will be probably good, but LateralGM work nice, so maybe this project is needless? Ofc. C++ is faster than Java.

As your wish, but LGM works great too

Fervi
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: TheExDeus on March 04, 2013, 09:38:04 AM
Looks good. I don't have that many problems with LGM either, though Java tends to be a memory hog. Until I see it at the stage you want to make it I won't have any suggestions. I guess D&D will not be supported here right? Like everything is purely based on code?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 04, 2013, 01:15:53 PM
Really it is just hard to get people to want to maintain a Java based IDE, so creating a project like this will also ensure that it gets maintained in the future. This also makes communication with the compiler much easier as well, LateralGM has to jump through hoops to work ENIGMA, compilation will be much faster as well because it can send all the resources at once instead of one at a time to be compiled. I also just find it hard to multi-task with LGM due to its memory usage, I like to work on several things at once, and LGM is just not good for this. Don't get me wrong it is a great tool and IsmAvatar did a wonderful job on it.

@fervi it really isn't useless if it less restricting of the user, uses a fraction of the memory, is exponentially faster, and will generate more interest than a Java based IDE

@ExDeus Nope, completely wrong. It will support Drag and Drop and everything, the entire IDE is being built around modular components which will stem from a Multiple Document Interface manager, that allows you to dock and layout the controls to your liking. Plus there are just soo many cool things, like not having restriction on project hierarchies, eg. you can place a background, sound, and object all in the same folder.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: gra on March 04, 2013, 02:46:59 PM
the project not is usable for now? what is the state of wxEnigma?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: TheExDeus on March 04, 2013, 04:45:10 PM
I actually don't like when resources are not bound to default groups, but I guess its optional. Even if you don't put a legacy feature in there I can still create my own Object/Sprite/Script etc. folders and just drag everything there. Just how I like to right-click objects folder and then "Add object" instead of some top icon. But all of this is a preference and everyone can adapt. More of a question is won't this break GM file standard compatibility or you don't plan to support them and just use EGM?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 04, 2013, 06:01:21 PM
Fear not as I will be making new games automatically generate the old structure, you just wont be restricted to it that is all, and when importing old games it will import them into that directory structure as well. And yes we will support all of the formats, but for saving and loading you can only save as an uncompressed egm or an xml .project. The idea behind this is simple, the IDE is for ENIGMA projects only, but does this mean you can't use your old games? No, you can, you just go to Import/Export where you will see options for importing and exporting compressed egm's, Game Maker files, global backups, and resource files, etc.

This disambiguation is needed in order to make the file structuring more dynamic allowing for us to add new resources like models, polygonal vector shapes, and material surfaces. I will also be including the option for whether project files become compressed inside the executable when compiled. This will also make it easier for end programmers to link share object libraries and use them.

Another thing I should also mention is that the entire layout is customizable, in example, some people like a popout find and replace window, I like it to be docked to the write of code editing, and both options are possible! Even better when you close the IDE it automatically saves your loaded perspective and layout, and reloads it the next time you launch the IDE.

I also have a really awesome plan for implementing Drag & Drop as well. The code editor that wx provides allows controls to be formated inside of it, this will allow me to do Drag & Drop with code folding, and have it formated to the function based version before sending it to the compiler. So from now on, when you decide to edit an event you are shown a code editor which will work with both Drag & Drop and EDL while allowing breakpoint insertion and code folding. This allows more experienced developers like myself to not have to look at the D&D tiles and just use code without it getting in the way, you just dock the D&D panel left of the code editor, ohhh and this will also allow find and replace for D&D code.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: gra on March 05, 2013, 06:02:07 AM
Quote
but LateralGM work nice
lgm ide , have a memory issue on ubuntu12.10 with gnome failback (240mb ram consumed)
on old mashine :
pentium 1100mhz 1000mb ram lol, not good
the compiler tell me that the memory is out ,
works nice on iper pc ahahha
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: forthevin on March 05, 2013, 06:27:08 AM
I think this sounds very interesting. The two main features I can think of that I would really like is a room editor like in LateralGM, as well as the possibility of easily using a version control system while using the editor.

For the version control systems, I don't necessarily want them integrated directly into the editor, rather just being able to use them simultaneously and having changes from the VCS reflected in the editor or vice versa. That would be very nice.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Josh @ Dreamland on March 05, 2013, 08:50:27 AM
Could I get you to elaborate on that a bit more, forthevin? The EGM file format is just a filestructure; it's nostalgic to compression and archive format. What I mean is, you can use EGM files as simple directories, by its specification (not sure where LGM's support on that stands). That said, version control for your project is presently (supposed to be) as easy as your platform makes it. What, specifically, would you like the IDE to do on top of that?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: forthevin on March 05, 2013, 10:14:14 AM
I think I should have been clearer. I do believe that EGM can be used for what I want. Basically, while you are using the IDE, you can access the files inside the game (like object files, room files, etc.) outside of the IDE, modify them in some way (a text editor, a pull through git, etc.), and you can then refresh the IDE (or similar) to get the changes, without having to restart the IDE. Likewise, if you change something inside the IDE, it will be reflected in the file system, and the VCS can see the changes.

An example of what I am talking about is gedit. You change a file inside gedit, save it, and it is reflected in the file system. If you then change a file you have open in gedit outside of gedit (for instance through another text editor or pulling some updates) and you switch to the view of the file in gedit in which the changes have been made, gedit informs you that the file has changed, and offers to either reload the file or cancel reloading. Basically, gedit checks the status of the files on the file system and reacts on it. I know that other editors like Eclipse and NetBeans have similar handling of files changing on the system.

Currently in LateralGM, if you save as an EGM, the game is stored compressed in EGM. If you go into the EGM file without unpacking it and make changes in it, LateralGM is unaffected. If you restart LateralGM, it will see the changes you made to the EGM. Basically, what I want the editor to do is to detect any changes in the EGM file, and handle it in some way, without having to restart the editor.

So I guess what I actually want is for the editor to detect changes on the file system (for instance coming from some VCS) and handle it, such that the editor does not need to be restarted. That would enable it to work well together with different VCSes.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Josh @ Dreamland on March 05, 2013, 03:09:08 PM
I'm not certain how to do that myself, actually; it's been a subject of interest of mine for some time. I think that Java provides a frontend for it, but I imagine we'd need to look into how to do that on each of POSIX and Win32 for the purpose of this IDE.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 05, 2013, 03:33:34 PM
See Josh I told you some people would like a non-restrictive non emulated project file structure.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Josh @ Dreamland on March 05, 2013, 05:28:38 PM
I never disagreed to that, Robert. Version control is half the reason we chose to develop EGM as we did. It was 100% of the reason we chose to add directory versions to its specification.

The reason we offer an archived version is because some users like their source to be a single module, and Zip is a very developed format for that sort of thing. Even if LGM/wxE did corrupt the zip somehow, very good recovery tools exist for Zip. Zip's also relatively fast (though not as fast as the uncompressed directory version).

But, again, the EGM specification says it should support both.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 05, 2013, 07:56:54 PM
I know I am just saying though, I told ya so. But anyway we are definately going to have to look at integrated Developer Services Portal now that Game Maker:Studio has it if you pay $500.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: TheExDeus on March 06, 2013, 04:31:07 AM
The logo should be more symbolic, by which I mean logos shouldn't have too many details and such. And if the IDE is for ENIGMA then maybe just incorporate ENIGMA logo as the IDE logo. All in all this seems to be a massive effort and do you have an ETA until it will be at the level of LGM? Probably when this is finished: http://enigma-dev.org/v5test/# .
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: polygone on March 06, 2013, 06:18:05 AM
Yeah I don't think it needs a completely different logo, the ENIGMA logo is fine as it is and actually represents the product; you could just stick a wx in it.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Ideka on March 06, 2013, 09:40:27 PM
Looking good.

Plus there are just soo many cool things, like not having restriction on project hierarchies, eg. you can place a background, sound, and object all in the same folder.
I'm sorry, but how is that cool? Frankly I can't think of a situation in which it would be a good idea.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 06, 2013, 10:36:09 PM
As far as the icon goes you guys, I am debating keeping the enigma logo as the actual icon, it just fits much better, but wxENIGMA does need a logo of it's own which the one I've picked is fine but is needed to distinguish it from LGM, as well as wxDavinci, which is not started yet but I might as well get it out there too. wxDavinci is going to be the cross platform image editor that I will be the lead programmer of, and it is going to be designed to be extensible through plugins that can add post processing effects and other cool image effects and tools onto the basic ones we provide, it is also going to be designed with the subframe image editing directly inside of it as well as MDI and tab control, allowing you to never actually have to leave the image editor to eg. work on another image, or switch subframes of a sprite.

It is going to be it's own program because we anticipate it to become quite popular due to the lack of Windows Paint style image editors on Linux or open source in general. This will also allow us to go back and integrate it with LateralGM providing both programs with image editing capabilites, as well as advanced post processing effects through the use of wxDavinci plugins.

@ExDeus
Now as far as an estimated time of arrival I am not quite sure.... There are a number of things to be done yet, such as...
1) Implement EGM Compression/Decompression
2) Rewrite all the old file imports
some of you suggested to me to have Ism just break hers apart from java, but I am quite certain that after looking at how it's done in LGM I will be able to make a much more optimized and quicker version myself in C++, which again will ensure it continues to get maintained, not many programmers like Java, eg. myself included
3) Develop all the resource editors as modular components to the IDE

Id say by about the end of this month you should expect a version which can at the very least create an EGM or .project xml and then import a compressed EGM. As I said before loading/saving in the new IDE is only done in either .project or uncompressed EGM, in order to get old projects into wxENIGMA you will need to create a new wxENIGMA project in the aforementioned formats, and then import everything from your old project files. But for not we will have importing/exporting for all the GM resource files, global backups, GMK's etc. We just need to distinguish Enigma Projects from Game Maker projects that is all, because they are not the same, and really nobody would want them to be.

@Ideka
how can you not see that as a good idea? now you will be able to actually include models, dll's and other so's, and any file you want inside the hierarchy. Otherwise we would have too many top level directories in order to cover all the resource types. Not to mention we need to add shader resources, polygon vector shapes, material surfaces which bind textures and shaders, model animaitons, etc. etc. or none of that can be achieved. Like I said though it will remain and optional feature. Also probably a good time for me to mention sprite previews on object resources is either going to be optional or not included at all.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Ideka on March 07, 2013, 07:58:45 PM
@Ideka
how can you not see that as a good idea? now you will be able to actually include models, dll's and other so's, and any file you want inside the hierarchy. Otherwise we would have too many top level directories in order to cover all the resource types. Not to mention we need to add shader resources, polygon vector shapes, material surfaces which bind textures and shaders, model animaitons, etc. etc. or none of that can be achieved. Like I said though it will remain and optional feature. Also probably a good time for me to mention sprite previews on object resources is either going to be optional or not included at all.
I only meant stuff like placing "a background, sound, and object all in the same folder"...
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 08, 2013, 05:16:57 AM
Well irregardless its a must, but anyway I agree with you guys, the SVG rocket better represents the development environment as a whole, so it can be used for representing ENIGMA in HD quality from now on, and the old logo will continue to represent the underlying engine and compiler as well as project files, and the space shuttle will represent the development suite as a whole.

Now the new logo I have for wxENIGMA is going to be an atom with the ENIGMA engine logo as the nucleuse, I am still working on it though.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: forthevin on March 10, 2013, 01:07:41 PM
Working on both an IDE as well as an image editor seems very ambitious, but I believe that is ok, since we already have a working IDE, which means that we will not be stuck in the meantime without an IDE while wxENIGMA is developed.

In regards to version control systems, I know that git have some support for working with the zip format (see http://tante.cc/2010/06/23/managing-zip-based-file-formats-in-git/), though I have not tried it myself. So given that the zipped EGMs are based on folders and text internally, zipped EGMs could be used in version control, as long as the IDE still reacts to changes in the zipped EGM.

In regards to the logos: Given that ENIGMA can be used with both LateralGM and wxENIGMA, and LateralGM can also be used separately from ENIGMA to edit GM sources, I think it would be difficult to clearly determine what is and what is not a part of the whole development environment. LateralGM is not necessarily a part of the core, even though it can be used with it, since it can also be used separately from ENIGMA. So I don't think that it would make sense to either exclude it or include it when determining what is part of the whole development environment. And assuming I am right about this, the definition of the whole development environment will therefore be fuzzy. And having a logo for the whole development environment would therefore not be very useful.

I think the atomic logo is nice, although I think each ring should have its own particle :- ).
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 10, 2013, 10:14:52 PM
No I haven't even started the image editor forthevin, the goal for now is getting the IDE as solid as possible first. I already have it linking and parsing definitions, the base structure of everything is pretty much lined out, it even compiles, though just an empty game. I am in the process right now of laying out the resource structure then I will be start immediately on the EGM format. But keep in mind this is how I am laying it out, Load/Save (xml .egp, or uncompressed .egm), then Import/Export(GMK, GM81, Compressed EGM, etc). So actual projects loaded in wxENIGMA have to be uncompressed, you must start a new project then import compressed EGM's into it, there has to be a clear distinction between this.

Just don't worry about the image editor for now, my goal is just to have a standard compliant alternative to LGM for now. Then I will begin the image editor so that both LGM and wxENIGMA have one. But thanks for your comment about the logo, I'm new to vector graphics, but I'll try it with atoms on each ring, I was thinking that myself, and it loosk really good as an Icon too :) But as far as the rocket logo, it's just something we can throw around that looks cool to represent ENIGMA, for now I am going to place it on the Wiki, so they it has something other than that gray logo, might actually just use it for the Wiki and the Wiki only, idk.

Also forthevin, if you don't mind me asking, since me and Josh are kind of having a debate, what are your thoughts on Intellisense style syntax checking like Visual Studio does? I am in favor of it, but Josh does not like that it throws bullshit errors, which makes sense, but I disagree as it really only affects opening/closing brackets, and I think it's good for understand the scope of an error. It just makes more logical sense to me...
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: forthevin on March 11, 2013, 08:50:57 AM
About the Intellisense style syntax checking, I don't have much experience with Visual Studio. I personally like error highlighting and auto-completion, though I don't find them absolutely necessary. Given that different people have different tastes in regards to those features, I think it would be a good idea to make it easy to turn them on and off.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Josh @ Dreamland on March 11, 2013, 12:44:03 PM
He's talking about where the compiler fills the console with bullshit errors after the first syntax error makes it impossible to decipher the rest of the code.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: polygone on March 11, 2013, 01:44:56 PM
Yes, Intellisense sucks. Just warn on errors when a form is closed, that way any syntax errors are always going to be brought to the users attention.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 12, 2013, 05:46:42 AM
IntelliSense is a non-argument. Seriously, it just allows it to show all the errors in can so you don't have to recompile, but either way it will be optional. Some people like it, like me, some people dont, were just gonna have different aspects of it all as settings, but the system in general will be referred to as Intellisense. That encompasses syntax checking that can show multiple errors, code completion, function definition querying, etc.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Josh @ Dreamland on March 12, 2013, 08:47:08 AM
And what is wrong with continual syntax checking that makes intellisense so much better?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 13, 2013, 03:11:00 AM
It's "intellisense" not "IntelliSense", its just a term in corporating all those coding features.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: kkg on March 14, 2013, 03:18:37 PM
The atom-based logo looks terrible.
Rocket looking one is okay for an SVG, can't disagree with it too much.

IDEs don't bother me too much these days, all I ask for is proper plugin support. LGM gave me an accessible way to write plugins for the IDE which adds a sick layer of customisability.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: TheExDeus on March 15, 2013, 02:11:54 AM
But did anyone actually wrote plugins for it? I know like two plugins for LGM. One is ENIGMA and one is that allows compiling to GM (by adding the runner to data).
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 15, 2013, 09:18:12 AM
Well right now all I am really trying to do is getting it loading games and compiling all these little preferences are miniscule in the scope of what I am trying to accomplish first.

Have any of you even noticed I added bilinear/trilinear texture filtering and anisotropic filtering?
(http://uploads.gamedev5.net/gallery/album_590/gallery_146184_590_40723.png) (http://uploads.gamedev5.net/gallery/album_590/gallery_146184_590_40723.png)

If you haven't noticed on the toolbar in the new IDE there are a couple of new buttons, one being for models, the second for material surfaces like Unity3D.
I am going to allow you to create a material surface resource and you pick what backgrounds/sprites to use as textures then you can set the texture filtering, you can apply multiple textures for multitexturing, you can add bumpmaps to the material, etc. Then you just use these materials to draw with.

This will allow us to make it so you can directly import models and things from like Blender or whatever your favorite modeling program is, and read the material surface right in, so their won't need to be any pain the ass custom converters like there are for game maker.
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: kkg on March 15, 2013, 09:52:37 AM
But did anyone actually wrote plugins for it? I know like two plugins for LGM. One is ENIGMA and one is that allows compiling to GM (by adding the runner to data).
I frequently wrote my own since I'm a Java programmer, but they were never really suitable for public use.

the second for material surfaces like Unity3D.
You mean substances?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Goombert on March 15, 2013, 10:43:36 AM
@kkg
http://docs.unity3d.com/Documentation/ScriptReference/Material.html (http://docs.unity3d.com/Documentation/ScriptReference/Material.html)
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Elevory on March 17, 2013, 04:27:20 PM
This looks awesome! Is there a binary available? Or something I can build myself?
Title: Re: wxENIGMA Crossplatform IDE in Code::Blocks
Post by: Josh @ Dreamland on March 17, 2013, 08:18:32 PM
Hello again, Elevory! That IDE is in its early stages. LateralGM will build ENIGMA for you if you download it and place it with the ENIGMA files you get from GitHub.