time-killer-games
|
|
Posted on: September 05, 2014, 12:46:18 pm |
|
|
"Guest"
|
I know we already beat GMStudio's game performance by a landslide but they are using Visual Studio for both their interpreted and YYC C++ runners. We use MinGW which is called "Min" for a reason. What would be the benefits if a dev got Visual Studio's trial and ported ENIGMA with it before the expiration date? I know no one here is willing to buy Visual Studio, and the free version (not counting the Express Edition) is for noncommercial evaluation purposes only.
Would this be a game performance boost on Windows?
Would this make game file sizes smaller on Windows?
Would it help us pave the way to making appstore-ready Windows 8 apps?
|
|
|
Logged
|
|
|
|
edsquare
|
|
Reply #1 Posted on: September 05, 2014, 01:58:14 pm |
|
|
Location: The throne of ringworld Joined: Apr 2014
Posts: 402
|
Not sure about VS but you should read about mingw : http://www.mingw.org/
|
|
|
Logged
|
A child of five would understand this. Send someone to fetch a child of five. Groucho Marx
|
|
|
onpon
|
|
Reply #2 Posted on: September 05, 2014, 02:29:30 pm |
|
|
Joined: Feb 2010
Posts: 102
|
called "Min" for a reason Er, yeah, it's called "minimal" because it doesn't give you a full GNU environment. It gives you a minimal GNU environment within Windows, with all the important tools you would use to compile stuff on a GNU system like GNU/Linux. I don't know how good Visual Studio's C++ compiler is, but GCC is not a performance hog by any means. There's a reason it's as popular as it is. As far as I understand, most projects use Visual Studio instead of MinGW because it's easier to do it that way, not because it's a better compiler.
|
|
« Last Edit: September 05, 2014, 02:34:19 pm by onpon »
|
Logged
|
|
|
|
|
|
|
Rusky
|
|
Reply #6 Posted on: September 05, 2014, 08:30:42 pm |
|
|
Joined: Feb 2008
Posts: 954
|
Darkstar2, why are you qualified to have an opinion on the effect of using VC++ over GCC? Have you run any tests? Just googling that, I see both compilers beating each other in different situations, with much wider variation just from the optimization flags used than from the compiler. MSVC and GCC are both high-quality compilers, and MinGW is just a Windows port of GCC- it's exactly the same program.
The biggest reason by far to use Visual Studio and/or its compiler on Windows is library and tool support. Visual Studio is a fantastic IDE with a fantastic debugger; all Windows SDKs are supported primarily (and often only) on MSVC; MSVC is guaranteed to be compatible with Windows. For example, rc files on Windows are a huge pain point in ENIGMA's build process because MinGW's windres.exe is perpetually broken. Further, Visual Studio's Express Edition has no restrictions on what you use it for. The only restrictions are some of the more advanced features that would be almost useless in porting ENIGMA.
Games probably wouldn't change noticeably by switching compilers. Some would maybe gain, some would maybe lose, there might be some rare pathological cases where one or the other compiler is way slower or faster. You can develop Windows App Store games with MinGW anyway, so it wouldn't make a difference there either.
|
|
|
Logged
|
|
|
|
time-killer-games
|
|
Reply #7 Posted on: September 05, 2014, 09:17:51 pm |
|
|
"Guest"
|
Thank you Rusky that was the perfect answer! You seem to know exactly what your talking about and I respect that. This was just asked out of curiosity. If porting to Visual Studio doesn't help anything, then I guess it's not a major concern, which is good, you guys have enough on your plate. Thank you!
|
|
|
Logged
|
|
|
|
DaSpirit
|
|
Reply #8 Posted on: September 06, 2014, 11:00:12 am |
|
|
Location: New York City Joined: Mar 2013
Posts: 124
|
I prefer MinGW on Windows because if you compile an application with Visual Studio, then your user must also download the Visual Studio Redistribution libraries for the matching Visual Studio version. Windows does come with pre-installed versions of the redistributable packages, but whenever a new Visual Studio version comes out, then all of a sudden your users will have to download the redistribution package themselves. For MinGW, you only have to include the MinGW dll with your executable, which is also forwards compatible (to some extent).
Previously, another reason I preferred MinGW was because they added C++11 support faster. Microsoft does not support their C++ compilers as much as they should be, and are a little slow at adding new features. As of now, VS2014 does not support unicode string literals, binary literals or generic lambdas, all features that I have been using in MinGW for years and would mean that I have to remove those features to compile in VS. ENIGMA itself wouldn't have this issue, because it uses C++0x, but it could always be an issue down the line when ENIGMA adds support for newer compilers.
I find Visual Studio better than MinGW in terms of proper debugging support. Namely, most tools for detecting memory leaks were made for Visual Studio. Also the Visual Studio IDE is a very polished IDE. Although, you could always theoretically just use valgrind in Linux by compiling in GCC (like I do).
|
|
|
Logged
|
|
|
|
time-killer-games
|
|
Reply #9 Posted on: September 06, 2014, 11:22:40 am |
|
|
"Guest"
|
Where did you come from DaSpirit? We missed you! Thanks for the info, sounds like because of less forwards compatibility it was a great move to not use VS. GCC is perfect. I'm glad we're using arguably the best compiler for the job, really encouraging.
|
|
|
Logged
|
|
|
|
TheExDeus
|
|
Reply #10 Posted on: September 07, 2014, 08:30:11 am |
|
|
Joined: Apr 2008
Posts: 1860
|
I also personally don't like VS. It's very bloated, so ENIGMA would weight A LOT more if used. There could potentially be many more dependencies as well, as is the case with a lot of VS made programs. Like you have to install 300mb dependency (what MS calls "Redistributable Packages") to run 2mb large math example program. In this case MinGW is a lot better, as it can make standalone executable very small. And as DaSpirit pointed out, VS is very slow at C++ standards. It took them years to implement many C++11 features, and they still don't support many of them (check http://cpprocks.com/c1114-compiler-and-library-shootout/). MS has historically been VERY slow to adopt standards, which is why IE couldn't render any webpage properly for decades. GCC on the other hand implements the standards rapidly, which often include optimizations as well, so it's generally faster. VS can't compile anything outside Windows as well, so we would still use MinGW, which end up us maintaining several different systems again. So long story short, using VS would be a mistake. The only good thing is debugging, but there are many alternative ways we could improve that as well. I would actually have a discussion about using C++11/14 features in ENIGMA source as well. I think we should start doing that and thus get rid of some nastiness we had to do before. I think some guy who did changes to math.h/cpp already used some new C++ there.
|
|
« Last Edit: September 07, 2014, 08:33:27 am by TheExDeus »
|
Logged
|
|
|
|
Josh @ Dreamland
|
|
Reply #11 Posted on: September 07, 2014, 09:52:25 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
That's not a reason to not support it. The reason to not support it is that no developers own it, or even the express version, for those reasons.
That said, the vast majority of ENIGMA -should- compile with Visual Studio. We -are- using GNU extensions in places, but the ones we use are largely going to be included in C++14 or are already supported by virtually all compilers.
How easy is it to set up ENIGMA's other basic dependencies in VS? It might be the dumb answer to all our dumb questions.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
TheExDeus
|
|
Reply #13 Posted on: September 07, 2014, 12:02:55 pm |
|
|
Joined: Apr 2008
Posts: 1860
|
That's not a reason to not support it. The reason not to support it is because there is no reason to support it. there's a reason people use it there. Mostly for the IDE. We actually have used VS IDE together with VisualGDB to write code for RaspberryPi. So we use GCC to compile, but use VS just for the IDE. Most people who use VS outside of IDE are people who write C#, which are people who doesn't have any real alternative. I have worked on projects that use VS with C++, C# and so .NET as well. And from my experience it's almost impossible to run a compiled executable without installing A LOT of dependencies before hand. In C++ case it's better of course than in .NET/C# case where you seriously must install sometimes hundreds of MB of dependencies. Of course MS keep adding to dependencies in newer versions of windows as well, but whenever you use a newer VS in an older windows (like Win7) you end up with this bloat problem. MinGW is the only compile I know which actually outputs windows executable with NO dependencies (when statically linked). In VS case you even have to install bloat just to run VS itself. That is why we run VS in a virtual machine, so we can just delete the machine together with all the bloat when the project ends and we have to install another version of VS for a newer one. Now we are actually just developing on Linux and compiling the same code on Windows using MinGW and cross-compiling. It's just easier that way.
|
|
|
Logged
|
|
|
|
|
|