Open patmauro opened 1 week ago
IslmDniBook_Side: I think the 256px one is a good size for almost everywhere except the Nexus and Maintainers' Nexus, but I also kinda feel like this is just a bad texture. Even at full 512 size, it doesn't end up looking like pages so much as like lines of colour. Maybe there's an opportunity here to try something a bit different that's designed specifically to look good at 256.
IslmDniBook_Page: Fixing the yellow splotches should be the main priority here. I think trying to standardize on 128×128 is probably sufficient for everything except the Nexus. There might be cases where 256×256 is warranted, but those should be exceptions. I think starting with the 512 splotch-less version and blurring/adding noise before sizing it down should work to re-create the page/page1 variants. Cyan also used to sharpen their images at smaller sizes to introduce a bit of noise (which is why sometimes DIRT and Choru stuff ends up looking different than MOULa)
IslmDniBook_Page: Fixing the yellow splotches should be the main priority here. I think trying to standardize on 128×128 is probably sufficient for everything except the Nexus. There might be cases where 256×256 is warranted, but those should be exceptions.
Indeed - something I've worried about when approaching this is that, for _Page, there are clear naming conventions here, and since I'm not re-exporting these PRPs, just touching them up, ideally those naming conventions should still mean something. Page
should mean grainy, Page1
should mean smooth, #3
should mean smallest, #2
should mean medium and #0
should mean original size. 128 to 512 is a big jump, but I think introducing a new 256 tier could solve this problem - we just size everything up by one tick. This keeps 128x128 as the standard, but also makes sure that in the very rare instance that the "medium" size is specified (which I think is only the Hood), that distinction is still meaningful.
Which would mean:
becomes ,
becomes ,
and still swaps out with .
I think that could work?
In addition to the size / optimization concerns with the last attempt at this (and it already feels like we've done a good job of finding better alternatives to my original approach so far - note I'm no longer recommending anything be bumped up to full-size 512x), another big concern, as @Hoikas pointed out, is that quite frankly, trying to review a PR that makes as many changes as the original did is just really difficult to review.
I've been thinking about this, and I think it's not just that 22 PRP's is a lot to review, but also that inside each PRP were a lot of different stacked changes every time. I think touching a lot of PRPs is probably unavoidable, but it feels like I could at least make life a little easier here by layering the pull requests over a longer period of time, and ensuring that each pull request only covers one specific type of change.
For example - based on some of the optimizations described above, I could split this into 4 PRs over time, like so:
So, it feels to me like making each of these changes more specific like this will make this easier to review, even if it means the overall process will take a while - but I'd love any input as to whether there might be an even better way of doing this. Again, I still feel bad about the way I handled this the first time, and want to make sure I do this right this time.
The easiest starting point here might be trying to get things to the intended result in Ages where we currently have source files (i.e., Max files or Blender conversions). Changes in those Ages would have to be made in the source files anyways for consistent on future exports.
The easiest starting point here might be trying to get things to the intended result in Ages where we currently have source files (i.e., Max files or Blender conversions). Changes in those Ages would have to be made in the source files anyways for consistent on future exports.
My knee-jerk reaction is that this feels like it may be overkill, as I am mainly looking for a better-optimized alternative to the already-merged content/138, where these textures were simply swapped out in PRPShop. That being said - I also recognize that it is 100% my own fault that we are now in a position where there is an unnecessary PRP divergence in the first place, since I pushed those changes to OU without really taking the time to seek proper guidance on this first - so I certainly want to keep an open mind about alternative strategies.
Thus far I've shied away from getting involved with any changes that can't be handled with PRPshop alone, but if fixing the problem I created here the "right" way means finally getting my hands dirty with Max/Blender, then so be it.
Starting with doing swaps in PrpShop is also fine, but only for Ages that don't have corresponding source files, because otherwise those will be overwritten if future changes are made and the content re-exported (i.e., updates to Kirel, or the ongoing work to make the Nexus more dynamic).
Intro
I opened #243 last year to mirror a change I pushed to MOULa, which attempts to make some improvements to the way book textures are handled in the game by making them all more internally consistent - but I think I bit off a little more than we could chew with this one: not only is this a difficult one to review, due to changing 22 PRPs at once, but the other big problem is that I came to you with a solution already in mind, without having given any time to actually discuss the problem in the abstract and then come up with a strategy that would make sense for this repo prior to submitting a PR. This is absolutely my bad, and I want to try this a different way this time.
By opening this up as an Issue, I want to give us a space where I can go over my findings here a little more thoroughly and give an opportunity for some brainstorming here so we have an opportunity to settle on a strategy that would make sense for this Repo before I come back with some PRs that would replace #243.
The Issues
IslmDniBook_Side
Again, this is my highest priority issue here - the 8x64 texture is unacceptable and the most noticeable issue here.
5 (soon to be 6) Ages already use the full-size 64x512 texture for this - it makes a big difference and I'd argue this should probably just be the standard. The 256 variant is acceptable, but is still inconsistent since many Ages already use 512 (and this number usually increases when new Ages are converted through Korman).
64 Texture (rotated) 64 Example
256 Texture (rotated) 256 Example
512 Texture (rotated) 512 Example
Strategies: Of the two pieces of this puzzle, this is the much simpler piece. My original proposal (and what went into MOULa) involved switching all Ages to 512 for consistency - but since there are texture budget concerns, I think we could re-think this; I could settle for abandoning the idea of making these "consistent" and just bumping the smallest ones up to 256. I could also see this being an entirely separate PR from the "Page" issue I outline below, as this gets a little more complicated.
IslmDniBook_Page & IslmDniBook_Page1
This is where it gets a little more complicated as there are several sub-factors involved here beyond just size.
First: The difference between "Page" & "Page1" - This is an interesting case, because if you check the source files, you will see the source image is actually the same for both of these, despite being 2 different assets. This is because at full size, these "collapse" into the same image, but at smaller sizes, these diverge and become two separate images - one grainier, and one smoother, as though 2 separate compression mechanisms were used. In game this seems to be used to provide a little visual diversity between how the pages look, however many Ages simply collapse these down into one asset, or better yet, replace both of these with "xbooknewpage" outright, which is always full-size.
Second: In all sizes and variants, there is a series of ugly yellow splotches on the page. This is corrected in the texture xBookNewPage, which many newer Ages either use instead, or have replaced their IslmDniBook_Page instance with a texture that essentially looks the same as xBookNewPage.
Third: In many cases, due to new content being added over time, etc, there is sometimes a duplicate asset for one of the Page textures at a smaller size. There's really no reason these should be two separate assets, and in these cases, ideally the smaller one should be removed in favor of the larger version of this texture already in use in the PRP. But this would probably require a re-export of the PRP that is outside my current ability. This may be due to a relto page in the Age using the higher-quality page texture as the baseline for the relto page rather than the book.
Note: Unlike IslmDniBook_Size, these textures all use a naming convention that DIRECTLY corresponds to their image size (
#0
indicates original size,#2
indicates medium size,#3
indicates smallest size). It's one of many reasons I'd be open to not changing the sizes here if we can come up with new textures that address the splotches.Page & Page1 at 64:
64 Page1 (left) and Page (right) In-Game:
Page & Page1 at 128:
128 Page1 (left) and Page (right) In-Game:
Page & Page1 at 512 (same image):
512 Page1 (left) and Page (right) In-Game:
Page at 512 with yellow smudges corrected:
Splotchless 512 Page1 (left) and Page (right) In-Game:
Strategies: My original proposal (and what went into MOULa) makes all Page textures consistently full sized and splotchless - but this one especially can probably be handled a little smarter. In an ideal world, we would remove all duplicates and size up all textures to the full size. But even in this ideal case, it still poses a small problem, where Page and Page1 are no longer "unique" assets, since at 512 they "become" the same image. Again, in my original solution I just sized everything up to the 512 splotchless variant - but to be frank, I'm less concerned about the size here and more concerned about removing the splotches. Bear in mind, though - keeping the smaller sizes and removing the splotches wouldn't really be possible without introducing image loss, since we don't have the "resized" variants in Sources. So to go this route, we'd have to use xBookNewPage as a starting point and then figure out how to size this down in two different ways, so we can re-create both the "grainy" and "smooth" compression styles respectively. That being said - bumping to at least 128 is still probably warranted in this case. Alternatively: we could go full-size, but merge down all instances of the page texture to a single asset, similar to how Cathedral, Watchers' & Kirel have been handled.
Conclusion
Based on the info I've provided here, my hope is we can brainstorm together and come up with a strategy to address this that will be more agreeable than my previous attempt and what I originally submitted to MOULa. I'm not looking for a quick solution here - I wanna give this some time to cook - but whatever we land on, I'll want to try to mirror this back to MOULa as well, to prevent the PRPs from diverging too much.