I just want you to know I spent a few good hours reading multiple threads on this topic and couldn't find more specific details about some of the questions I have on the matter. So i'm sorry in advance for making a thread that probably gets asked enough times. And would like to thank you in advance for taking the time to read through this and reply, if you have. Thank you.

Let me start off with my background

I have been coding for 2-3 years now, not as a hobbyist though, as a full time job. Main part is creating mobile applications, although I've done quite a few websites that required heavy Javascript. For the past year (and the last 6 months more intensively), I have been working on prototypes, reading up on all kinds of game dev material, sort of tested myself in all kinds of ways. Now, I know they are just prototypes so it's nothing special, but I have been able to reproduce with relative ease, the basic game mechanics of a lot of genres. Tower Defenses, Sidescroller/Platformer, Bulletstorm, crazy collision and pathfinding tests, etc. I forgot to mention this was all in 2D. So I am pretty confident that I would be able to code a game in 2D. Now let me move on to the question.

The game I am interested in creating is a Tower Defense. I also want to include multiplayer in it. My problem is, I would very much like it to be a 3D game, since a few of my ideas require 3D. This entire game will be done and taken very seriously, by myself and a friend, and possibly my friend's brother as a part timer. I would be the main coder and he would be the artist. He isn't really specialized in either, so we wouldn't have to big of an advantage on either end (unless it being much easier by default on one end). Now I realize 3D in most cases is an order of magnitude more complex than 2D is, but I have been analyzing things for a while now and would like your input on what you think of the following:

Unity3D has a massive community along with tons of samples and tutorials to get any one started. I really believe this makes 3D possible for a lot of beginners coming into the 3D world, without Unity as an option I might not even be asking this question. All the samples, asset's from the store, tons of users on the forum to ask questions and all the tutorials make me feel like I could get a good intro on any feature I might try to implement. Since I am creating a tower defense and the most complicated things will probably be performance for path-finding + collision for everything on the screen, I think with enough work and tinkering I should be able to program it. Thus on to the real question:

Design

What are some of the technical differences between 2D and 3D? How do data structures differ? How hard are assets to handle in 3D? I know there are a few more things like Shaders, Lighting and other things that I have not looked into yet. What are some of the things worth mentioning when going to 3D from 2D? I feel like for my particular case, 3D is slightly easier. A level for a TD is usually no bigger than the screen, so I wouldn't have to create all kinds of dungeons, destructible objects, and so on.

Art

I have no drawing skills along with no art vision. Which makes me think if we go 2D I would not be able to help my friend, ever, if needed with art. I assume drawing styles come into consideration and then even if maybe I am able to use illustrator and other images off the internet to inspire me and create something, then the animation still seems more complex to me then creating a 3D model and animating it. With 3D models I feel like I can learn a lot and get inspired from professional models and their animations. I'm not saying copying them but being heavily inspired by them. This makes me think if we go 3D I might be able to help out with some of the art/animations, am I completely wrong to think that? I have worked quite a lot in After Effects, which I know has nothing to do with 3D, but I understand keynotes and the workflow for animation really well.

Any information and/or experience you can share is greatly appreciated. Thank you once again for reading and sorry for the wall of text.

Its both working essentially the same, you put in a set of vertices, textures, shaders and transformation matrices and get some output.

The differences are that in 2D you mostly use a matrix containing an orthographic projection and in 3D you use a matrix with a perspective projection.

Also in 2D people try to simplify creating models by just using a rectangle or similar and then create much more work by not just having to make a single texture like in 3D but needing an enormous number of similar but different textures for viewing an object in all imaginable rotations and animations. Also often people dont give the z coordinate to the API when thinking of 2D and then pay by having to invent a sorting algorithm themselves instead of using the depth buffer.

One difference I've noticed with people moving from 2d development to 3d development is that with 2d you can utilize angles/trig to express and represent the various orientations and directions objects have and use, and this serves well.

In 3d, linear algebra (Matrix & vector math) is leaned on to do much of the work that you once did with angles and trig.

People naturally go with what they are familiar with so I see people starting off in 3d trying to bring the angle/trig operations that served them well in 2d. Many times that becomes a headache.

When transitioning into 3d, don't put off learning all about matrices, vectors, and their associated manipulations and possibilities. Resist the temptation to store an angle between frames until you are competent with linear algebra.