Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

MonoDevelop.... arrrrrgh

Discussion in 'Formats & External Tools' started by rumblemonkey, Aug 10, 2014.

  1. rumblemonkey

    rumblemonkey

    Joined:
    Mar 25, 2011
    Posts:
    280
    Yes, I know, that's not a terribly professional title... but frankly, it describes my feelings about using MonoDevelop for more than a few minutes.

    Why?

    1. Its behavior regarding indents and tabs and brackets is lousy. Really lousy. Type in:

    public functionName(){


    Hit Enter.

    Do we get:

    public functionName(){
    <TAB> (Cursor is here, ready to start building the beautiful guts of your code)
    }

    Like practically any modern IDE? No, we don't.

    We get:

    public functionName(){
    <TAB> (Cursor is here, but it's kind of useless, since the first thing any decent coder wants to do is close the frickin' bracket so that we know that we're not going to have to hunt it down later)

    Seriously? Was that extra bracket too hard to add in?

    Were the developers concerned that good ol' } might pine away because of lack of use, even though it remains one of the most awkward keys to press on QWERTY layout keyboards?

    Yeah, I'm sure there's some magic way to turn that behavior on... but trust me, Unity, it ain't on by default, and that's just yucky, because that means I have to waste my time looking at the text editor's settings rather than coding.

    2. It's......... sloooooow. Like, really, really, really, really slow. I'm used to NetBeans(not slow) and MVS (not slow). The sheer latency is killing me; I want to type, compile, test, boom done (well, other than bugs, more bugs, and profiling, natch).

    Instead, I start typing and... wait... latency... OK, oops, typo, moooooove back... oops, too far... ugh. It's productivity-killing slow.

    3. Its auto-completion is fugly and 'orrible, at least for C#. Want to get a list of methods that are called for gameObject, like Start()?

    Good luck, if this is your first time; newbies are basically at the mercy of the Unity documentation, they can't simply query through the IDE. I suppose that's not the end of the world, but wouldn't it be nice to have that at our fingertips?

    There's a distinct lack of smart context control, too; if I create a new Script on, say, a collider that doesn't have anything else attached to the gameObject, it doesn't include the collider methods (OnTriggerEnter et al). So back to looking them up in the Unity docs, then laboriously typing them in. Yuck.

    4. I can't compile it to verify that my code isn't borked without re-entering Unity and waiting for a console error? Seriously?

    Who would ever want to deal with that hassle, once compile times were long enough?

    --------------------------------------------------------------------------------------​

    Anyhow... Unity's a great product in so many ways, but this is kind of a core issue. I've read that I can use MVS in Unity, and that sounds wonderful. However, I'd just plain love to be able to use NetBeans, which is my favorite IDE at this point (yes, it may lack a few bells and whistles, but it's clean and fast and it just plain works).

    So, basically, I'd really like to see a better IDE- one that speeds up production, rather than something that is feeling like Notepad--.

    What are the primary obstacles to:

    1. Simply allowing for Java, so that all of the superior Java IDEs (Eclipse, NetBeans et al) can be used? If there's any language that has the best IDEs and the widest choice available, I'd honestly say Java's where it's at. I haven't the foggiest whether that's a really tall order or a merely big one, but man, that'd be great.

    2. Getting MonoDevelop on-track to be really useful and fast? That seems like a really tall order, unless the issues I'm seeing are just some miraculous combination of hardware causing latency / newbie settings being inadequate.

    Anyhow, I expect lots of "PEBCAK" from people who've been mightily tooling away, making beautiful things with MonoDevelop... and if there are some secret settings I need to change to make this thing paint rainbows everywhere, I'd love to hear about them... but I'm guessing all of the pros are using MVS, because there ain't another game in town for C# that integrates with Unity.

    Personally, I just want reasonable speeds and the bracket situation to get fixed up; that part drives me absolutely crazy.
     
  2. Flipbookee

    Flipbookee

    Joined:
    Jun 2, 2012
    Posts:
    2,788
    Have you heard of my Script Inspector? ;) No? Read on...

    Script Inspector is a script/shader/text editor that works as a Unity editor extension, i.e. runs right inside Unity. Number 2 is the version available currently on Asset Store, and although many people found it to be a useful replacement for MonoDevelop, I'd still want to introduce you to the upcoming version 3 - a way more advanced script editor with auto-completion for C# and much more. It is not released yet, but beta version 1 will be available later today, and anyone interested can join the beta. It's fully working in its current state with exception to a couple of still missing features, but those will be added in the following days/weeks... By joining the beta you will have the opportunity to experience something magical, a whole new type of experience while coding in Unity that will make you forget all the frustrations you had with MonoDevelop. :cool:

    Development of Si3 took about 14 months so far! That's because everything in it was written from scratch to ensure the fastest execution and the best performance possible while running in Mono/.Net environment. It's using advanced algorithms for incremental parsing and incremental semantics analysis, features available only in high-end IDE's such as Visual Studio, and not available in MonoDevelop or any other editor based on NRefactory. That's also the reason why MonoDevelop is lagging, as your code grows there's more and more data to process which creates more and more .Net garbage and everything becomes slower and slower. ;) There are ways to mitigate that lag, but seems like MonoDevelop doesn't handle that part very well...

    Anyway, I just wanted to let you and others know about this new development, just in case anyone is interested. ;) ... Thanks for reading!
     
  3. rumblemonkey

    rumblemonkey

    Joined:
    Mar 25, 2011
    Posts:
    280
    Thanks for the post! I've already fixed up some of the basic issues with MonoDevelop and I've tried out Visual Studio integration; I like the speed of Intellisense (although I feel NetBeans was faster / cleaner in its approach to "what I probably wanted to auto-complete" vs. "give me every possible option, even if it doesn't make much sense") and features.

    I think NetBeans really spoiled me; it was sharp, easy to extend (importing jars is so clean) and simple to use. That, and customization of the experience; not everyone wants auto-completion, some might want searches on a hotkey, etc.

    There's also the issue of profiling; I want to be able to launch a profiling session from my IDE like I can with NetBeans, where it gave me detailed profiling data right after rebuilding and running. Anyhow, what you're working on sounds pretty exciting and helpful; having a really good, fast, solid IDE is a major part of building things quickly and efficiently :)