My general views on 3D - Clearing up some missunderstandings
Posted: Sat Mar 25, 2017 4:27 am
There has been a lot of discussion now regarding 2D vs 3D. Even the developers themselves have released some statements that I cannot agree with so I just would like to clearify a few things and also link a few YouTube videos just to give non-developers, regular players, a but of an idea of what 2D can do today and that it doesn't mean what it mean in the 80s or 90s.
The dev's statement I mentioned was regarding their decision to go 3D. THe statement went something like this: We went 3D because it's easier and modern engines are better than writing your own.
Well first of all I have to strongly state that tons of 2D games use a modern 3D engine. Every modern engine enables you to also use 2D games. The idea that you can only do 2D by writing your own engine or that using a modern engine makes your game automatically 3D is... weird to me. There's also pseude 2D games which are built as a 3D scene but then shown using a fixed 2D perspective, like modern side scrollers. Those are essentially 2D games making use of a 3D environment. The graphics are 3D but the entire gameplay and the mechanics are 2D and the 3D environment is just used to give the game a certain depth of field, just like the older 2D games used paralax scrolling to simulate landscapes.
So it's not even 100% clear anymore what "2D game" even means.
The statement that 3D games are easier to make is just complete nonsense in my view. Both types of games use the same engines these days. There's tons of 3D games done with unity, and tons of 2D games. The main difference is: 3D uses meshes and textures, 2D uses usually sprites. 3D uses a perspective (often rotatable camera), 2D uses a fixed rotation orthographic projection camera. That's it. So essentially you use a different projection to render your world and you use a different asset creation pipeline. Instead of 3D artists and modelers and animators you need often pixel artist. And sometimes you need the same modelers and texture artists since you do all your sprites as high-poly 3D models before rendering them to sprites. If you do that then there's literally no more difference except the camera perspective. I have no idea why one should be easier than the other one. Quite the opposite, since 3D comes with a lot more complexity 3D game teams are usually a lot bigger than 2D game teams, and that usually not in the development team but in the art department. But again this is only true if the sprites are not extremely high quality 3D renders. If that is the case the pipelines is virtually the same. THere's just one more added step, the standardized render of each model into a sprite in a fixed perspective.
Another statement often made is that either 2D or 3D looks better. That's complete crap also. Again.. the difference between 2D games and 3D games is the projection of the camera and the way that camera can be manipulated and moved in the world. When looking at a screenshot, not being able to move anything, there is literally no way of telling whether one is looking at a 2D game with sophisticated prerendered sprites or a 3D game with meshes. THere is absolutely NO way to tell. None. I can make a 2D game with sprites and a 3D game with meshes and make them look exactly the same. Until you move the camera that is.
Both have their advantages. In 3D you can zoom (i.e. move the camera closer) and rotate to look at things from a different angle and it's easier to animate things. In 2D sprites you need to prerender a ton of images for every frame of every animation. In 3D you can simply animate stuff without the need to have all that prerendered and you can easily patch in additional animations without adding a ton of space on the HD with new images. Animation data is way cheaper and easier to make. Another thing that's easier in 3D is shadowing. In 2D that's harder, however not impossible to do. Lighting in general and shader effects however are possible in both. Again.. these days both types of games use exactly the same technology. These days a sprite is nothing but a simple square polygon with a texture on it. It's rendered exactly the same way and more complex mesh would be. So you can run the exact same shaders on it. If your sprite texture has hight and normal information you can totally make something look 100% 3D even with a moving light. No problem. 2D sprites no longer need to have the lighting already baked into them. That can be done later these days.
So in short, in my view the only advantages to using 3D are as follows:
- Easier to animate actors like units,player character or environment like trees. That advantgae only holds if theres a lot of complicated animations.
- Possibility to rotate the camera
- Possibility to use a 3D physics engine with there is a lot of interaction with the environment
- Easy manupulation of terrain = changing the terrain
That's it. That's literally all there is. I did not list "zoom the camera" here because there's always limitations. Yes you can argue in 2D you cannot zoom without at zome point running into pixel issues. That's not exactly true but not entirely false either. You'll never see pixels since, again, modern sprites are basically just textures, therefore they get the same filtering treatment as any other texture and you won't see the pixels. But of course if you zoom in too close you'll see the quality drop. But the same is true in 3D games for any 3D model and here not only the limited resolution of the textures will show if you get to close, but also the limited detail on the model. Sure you can do level of detail, loading higher res stuff if you go closer but you can do the same trick in 2D and in both cases it costs additonal harddisk space and graphics memory.
So to summarize my personal view before I show some examples of what 2D technology can do these days: Do I hate 3D? No. I just see absolutely no advantage of using 3D for a game like Panzer Corps. There is no need to rotate the camera around like crazy. It's a game playing on a battlefield map which is expected to usually have up equal North. rotating around does nothing but disorient players and I've yet to see anybody complain in a hex-based game about the lack of an ability to rotate the camera. Not even civilization, which IS 3D allows that. Up is north. Civ only takes advatage of zoom, wich 99% of the players never use and looks butt ugly if you do so. The units also shouldn't have too complex animations. They have one or two for attack and a couple effects for blowing up. That's it. So I see no advantage in terms of animation either. I don't need my infantry to have marching animations. It's annoying in Civilization since all it does it take up time. It adds nothing to the gameplay. Who cares what a unit looks like on the move. Fighting animations are fun yeah, marching animations are not. And even then that could be easily done with a couple of frames in a sprite animation loop. Pointless.
3D physics engine makes no sense either. On the high level of abstraction of a Panzer Corps there is no direct interation with the physical world. We have no rolling around barrels, we don't even need 2D physics and we certainly don't flatten the alps to get an easier way into Germany so the terrain is completely static. No advantage here either.
So while I'm looking forward to finding out more about the game I still have to hear a single convincing argument for the move to 3D. NOT for the move to a 3D engine (which is a stupid term anyway since it's a game engine. No engine tells you what camera perspective you need to use or allows you to ONLY use sprites or ONLY meshes. In fact most games use a combination. Every particle effect you've ever seen bascially uses something like sprites. Particle effects are made up of 2D pictures, which often have 2D animations on them. That's it. So there's already a mix right there. I welcome to move to a modern engine since that simply gives better performance, support from the engine developers are more time for the team to focus on game mechanics and asset creation. I would have voted for Unity for some personal reasons and because I think Unreal is still overrated and Unity underrated in terms of the visuals they can bring. Unless you want to create the next ground breaking shooter I doubt you will ever run into a situation where you have visuals that couldn't easily be done in exactly the same quality in the other engine. So stunning visualy or optimization or what have you are certainly not arguments for either of these engines. Panzer Corps is just not even remotely complex or big enough to come even close to using any engine to it's limits. In fact most games that DO push those limits make custom changes to the engine code to squeeze the last bit of optimization out. no game engine can be 100% optimized for every game type out of the box. But all of them are good enough. I would have voted for Unity since C# code is easier to do for modders (a point that could be argued and depends on the modder I guess) and because Unity focuses a bit more on mobile low end platforms (even though they're fully capable of producing AAA quality visuals on high end systems as well, the mobiles is just where most of their customers are, but there's certainly enough AAA games for PC done with Unity as well), while Unreal focuses more on the high end machines, especially the console market. And since Panzer Corps certainly is rather going to be played on mobile devices and on a Playstation IV, I thought Unity was the better fit. But either engine can be used to create a fantastic Panzer Corps and you could easily recreate the standard 2D panzer Corps 1 on either of them. That's not the issue.
My issue is whether the move to 3d graphics, no matter in what engine, is worth it and whether that move will result in design decisions that are going to impact gameplay and performance for the worse. 3D graphics can mean a lot but it usually means for board games unnecessarily complex animations that nobody needs and unnecessarily highly detailed terrain that results in units that cannot be found anymore. Or like in civilization's case, a terrain that uses textures for the ground which looks butt ugly and could have been done a lot better with a prerendered high quality terrain that had textures which are too high res to use in a live 3D rendering.
I will reserve any judgement on the final game until I actually see what it looks like. But I will certainly do my best then to give feedback on how to improve it if necessary.
And in closing just a few select videos form the web of games or game prototypes and show what 2D can do in a modern game if run in a modern engine.
if after seeing this you still think 3D looks better than 2D and 2D looks like 90s games... you literally have no idea what you're talking about.
PS: Note how the 2nd video mentions the player characters being fully 3D. That's why THOSE have animations. I doubt any unit in Panzer Corps needs the animation set of an RPG game character. The environment animations (the trees for example) are 2D.
The dev's statement I mentioned was regarding their decision to go 3D. THe statement went something like this: We went 3D because it's easier and modern engines are better than writing your own.
Well first of all I have to strongly state that tons of 2D games use a modern 3D engine. Every modern engine enables you to also use 2D games. The idea that you can only do 2D by writing your own engine or that using a modern engine makes your game automatically 3D is... weird to me. There's also pseude 2D games which are built as a 3D scene but then shown using a fixed 2D perspective, like modern side scrollers. Those are essentially 2D games making use of a 3D environment. The graphics are 3D but the entire gameplay and the mechanics are 2D and the 3D environment is just used to give the game a certain depth of field, just like the older 2D games used paralax scrolling to simulate landscapes.
So it's not even 100% clear anymore what "2D game" even means.
The statement that 3D games are easier to make is just complete nonsense in my view. Both types of games use the same engines these days. There's tons of 3D games done with unity, and tons of 2D games. The main difference is: 3D uses meshes and textures, 2D uses usually sprites. 3D uses a perspective (often rotatable camera), 2D uses a fixed rotation orthographic projection camera. That's it. So essentially you use a different projection to render your world and you use a different asset creation pipeline. Instead of 3D artists and modelers and animators you need often pixel artist. And sometimes you need the same modelers and texture artists since you do all your sprites as high-poly 3D models before rendering them to sprites. If you do that then there's literally no more difference except the camera perspective. I have no idea why one should be easier than the other one. Quite the opposite, since 3D comes with a lot more complexity 3D game teams are usually a lot bigger than 2D game teams, and that usually not in the development team but in the art department. But again this is only true if the sprites are not extremely high quality 3D renders. If that is the case the pipelines is virtually the same. THere's just one more added step, the standardized render of each model into a sprite in a fixed perspective.
Another statement often made is that either 2D or 3D looks better. That's complete crap also. Again.. the difference between 2D games and 3D games is the projection of the camera and the way that camera can be manipulated and moved in the world. When looking at a screenshot, not being able to move anything, there is literally no way of telling whether one is looking at a 2D game with sophisticated prerendered sprites or a 3D game with meshes. THere is absolutely NO way to tell. None. I can make a 2D game with sprites and a 3D game with meshes and make them look exactly the same. Until you move the camera that is.
Both have their advantages. In 3D you can zoom (i.e. move the camera closer) and rotate to look at things from a different angle and it's easier to animate things. In 2D sprites you need to prerender a ton of images for every frame of every animation. In 3D you can simply animate stuff without the need to have all that prerendered and you can easily patch in additional animations without adding a ton of space on the HD with new images. Animation data is way cheaper and easier to make. Another thing that's easier in 3D is shadowing. In 2D that's harder, however not impossible to do. Lighting in general and shader effects however are possible in both. Again.. these days both types of games use exactly the same technology. These days a sprite is nothing but a simple square polygon with a texture on it. It's rendered exactly the same way and more complex mesh would be. So you can run the exact same shaders on it. If your sprite texture has hight and normal information you can totally make something look 100% 3D even with a moving light. No problem. 2D sprites no longer need to have the lighting already baked into them. That can be done later these days.
So in short, in my view the only advantages to using 3D are as follows:
- Easier to animate actors like units,player character or environment like trees. That advantgae only holds if theres a lot of complicated animations.
- Possibility to rotate the camera
- Possibility to use a 3D physics engine with there is a lot of interaction with the environment
- Easy manupulation of terrain = changing the terrain
That's it. That's literally all there is. I did not list "zoom the camera" here because there's always limitations. Yes you can argue in 2D you cannot zoom without at zome point running into pixel issues. That's not exactly true but not entirely false either. You'll never see pixels since, again, modern sprites are basically just textures, therefore they get the same filtering treatment as any other texture and you won't see the pixels. But of course if you zoom in too close you'll see the quality drop. But the same is true in 3D games for any 3D model and here not only the limited resolution of the textures will show if you get to close, but also the limited detail on the model. Sure you can do level of detail, loading higher res stuff if you go closer but you can do the same trick in 2D and in both cases it costs additonal harddisk space and graphics memory.
So to summarize my personal view before I show some examples of what 2D technology can do these days: Do I hate 3D? No. I just see absolutely no advantage of using 3D for a game like Panzer Corps. There is no need to rotate the camera around like crazy. It's a game playing on a battlefield map which is expected to usually have up equal North. rotating around does nothing but disorient players and I've yet to see anybody complain in a hex-based game about the lack of an ability to rotate the camera. Not even civilization, which IS 3D allows that. Up is north. Civ only takes advatage of zoom, wich 99% of the players never use and looks butt ugly if you do so. The units also shouldn't have too complex animations. They have one or two for attack and a couple effects for blowing up. That's it. So I see no advantage in terms of animation either. I don't need my infantry to have marching animations. It's annoying in Civilization since all it does it take up time. It adds nothing to the gameplay. Who cares what a unit looks like on the move. Fighting animations are fun yeah, marching animations are not. And even then that could be easily done with a couple of frames in a sprite animation loop. Pointless.
3D physics engine makes no sense either. On the high level of abstraction of a Panzer Corps there is no direct interation with the physical world. We have no rolling around barrels, we don't even need 2D physics and we certainly don't flatten the alps to get an easier way into Germany so the terrain is completely static. No advantage here either.
So while I'm looking forward to finding out more about the game I still have to hear a single convincing argument for the move to 3D. NOT for the move to a 3D engine (which is a stupid term anyway since it's a game engine. No engine tells you what camera perspective you need to use or allows you to ONLY use sprites or ONLY meshes. In fact most games use a combination. Every particle effect you've ever seen bascially uses something like sprites. Particle effects are made up of 2D pictures, which often have 2D animations on them. That's it. So there's already a mix right there. I welcome to move to a modern engine since that simply gives better performance, support from the engine developers are more time for the team to focus on game mechanics and asset creation. I would have voted for Unity for some personal reasons and because I think Unreal is still overrated and Unity underrated in terms of the visuals they can bring. Unless you want to create the next ground breaking shooter I doubt you will ever run into a situation where you have visuals that couldn't easily be done in exactly the same quality in the other engine. So stunning visualy or optimization or what have you are certainly not arguments for either of these engines. Panzer Corps is just not even remotely complex or big enough to come even close to using any engine to it's limits. In fact most games that DO push those limits make custom changes to the engine code to squeeze the last bit of optimization out. no game engine can be 100% optimized for every game type out of the box. But all of them are good enough. I would have voted for Unity since C# code is easier to do for modders (a point that could be argued and depends on the modder I guess) and because Unity focuses a bit more on mobile low end platforms (even though they're fully capable of producing AAA quality visuals on high end systems as well, the mobiles is just where most of their customers are, but there's certainly enough AAA games for PC done with Unity as well), while Unreal focuses more on the high end machines, especially the console market. And since Panzer Corps certainly is rather going to be played on mobile devices and on a Playstation IV, I thought Unity was the better fit. But either engine can be used to create a fantastic Panzer Corps and you could easily recreate the standard 2D panzer Corps 1 on either of them. That's not the issue.
My issue is whether the move to 3d graphics, no matter in what engine, is worth it and whether that move will result in design decisions that are going to impact gameplay and performance for the worse. 3D graphics can mean a lot but it usually means for board games unnecessarily complex animations that nobody needs and unnecessarily highly detailed terrain that results in units that cannot be found anymore. Or like in civilization's case, a terrain that uses textures for the ground which looks butt ugly and could have been done a lot better with a prerendered high quality terrain that had textures which are too high res to use in a live 3D rendering.
I will reserve any judgement on the final game until I actually see what it looks like. But I will certainly do my best then to give feedback on how to improve it if necessary.
And in closing just a few select videos form the web of games or game prototypes and show what 2D can do in a modern game if run in a modern engine.
if after seeing this you still think 3D looks better than 2D and 2D looks like 90s games... you literally have no idea what you're talking about.
PS: Note how the 2nd video mentions the player characters being fully 3D. That's why THOSE have animations. I doubt any unit in Panzer Corps needs the animation set of an RPG game character. The environment animations (the trees for example) are 2D.