Fixing Fonts/GFX

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
Dreded
Posts: 8
Joined: Sun Jan 09, 2022 7:24 am

Fixing Fonts/GFX

Post by Dreded »

Sorry for the long post, I would just like to understand decisions and make some headway on getting exult/ultima7 to be more accessible.

I appreciate the great efforts that have gone into exult, I don't think most people realize its not simply making the old game engine work with new hardware its an entirely new engine doing many things from scratch.

I would like to see Ultima VII and Exult continue to be used as time goes on but unfortunately lets be honest even exult is really starting to show its age and for most people just wanting to "Try something out" its quite cumbersome.

To this end I would love to get some insight on some of the design decisions and how hard they may be to overcome/re-write. First decision I just cannot wrap my head around(even when I first tried exult in 2005 or so) is why does the in game help menu and notepad which are part of the newer engine, not the original, use a scaled original font instead of using a TTF font or similar? Even back then the small black font(font 4 i think) was quite blurry but usable. Now its borderline illegible, the spellbook is even worse.

The scalers exult uses are fantastic and do an excellent job of scaling the graphics up not sure if the main font is scaled using these too but to my eyes its very legible even at 7x, if exult is to continue to be adopted by new users it needs to be more clear how to make it look right on a widescreen 1080p/1440p etc monitor, obviously the issue is that different people have different preferences but I would love to see a "widescreen" toggle that maybe suggests the overall best look(personally I run a Full Screen point scaler at 6x with game area set to auto and AR enabled on my 1440p monitor which gives minimal amount of extra game area) its been well over 10yrs since 1080p is the common resolution and having the defaults setup to look good on a 640x480 monitor seems an odd choice(nobody wants to play windowed).

I am getting way off track, so ill get to the point.

How hard would real fonts be to implement? I don't think the main font needs an update immediately but all the other fonts like the spell book etc could just use times new roman or arial and look almost as intended. Exult studio even has the ability to import TTF fonts problem is these are then scaled at whatever scaler you chose so if you import a new front at 16px high its to large and still blurry(it just now is blurry and takes up 1/2 the screen)

To make it so people could slowly update the GFX I would propose that exult look in the patch folder for a HD-Art folder and if it finds inside their all the frames needed to re-create an object/texture use that instead. As stated earlier the in game scaler is excellent so I would think the best way to go about this is have the game use its current scalers and use HD-Art when found. I would propose the HD-Art be scaled at 8x and downsized if someone want to run at 4x(rather than starting to make art at 4x and realize it looks bad in a few more years) but this could easily be done with different file naming conventions and people could work on 4x art or 8x art(or even 6x)

Not everyone playing would want/need this ability so the easiest way to make sure the art is of the right type/size is to have scripts that use the already made ExultStudio tools to extract it then use imagemagick or SDL to scale them to 4x or 8x so all one needs to do is open that file and draw over it to change that one image to high quality this new image can then be distributed in an art pack.. thus preserving playability with new and old assets as it will take years for all the art to be re-made... as we all know from past threads people lost interest quickly, but this would allow it to happen over time and be legal as you are never distributing the original artwork at all(people than want to edit it extract it using a tool and overwrite it with an original artwork)

so file structures may look like this...
  • Exult
    • Ultima7
      • Patches
        • HD-Art
          • Avatar
            • Frame0.png
            • Frame1.png
            • Frame2.png
            • Frame3.png
            • Frame4.png
            • Frame5.png
          • RoofTile1
            • Frame0.png
          • RoofTile2
            • Frame0.png
For the first while of this effort this would be enough modern HDs are more than fast enough to load single images as frames(can even preload and combine in engine to a sprite image on the fly) once enough artwork is made they could then be re-done as sprites then further as sprite packs. I think leaving them loose at first would be benificial for artists that don't(and don't want to) understand the tools to unpack/re-pack.
Last edited by Dreded on Mon Jan 10, 2022 3:12 am, edited 2 times in total.
Dreded
Posts: 8
Joined: Sun Jan 09, 2022 7:24 am

Re: Fixing Fonts/GFX

Post by Dreded »

One last quick thought, how would the engine handle having all the GFX re-sized at 4x replacing the originals then playing without a scaler(1x scale) would it be able to make sense of that?
Dominus
Site Admin
Posts: 5656
Joined: Thu May 14, 2020 1:34 pm

Re: Fixing Fonts/GFX

Post by Dominus »

game help menu and notepad: we used what was available directly in the game files and readable at the time.
We never added using ttf fonts directly in Exult and it was probably deemd to be too problematic at the time or too demanding of a rewrite. When parts of the Exult team created Pentagram we used our gained knowledge to make that a much better engine (e.g. ttf fonts...).

The default state of Exult could use an adaption to modern needs, you are right. But as the game originally uses 320x200 it would need to be a multiple of that, so the game is not cheating :)

Exult HD... there was a proposal by Marzo a long time ago with thoughts about implementing stuff. To play around a bit you can use the size patch by Malignant Manor on our downloads page, not what Marzo and you envision but to see how the engine handles it.

*I* think Exult needs to adapt more scalers and be better with those (and yes, ttf fonts would be good, too) and a way to scale the gumps independant of the game view (so when you opt for a bigger map, you still keep the gumps in a readable size).
--
Read the documentation and the FAQ! There is no excuse for not reading them! RTFM
Read the Rules!
We do not support Piracy/Abandonware/Warez!
Dreded
Posts: 8
Joined: Sun Jan 09, 2022 7:24 am

Re: Fixing Fonts/GFX

Post by Dreded »

With SDL its rather trivial to use a TTF font(about 4-10 lines), the issue would be having to add yet another layer to the game screen after scaling happens so the fonts don't get scaled(im honestly not familiar with SDL enough to know if this is difficult or hits performance) and since its been a long while since I have done any C++ programming on the regular(mostly python these days) it will be quite time consuming for me to try.. but I may give it a shot in a few weeks.
Dominus wrote:
Mon Jan 10, 2022 7:13 pm
*I* think Exult needs to adapt more scalers and be better with those (and yes, ttf fonts would be good, too) and a way to scale the gumps independant of the game view (so when you opt for a bigger map, you still keep the gumps in a readable size).
I would think letting SDL handle all the scaling might be a better course(I of course have no experience with scalers at all so don't listen to me), with modern monitors in full screen you should only ever be using the native resolution(in windows I actually think this is what happens and you get odd results with some combinations)

On an LCD There really shouldn't be any choice other than setting "Scale Multiplier" as setting 320x200 scaled 2x then stretching to 1920x1080 is either sub standard or no different from setting the scale to 6x in the first place.

Perhaps the correct course to appease CRT lovers(is this a big userbase of Exult these days? I would think someone die hard enough to have a CRT would be using original game engine) is on the Video options have a CRT checkbox that then unlocks the option for setting resolution otherwise use the native(desktop) resolution and only have scaler options.(of course this also relies on the FullScreen option)
Locked