Suggestion: Isometric scaler

NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
Forum rules
NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
Locked
Crabowl
Posts: 2
Joined: Thu May 14, 2020 1:34 pm

Suggestion: Isometric scaler

Post 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
Never argue with a fool. Someone watching may not be able to tell the difference.
SB-X
Posts: 980
Joined: Thu May 14, 2020 1:34 pm

Re: Suggestion: Isometric scaler

Post 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.
Beryllium

Re: Suggestion: Isometric scaler

Post 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.
Tristan de Inés

Re: Suggestion: Isometric scaler

Post by Tristan de Inés »

Still, that "screenshot" looks awesomely cool.
Andrea B Previtera

Re: Suggestion: Isometric scaler

Post 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 :\
Alun Bestor

Re: Suggestion: Isometric scaler

Post 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.
nex666
Posts: 23
Joined: Thu May 14, 2020 1:34 pm

Re: Suggestion: Isometric scaler

Post 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 =)
"So close to my mind and my heart, So far away from my arms and my body"
Tawn
Posts: 15
Joined: Thu May 14, 2020 1:34 pm

Re: Suggestion: Isometric scaler

Post 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?
[center][b]Exult Studio Guides[/b]
[url=http://esguides.com]ESGuides.com[/url]
- Studio and Usecode Guides -
- Mods and Patches Repository -

Usecode for Dummies - Chapter 3 - Now Available [/center]
Andrea B Previtera

Re: Suggestion: Isometric scaler

Post by Andrea B Previtera »

I am trying to.
zosX

Re: Suggestion: Isometric scaler

Post 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.
Andrea B Previtera

Re: Suggestion: Isometric scaler

Post 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.
Crabowl
Posts: 2
Joined: Thu May 14, 2020 1:34 pm

Re: Suggestion: Isometric scaler

Post 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
Never argue with a fool. Someone watching may not be able to tell the difference.
zosX

Re: Suggestion: Isometric scaler

Post by zosX »

The Gumps rotated may be a problem. I would imagine the backpack at 45 degrees is not such a pretty sight. :)
Alun Bestor

Re: Suggestion: Isometric scaler

Post 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!
Colourless
Site Admin
Posts: 731
Joined: Thu May 14, 2020 1:34 pm

Re: Suggestion: Isometric scaler

Post 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'.
Locked