Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corrupted / unclickable Relto page in Cleft #1381

Open
mgiuca opened this issue Apr 19, 2023 · 6 comments
Open

Corrupted / unclickable Relto page in Cleft #1381

mgiuca opened this issue Apr 19, 2023 · 6 comments

Comments

@mgiuca
Copy link

mgiuca commented Apr 19, 2023

I just built H'uru from source, connecting to my own Dirtsand using the Dockersand script, using the /LocalData arg.

Versions (everything fresh as of 2023-04-19):

  • H'uru: 13b0b9c
  • Dirtsand: 569ee14
  • Assets: From UruLive.Live.1.918.OpenUru#211

Create a new character -> Choose Returning Character (Relto) and run the Cleft.

Basically everything is working.

When I get to the Totem Relto page, I see this corrupted image which appears to be possibly all of the Relto pages drawn on top of each other:

image

Clicking it brightens the mountain image but has no effect. There is no way I can proceed with the game (or at least, get to Gahreesen, Teledahn, Eder Gira or Kadish Tolesa).

I have not tried a Cleft start.

I have not tried any other Relto pages (I'm actually not sure where to find any since I can't get to the main ages).


I'm novice at Uru's Python code but looking in xYeeshaPages.py, the IDrawLinkPanel function appears to try to hide all 26 buttons, then show just the one needed. It looks correct, but hypothetically, if this code wasn't doing anything, that would explain what I'm seeing, right? Therefore, is it possible that those kYeeshaPage codes became wrong at some point, and these are having no effect?

I tried deleting all the "show()" calls except for the one for kYeeshaPage25 to see if it would hackily fix it, but it didn't have any effect.

@Hoikas
Copy link
Member

Hoikas commented Apr 19, 2023

You might be missing some of the new Relto page GUI items due to having out of date copies of the game files. This would cause execution of the script to end with an exception. Are you using the latest assets from H-uru/moul-assets?

@mgiuca
Copy link
Author

mgiuca commented Apr 20, 2023

Perfect, thanks for the advice, @Hoikas ! I got it working.

So this doesn't appear to be in the README at all. (There's no mention of moul-assets other than a "related project".) Could that be added? I can send a PR if you like.

Let me get this straight -- let me know if there are any unnecessary steps here:

  1. You still need to copy the avi, dat and sfx folders from the official client, right? (I first tried deleting those to just use the moul-assets ones, but I got a freeze on startup loading age "StartUp".)
  2. Then you make a checkout of the moul-assets repo. Is the only way to get those files to do a full checkout? It ended up being about 10 GB and taking quite awhile to download (and possibly costing GoW some traffic, since it's checking out all the sources as well as the compiled assets), despite the compiled folder being only 2 GB. Is there any way to download just the compiled assets?
  3. Then you copy the avi, dat and sfx folders from moul-assets/compiled into your folder. I assume that goes in after the official assets, overwriting the ones there. (There were 3194 files with the same name, but I also found files unique to both which is why I assume you need both.)
  4. Lastly, I still had a freeze loading "StartUp". On a hunch, I re-ran the Install step from Visual Studio, and it seems to have done the trick, because the game works perfectly now. (This means it might not be necessary to copy the folders from the official client, but I suspect it is based on the missing files.)

Does that about cover it?

Thanks for your help.

(PS. Now that I've got it working, I noticed a few other broken things by not having the moul-assets: the Cyan logo did not play on startup, and my Relto had blue flowers by default when I didn't have the appropriate page, probably due to the same script crashing.)

@dgelessus
Copy link
Contributor

(There's no mention of moul-assets other than a "related project".)

[...]

You still need to copy the avi, dat and sfx folders from the official client, right?

I see that the "Running Instructions" in this repo's README and the "Running" page on the Plasma website still say that you should copy data files from a MOULa installation downloaded from Cyan. That's no longer accurate and definitely needs to be updated.

When setting up your own personal server and client, you should not need any files from Cyan anymore. In fact, it's best if you use only the H'uru repos, because the engine and scripts in H-uru/Plasma are coordinated to work with the data files from H-uru/moul-assets. Combining a client from one source with data files from another source (e. g. a H'uru client with the data files from Cyan's MOULa server) is generally not recommended. If not done carefully, it leads to mismatches between the game scripts and data files, breaking various parts of the game.

Similarly, you can't combine two sets of data files from different sources. In particular, the H'uru moul-assets repo and the data files shipped by Cyan's MOULa server have diverged currently. As far as I know, both sets of data files have some content/changes that is not (yet?) included in the other. This means that you cannot safely combine the two sets of data files in either direction - that also often breaks the game in some way, or at best does nothing useful.

(I first tried deleting those to just use the moul-assets ones, but I got a freeze on startup loading age "StartUp".)

That's strange and not supposed to happen. Do you see any errors in the DIRTSAND server console or in the client's Python.0.log file (under AppData\Local\Uru Live\Log)?

Is there any way to download just the compiled assets?

Yes, you can use git sparse-checkout to check out only a subfolder of the repo. Unfortunately this isn't documented anywhere here - this would definitely be a good addition to the moul-assets README. I think the correct sequence of commands is:

$ git clone --sparse "https://github.com/H-uru/moul-assets.git"
$ cd moul-assets
$ git sparse-checkout add compiled

But in your case it doesn't matter anymore, as you've already downloaded all the files you should need.

@dpogue
Copy link
Member

dpogue commented Apr 20, 2023

@mgiuca The documentation is definitely lacking in some aspects (particularly around the multi-repo setup required to get a local client with the right data working with a local server). It's really good to hear those gaps identified by someone new to the project, because it's too easy for us to gloss over steps that we know by heart.

Total aside, personal backstory I'm pretty sure we were put in touch back in like 2004 by someone on the COBBS forums when I was totally new to programming and way over my head trying to do Uru decryption stuff in C++ (I like to think my C++ has improved slightly since then 😅). Thanks for doing that, I really appreciate that you were willing to spend the time to give tips and encouragement to a total noob, and it was cool to see your name pop up again!

@mgiuca
Copy link
Author

mgiuca commented Apr 21, 2023

Thanks for the follow-up. I tried it again (deleting avi, dat and sfx and just copying the ones from moul-assets). You're right: it worked this time, no need to have the Cyan assets or re-run the install. I didn't get the freeze on StartUp and so I don't know why that happened before.

Yes, you can use git sparse-checkout to check out only a subfolder of the repo.

Thanks for the tip!

I think I've got the info I need to update the Readme (so let's leave this issue open to do that). I am too tired now though.

In particular, the H'uru moul-assets repo and the data files shipped by Cyan's MOULa server have diverged currently.

This issue aside, that's a bit troubling. Does that mean H'uru is no longer able to connect to the official servers? Are there plans to synchronize it back up or is H'uru just a project for experimenting / easier development of new content? (TBH what drew me to trying to set up H'uru over OpenUru is that the build process was super simple - so thanks for all your work on it! But I wonder if it's actually going to result in a binary that can connect with other players.)

I'm pretty sure we were put in touch back in like 2004 by someone on the COBBS forums

Huh. I'm not sure that was me. I was definitely around back then (I went by the name "Eat_My_Shortz" as embarrassing as that is :)) and I might have checked out the COBBS forums a bit. I doubt I would have been able to help much with C++, at least not in 2004! If it was more around the time of the Uru open source release (2010) then that's more plausible.

@Deledrius
Copy link
Member

In particular, the H'uru moul-assets repo and the data files shipped by Cyan's MOULa server have diverged currently.

that's a bit troubling. Does that mean H'uru is no longer able to connect to the official servers? Are there plans to synchronize it back up or is H'uru just a project for experimenting / easier development of new content? (TBH what drew me to trying to set up H'uru over OpenUru is that the build process was super simple - so thanks for all your work on it! But I wonder if it's actually going to result in a binary that can connect with other players.)

This is not a binary-compatibility issue; as mentioned it's the moul-assets/game data. Most of the asset compatibility issues fall into one of two categories:

  • Pending merges to H'uru: These are often resolved quickly. In order to prevent conflicts, our policy has been to wait until MOULa merges a new update before merging those changes onto the H'uru repo, but this is not always done immediately as we have our own (often more stringent) requirements that need to be met. For the most part, however, AFAIK the game data content here should match (outside of a short delay) in every way that matters for compatibility. MOULa has been extremely permissive with accepting fan Ages regardless of whether they fit into the game's aesthetic or quality level or are consistent with game lore and while the H'uru repository has tried to keep parity with MOULa due to the engine's design, the repository for Gehn is more selective.

  • Pending merges to OpenUru: These remain sitting in the queue. MOULa is many years behind on important upgrades to the engine as OpenUru has still not integrated the changes necessary for using modern versions of Python, PhysX, and other libraries, causing incompatibilities in the game scripts. These problems should go away once MOULa catches up, but OU's administrative reluctance has delayed resolution on this issue.
    For the last decade, this repository was the only one with meaningful work being done on it, and there was every reason to forge ahead (and updating scripts as necessary as we went). Now that OpenUru is accepting submissions on a regular basis and MOULa is receiving updates, it's hoped MOULa will adopt these crucial engine updates sooner rather than later. Otherwise, the OpenUru team is only creating even more maintenance headaches going forward as an increasing amount of new content using old Python or untested with modern physics is added and will require even more rewrites in the future. There was a commitment made last year at Mysterium to resolve this issue by OpenUru, but it has not yet come to pass. We've tried to make adopting the H'uru codebase for MOULa as accommodating as possible, but cannot force the issue.

That all being said, due to the engine's design, you should always use the game data and scripts from the server you are connecting to regardless of the executable you are using. The game assumes everything is built together as a single unit, and while we've decoupled some of that, it's a major assumption running through the entire game's design. Additionally, while the game engine executable itself should be generally compatible you'll need to modify the server.ini to connect with different servers, and it is not recommended to connect to a Live server with a build not authorized for use on that server.

Our binary can absolutely be used to connect with other players (as it is used on the Gehn server, among many others). MOULa is unfortunately years behind, and has not treated this issue as a priority despite countless offers of assistance and the additional work it has created, and continues to create, for both teams.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants