So the "real hackers" phrase is an attempt to draw attention, but I think it's a good (if sensational) simplification of my question:<p>I have a project coming up and it looks like the production company wants to go Unity.<p>My fear of Unity is that it looks like WYSIWYG for games -- that it will do too much for me when I'm increasingly interested in building an engine and rendering system (or at least interacting with one more directly, in code). I love OpenGL, though I only have six months experience with it.<p>I'm afraid that whereas I've spent the last six months gaining significant development experience (objective-c, opengl, linear algebra, a sprinkling of c++) which will benefit me in any language and on any platform, if I start using Unity, my experience will be locked up in a more proprietary platform that will have limited application outside of Unity game development, and that the experience will be comprised more of clicking little gui buttons than writing code.<p>I'm definitely impressed with the games Unity can create, so it's not an issue of whether or not I think the product will be good -- the question is, will I be able to continue to learn and grow as a developer?<p>This is where I'm hoping to get some input from other developers who have used Unity. I'm vaguely familiar with the Unity scripting process, but is it likely that my general programming skills will come into use day-in, day-out? I'm hoping that my first impression is wrong, and I would be very grateful for any developers willing to enlighten me with their experience.
If you are doing any serious development in Unity, you will be programming and so your skills will likely come into use day-in, day-out. Maybe some of what you will do will be higher-level than if you were writing an engine from scratch, but that isn't necessarily true and isn't necessarily bad. In many ways, Unity does a pretty decent job of letting you go lower-level when you need to, but not requiring it of you all the time.<p>Maybe rendering is a good example of this. Unity ships with a bunch of built-in materials and shaders and has surface shaders to abstract away some aspects of writing custom shaders. But there are cases where you need something a little less mainstream, and you can write CG or HLSL if you need to. Just like you can also manage sending data directly to the card if you need to... or you can let renderer components on your objects handle things. The nice thing is that in 99% of cases, when you don't need to -- you don't have to.