Giter Site home page Giter Site logo

Comments (5)

res2k avatar res2k commented on September 2, 2024

rogue ships with basically copies of all the menu images in pics/. Since "game" files have precedence over "base" files, those "old" graphics shipped with rogue are used.

The idea is because games/mods typically ship graphics that differ from the original ones their versions should be preferred.

FWIW, for material images (wall textures, skins) there exists a mechanism to detect this case (game ships copy that is unmodified from base game) and "ignore" the game file in that case. That has not been adapted for UI images, but probably could.

from q2rtx.

res2k avatar res2k commented on September 2, 2024

Relevant code for material image "unmodified copy" handling:

static qboolean game_image_identical_to_base(const char* name)

There's also the wrinkle that some games ship with a copy of an image

from q2rtx.

abalfoort avatar abalfoort commented on September 2, 2024

Thanks. At first glance I see that it is by design:

in that case, _do_ use the material definition. */

However, this comment says differently:

If that is the case, ignore the game image, and just use everything

If it is by design it is better not to change its behavior. But I still find it confusing. Can't we at least make an exception for the menu items (m_banner* and m_main*)?

from q2rtx.

res2k avatar res2k commented on September 2, 2024

First off, be aware that this applies to material images only. Menu images will not go through that code path!
To deal with menu images the idea would have to be adapted somehow, also probably move to a more general place (images.c, probably).

FWIW, the behavior for material images is somewhat complicated because it has to cover a number of cases...

  1. There are material definitions (consider them appearance options for RTX mode) for a lot of skins and wall textures in the base game (baseq2). They're assumed to look "better" than the default pcx or wal files, so use them.
  2. However, if you're using another game/mod/mission pack, and they replace a skin or wall texture, the replaced version should be used; otherwise, the appearance wouldn't be right with the explicit material definition, so don't use that.
  3. But, there is the special case where eg rogue and xatrix ship identical copies of baseq2 skins & wall textures. If we just follow the logic of 2. above, that'd mean the lower-quality pcx or wal files would be used, despite the material definition being viable and preferable in this case - so that's what's done. game_image_identical_to_base() is used for that.

Did this clarify things for you?

I actually coded a somewhat more generic version of the "identical image" approach earlier: res2k@199eb4d
However, if I remember right, I went with the more focused "material system only" approach b/c "hiding" the redundant files at filesystem level may have weird consequences/cause unexpected behavior when applied to files other than images.
The suggestion above - move the "identical image detection" to the image loading code in images.c - could be more appropriate "middle way".

from q2rtx.

abalfoort avatar abalfoort commented on September 2, 2024

Thanks for the explanation.
I'll look into it. However, this is a steep learning curve for me: new to the project and new to C (Python and C# programmer).

from q2rtx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.