Page 1 of 1

Suggestion: Isometric scaler

Posted: Sun May 01, 2005 10:05 am
by Crabowl
Tired of tilting your head 45 degrees to the left?

Yeah me too.

Why not make a scaler that rotates the screen 45 degrees to the right before the paperdolls and gumps are drawn. This would smooth the graphics like the rest of the shaders, and the world would look like U8, except nicer. Downside is that a whole lot more drawing must be done in the background, the mouse needs to be rotated as well, and sometimes more can be seen than originally was meant.

Anyway, that's just a suggestion just in case there's someone with too much free time...

Image

Re: Suggestion: Isometric scaler

Posted: Sun May 01, 2005 10:23 am
by SB-X
Hehe, I like this idea too. I suggested it might be a good idea a long time ago but don't have the time to actually add it. (IRC is probably where I mentioned this) You'd want to cache the tiles after rotating them for speed. It's not exactly a scaler but if we can call Exult3D an OpenGL scaler than why not this?
We can do this with U6 in Nuvie too, since it has a similiar perspective. Nobody should complain that it's not in the spirit/doesn't have the feel of the original perspective, since it would be completely optional.

Re: Suggestion: Isometric scaler

Posted: Sun May 01, 2005 12:50 pm
by Beryllium
You'll be suggesting freeing up the camera next, so that we can move it around, rotate and zoom.

A good idea, but one thing at a time. Personally, I'm looking forward to the 3-D project finishing the models so that I can really experience a new U7 perspective.

Re: Suggestion: Isometric scaler

Posted: Sun May 01, 2005 12:58 pm
by Tristan de Inés
Still, that "screenshot" looks awesomely cool.

Re: Suggestion: Isometric scaler

Posted: Mon May 02, 2005 12:00 am
by Andrea B Previtera
Devilishly simple: actually, in OpenGL this would be absolutely fast, linear and direct. Mind well, I am not talking of 3d. It would just be a matter of rendering the whole screen to a texture, apply it to a quad and render this quad tilted by 45°.

I looks so cool (and would look even cooler with OpenGl bilinear filtering) that I'd happily try to implement it if'd find some time to setup the exult compiling environment :\

Re: Suggestion: Isometric scaler

Posted: Mon May 02, 2005 1:57 am
by Alun Bestor
I agree actually - I'm more excited about such a feature than about a 3D version, simply because it's easier to implement and doesn't have a hill to climb to match the quality of the original graphics.

I have to say, I prefer U8's 30-degree isometric to UO's 45-degree - it looks more natural and less stretched. I imagine that would be much harder to implement effectively than a 45-degree rotation though.

Re: Suggestion: Isometric scaler

Posted: Tue May 03, 2005 1:46 am
by nex666
I was redoing some of the Ultima 7 graphics for my shard and realised that by rotating them 45 degrees they were in the same view as UO, so I rotated a whole picture and thought this exact same thing =)

Re: Suggestion: Isometric scaler

Posted: Tue May 03, 2005 1:57 am
by Tawn
That is so cool. It's such an amazing improvement.

I too believe that this would be an excellent (optional) addition to Exult.

Does anyone feel like taking this on?

Re: Suggestion: Isometric scaler

Posted: Tue May 03, 2005 5:52 am
by Andrea B Previtera
I am trying to.

Re: Suggestion: Isometric scaler

Posted: Tue May 03, 2005 7:53 am
by zosX
Andrea,

If you can feed me whatever source you come up with, I'd be happy to compile it for you over here. In fact, if you like I could set you up with access to my debian box so you could FTP and SSH in to it and compile it yourself. I don't know if you have a linux box running, but debian testing compiles exult pretty cleanly. If you do happen to have a linux box running, I'd be happy to help you get a toolkit running to compile exult in. I thought about trying to implement such a scaler myself, but I really have no experience in coding with opengl, but hey, I guess nothing is impossible. :P

All you would need to do is rotate the field 45 degrees and them draw objects. Since objects get rendered in different orders this may or may not be simple. For example, the horse in Trinsinc has some rendering issues, as the dirt is rendered after the horse, so it looks like the horse is walking around with dirt floating overhead.

Re: Suggestion: Isometric scaler

Posted: Tue May 03, 2005 11:29 pm
by Andrea B Previtera
Thanks for the assistance zosX! Anyway I've already set up a minimal MinGW environment thanks to that README.Win32 which I never noticed before (thanks Dominus ;))

To avoid those sorting problems you speak of, I think I am going for the "draw everything normally and THEN rotate the whole screen" way. Before embarking in the quest, anyway, I am writing a little dumb program which physically takes the exult screen, copies it and displays it in another window, rotated by 45 degrees. Just to see if it's really worth the pain :)

It should be available in a couple days... to Win32 users only.

Re: Suggestion: Isometric scaler

Posted: Wed May 04, 2005 1:50 am
by Crabowl
You're probably gonna see something like this:

Image


The easiest way to get rid of those black edges is to draw a 400x400 quad when using 340x240 screen resolution. I don't know how Exult does the drawing but since it's possible to play it on different resolutions, one might think it'd be possible to fake a 400x400 resolution, draw it on a texture, rotate and show it on a 320x240 screen.

The dark gray is the 320x200 as it is in U7, the gray is 320x240 and the pink is 400x400. Scaling the tiles 2x before drawing them to the texture might look even better.

Image


And this is how it looks on a 320x240 or on any 4x3 screen:

Image

Re: Suggestion: Isometric scaler

Posted: Wed May 04, 2005 10:06 am
by zosX
The Gumps rotated may be a problem. I would imagine the backpack at 45 degrees is not such a pretty sight. :)

Re: Suggestion: Isometric scaler

Posted: Wed May 04, 2005 1:33 pm
by Alun Bestor
Apart from the gumps, there's plenty of other things that shouldn't be rotated - such as the menus and all the game text, for example!

The solution would be to render the terrain and world objects in isometric, and then the overlays (gumps, text, sprites) unrotated in a separate pass. But then you may run into the problem that the screen coordinates for text and sprites do not appear in the correct place relative to the world objects!

Re: Suggestion: Isometric scaler

Posted: Wed May 04, 2005 2:35 pm
by Colourless
Exult really isn't designed to attempt this sort of thing. Adding in coordinate transformations will be a pain. Biggest problem is though, Exult assumes the viewable screensize is the same as the window size. Exult renders everything to a single buffer. So you'll need to create a second buffer and go through the code and make sure that the game is reading the right screensize for the right thing. That isn't a hard thing to do, just time consuming.

Of course like many things, this is something that Pentagram does differently. Everything is setup with it's own coordinate space. So we could rotate the screen and do all sorts of crazy things and it 'just works'.