So … I decided to visit some of the popular Flash gaming portals (eg. Kongregate / Newgrounds).
What I noticed was the quality of Flash games tends to be greater than the quality of Unity games. This can be rather subjective, of course, as I’m just sort of going off my “visual senses”. But I don’t think I’m far off base in my observations. This is the opposite of what I would think, as I consider Unity to be the superior game making tool.
I think a lot of the quality has to do with SVG capabilities. Flash is essentially built around vector graphics, with the rest being an afterthought. Unity has much better flexibility / extensibility, but it’s pretty weak when it comes to SVG. The thing is, you can make some pretty cool looking stuff with vector graphics without a lot of work.
Some things to consider:
The people using Flash might have been at it for longer, and have better established workflows. Unity gives you more for free, so you might see more “newbies”
Unity is unquestionably better when it comes to 3D. You get a lot of good stuff with 3D: good lighting, good deformation, full rotation. But it also takes a lot of work to make good 3D art. Vector graphics give you good deformation with less work.
There are indeed ways of doing vector graphics with Unity. For instance, there are packages like Ragespline and Ragetools. However, that project’s maintenance has fallen somewhat into disarray. And its usage isn’t all that large (though maybe it should be). There aren’t any other strong SVG tools that I’m aware of.
I’m also hoping that Unity will make it easier/practical to work with 2D Vector graphics in the future. Though… full vector manipulation and free form control of vectors like how Flash handles it may be asking for a bit much. I can see an asset that might pop up with that whole feature set.
But overall I think the workflow and usability of imported 2D vector graphics should be built into Unity.
Actually, using vector graphics in flash is less common these days, at least for gameplay. For UI and such it can be useful, but vector assets can be a real dog for performance. There are still a few, but if you look most the top flash games, they are virtually all bitmap graphics. Vectors are expensive to render, as you can’t leverage the GPU. Flash has done a great job optimizing over the years, but since the introduction of stage3D it is so much more performant to avoid vectors altogether. (at least for action type games).
The nice thing about vector art is that it can be very small, it keeps file/game sizes down, but if you have a lot of it on the screen, you typically have to blit it. I certainly do miss the filters and text from flash though. Glows/shadows/borders/gradients/etc gave you a lot of flexibility. Most have been ported to shaders in stage3d now, you can still leverage the GPU. I do wish I could just as easily add drop shadows and glows to Unity on sprites and text. Hopefully that will come with time.
I can think of two reasons for higher-quality Flash games:
Counter-intuitively, it’s harder to make a finished game in Flash, so the developers who don’t know what they’re doing or aren’t dedicated enough are pretty quickly weeded out. Unity is easier, therefore every kid who strings some assets together can put it up on Kongregate
Generally speaking, Unity is designed for games of a much larger scale than most Flash games, so somebody who’s good at Unity is more likely to put their finished game on a mobile device or Steam (where they can make significantly more profit) than on a flash gaming portal.
In theory, you could create an effective vector rendering engine that does use the GPU. But that would be an awful lot of work, and would essentially commit the user to a specific graphical style. The current rendering pipeline is much more geared toward polygons and pixels, both on the hardware and software side of things. For most developers it simply isn’t worth it.
It is unlikely that we will see anyone go all-in on a vector-focused rendering engine any time soon.
I’m not sure it has as much to do with vector graphics as it has to do with the number of developers making games for those sites using each technology and when they were using it. It can take a long time to make a good flash game, just like any game. So the really good games you see on Kongregate right now have been in development for 1, 2… maybe 3 years. If you started a major title intended for web portals, flash was still the best choice 2 or 3 years ago. The Unity tools were a lot rougher then as well (and still are in some regards).
For example, I’ve made my share of top tier flash games (Chopraider, and Creeper World games) but I switched to Unity 3 years ago. Just next week a Creeper World 3 teaser game will go up on Kongregate. It’s in Unity and will use the Unity web player (for as long as Google deems fit).
So the really quality games are always going to be a trailing indicator of the platform technology. Were Google not killing the web player, you might have really started to see Unity web gaming take off this year and next. The 2d tools, uGUI, all of those things would start to converge and many more top tier games would show up on the web portals. But alas, Google is going to reset the clock on that by years when they kill the Unity web player. No web portal game developer (who runs a business) is going to hold their breath waiting on webgl and asm.js export tools to work right.
So, long story short… look at the developer population for each technology, not the technology, and you can almost always explain the quality of the resulting products. (I feel like I should start chanting “Developers!, developers!, developers!..” now
And with the speed of hardware, what could be accomplished with vectors, can be effectively accomplished with polys.
On a somewhat related note, there is pretty killer drawing/painting app called Mischief (http://www.madewithmischief.com/). It uses the GPU to render for some pretty fancy abilities.
Scaleform will allow you to do that, but not many people are using it at the moment (no reviews on the asset store). This could be for a few reasons:
It’s expensive, at $300 per platform.
It’s owned by Autodesk, which is often viewed negatively by indie developers.
It’s not the “Unity way”. In other words, things aren’t controlled through the project, hierarchy, and inspector windows. NGui and Daikon Forge are much more popular than Noesis and Coherent UI, even though they are of similar quality.
Scaleform is typically used for just high quality game UIs. But in theory you could do other SVG related stuff with it not related to UI.
Companies typically have to put some time into establishing a workflow around Scaleform. It gives you good freedom, but not as much out-of-the-box as other packages.
Very true. While you can’t get the same level of smooth curves with polys, the cost of polys these days is negligible. You can throw enough polys at the problem to make it look smooth enough. Clean curves are the real “advantage” of vectors. That, and insanely tiny file sizes compared to pixel graphics. Back in the day hard poly limits for models was normal. With modern GPUs, basic polygons are an afterthought. They can chew up and spit out millions of the things in a millisecond. More if they are being rendered with very basic shaders.
Personally, I love vectors. I got my start in Flash, and really enjoy the nice clean lines and curves that the style provides. But I can also understand why no engine developers are focusing on vectors. If you wanted to achieve a similar style with some limitations, you could pull it off using polygons.
You can apply a shader to draw a curve within a single triangle with perfectly smooth antialiasing. e.g. you could simply process the distance between the texture coordinate and 0,0 with a slight smoothing at the contour to render an absolutely perfect portion of a circle within a triangle. My gradient shader pack does this, for example, to render circular gradients in realtime. Microsoft also has a patented method of drawing a perfect bezier curve within a triangle. Tweaking it and getting the antialiasing right is a little fiddly though since it needs to happen in screenspace using ddx ddy instructions which may not be supported.
Still, you can also do pretty smooth looking curves just by using a texture containing an image of a curve.
Or you can break a curve into lots of triangles (somewhat like RageSpline does) which produces a very high polygon count but it can pass for smooth curved surfaces.
On a related note, during last unity devs hackweek, a few of us figured experimenting with how vector rendering/importing and api integration could look like; we made long days to get to this; (this was the video we used for the friday presentation of all hackweek projects)
Of course, that implementation is not even close to anything shippable; (an experiment with a few factors of vector assets) and nobody is pursuing this currently…but as an experiment it gave us quite a few insights on how it could be done and where the pains would be. We started with the simple idea of just making an importer for textures and 2d sprites, but as the week progressed we where able to experiment with more ways of integrating vector rendering.
Don’t take this video as “oh, but they are working on it”. A lot of the actual work that would need to be done is actually rather painful. Think about formats (and all their edge cases), fidelity, workflow (for example with external tools; which is why we picked specific svgs and skipped that issue), futher integration with other unity subsystems. This is not an undertaking that is trivial and as it is equally not a feature request that we hear frequently; as such, not something we are actively pursuing today.
Easily drag and drop your SVG files directly in your scene. SVG importer fully mimics Unity native sprites so your team doesn’t have to learn anything new. Extremely fast and simple workflow for rapid level design. Resolution independent graphics ready for retina displays and full support of the new Unity UI system.
SVG importer automatically converts SVG files into highly optimised meshes and does fully supports both
Hi, I stopped “spamming” two weeks ago. I posted it only on about 5 threads. Sorry that you found so many results about SVG Importer. The product now is waiting just for Unity submission approval. I hope it will reduce your anger a little.