2D revival! Let's talk about vector based graphics

PARANOiA

Veteran
Hopefully this is as good a hope as any for a 2D graphics engine thread on B3D.

Following some of the XNA stuff that's been bandied about at GDC, I figured I'd get off my butt and start putting together a small game based on a bunch of ideas I've had for a few years now.

Given that I've never actually built a game before - but I do have a little 3D coding experience in Open GL - I thought I'd tackle it light by designing a simple 2D engine that was vector-based. Many years ago now while studying I took a unit in SVG, and I'm hoping I can post some of "good bits" out of these type of images into a game.

What I'm basically looking to do is:
  • Build a vibrant looking game that scales well at various resolutions. The end goal is a look that will be appealing today and in 10 years time by allowing for scalability in the models
  • Natural fluid 2D animation... not just popping up different frames of a static image, but dynamically moving the coordinates of a character
  • Potentially add "2.5D" effects such as allowing baddies to be thown into the screen
I'm basically looking for a discussion on
  • How you recommend I start
  • Some possible examples of where this has been done well today
  • General thoughts on this concept as a whole
Cheers
 
For me, at this time, the game that matches this most closely is LocoRoco, except that it doesn't have any 2.5D effects - first time that I came across those, and still my favorite use of them, was in Pandemonium, one of the few games that I played through all (12) levels.


 
Last edited by a moderator:
The game seems cool, but the music really drives me crazy :)

I'd give it a 10/10 ... but then I actually liked the music. It's nice how it works with the game, when your blob grows and you split it up into a crowd of little loco rocos, they start to sing along as a chorus, very well done. Eurogamer kindof liked it too.
 
  • Build a vibrant looking game that scales well at various resolutions. The end goal is a look that will be appealing today and in 10 years time by allowing for scalability in the models
  • Natural fluid 2D animation... not just popping up different frames of a static image, but dynamically moving the coordinates of a character
  • Potentially add "2.5D" effects such as allowing baddies to be thown into the screen
Based on this requirement list, I'd say you're better off working with a basic 3D engine and just use flat polygons.

That way, you'll get the exact same results as if you'd have used a 2D vectorial engine, seeing that vector graphics are just primitives on a 2D space while 3D graphics are the same but on a 3D space (no hardware acceleration for curves. But you can cheat using detailed meshes), but you'll also get some major advantages such as having access to GPU acceleration
(cue the "what about VG + GPGPU" crowd)
, numerous 3D libraries and ressources, implement all the complex 3D effects you want, implement complex post-processing effects and, finally, you could leverage your OGL knowledge.

The only issue I'd see with the 3D engine route would be the content creation pipeline. You'd have to find a way to produce your artwork in a OGL/DX friendly format. There are a few VG-to-3D containers tools out there, it's just that I don't know how faithfully they reproduce the original material. Latest versions of vector editors do impressive things and last time I used one of these VG importers in a 3D editor, many moons ago, the results didn't make the orignials justice, to say the least.

One way around that potential issue (if this issue exists, since as I said, it's been a while since I checked these techs) would be to create your assests in a 3D editing solution... But it's doesn't sound pratical at all for complex vectorial drawings. Another solution would be to import your designs in the 3D editor by breaking them into smaller, simplier parts.

Of course, if you plan on having a graphic style akin of the one used in LocoRoco or Patapon, then creating your assets in a 3D editing solution would be definitely an option, just as I'm sure the most basic VG-to-3D container converters would produce satisfactory results.
 
I strongly recommend to everyone starting out in making games that they stick to 2D for at least the first few projects. 3D graphics and especially 3D gameplay increase the complexity tremendously and really don't add much value. You will get much better results for a given amount of effort focusing on strong art direction and design in a 2D game.
 
Doesn't that rather much depend on the kind of game you want to make?

Personally, I've got the feeling that these days it has become a lot less difficult to create a 3D game. And considering the OP's requirements, I do think that using 3D for 2D vector graphics is probably better, much as Farid's suggested. I'm thinking that LocoRoco does a similar thing, though I'm not sure of course.
 
sqrt[-1];1131937 said:
Have you considered that just about every flash game in existence is SVG based? I would start there.
I'm being pedantic, but that's incorrect. Both Flash and SVG are vector graphics but, IIRC, they use somewhat different representations.
 
Doesn't that rather much depend on the kind of game you want to make?

Personally, I've got the feeling that these days it has become a lot less difficult to create a 3D game. And considering the OP's requirements, I do think that using 3D for 2D vector graphics is probably better, much as Farid's suggested. I'm thinking that LocoRoco does a similar thing, though I'm not sure of course.

Doesnt that depend on how you define creating? Almost everyone could probably make a simple 2d engine and basic gameplay with lets say flash. Creating a 3d game would already requere alot more skills in programming and content creation.

As far as creating commercial games goes 2d might be harder these days. Relative that is. The guy who is working on that 2d ninja wii game said its hard to find capable art staff that is skilled enough to create good 2d content these days because everybody focus so much on 3d.

I wonder how much people still can make pixelart like in the old days, they must be very rare.
 
Doesn't that rather much depend on the kind of game you want to make?

The reason I encourage people to start out making 2D games is that beginners often set themselves up for failure becasue they want to make a mega-budget game with no budget. Frustration sets in quickly and leaves a trail of barely-started projects. If instead you shoot for the simplest thing that could possibly hold your interest, you will most likely accomplish it. From that first step you can learn and grow by trying to stay in "the zone" that lies in the exciting region between boredom and frustration. The first game I ever wrote was a pong clone. That was many years ago. Now I work on mega-budget titles and I'm still trying to convince the mega-budget teams that they would be a lot more effective if they simplified what they were trying to accomplish.

Personally, I've got the feeling that these days it has become a lot less difficult to create a 3D game. And considering the OP's requirements, I do think that using 3D for 2D vector graphics is probably better, much as Farid's suggested. I'm thinking that LocoRoco does a similar thing, though I'm not sure of course.

Using 3D hardware to make 2D graphics is a very good idea.
 
For simple, scalable 2D graphics I would recommend cubic hermite curves. They make it easy to allow both smooth and sharp connections between segments without the complexity of b-splines.

http://www.cubic.org/docs/hermite.htm

Build shapes out of hermite curves, then use hermite interpolation to blend between frames of control points for animation! One stop shop.

Exactly how to "Build shapes out of hermite curves" is a good question though... I'm not actually familiar with any vector graphics packages.
 
For simple, scalable 2D graphics I would recommend cubic hermite curves. They make it easy to allow both smooth and sharp connections between segments without the complexity of b-splines.

http://www.cubic.org/docs/hermite.htm
Hermite curves are, for all intents and purposes, directly equivalent to Beziers which are supported in common vector graphics systems, e.g. SVG and OpenVG (and probably also Flash).
 
Back
Top