-
Notifications
You must be signed in to change notification settings - Fork 1
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
Rewrite #34
Rewrite #34
Conversation
Alright looks like builds are fixed. That leaves publish and release. |
And yetanotherhttphandler is still missing of course. Did you find a way to mirror it? I think just making it a git submodule would also work. A bit wonky maybe. |
Lemme check! |
Okay so this is less trivial than I thought. With Verdaccio, the NPM registry we're using, you can easily uplink to other registries, scoped by namespace, but this isn't published on any NPM registry, only on GitHub. So we'd need to find some kind of bridge plugin for Verdaccio that uplinks a GitHub link to a namespace. I'll do some more digging, but if submodules are a way (or simply download it from GitHub during build?), maybe it's worth exploring. |
I'm working on downloading yetanotherhttphandler from github during the build process as you suggested. I'm wondering why we are copying things into a
Why not just upload the folder directly? |
At the time, we were leveraging a feature where artifacts from different jobs could be uploaded with the same name. The artifact download would then be a single zip with subfolders for each architecture: If we download and expand one of the packages from the registry you'll see this layout: Anyway, the actions do need a bit of updating as things have changed. In v4 of upload / download artifact, you can no longer use the same artifact name: https://github.com/actions/upload-artifact?tab=readme-ov-file#v4---whats-new We'll have to look into:
But you're right. You could just copy directly. |
Ok thanks for the explanation. I'm already using the merge action. But it seems like that is also not the best solution:
|
Yetanotherhttphandler is now downloaded as part of the dotnet build process. When run locally, that's all there is to it. For deployment, I disable the download of yetanotherhttphandler during the platform specific build processes, because it would just download the same thing four times. It is instead downloaded once in a separate job and uploaded. I have no idea whether publishing actually works though. Any way to test that or should we just merge and see what happens? |
I also switched back to the official https://github.com/actions/download-artifact from https://github.com/dawidd6/action-download-artifact, since downloading artifacts from another run is now supported: actions/download-artifact#3 (comment) I assume that was the reason why you used https://github.com/dawidd6/action-download-artifact. |
actions/download-artifact v4 also supports merging multiple artifacts now, so we shouldn't need to merge the uploads manually using https://github.com/actions/upload-artifact/blob/main/merge/README.md |
Awesome! Correct on dawidd6/action-download-artifact. BTW, really fantastic work on this project! |
Thanks! |
Let's merge and see what happens :) |
I was about to update the readme and just realized I forgot about the .meta files of the binaries. It says in the wiki they are important to 'avoid conflicts', but I don't get why we can't just .gitignore the entire dependencies folder and let Unity regenerate them. |
Yes, new PR then. @jsm174 looks like an auth error? |
The thing with the .meta files is that they actually contain relevant config, and sometimes the default config when it's regenerated isn't what we want. |
yeh the meta files have the architecture flags which I remember we're a pain to get configured properly. |
Strange that is needs creds for https://registry.npmjs.org Maybe its trying to pull or get deps?
|
I recently restarted Verdaccio (had 1500+ days of uptime, lol), but the config and all that stuff should be persisted, since it's on a separate volume. |
Maybe we try this: https://github.com/actions/setup-node |
PR: #35 |
I forgot to mention, to not block the main thread during initialization, I made |
This started out with the goal of replacing the legacy gRPC implementation with the new grpc-dotnet and gradually turned into a full rewrite. I have tested this in the editor and in builds on Windows 11, Ubuntu 24 and macOS 15. I have not tested on Apple silicon.
Improvements
MpfGamelogicEngine
component.MpfGamelogicEngine
does what we actually care about. It sends switch changes to MPF and applies MPF commands to the playfield.MpfWrangler
takes care of all the tedious details involved in starting up, communicating with, and shutting down MPF.Reverse improvements
Requirements
I installed the first two using UnityNuGet and the last one straight from GitHub via URL in the Unity Package Manager. These dependencies must currently be installed manually because the NuGet packages require a scoped registry and Unity package manifests are not allowed to pull dependencies from a git URL.