Accelerated 2D APIs [was: Re: hw filled polygons & hw l ines]

[inline]

[snip>

3D is where serious work is spent on APIs and fast drivers -
the rest is “just
for buttons and text”, and no one seems to care enough to
even make sure that
there is a real API for 2D acceleration. Many cards have great 2D
acceleration, but I have yet to see a single API/driver combo
that takes
advantage of more than a fraction of it.

True. API/driver combo is the key issue here. Many cards support 2D accel.
in hardware, but we depend on what actually gets implemented into the
driver, and that’s where the problem is. DirectX e.g. has mainly
concentrated on 3D features so you can have all that potential raw Geforce
power in your machine, but the only 2D stuff you can do in DirectX is
straight or colorkeyed blitting …

[snip]
//David

Dominique> -----Original Message-----

From: David Olofson [mailto:david.olofson at reologica.se]

Mon, 04 Dec 2000 Dominique Biesmans wrote:

[inline]

[snip>

3D is where serious work is spent on APIs and fast drivers -
the rest is “just
for buttons and text”, and no one seems to care enough to
even make sure that
there is a real API for 2D acceleration. Many cards have great 2D
acceleration, but I have yet to see a single API/driver combo
that takes
advantage of more than a fraction of it.

True. API/driver combo is the key issue here. Many cards support 2D accel.
in hardware, but we depend on what actually gets implemented into the
driver, and that’s where the problem is. DirectX e.g. has mainly
concentrated on 3D features so you can have all that potential raw Geforce
power in your machine, but the only 2D stuff you can do in DirectX is
straight or colorkeyed blitting …

Yes… However, when speaking about 2D acceleration and games, isn’t 3D
acceleration actually more suitable, even for 2D games? (Perhaps not on lower
end machines, lacking usable 3D acceleration, but that would be really low
end by now…)

I mean, if you can’t control the refresh rate, but still want game console class
animation, there’s only one realistic way to go: sub pixel accurate rendering.

That’s what you get with 3D acceleration, but AFAIK not with 2D acceleration.
You also get sub pixel accurate rendering of sprite edges, plus antialiazing and
translucency, if you’re using the alpha channel for sprite transparency. Then
you get rotation and transformation and a bunch of other cool stuff as an extra
bonus, at least on the more powerful 3D cards.

Sure, most 2D games could be implemented nicely with software rendering, and
thus run on lower end machines as well, at least with very low resolutions.
(Although graphics accelerators usually deliver better price/performance than
CPUs.) But my point is that if we’re going for h/w acceleration anyway (because
we need the power to do what 2D graphics should be in 2000+ - why else?), is
there really much point in messing with the driver layer to create a new 2D API
standard on that level…?

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’> > -----Original Message-----

From: David Olofson [mailto:david.olofson at reologica.se]

[snip]

Yes… However, when speaking about 2D acceleration and
games, isn’t 3D
acceleration actually more suitable, even for 2D games?
(Perhaps not on lower
end machines, lacking usable 3D acceleration, but that would
be really low
end by now…)

[snip]

//David

[snip]

Yes, but if you make that step (using a 3D API for a 2D game) I think you
might as well jump directly to a ‘real’ 3D game even if the concept is
2D-ish. E.g. a 2D platform game with all characters/environment/etc…
rendered in 3D. This way you can throw in nice & cheap special FX (like
particle systems, dynamic lighting, …) without much trouble. And you don’t
have to pre-render all graphics. (I believe consoles games do this, right?)

But, my original point was that it would be hard to make features that are
(on consumer hardware) usually only available in a 3D context accessible
trough a 2D API (like SDL) in a clean & portable way…

Dominique> -----Original Message-----

From: David Olofson [mailto:david.olofson at reologica.se]

Tue, 05 Dec 2000 Dominique Biesmans wrote:

[snip]

Yes… However, when speaking about 2D acceleration and
games, isn’t 3D
acceleration actually more suitable, even for 2D games?
(Perhaps not on lower
end machines, lacking usable 3D acceleration, but that would
be really low
end by now…)

[snip]

//David

[snip]

Yes, but if you make that step (using a 3D API for a 2D game) I think you
might as well jump directly to a ‘real’ 3D game even if the concept is
2D-ish. E.g. a 2D platform game with all characters/environment/etc…
rendered in 3D.

There’s a great deal more maths and logic involved in a real 3D engine than a
2D engine, and you also lose some interesting shortcut possibilities that are
based on the flat (or possibly isometric) view of a 2D scene.

Note: I don’t consider a “3D” engine without scene and object rotation and a
3D world a real 3D engine. Isometric and parallax techniques have been
around for ages, and you can actually do them better with a
specialized 2D engine than with any real time 3D engine.

This way you can throw in nice & cheap special FX (like
particle systems, dynamic lighting, …) without much trouble.

I don’t see how that requires a real 3D API. (Anyway, I’m thinking about using
the 3D API on the rasterizing level; not full OpenGL 3D.)

And you don’t
have to pre-render all graphics.

You don’t have to either way.

(I believe consoles games do this, right?)

Most of them, but not all. As to computers, some Amiga and Atari ST games
used 2D vectors for character animation in platform games, and I beleive there
are more of those on the PC. However, AFAIK, none of these do anything that
would benefit significantly from a real 3D engine.

An interesting approach would be to use a more dynamic character animation
system, more like in the latest 3D games. (The old 2D games just used 2D
vectors as a data compression method - the animation data was pre-generated.)
Still, this has nothing to do with 3D. :slight_smile:

But, my original point was that it would be hard to make features that are
(on consumer hardware) usually only available in a 3D context accessible
trough a 2D API (like SDL) in a clean & portable way…

Yes. Forget about direct screen buffer access and that kind of stuff.

Pixel effects (in the form of procedural sprites), procedural tile and sprite
generation etc is another matter - no serious problems there. (Working -
although very, very slowly - on such a system.)

Basically, it would be more like OpenGL than any normal 2D API. Now, this is
required for serious and portable acceleration anyway, so what’s the big deal?
You just cannot mix direct access and h/w acceleration without serious
restrictions (if at all possible) on most hardware and driver archs - that’s not
an API level problem.

I’m not really seeing any serious problems here, provided we don’t have to
emulate some existing 2D API designed for 80’s hardware or for software
rendering.

If OpenGL works, why not “Open2DGL”?

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’> > -----Original Message-----

From: David Olofson [mailto:david.olofson at reologica.se]

[snip]
There’s a great deal more maths and logic involved in a real
3D engine than a
2D engine, and you also lose some interesting shortcut
possibilities that are
based on the flat (or possibly isometric) view of a 2D scene.

Note: I don’t consider a “3D” engine without scene and object
rotation and a
3D world a real 3D engine. Isometric and parallax
techniques have been
around for ages, and you can actually do them better with a
specialized 2D engine than with any real time 3D engine.

This way you can throw in nice & cheap special FX (like
particle systems, dynamic lighting, …) without much trouble.

I don’t see how that requires a real 3D API. (Anyway, I’m
thinking about using
the 3D API on the rasterizing level; not full OpenGL 3D.)

And you don’t
have to pre-render all graphics.

You don’t have to either way.

Let me explain. Let’s say I want to write a topdown scroller like ‘1942’. I
have this 3D model of the plane I want to display.

If I go the 2D way I render the plane in various positions (tilting to the
left, tilting to the right, multiple steps of a short loop (in 1942 you can
make a loop to dodge the bullets), multiple steps of the plane, burning &
tumbling down. After a while I have a few dozens of images and I can animate
my plane in all the various ways I want.

Now, if I go the 3D way, I can simply use openGL to draw my plane in any of
the above postions (with simple rotation & translation operations), any time
I want… I can even blend the animations. E.g., while my plane is tumbling
down, I can still tilt left/right etc… (bad example, why would I want to
do that :slight_smile: ). This is what I meant with ‘you don’t have to pre-render all
graphics’. Can you see this does simplify things?

And yes, if you use the 3D api for rotations, scaling, blending etc… you
can also shortcut some prerenderings, but you’d also have to deal with some
3D math in that case …

[snip]

Basically people think very black-white about 2D versus 3D. Actually, 2D
games don’t really exist, they are just isometric views along a certain
axis, while movement is usually restricted to one plane (view axis often
perpendicular on that plane).

Of course, I’m not saying either way is better than another, I’m just
thinking out loud here. I’m still trying to find out how I should tackle
this (2D-ish) game I’m planning to write right now :slight_smile:

//David

Dominique> -----Original Message-----

From: David Olofson [mailto:david.olofson at reologica.se]

Actually, 2D
games don’t really exist, they are just isometric views along a certain
axis, while movement is usually restricted to one plane (view axis often
perpendicular on that plane).

Actually, 3D games don’t really exist. They are just 2D games whose
visuals are rendered in real time by projectively applying an
underlying model inspired by Euclidian spatial geometry.

Of course, I’m not saying either way is better than another, I’m just
thinking out loud here. I’m still trying to find out how I should tackle
this (2D-ish) game I’m planning to write right now :slight_smile:

Then it’s about time I say it: 2D games are better than 3D games.
So, now that it’s settled, let’s go back to writing (and above all,
designing) cool games. :slight_smile:

Tue, 05 Dec 2000 Dominique Biesmans wrote:
[…]

Let me explain. Let’s say I want to write a topdown scroller like ‘1942’. I
have this 3D model of the plane I want to display.

If I go the 2D way I render the plane in various positions (tilting to the
left, tilting to the right, multiple steps of a short loop (in 1942 you can
make a loop to dodge the bullets), multiple steps of the plane, burning &
tumbling down. After a while I have a few dozens of images and I can animate
my plane in all the various ways I want.

Ok; not the way to go if you have a 3D accelerator around the corner of that
bus…

Now, if I go the 3D way, I can simply use openGL to draw my plane in any of
the above postions (with simple rotation & translation operations), any time
I want…

Yep. That’s another one of the bonuses of using a 3D accelerator. :slight_smile:

I can even blend the animations. E.g., while my plane is tumbling
down, I can still tilt left/right etc…
(bad example, why would I want to
do that :slight_smile: ).

Because it would look cool! :slight_smile:

Seriously, not needing to hardcode every single animation expands the game
design possibilities a great deal. Imagine a 2D platform fighting game (Double
Dragon style) where all characters are actually 3D or “semi 3D”, with skeleton
based or similar animation system… You could actually control every single
kick or blow with unlimited accuracy - and the silly "flip over and fly away"
style animations would be replaced with apparently physically correct animation.

This is what I meant with ‘you don’t have to pre-render all
graphics’. Can you see this does simplify things?

Yes, at least for games that would benefit in was like in the above examples.
However, do keep in mind that rendering 3D models with the same quality and/or
feel as pre-rendered (raytraced, GIMPed or pixeled) is very hard, even
disregarding that you have to keep the polygon count down. (You generally have
lots of models visible at the same time in a 2D game - and you have no LOD:
Allways rendering with full detail!)

And yes, if you use the 3D api for rotations, scaling, blending etc… you
can also shortcut some prerenderings, but you’d also have to deal with some
3D math in that case …

Well, this is basically a performance issue. If the 3D API is poorly optimized,
you can’t use it for heavy transformations, while if it’s hardware accelerated
(SIMD/array processor on the video card, separate card or as a CPU extension),
it would be a waste (and probably a slow-down) not to use it.

And then we have Direct3D Retained Mode… (Which is more similar to OpenGL
than Direct3D Direct Mode, but totally useless because of it’s total lack of
performance and control. Oh well, that’s what those who tried all three use to
say - I haven’t touched Direct3D at all myself, and probably never will.)

Basically people think very black-white about 2D versus 3D. Actually, 2D
games don’t really exist, they are just isometric views along a certain
axis, while movement is usually restricted to one plane (view axis often
perpendicular on that plane).

Yes. The main distinction (if any) IMHO is that true 3D requires texture
transformation (or just filled polygons…) instead of 1:1 blitting of
predrawn/rendered graphics. Of course, with this definition, many games cross
the boundaries slightly, which makes it even more obvious that there is no
strict distinction.

That’s why I think building on top of the same APIs and hardware that 3D games
use makes a great deal of sense.

Of course, I’m not saying either way is better than another, I’m just
thinking out loud here. I’m still trying to find out how I should tackle
this (2D-ish) game I’m planning to write right now :slight_smile:

Well, for me, the choice is easy. (I’m also into doing some game coding - don’t
know if I’ll ever get the time to do anything playable, though.)

First, we have this frame rate deal. One could do some hacking to allow users
to try out a suitable modeline when installing the game, but that’s not really
solving anything, as it would limit both the quality of animation and the
display quality. Design for 60 Hz, and the user can choose "stroboscope mode"
or “ghost animation mode” (120 Hz, “double exponation”)… Design for 90 Hz,
and some won’t be able to play your game at all, at least if it’s using a
resolution that’s adequate for computer monitors.

Besides, if all of the above was solved, you can still only get certain
movement speeds to be absolutely smooth! (The scrolling background would be the
first priority.) Slow parallax scrolling levels will blur somewhat no matter
what.

Now, with sub-pixel accurate rendering, all of the above problems are gone.
Just make sure the refresh rate isn’t higher than the frame rate you can keep
up (if you can run full frame rate on the system in question at all - if not,
it just can’t be helped anyway), and then “sample” object and screen positions
(with interpolation or acurate calculations) from the physics engine at the
exact rendering frame rate. Everything will be perfectly smooth regardless of
refresh rate and speed, as long as the machine is fast enough.

As full screen sub-pixel accurate rendering is virtually impossible to do on
current CPUs in decent resolutions in full frame rate (ok, I have some ideas for
that too - interested?), the only alternative is to use 3D acceleration.

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’

Tue, 05 Dec 2000 Mattias Engdeg?rd wrote:

Actually, 2D
games don’t really exist, they are just isometric views along a certain
axis, while movement is usually restricted to one plane (view axis often
perpendicular on that plane).

Actually, 3D games don’t really exist. They are just 2D games whose
visuals are rendered in real time by projectively applying an
underlying model inspired by Euclidian spatial geometry.

That’s another way to think about it. And many games use both prerendered and
real time rendered graphics regardless of being called 2D or 3D games. (Some
3D games use prerendered billboards/sprites instead of models all of the time
(Doom, Doom 2, Duke Nukem…), or for distant objects. Can’t think of a 2D
game that uses real time rendered 3D models right now, but I’d be surprized if
it hasn’t been done.)

Of course, I’m not saying either way is better than another, I’m just
thinking out loud here. I’m still trying to find out how I should tackle
this (2D-ish) game I’m planning to write right now :slight_smile:

Then it’s about time I say it: 2D games are better than 3D games.

How did you come to that conclusion…? :slight_smile:

So, now that it’s settled, let’s go back to writing (and above all,
designing) cool games. :slight_smile:

Ok, there’s a good point, anyway! :slight_smile:

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’

I would have thought a simpler/better method would be to write a small
software render. Nothing fancy would be needed, just some triangle fillers and
a bit of math. Plus you don’t alienate all the non-OpenGL people just to draw
a few sprites.On Tue, Dec 05, 2000 at 03:57:08PM +0100, Dominique Biesmans wrote:

Let me explain. Let’s say I want to write a topdown scroller like ‘1942’. I
have this 3D model of the plane I want to display.

If I go the 2D way I render the plane in various positions (tilting to the
left, tilting to the right, multiple steps of a short loop (in 1942 you can
make a loop to dodge the bullets), multiple steps of the plane, burning &
tumbling down. After a while I have a few dozens of images and I can animate
my plane in all the various ways I want.

Now, if I go the 3D way, I can simply use openGL to draw my plane in any of
the above postions (with simple rotation & translation operations), any time
I want… I can even blend the animations. E.g., while my plane is tumbling
down, I can still tilt left/right etc… (bad example, why would I want to
do that :slight_smile: ). This is what I meant with ‘you don’t have to pre-render all
graphics’. Can you see this does simplify things?


Martin

Bother said the Moderator, &$&^%NO CARRIER

Well theres personal tastes to consider as well. 3D characters are chunky and
badly textured. Graphics wise, gimme Street Fighter II’s handdrawn look over
Tekken’s pancake faced, bandy legged look, anyday.On Tue, Dec 05, 2000 at 05:25:27PM +0100, David Olofson wrote:

Seriously, not needing to hardcode every single animation expands the game
design possibilities a great deal. Imagine a 2D platform fighting game (Double
Dragon style) where all characters are actually 3D or “semi 3D”, with skeleton
based or similar animation system… You could actually control every single
kick or blow with unlimited accuracy - and the silly "flip over and fly away"
style animations would be replaced with apparently physically correct animation.


Martin

Bother said the Moderator, &$&^%NO CARRIER

Have you ever seen Soul Calibur on the Dreamcast? I think the days where 3D
graphics look good enough have come. I think till the N64 the 3D graphics could
be compared to 2D graphics on console up to the SNES, but now they have as much
detail as the 2D counterparts and have much smoother animations. But as always
it’s just a matter of taste, isn’t it?

Proff–
Florian ‘Proff’ Schulze - @Florian_Schulze
Homepage: - http://proff.fly.to
PGP-Key available from - http://www.keyserver.net/en/

Well theres personal tastes to consider as well. 3D characters are chunky and
badly textured. Graphics wise, gimme Street Fighter II’s handdrawn look over
Tekken’s pancake faced, bandy legged look, anyday.


Martin

Bother said the Moderator, &$&^%NO CARRIER

Tue, 05 Dec 2000 Martin Donlon wrote:> On Tue, Dec 05, 2000 at 03:57:08PM +0100, Dominique Biesmans wrote:

Let me explain. Let’s say I want to write a topdown scroller like ‘1942’. I
have this 3D model of the plane I want to display.

If I go the 2D way I render the plane in various positions (tilting to the
left, tilting to the right, multiple steps of a short loop (in 1942 you can
make a loop to dodge the bullets), multiple steps of the plane, burning &
tumbling down. After a while I have a few dozens of images and I can animate
my plane in all the various ways I want.

Now, if I go the 3D way, I can simply use openGL to draw my plane in any of
the above postions (with simple rotation & translation operations), any time
I want… I can even blend the animations. E.g., while my plane is tumbling
down, I can still tilt left/right etc… (bad example, why would I want to
do that :slight_smile: ). This is what I meant with ‘you don’t have to pre-render all
graphics’. Can you see this does simplify things?

I would have thought a simpler/better method would be to write a small
software render. Nothing fancy would be needed, just some triangle fillers and
a bit of math. Plus you don’t alienate all the non-OpenGL people just to draw
a few sprites.

The point (IMHO) was not just to render sprites in real time, but also to do it
with almost the same quality that you can get with pre-rendered sprites. That
requires alpha blending, lighting, antialiasing (done using alpha, or by
downscaling after rendering) and other stuff that’s quite heavy to do in
software. Remember that we’re talking about full frame rate here… (I am, at
least. :slight_smile:

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’

Tue, 05 Dec 2000 Martin Donlon wrote:

Seriously, not needing to hardcode every single animation expands the game
design possibilities a great deal. Imagine a 2D platform fighting game (Double
Dragon style) where all characters are actually 3D or “semi 3D”, with skeleton
based or similar animation system… You could actually control every single
kick or blow with unlimited accuracy - and the silly "flip over and fly away"
style animations would be replaced with apparently physically correct animation.

Well theres personal tastes to consider as well. 3D characters are chunky and
badly textured.

Well, yes, in 3D games, but that’s because the code has to be more generic -
and beause you have a large 3D world that also needs it’s share of polys.

Graphics wise, gimme Street Fighter II’s handdrawn look over
Tekken’s pancake faced, bandy legged look, anyday.

The Tekken engine is from the dark ages of rudimentary 3D acceleration! :slight_smile:

Have a look at Quake III Arena. Those characters look solid and detailed
enough for me, especially considering that it’s a full 3D game with full 3D
gameplay…

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’> On Tue, Dec 05, 2000 at 05:25:27PM +0100, David Olofson wrote:

Martin Donlon wrote:

Well theres personal tastes to consider as well. 3D characters are chunky and
badly textured. Graphics wise, gimme Street Fighter II’s handdrawn look over
Tekken’s pancake faced, bandy legged look, anyday.

Somebody pass me the syrup cuz I see some motha-oompin pancakes!

http://www.tekkenzaibatsu.com/cgi-bin/image.cgi?/tekkentag/info/ps2-7.jpg
http://www.tekkenzaibatsu.com/cgi-bin/image.cgi?/tekkentag/info/ps2-1.jpg

Wed, 06 Dec 2000 Mark Kimsal wrote:

Martin Donlon wrote:

Well theres personal tastes to consider as well. 3D characters are chunky and
badly textured. Graphics wise, gimme Street Fighter II’s handdrawn look over
Tekken’s pancake faced, bandy legged look, anyday.

Somebody pass me the syrup cuz I see some motha-oompin pancakes!

http://www.tekkenzaibatsu.com/cgi-bin/image.cgi?/tekkentag/info/ps2-7.jpg
http://www.tekkenzaibatsu.com/cgi-bin/image.cgi?/tekkentag/info/ps2-1.jpg
http://ps2media.ign.com/media/news/image/tekken/ttt151.jpg
http://ps2media.ign.com/media/news/image/tekken/ttt153.jpg

hehe

I guess these shots aren’t from the version Martin was thinking about…

Or we’re the ones with very low standard! :wink: These characters are quite a bit
more detailed than the ones in Quake III. (However, the shots don’t tell how
carefully the characters are animated…)

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter | --------------------------------------> david at linuxdj.com -’

David Olofson wrote:

I would have thought a simpler/better method would be to write a small
software render. Nothing fancy would be needed, just some triangle fillers and
a bit of math. Plus you don’t alienate all the non-OpenGL people just to draw
a few sprites.

The point (IMHO) was not just to render sprites in real time, but also to do it
with almost the same quality that you can get with pre-rendered sprites. That
requires alpha blending, lighting, antialiasing (done using alpha, or by
downscaling after rendering) and other stuff that’s quite heavy to do in
software. Remember that we’re talking about full frame rate here… (I am, at
least. :slight_smile:

OK - I have managed to keep myself quiet for most of this thread but here it
comes…

I am not a math hacker, ain’t no Tom Hammersely, (although I have been known to
write a 3d engine or two) but why go through all the OpenGL business. As I have
learned over the years, a game written with OpenGL is just another way of saying a
game that David Snopek can’t play with any decent, PLAYABLE amount of speed. I
have (and problably will continue to) own bottom of line machines because of money
(that is unless any of my crazy free software ventures actually make some money).
For god’s sake i still use my Commadore 64 occasionally.

Someone mentioned that pre-rendered graphics are hard to make. If you were able to
assemble a good 3d model and animate it well, I can assure you that pressing the
render button is very simple. For the love of god make games that I can play!!
Now don’t get me wrong, hardware acceleration is good - but i don’t have it and I
don;t think I am in a minority. Using (hardware) 3d rendering in an essentially 2d
game, like the one you decribed, decreases your target audience by at the very
least one :slight_smile:

Now a software 3d engine is a different story. You cheat in a lot of ways,
including in the three you listed above: alpha blending, lighting, and
anti-aliasing. Maybe not by using the actual concepts but by simulating their
appearance. Now I am not going to go into how this is done (I’ll leave that up to
guys like Tom Hammersely and John De Goes) but lets just say that theres a little
"++" on the “audience_size” if you know what i mean :slight_smile:

I hope I didn’t offend anyone too badly…

    -- David Snopek

David Olofson wrote:

I would have thought a simpler/better method would be to write
a small software render. Nothing fancy would be needed, just
some triangle fillers and a bit of math. Plus you don’t
alienate all the non-OpenGL people just to draw a few sprites.

The point (IMHO) was not just to render sprites in real time, but
also to do it with almost the same quality that you can get with
pre-rendered sprites. That requires alpha blending, lighting,
antialiasing (done using alpha, or by downscaling after
rendering) and other stuff that’s quite heavy to do in software.
Remember that we’re talking about full frame rate here… (I am,
at least. :slight_smile:

OK - I have managed to keep myself quiet for most of this thread
but here it comes…

I am not a math hacker, ain’t no Tom Hammersely, (although I have
been known to write a 3d engine or two) but why go through all the
OpenGL business. As I have learned over the years, a game written
with OpenGL is just another way of saying a game that David Snopek
can’t play with any decent, PLAYABLE amount of speed. I have (and
problably will continue to) own bottom of line machines because of
money (that is unless any of my crazy free software ventures
actually make some money). For god’s sake i still use my Commadore
64 occasionally.

Someone mentioned that pre-rendered graphics are hard to make. If
you were able to assemble a good 3d model and animate it well, I
can assure you that pressing the render button is very simple. For

Indeed, but it uses up a great deal of memory to make it smooth, and
even more to add more dimensions to the animation, such as allowing
certain characters to walk (animation) in any direction (rotation).

However, why not render the graphics when installing the game, as a
low end of a very, very scalable engine? Software OpenGL rendering to
file would be the obvious choice, if the higher end game engine is
based on OpenGL.

the love of god make games that I can play!! Now don’t get me

Easy…! :slight_smile:

The game I started porting to SDL is originally a 320x240 256 color
game, which easily ran at full frame rate (60 FPS) even on 486/33
machines with VGA cards too slow to blit a full screen in one frame.
(Hardware scrolling + tripple buffering…)

I’d guess it should be playable on almost anything that’s still
alive, even after removing the hardware scrolling. :slight_smile:

wrong, hardware acceleration is good - but i don’t have it and I
don;t think I am in a minority. Using (hardware) 3d rendering in

Ok, what kind of card do you have? No 3D acceleration at all, or
just no interpolation, alpha and that kind of stuff? In the latter
case, OpenGL would still be a great deal faster than software
rendering (provided you stay away from the non-accelerated features,
of course), unless the CPU is a generation or two newer than the card.

I played some with some OpenGL code on my Mach64 based AGP card at
work, and it seems to be pretty capable in moderate resolutions, even
with multiple full screen alpha blended polygons. I think my game(s)
would be fairly playable on that kind of hardware, as well as similar
with PCI - doesn’t matter as I’m not going to require massive
sysRAM<->VRAM traffic; probably not even caching.

That’s still dog slow compared to the G400 MAX in this machine.

The cheapest 3D card you can get would probably be something S3
based. Does anyone know if those have alpha, bilinear filtering
etc…?

an essentially 2d game, like the one you decribed, decreases your
target audience by at the very least one :slight_smile:

Probably by more, as many 3D games really require higher frame rates
than 3D games to be playable. Thus, 2D engines probably have to be
either simpler and faster, or more scalable than 3D engines.

(Ok, Quake III Arena seems to suffer as soon as you go below some 50
Hz, but that is an extremely fast 3D game.)

Now a software 3d engine is a different story. You cheat in a lot
of ways, including in the three you listed above: alpha blending,
lighting, and anti-aliasing. Maybe not by using the actual
concepts but by simulating their appearance.

Yes, dithering effects, LUTs, abuse of MIP-maping etc etc. Not
beautiful, but at least, it makes the games playable on low end
hardware.

Now I am not going to
go into how this is done (I’ll leave that up to guys like Tom
Hammersely and John De Goes) but lets just say that theres a little
"++" on the “audience_size” if you know what i mean :slight_smile:

I hope I didn’t offend anyone too badly…

No problem - I like flexible designs, and extremely scalable game
engines certainly call for them. :slight_smile:

//David

.- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' .- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -'On Friday 08 December 2000 03:46, David Snopek wrote:

“++” on the “audience_size” if you know what i mean :slight_smile:

Hehe. Don’t you mean “sizeof(audience)”? :wink:

-bill!

Fri, 08 Dec 2000 William Kendrick wrote:

“++” on the “audience_size” if you know what i mean :slight_smile:

Hehe. Don’t you mean “sizeof(audience)”? :wink:

Well, we don’t have dynamic size types in C, so I guess audience_size as a
variable would be more logically correct - unless you can motivate why the
World should require a recompile after the change. :wink:

//David

…- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------> http://www.linuxaudiodev.com/maia -' ..- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |--------------------------------------> david at linuxdj.com -’