C++ IDEs - a rant

Published August 22, 2016
Advertisement

As regularly happens, I found myself with wrestling to shoehorn SSE code into a codebase compiled with visual c++ 6 (from circa 1998), and realised I should be checking out the more modern IDEs.

I can already hear the *gasps* from the readers. Let me explain. I am one of the users of the earlier IDEs who has been most unimpressed by the later offerings of visual studio. I used VC5, and then when VC6 came out, it was fantastic, it offered code completion, woohoo! I used VC6 at home and at work, until at work we reluctantly decided to move over to 'Visual Studio .NET', sometime around 2003. I think it may have been because the xbox support stuff was moving to only support the newer visual studio, or perhaps a third party library, I can't remember.

Visual Studio 6

vc6_zpsmeh36pcu.png

I can't remember all the problems we faced, but the main annoyance for me, and I've tried the various 'attempts' at improving visual studio over the years, has been how slow and unresponsive the thing is. I've constantly been amazed at how inefficient it is, I don't think I could make it that unresponsive if I tried.

On the other hand, the compiler itself has been vastly improved over the years, so I've been left with a kind of 'damned if you do, damned if you don't' choice of whether to 'upgrade', because the horrible IDE is forced upon you. Although it may be possible to shoehorn in a later compiler with the VC6 IDE, unfortunately you lose the debugger, because it does not seem to be compatible with later output files.

What do I need?

And so, while I've reluctantly used the later visual studios for various work projects, for fun stuff, I've mostly stuck with visual studio 6. Aside from some some bugs with class view .ncb files getting corrupted every now and then (which can be sorted by deleting the ncb and letting it recreate), it does pretty much what I want from an IDE :


  1. Fast classview with folders for working with large projects
  2. Fast and responsive to typing, moving around the codebase, compilation, debugging

I'm a big fan of SSE and things like OpenMP but I've mostly managed to get by compiling these into DLLs with the later compiler than calling them from the main module. And I appreciate the support for things like templates is better in the newer compiler but I've been willing to forego this for a quicker development environment.

2/3 years ago or so I did a quick test of the current IDEs of choice on windows, and found them lacking. I tried code blocks, QT creator, and visual studio 2013. The best of the bunch I found was QT creator, which very nearly ended up being my new 'go to' IDE, and I used it in a couple of projects. But I ended up back in VC6.

Anyway this past week I have been giving CodeLite, Code Blocks, QT Creator and Visual Studio 2013 another try and here are some of my findings. I am obviously not very experienced in any of them, and would love to hear that my criticisms are unfounded, and there is a way around the problems.

CodeLite

codelite-small_zpsu8bzg37o.png

A lite IDE is exactly what I'm really after, without the bells and whistles, just something that runs fast. Unfortunately after a bit of trial, and despite it saying 'it works with major compilers', well yes it does, but it only seems to support GDB so I couldn't get it to debug code from cl.exe (the microsoft compiler). So that ruled that one out.

Code::Blocks

codeblocks_zpsdcpo0zje.png

Despite looking a little 'technical' and harsh, I found it had lots of options and potential for instructing different compilers, and I set about converting my 3d Paint app to compile in it. Unfortunately while I managed to get the project to compile and run, it quickly became apparent that the debugging support seemed to be awful. It didn't even seem to display local variables. Don't get me wrong, I'm sure it is an achievement for the developers but for myself I need something that works. So I wrote off that day's conversion as a waste of time.

QT Creator

qt_zpsicgxqdqz.png

Next up was my pretty much favourite. I had tried QT creator before and pretty much love the design philosophy, it is what I would make myself if I had the time. It is fast, responsive, and doesn't show you 'too much' superfluous options, while still allowing you to tune under the hood. It works easily with cl.exe compiler, and support CDB debugging of the microsoft output code.

Again I spent some time converting. This time the actual code changes were more involved. I should explain that I'm a massive user of 'classview'. I understand that a lot of people (most perhaps) rely more on a solution explorer and organising by file, but I have always preferred to navigate with classview as it better fits the object orientated paradigm.

One unfortunate feature that was missing from QT creator classview was the ability to organise the classes from different libraries into folders. I believe this is what prevented me from fully converting over last time I tried it. But I did figure out that it would folder up classes correctly when using namespaces. So I went about changing my library code to namespace everything up.

All was proceeding beautifully until I had it all finished, and sadly found that the classview was not very good at showing up all the classes in the projects. Some would be missing. They would appear when I actually opened the files in the solution view, and it was 'half usable', but no good for navigating within the project.

One bonus of QT creator is that it is open source, and I did have a brief look at the source for the classview. It was all QT stuff (which I am not familiar with) and I was not really feeling brave enough to try and fix it, not knowing even the basics of how QT creator works. This is something I may revisit. Or perhaps the guy who wrote it (denis mingulov I think?) will improve it, but I think he developed it in 2010.

VS2013

So after discussion in the forum here, I decided to give VS2013 another try, and try and figure out if I could cure the slowdowns. I had managed to find last time that a lot of the problems were due to the the background parsing of the codebase to give intellisense, and classview, but never managed to fix it to a usable state.

VS has grown to become one of the big daddy's of sprawling code bloated messes. I remember back in 98, the common thought was that most MS software sucked somewhat, but that visual studio was 'really good' and finally 'something they got right'. Well unfortunately they didn't learn from their success. In typical 'design by committee' fashion they seem to have tacked on c#, various other languages and flavour of the month technologies, which many c++ programmers aren't the least interested in. I'm sure there is a way of turning off all that 'stuff', but I'd rather not have any of it installed in the first place.

visstudio_zpsvreit3i6.png

VS now seems to suffer from the 'too many options' problem. They clearly have so many developers working on it (independently and working against each other rather than together) that you can see multiple tools doing 'the same thing' rather than having some kind of coherent vision. Nowhere is the 'too many options' approach exemplified better than in the 'theme editor'.

The 'theme editor'. What were they thinking? Are they on crack?

http://i53.photobucket.com/albums/g55/lawnjelly/GameDev/theme_zpsxmabvxvh.png

The theme editor seems to have like 1000 or more options for customizing the colours of every conceivable gui element. To quote a wise woman 'ain't nobody got time for that'. I found myself spending 20 mins trying to find the option to change the window background colour, before giving up in frustration.

And now to the real problem. After googling and finding out that turning off 'graphics hardware acceleration' speeds up the IDE (you need hardware acceleration for a text editor? tell me more...), it looks like the main culprit for the awesome slowness in the new visual studios is the 'awesome' intellisense system.

Code Browsing Databases

It would seem that if you want to make an intelligent IDE that provides code browsing, classviews, intellisense etc, you have a choice, you can either rely on symbolic information produced during a proper compile, or you can run a 'mini-compile' that parses the source files separately and tries to maintain some kind of browse database. On cursory inspection it seems like all the IDEs have gone with the second option. This is great in that it can provide quick updates to the database without you having to ask for a compile, but it does have the potential for letting the IDE get into a tizzy about constantly re-parsing the source files, as we shall see.

What seems to cause all the problems with the need for re-parsing in c++ is that the result of a compile can depend on the particular #defines etc that are set at the time it is called. That is, one header could produce a myriad of different compilation results, even within the same codebase, depending on how and where it was brought in. This is both a powerful feature for developers, and a tricky problem for compiler / IDE writers. It would be much easier for compilation speed if headers were compiled once and just once. Instead, you get the situation where some users will vocally demand a '100% accurate' browse info database, which means these headers have to keep getting compiled and recompiled 'just in case'. Instead of giving us an option which would be ideal 'just compile it once and have a stab at it, if you get it wrong, no biggie'.

So now you navigate around your code tweaking bits here and there, visual studio is *constantly* recompiling, loading files, checking things (just in case you edited outside visual studio). Unless you turn the options off, merely waving the mouse over the source code makes this happen as it tries to produce those 'pretty' tooltips for you.

With all this 'background' (*cough*) parsing, I don't know about you, but it makes my IDE slow and unresponsive. Sometimes it just *hangs* while it figures something out. I keep telling myself, an IDE is just a glorified text editor. How did they make it so wrong?

I used 'processmonitor' to try and pin down what was happening, it shows you all the file accesses etc. It is really frightening. Anyway my current best solution is to turn off all the automatic updating of the browse database, and call 'rescan solution' manually every now and then. My browse database doesn't have to be PERFECT every millisecond, I just want to be able to navigate!!

Of course the fact this browse database is held as some kind of SQL database on disk doesn't help. Haven't you heard of using RAM MS? You know, it's cheap stuff and faster than disks? And you don't have to use SQL if you have a half way sensible access scheme?

Future

I'm sticking with VS2013 for a little while, but once I've done my first release of my current project, I may have to have a look at either writing or modding an IDE, to get something that works properly. The simplest solution would probably be a modification of QT creator. But writing the whole IDE is not out of the question either. Scintilla seems to be a very good open source 'source editor' which you can integrate into your programs (it is used in the excellent notepad++ which I use as an external editor). It looks fairly easy to rig up an environment with a list of files compiling / linking with cl.exe, and displayed / edited with scintilla.

The only 'hard parts' seem to be parsing a code database, and integrating a debugger such as CDB. Myself I would be content with either reading a code database from .pdb files after compilation, or else doing a *very* lazy parse to give very rough classview and intellisense. I suspect CDB integration may be the tricky part, seeing as how much difficulty the code blocks developers seem to be having with it.

Addendum 31/8/16

Well I came back from spending a few days away (without internet) to find there had been lots of interest in this topic (only a quick blog post not even an article)! I never thought anyone would actually read it :lol:, but clearly it struck a nerve, such is the power of the interwebs. It was very quickly written with no doubt many errors, and written slightly provocatively I'll admit, as a result of too many nights banging my head on my keyboard in frustration. I'm glad it got a little bit of discussion going though, as we programmers are totally dependent on the tools we use for our productivity, so if there's anything we should 'program right', or try to improve, it should be the tools that form the foundation of everything else we make. :)

Firstly a small caveat for my earlier waffle, I'd like to emphasise that I am but a lowly worm who can only speak for my own experiences, and the things *I* currently look for in an IDE, which is tied to how I currently work, and my small subset of knowledge of c++ and compilers. These considerations may be completely different with a big team, larger projects etc. So I would expect it to be difficult / impossible to provide a solution that is perfect for *all* users, who may have totally different priorities, and so my whining should be taken with a grain of salt. That said, a bit of constructive criticism isn't something we should be afraid of. I've done a lot of awful work in my time, and after dusting off my ego, criticism really helped pin down what could be improved so I could make it better.

I would also like to say that ALL the IDEs I reviewed here are GREAT in their own way and are massive achievements for the developers, and all are 'so close' to being my perfect choice, and my ranting is only because having an IDE at '98%' is sooo frustrating. I know that with that extra push they can be made even better for us users and make our lives much easier. And one of the many great things about us developer-type doods, is we do listen! :)

Visual Studio 15 Preview 4

http://i53.photobucket.com/albums/g55/lawnjelly/GameDev/vs15_zps6kvkhowc.png

Well on the advice of mluparu I have been trying out the preview of Visual Studio 15, as they had identified the symbol database as a problem and have been working hard on improving it. It looks like 10 months ago they rolled out a fix changing to a new database engine which appears to be making much better use of RAM:

https://blogs.msdn.microsoft.com/vcblog/2015/11/11/new-improved-and-faster-database-engine/

All I can say is, WOW, they seem to have fixed it!! :D I eat my words and take it all back! It is now fast and responsive for me with the classview. So much so that I have already uninstalled VS2013. Obviously I need to do a lot more testing etc, but this is the first version for a *long* time where I'm hoping they may have got the formula right again. Very excited! :lol:

Previous Entry 3D Paint App Progress
1 likes 28 comments

Comments

ferrous

Hmm, have you tried VSCode? It's a very slimmed down version of visual studio.

August 22, 2016 03:39 PM
lawnjelly

Just having a look now ferrous, had never heard of it! :)

August 22, 2016 03:57 PM
khawk

VS2015 takes it to another level, especially with all the cross platform extensions.

I use Atom and VS Code as my primary code editors outside of C++ (web, markdown, scripts, etc). I use both because I'm still figuring out which I like more, so I bounce between the two. VS Code has a slight edge now with the last few releases adding much needed functionality.

August 22, 2016 06:26 PM
evolutional

I keep meaning to try out VS Code for C++. I use it for Markdown and other stuff and find it to be great.

Another C++ IDE I keep meaning to check out is CLion. I'm a user of VS2015 (and 2013) and find the slowdown is very very real.

August 22, 2016 07:37 PM
ongamex92

I'm using VS2015 and I know what you are talking about... There is an beta version of VS 2016(or VS15) on the internet and it is sufficiently faster than VS2015, although it is not as fast as VC6. You should give it a try.

August 22, 2016 08:51 PM
sirpalee

At work I'm mostly using CLion, and it works great on linux. However, for windows vs2015 is still the best option (clion doesn't work well together with the microsoft compiler). I don't see the slowdowns you are talking about (though all the intellisense databases are on a ssd).

August 22, 2016 10:49 PM
kop0113

You are not alone in preferring the Visual C++ 6 IDE. When on Windows and if the project is in C, it is the only one I will use. It's popularity with the open-source community is also very high as well and most projects will provide a .dsp file so developers can carry on using this IDE on Windows.

Microsoft tried to make VS 2010 the new Visual Studio 6 and whilst it is still the most used in industry, this is usually for other reasons such as a better compiler etc...

Honestly I am glad I got away from IDEs and went to Vim. It hasn't changed since and probably never will so I am pretty darn fast with it now ;).

August 23, 2016 10:50 AM
realh

The trouble with using an old VC for C is the lack of support for C99. OK, it doesn't make such a dramatic improvement to the language as C++11, but I do take for granted being able to declare variables in the middle of functions. Once I was trying to compile some C in VS2012 (IIRC) and got an error message because of that. I couldn't work out what the message was trying to say so I looked up the numerical code. According to MS' official documentation this error was caused by trying to dereference a struct member via a typedef of the struct, which is illegal! Sometimes the documentation should be written by a programmer after all.

August 23, 2016 12:26 PM
Hollandera

Eeeww midnight black background and neon text. Grooosssss. Pastels homey, pastels are where it's at.

August 23, 2016 05:27 PM
kop0113

The trouble with using an old VC for C is the lack of support for C99.

I'm probably lucky in that I prefer to have all my variables at the top of a scope anyway. Perhaps if it wouldnt let me declare them at the top of an if() { } scope I would have more issue.

Now the C compiler that came with Visual C++ 1 on Windows 3.1... yeah then I would have to find a new solution haha. It makes the one that comes with non-APE Plan 9 look normal ;)

Did Visual C++ 6 perhaps support an (old) 3rd party compiler (for example the Intel one that is available for currect IDEs?). That could be a solution for people wanting slightly newer support.

August 23, 2016 07:30 PM
Servant of the Lord

One bonus of QT creator is that it is open source, and I did have a brief look at the source for the classview. It was all QT stuff (which I am not familiar with) and I was not really feeling brave enough to try and fix it, not knowing even the basics of how QT creator works.

I am familiar with Qt stuff, and still the Qt Creator sourcecode was very opaque to read. Even understanding Qt APIs, the QtCreator itself looked like it was a large enough project to have its own design considerations and ideologies that it'd take me a few weeks to invest in learning it before I could make the minor changes I wanted.

My desired changes were similar to yours: I use the Directory Tree view, and I have a few complaints about the way the Directory Tree displays sub-projects.

(to be clear, I ended up deciding not to invest the time to tweak QtCreator)

August 23, 2016 07:39 PM
Ed Welch

You're not alone in hating new VS versions. I'm using VS 2008 myself. I've tried to switch to VS 2015, but there were too many problems with it. For now I'm sticking with VS 2008 for day to day development and later plan to use Code blocks and GCC to produce the release. I'm switching to GCC mainly due to the distaste left after I discovered that Microsoft were secretely inserting telemetry code via the VS 2015 compiler.

August 24, 2016 12:35 AM
lawnjelly

After continued playing with VS2013, I'm afraid there's no nice way to say this (I would usually prefer to stay silent than criticise), but I really do fear that the developers (or perhaps more likely, the managers) really don't have a clue what they are doing.

The whole thing is riddled with schoolboy errors. I worked out that turning *off* incremental builds actually makes the build faster. And by bumping the build logging up to diagnostic, I worked out that a simple post build step of copying the target executable (circa 1000K) to the application directory was taking upwards of 10 seconds (suggests some kind of locking problem). Even the fast operations that should require no disk access seem to take longer than a second. I suspect the whole thing is riddled with file / resource locking bugs, together with constant inappropriate file / sql / registry access. There's this thing called 'RAM', perhaps they should consider using it. Or maybe the whole thing is run remotely on some scripting engine in the cloud in Seattle or something. It wouldn't surprise me given the performance.

And probably most importantly the modify code / build / link / start debugger cycle, which is often a limiting factor, takes forever. Unless I can reduce this by an order of magnitude, the whole thing seems to be a fruitless exercise. I dread to think what it is like for guys working on large codebases, I'd probably quit my job if I had to work with it.

August 24, 2016 07:14 AM
lawnjelly

In other news, it has dawned on me I'm being racist, I *could* conceivably use gcc (or another compiler llvm?) for everyday builds / debugging, then do final release builds with cl.exe if necessary.

On the homebrew IDE, it doesn't actually look that bad an idea. I looked into the cdg documentation and it looks usable, the debug engine does much of the heavy lifting for you. Scintilla should cover the document editing, project management is child's play (could even use cmake?), and writing a really simple parser (or integrating Clang) is doable. Then you have the option to keep all the symbols nicely in ram. I suspect that I would also need to optimize my treeview control for massive datasets.

August 24, 2016 07:28 AM
realh

Eeeww midnight black background and neon text. Grooosssss. Pastels homey, pastels are where it's at.

I've found Tango makes a good basis for a colour scheme, even if you limit yourself to the few official colours. (There also seems to be an unofficial consensus about adding turquoise).

August 24, 2016 12:04 PM
realh

I'm probably lucky in that I prefer to have all my variables at the top of a scope anyway. Perhaps if it wouldnt let me declare them at the top of an if() { } scope I would have more issue.

There is a very valid school of thought that if you can't see the top of your function while editing the bottom of it your function is too long, but I find myself breaking that rule all the time. If you stick to it for complex algorithms you'll find yourself having to replace large collections of local variables with one-use structs to sanitise passing them between many small functions.

Besides that you often need to perform some calculations on parameters to get an initial value for a local variable, and being forced to use a separate declaration and initialisation is a waste of screen space.

Did Visual C++ 6 perhaps support an (old) 3rd party compiler (for example the Intel one that is available for currect IDEs?). That could be a solution for people wanting slightly newer support.

Hm, Intel. They seem OK in this new age of even MS embracing open source, but can they really be trusted not to generate pathological code that runs much slower on AMD? They shouldn't be that desperate as far as AMD are concerned, but they are with ARM.

August 24, 2016 12:30 PM
Servant of the Lord

Hm, Intel. They seem OK in this new age of even MS embracing open source, but can they really be trusted not to generate pathological code that runs much slower on AMD? They shouldn't be that desperate as far as AMD are concerned, but they are with ARM.

https://www.google.com/search?q=intel+caught+cheating+amd

https://www.google.com/search?q=Intel+compiler+produces+crappy+AMD+code

I like Intel CPUs, but I wouldn't trust Intel to invest effort in getting their compiler to optimize code for AMD CPUs.

I have no experience with their compiler, though, being a MinGW man myself.

August 24, 2016 05:05 PM
Xai

Unfortunately, I haven't done real professional C++ development for many years, working with C# mostly now. For C#, I can say that Visual Studio 2015 is great (a memory hog and slightly slow to load - but doesn't bog down randomly like both C# and C++ used to in Visual Studio 2008). C# is of course enormously simpler than C++ for a compiler ... so that makes the Intellisense way less of a bear.

Also my mac coworkers use Visual Studio Code fairly well.

I was planning to play around with CLion (I have a copy as part of their ultimate tools bundle) but haven't had a chance yet.

And last up on the honorable mention list ... have you looked at C++ Builder? (https://www.embarcadero.com/app-development-tools-store/cbuilder)

I haven't used it since about 2004 ... but back in the Visual C++ 6 days, Borland C++ 4.52, 5.01, 6 and then C++ Builder 4 and 5 just beat the pants off Visual C++. I had to use both for work and I ended up just never using VS except to compile final output from the command line. Borland was faster, more language compliant (back then ... not now) ... and had a way way better debugger for multi-threading ...

However I suspect that the sticking point with pretty much all non-visual studio IDEs is going to be lack of or at least poorly done debugging support for MSVC compiled output.

Let me know if you find a better option. Also, I do recommend using Visual Studio 2015 over 2013. 2008 is a strait improvement on 2005 ... and 2015 is a strait improvement over 2013 which replaced the horribly bad 2012 ... 2010 is ok too. So the Only Visual Studios I would EVER install again are VS 2008 (for XNA game studio), VS 2010 and VS 2015 (for all my real work).

EDIT -

Also wanted to mention Visual Assist plugin (http://www.wholetomato.com/)

and that some people realy like Net Beans for C++

August 25, 2016 12:51 AM
Aardvajk
I'm a big fan of QtCreator these days, even for non-Qt projects. The intellisense in the last Visual Studio I used would crap out so often, I just got used to ignoring it, whereas when the intellisense in Creator stops offering me completion, I immediately know I've gotten something wrong in my code, it is that reliable.

I'm probably being unfair since I think 2005 was the last VS I used regularly, but having all the options set up in a text-editable PRO file that I just modify with the text editor is much better for me than digging six dialogs deep into proprerty controllers and makes basing a new project off a previous one a breeze.

It feels lightweight and responsive and does pretty much everything I ever wanted an IDE to do.
August 25, 2016 07:16 AM
jwezorek

I don't have a big problem with modern visual studio and have been using it professionally for 20 years. I can't remember the first version I used ... maybe 2.0? I remember VC++ 4.2 being a good version. Then 6 being a really good version that a lot of people stuck with for a long time, some until VS 2010. I hated 2013 because I thought that the WIndows 8.0 look was awful. Now I am over that so don't mind 2015 other than it being a memory hog.

August 25, 2016 10:09 PM
Mike Bossy

Has anyone here successfully used Sublime along with clang for C++ dev?

August 26, 2016 05:24 AM
ericrrichards22

I haven't used Visual Studio with C++ for a while now, but it really is excellent if you are working on .Net. Except that 2015 has this awful memory leak issue where it uses three times as much memory that it never releases if you open HTML/JS files on multiple monitors.

I would have though Code:Blocks would have died by now, gone the way of Bloodshed Dev-C++.

August 26, 2016 11:48 PM
mluparu

Hello! Program Manager Lead of the C++ team @Visual Studio here.

Some of the issues with IntelliSense performance and correctness you've called out are things we addressed in more recent versions of Visual Studio, so it would be great if you can try VS 2015 Community or better yet give VS'15' a try and let us know if you see these improvements.

You also mention some issues that our team may not be aware (graphics acceleration issues, hangs when moving the mouse, incremental build issues), that we would be interested investigating further. Would you be interested in reaching out directly to us to help us repro them? pls, ping me at mluparu at microsoft dotcom.

thx, Marian

August 30, 2016 06:37 PM
lawnjelly

Hi Marian! :)

That is great that you guys are listening, I will definitely give the later versions a try! :) Just glad to know you are working on it. As you can hear from others as well, things like the intellisense we'd really be overjoyed if they are working more responsively. I'm sure if you apply cattleprod to those naughty developers they will improve things! :)

August 31, 2016 05:36 PM
mluparu

Our team constantly strives to improve the IntelliSense experience release over release, no cattleprod needed :). We do that by working directly with C++ devs to identify a class of problems we're not yet aware of and then promptly fixing it in the next product iteration - see for example the work we did for Unreal projects in Update 4 for VS 2013 and the general symbol database improvements in VS 2015. Hope that your experience with the new product will be a better one too. Otherwise, if you still see any issues, do let me know!

September 01, 2016 01:24 AM
realh

I've had a look at the docs for VS Code. It looks great, but sadly it doesn't have Intellisense for C/C++ yet. Does anyone know roughly when that might be working?

September 15, 2016 03:30 PM
BuffaloJ

If I had a dime for every time my wife has heard "Come on! It's just text!!"... :)

anyway, @mluparu - 2015 does run faster for me and is a great IDE. Nice to see forward progress! One my biggest gripes, tho, is hitting ctrl-f, typing what I want to find and what I type goes into my source code because the find window takes 1-2 seconds to popup.

October 03, 2016 11:22 PM
mluparu

@BuffaloJ, great to hear VS 2015 runs faster for you.

RE: Ctrl+F out-of-sync typing -- this has been an issue we heard of from time to time but were never able to reproduce. Can you send me a short email at mluparu at microsoftdotcom? Our engineers would like to follow-up with you and try to get to the bottom of this.

October 04, 2016 04:53 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement