Does M2 really need a custom IDE?

Community Forums/Monkey2 Talk/Does M2 really need a custom IDE?

Leo Santos(Posted 2016) [#1]
Wouldn't it be easier/better to not spend the effort building a new IDE from scratch, and instead simply ship Monkey 2 with an existing free and open source code editor, with the appropriate M2 package pre installed?

I wonder which IDEs have licenses that would allow for such a thing. Atom? VS Code? In the end, there are lots of people contributing to those projects, and it's hard to have a one man effort competing against that.

It seem much better to leverage those efforts, but still make it easy for the end user by distributing M2 with a default IDE option (maybe two separate downloads, one for people who already have a different ide of their choice).


marksibly(Posted 2016) [#2]
I'm not really planning to 'compete' against things like atom or vs code, and I certainly hope that mx2 plugins for 3rd party IDEs do eventually get written. But I personally don't have the node js or whatever skills required to do this myself right now, eg: I wouldn't know how to add a 'debug tree' or 'auto capitalize' or 'quick help' features to atom or vs code. I had a quick look when they were first mentioned, but there are a lot of technologies used in those things I'm just not familiar with.

Also, I've always wanted mx2 to be as self contained as possible, and to just work out of the box on ANY platform that runs a linux-ish OS with minimal fuss. Combined with the fact that I've also always wanted mx2 to have a simple/flexible GUI module, a 'native' IDE just seemed like a sensible thing to do (you're free to disagree here!).

But I have scaled back my ambitions for the IDE somewhat (for now). I did want to make something that people could write map/world editor etc plugins for (are there any 'game oriented'' IDEs that do this?) but it turns out building something complex-ish with a very much beta dev system is tricky, so I'm keeping the IDE simpler for V1.0.

I have no doubt people will prefer alternate IDE's, but having a working custom GUI will help here even. For example (until monkey get's 'native c++' debug support anyway) I'll be able to build a debugger 'into' mx2cc if necessary, so you can launch/debug mx2 apps in any IDE.


Leo Santos(Posted 2016) [#3]
Fair enough. I can definitely appreciate the simplicity you're going for! Specially if the ide is built like a sort of demo for a gui library that ships with the language itself.

It's just that it sounds like a lot of work, and I think gameplay related modules (offering features like what you used to get with Blitz 3D, like entities, collision, etc.) should be a priority.

are there any 'game oriented'' IDEs that do this?



I've recently stumbled upon Superpowers, which seems to be more or less what you're asking:
http://superpowers-html5.com/index.en.html





I don't really care much for the "server" aspect - although it is really cool for small groups - but I really like how it takes care of the structure of the project for you, treating "scripts", "scenes", "sprites", "tilemaps", etc, all as first class citizens living side by side and editable via double clicking, each with their own editor.

The code editor seems to be more than sufficient, but I haven't had time to investigate further. In the end, It's a cool mix of coding and GUI oriented design. It also ships with a bunch of javascript libraries for 3D, collisions, physics, etc, but it looks like you can add your own.

I think they have side projects that use the same platform, but with other languages like Lua (using LÖVE 2D), which seems to indicate the ide can be customized for anything.

I'd LOVE something like this that used Monkey as its main language, and allowed a project to be compiled to C++ in the end!...

Cheers.


marksibly(Posted 2016) [#4]
Can you add custom editors to it though?

That's what I was thinking of doing - something like a filetype based plugin system, that provides a way to edit/view etc the documents in your project via plugins.

The IDE could come with simple image/html/hex viewer/editor plugins, but people would theoretically be able to write 'dpaint4' style plugins (please!).

People would also be able to use the plugin system to create their own map/world editors, which they could then easily-ish ship with the actual game if they want.

Kind of the opposite of the current mega-all-in-one-kitchen-sink approach, but not a bad way to go about a 'community driven' game dev system IMO.


tiresius(Posted 2016) [#5]
Mark is your plan to put Ted2 on github and have it fully open source as well where community improvements can be provided by those daring enough? Will it be similar to MaxIDE where it is written completely in Monkey-2 ?


Leo Santos(Posted 2016) [#6]
I don't think you'd be able to use Superpowers with Monkey, I was thinking of it just as a good reference in terms of functionality and design. I'd love an equivalent of it that works with Monkey!

As for the ability to add editors to the IDE, I think it's cool, but things like image and audio editors would be completely unnecessary - it's unlikely artists will ditch their existing tools like Photoshop for something that's tied to an IDE.

However, editors that are more directly tied to a game engine, like a scene editor where you can define hierarchies, attach scripts, etc, are way more interesting and useful.
Cheers!
Leo.


Nobuyuki(Posted 2016) [#7]
mmm. Haven't written a sprite editor since nearly high school. Would love to write something mmf-like for MX2, even if aseprite is my current tool of choice :)

having some vertical integration in the toolchain is a great boon, even if not everyone will use every tool or will usually use another tool for the job. Case in point, Unity's animation editor is there and really convenient for 2d sprite stuff, even though it's baked into the system and arguably a system like Spine or a custom one may be more suited to someone's particular task.

I personally think Photoshop is suboptimal for sprite editing, horrible for animation, and well, not the best for casual sketching anymore either with stuff like Clipstudio existing. One particular type of tool which would be perfect for an IDE plugin would be a sprite packer which takes all of your project resources (as well as affinities for collections of sprites which should be baked into the same texture together) and lumps them together into an atlas set. FMOD Studio would be another. As would be DAME, a layout editor like the kind Leo sounds like he wishes were more integrated. (I think they shouldn't be too integrated into the IDE tbqh; I really hate the idea of hiding immediate knowledge of the entry point and how the state machine works from the user the way Unity seems to.)


DruggedBunny(Posted 2016) [#8]
What might be cool/workable is having the editor aware of the path an image holds within a project -- eg. image = LoadImage ("rocket.png") -- so you could right-click/double-click on "rocket.png" there to launch the programmer's preferred editor for that type of asset, passing the full path to the asset as the external program requires. Same for audio files, text files, etc. I'm sure we could build a list of common programs and how they want filenames passed to them.

Maybe just allow the programmer to add a filetype and select a path for their preferred editor, or editors (eg. for a multiple-choice editor selection).

I am assuming the path to the asset could be worked out from where it falls within the project...


Skn3(Posted 2016) [#9]
What would the plugins be written in? How are they distributed? How would one apply them to the IDE?

I would be very interested in an IDE that supports plugins. (Cough http://www.skn3.com/apps/objecty)

It depends on how flexible it is though. If it's just a window that we have access to run an editor in a single pane, then is there much point? If however we can do stuff like mapping plugin features to portions of code, then massive HELL YEAH!

For example if we could ship a mx2 module and have an associated plugin, that would be truly amazing. Imagine all the framework builders out there creating a set of IDE plugins that allow users to shortcut large chunks of game development with visual properties/editors.

From the experience of coding Objecty, that was a full time thing for over a year. Ever considered getting somone else on your team? I fear that you might not have enough man power to get the job done to the level people might need. Especially when you will have to be maintaining the entire language and platform support as well.

About nodejs stuff. Really, give yourself a weekend experimenting with it. There are many technologies to learn, but if you start with a "hello world" using "Express" as the main technology... I think you'll find it a bit easier. Monkey could really benefit from some of the methods that nodejs uses. You could easily save yourself a shit storm of development time by adopting it for some of your backend stuff.


taumel(Posted 2016) [#10]
Ideally there could be a tasteful minimalistic but essential editor included (for the A to Z experience, if it takes too much time, cancel it) and sweet support for Sublime. I wonder how much of a full time job monkey 2 is. At this point a more advanced IDE sounds like a waste of resources, more as projects' sizes certainly differ. Focus on getting the cores done and working together, like language/docs/sfx/2d/3d/input.


malublu(Posted 2016) [#11]
Yes i agree with you.
First of all monkey2 should work.
3d would also be nice.
But if need a ide than a costume IDE, because to work perfect with monkey.


marksibly(Posted 2016) [#12]
@malubu, I tried to reply to the email you just sent, but gmail doesn't like the reply address. Can you try again or use another account?


malublu(Posted 2016) [#13]
@marksibly, I try it again.