Hi guys
got a question to ask regarding coding for Unity games.
ok now 1st of all i am very new to game dev so im gonna be asking a lot of questions :P
but the 1st one if, which programming software should i use when working with Unity?
i have noticed that Unity has a embedded type thing with Mono-develop, now i have use it a bit during the tutorials that i have been doing and its quite nice, now the reason i am asking is i was talking with a few programmers at work (not game programmers) and they told me that Visual Studios would be a much better option for me to use.
now is this true or would it just be the same no matter which i use? or would either one of them be better in any way and so on?
thanks :)
got a question to ask regarding coding for Unity games.
ok now 1st of all i am very new to game dev so im gonna be asking a lot of questions :P
but the 1st one if, which programming software should i use when working with Unity?
i have noticed that Unity has a embedded type thing with Mono-develop, now i have use it a bit during the tutorials that i have been doing and its quite nice, now the reason i am asking is i was talking with a few programmers at work (not game programmers) and they told me that Visual Studios would be a much better option for me to use.
now is this true or would it just be the same no matter which i use? or would either one of them be better in any way and so on?
thanks :)
Comments
My understanding is this:
Monodevelop has the advantage that if you want to step through your code while testing your game you can. Some programmers find this VERY powerful. I don't really understand it.
Visual Studio has the advantage that its auto-completion, error highlighting and formatting are better (or certainly was a year ago). This I like as it helps me write code faster without me having to interrupt my workflow and go to Google to find things out.
Monodevelop is being actively developed by Unity. So may accrue some advantages over time.
Visual Studio is the choice of most programmers and runs slightly more lightweight than Monodevelop (which I like on my underwhelming laptop).
There may be other differences, but inferior auto-completion was a deal breaker for me with Monodevelop. Though I did use Monodevelop on some projects just fine (when I was working on Mac).
Overall, I like Visual Studio way better than MonoDevelop. The principle reason is simply that it crashes less. (Some people do not have this problem, I also have a few unique MonoDevelop rendering and freezing issues no one else seem to have).
MonoDevelop does integrate better than VS Express (you cannot have C# files open properly in VS Express by double clicking on them in Unity). If you have access to VS Professional, that solves the problem; however it is quite expensive. (Which is a shame; it really is wonderful. I guess that is why it is expensive).
The other thing is that you can run the debugger on a Unity game from MonoDevelop, which you cannot do with VS. Apparently there is a plugin that makes this possible for VS too, but it costs $100. (I have not tried it yet).
When using free tools, I use both VS and MonoDevelop. I use VS when I write large blocks of support code that I can test without running Unity. For the rest I use Mono.
(I recently got an upgrade, and said goodbye to MonoDevelop without tears).
My suggestion would be to use both and see what each has to offer. And don't worry too much about which is best; over time you will learn to leverage whichever tool you are using. (So if using both is too much for now, choose one for now, and check out the other later when you are comfortable. Fortunately, IDE choice is not marriage for life :P)
the plugin i think you talking about is UnityVS , its quite interesting and i have bee really tempted to try it out :) [edit - im now doing just that]
and from what i have seen while using a trial of VS its really nice the face that i can change the theme to a dark theme also helps my eyes "i know that's a small thing but it helps"
and the coding style is quite nice and fast, jusat struggling to get it to open .js files in it.
So I end up converting the javascript to C# which is a pain. I think Monodevelop won't give you this problem.
I've always treated step-debugging and writing actual code as different operations, so I switch to MD for that if I need it.
BUT (BIG B-U-T, SO BIG I'M GOING TO SAY IT AGAIN: BUT!) if you're just starting out none of this really matters. Monodevelop is perfectly capable, I've used it for years. Ignore the passionate arguments of fanboys who insist "x" is going to be so much better than "y" that you might as well not even bother with "y". All you really need right now is a place to type code. I know I know, this whole game dev thing is very intimidating and you want to make sure you get it right from the start. Well in this case the right thing to do is focus on starting and not the marginal differences in your tools. Once you've typed in a lot of code then this question starts to become a lot more relevant ;).
VS is the better IDE (I'm a fan), though MD is serviceable enough. But I'm also one of the programmers BlackShips mentioned who finds step debugging, callstack tracing etc to be an extremely powerful tool in a programmer's toolbox, especially when working on complex systems. To the point where the loss of that functionality is a deal-breaker for me.
Some devs get around that by switching between the two as the need arises. If that works for you, cool. Personally I find it aggravating to work like that. Rule of thumb, choose whatever best suits your workflow as a dev.
UnityVS may be the best solution, when I've got some free time and cash I'll give it a whirl. In fact, if anyone's using it, report back, I'd be interested in hearing about your experiences.
That having been said with the Windows 8 work we have been doing VS was thrust upon us not in the bad way more in the finally a good reason to use it way.
I am not sold that either suits us better, my gut feel is that VS is a more complete solution but MD is a little closer to the heart of the Mono CLR. That purely bias not fact.
We don't use line by line debugging I am not a fan. I prefer logs that persist after the debugging session so that my bug tracking leaves me with an asset for future bug tracking.
Personally I would like tighter coupling either way. Does anyone know if VS can handle refactoring class or method names so that Unity behavior allocation will automatically update. Refactoring is a huge asset to someone with pour spelling :) i.e. me.
It's built by jetbrains, so it's up there with the likes of Intelli-j. The things it knows about my code is just ridiculous sometimes. And in my not humble opinion creams the refactoring smarts available in Eclipse. ;) Only slight negative is that it's a little bit enthusiastic with it's best practice suggestions sometimes. But that I can live with.
Edit: not sure what the implications of file renaming are with unity. That might still be a bit fiddly. Everything else works great though.
Basically, that's the best option I've encountered, and I would recommend to any programmers. For hobbyists, of course, Monodevelop is perfectly serviceable, if you don't want to (or otherwise cannot) splash out on VS Pro and UnityVS plugins.
Seriously though, I don't mind monodevelop but its code completion and confusion between different method signatures is humourously bad at times (it's ok monodevelop, arrays confuse us all at times.......). If that UnityVS does what it advertises then there's no reason to ever start up monodevelop.
I used Resharper extensively in a previous life where we had strict code conventions and it's amazing for that and several other reasons. Highly recommended if you can afford it and are a power-user.
When you look at text all day, it's the small things that amuse you...
Though TBH my current view of GMS is that I can't wait to move to Unity (you can't do a recursive call in GMS more than 32 times . . .)
http://www.codinghorror.com/blog/2012/07/new-programming-jargon.html has a nice list of these, including:
Yoda Conditions
and Pokemon Exception Handling:
I am a total noob, but my feelings on Mono so far. It could do more. Its damn annoying that the autocomplete only comes up after a period. I'll try out VS some time this week and see which I like more :)
It's probably because every GML script window is ridiculously tiny, making me want to conserve screen space so that the whole method/function/blah can be seen at the same time. While VS has more space so nicely arranged code feels better.
I know that GML's crampedness made @Squid have some seriously strange coding habits when he started out ;)
One thing that hasn't been mentioned yet is that MonoDev is cross platform, so while it's nowhere near as good as VS, it does have the advantage of being a relatively consistent environment to use when you're switching between Windows and Mac. Yuck! Love my yoda conditionals, do I :)
They're an old habit from C/C++ coding in simpler tools where you could accidentally assign when you meant to compare, and spend the next couple of hours trying to figure out why your code is doing stupid things.
I use Monodevelop. I just got used to it, and didn't have VS Express installed at the time -- and when I finally did, the keyboard shortcuts made no sense to me. (MonoDevelop's comment/uncomment is just Ctrl+Alt+C, whereas VS's default is... something retarded.)
Yes, even the stupid Java-style Egyptian braces.
P.S. Yes, I know you can change those in settings, but I've found Mono's pretty inconsistent about when it chooses to apply custom styling, and when to ignore it.
Then again, my primary reason for liking Visual Studio is experience with it and becoming accustomed to it, so my opinion is probably incredibly biased :P
Learning how to code in any IDE is way more important. User of both monodevelop and Vs for some time now...
I thought that using "proper" debug tools would cut down on the time it was going to take me to solve the issue I was having, but in the end it just added hours of frustration for no progress. I'm planning to go back and explore both UnityVS and MonoDevelop's debugging features with a brand new, clean project file, but only after we've finished supporting DD.
Microsoft acquires SyntaxTree, creator of UnityVS plugin for Visual Studio
Of particular interest:
I am currently using Monodevelop solely because I can't use VS 2013 Update 2 for some reason. Monodevelop keeps auto-indenting and rearranging my code and it really bugs me, I spend more time fixing lining up of my code than writing actual code in monodevelop.
As a note, my controls are set to Ctrl+E,D to format document and Ctrl+E,C to comment or uncomment in Visual Studio. I haven't yet formatted a document automatically in VS and not liked the changes it has done (fixing brace alignment and all that for me if I am lazy).
Admittedly I would like proper error messages in IDE in either (like syntax errors etc) - I remember there being a distinct lack of this in VS when I was using that and I know monodevelop is pretty silent on the fact that it shows everything is fine when in fact you have some large syntactical error in code (mostly in shaders admittedly).