My main concern is optimization. Unity is a "one size fits all" sort of engine (as I understand it), so I'm worried it doesn't optimize well for individual creations. Take for example a game like Terraria. That was a "simple" game (graphically speaking), with thousands of blocks per world. A game like that can be easily optimized when making your own engine, but how well would Unity handle that many objects? Some engines would outright choke trying to update everything every frame.
Any advice or feedback is appreciated! Thank you!
I don't use Unity, but I think that a lot of the principles used to make a game like Terraria would transfer from engine to engine.
Merge objects into single draw batches as much as possible and update objects only when you need to. If you have dynamics physics, it might be best to have them update when something gets close to them, or for objects that are physics enabled (sand or water, for example). Try to do something like change a landmass (i.e. add a block or remove a block) only when the player clicks or performs the action, rather than checking every game frame, and so on.
It should be possible to make a voxel / block building game in most engines and frameworks (Flash, Unity, UDK, BGE, Pygame, Game Maker, etc).
I have been using Unity for the last 3 years. (2 years professionally and now almost a year indie) I think it appeals differently depending on what kind of developer you are. I am less of a programming nerd and more of an allround kind of developer, i like to focus on the product and not get snowed in to much on the technical. I love Java, C#, ActionScript 3 etc, never gotten down to C++ level because i dont see the point, i just want to focus on getting stuff done. I think some C++ people who like to roll their own lower level stuff might not like it as much. I think Unity is the best thing i ever used, before that i used XNA and FlashBuilder, before that BlitzMax. In Unity i just get quicker and easier results, less reinventing the wheel, more time spent on the actual game. Thats my 2 cents.
I might add that my game is 2D, more info here: steveolofsson.tumblr.com
That's also how I feel about the BGE - it's quick and easy to use, and extendable enough to do what I want. Most of the time, a developer's not going to find an engine that does everything necessary and is efficient. Either it's going to do everything you need and you'll need to optimize it, or it will be exceptionally efficient and you'll need to implement what you want (and also optimize that implementation). Unity, as far as I can see, has a ton of great features, but the main downside would most likely be the need to purchase them for a rather large sum of money.