-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
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
3.0.3.stable Linux server version parses command line arguments incorrectly (regression) #19683
Comments
Looks the same as #16949, but you say 3.0.2 is working and that bug report says it's not. There's something weird going on. |
It looks similar, but I don't think it's the same, since there's no existing target file in my case, and 3.0.2 has worked predictably for me for several months. Specifying a filename or wildcard for output both work for me in 3.0.2, eg |
I can't reproduce the issue in the master branch, so it's a regression only in 3.0.3+. I confirm that
|
Wasted a couple hours trying to bisect between Now trying a build with |
Doesn't seem to be it either. @hpvb The regression seems to be due to the buildsystem change from Travis to your build machine. Could be LTO too, trying that now locally. |
Well no, |
Thanks for looking into this, @akien-mga. 🙂 Does that mean I should be able to compile the server version and export templates from 3.0.3.stable (and 3.0.4.stable) myself as a workaround? If so, what are the scons command(s) for doing that? |
You can just compile your own server binary and keep using the official export templates for 3.0.4-stable. To build the server binary, checkout the |
Thanks for the instructions. Should I also add options to include openssl, zlib and libpng? I'm asking because I've experienced issues with libssl in particular on games exported with custom built versions of Godot in the past. |
Those options only matters for the export template. The server binary is for your own use and won't affect the exported binaries at all, so as long as it works for you, you can export any game just fine. |
Oh, I see. Thanks again for explaining this. 🙂 |
I ran into the same issue (Godot 3.0.4 server, prebuilt binary, in Docker). To me it looks like the
The secion “Standalone tools” only offers
The error message was very confusing to me, took me a while to figure this out. Godot should really validate command line flags better instead of just ignoring invalid ones, that would have really helped here. For completeness, here is the output of
Godot tries to load |
Ah ok, the issue is that @hpvb is building the server binary as |
As projects may have their own command-line arguments, this cannot be done unless we force project-specific arguments to be passed after |
Good to know, this was new to me |
I maintain a few Godot tool scripts, and I think this would be a welcome improvement, as it would make it easier to validate command-line arguments properly. Currently, my only option is to ignore unrecognized options, which might not be very helpful to users in case of typos, etc.
Glad you were able to pin this down. 🙂 Does that mean the official 3.0.3 and 3.0.4 server downloads can be updated, since it doesn't require code changes, and the current versions don't work anyway? |
@fleskesvor I think published releases probably shouldn't be altered, even if they are erroneous. |
I was building a Godot Docker image on GitLab CI this week, that is how I discovered this bug. I finished the image and decided to build the Godot Server binary separately, if any of you guys need it. You can download a properly compiled Godot 3.0.4 Server here (GitLab project). If you need a Docker image with Godot 3.0.4 you can pull |
@MazeChaZer That's how I discovered it too. I started building my own images with Godot and Butler for use with GitLab CI after I moved my projects from GitHub to GitLab. The images can be found here (3.0.3 hasn't been fixed yet) and an example config here. It might be good to consolidate work on Docker images if this is something that is of general interest though, so I'll see about making a PR on your repo when I've had a chance to test. Is there a reason why you use Debian instead of the more light-weight Alpine? |
Nah, not really, I'm just used to Debian. I'm using the debian:stretch-slim image which is only 22MB, but I guess the alpine image with 2-3MB would be even better. I will look into switching to alpine later. |
@fleskesvor I took some time and looked into using Alpine Linux for my docker images. I wanted to use plain Alpine Linux with musl libc. IMO, putting glibc on Alpine Linux kind of defeats the purpose. Anyway, I don't want to offtopic in this issue any further, so I created #20037, we can continue discussing Alpine Linux support there. |
This problem is still present in the latest 3.0.5 binary available at https://downloads.tuxfamily.org/godotengine/3.0.5/Godot_v3.0.5-stable_linux_server.64.zip. |
Does anyone have instructions to build just the server? I tried using Edit: I'm trying to get 3.0.5, since I already have the export templates for that |
@GammaGames For Godot 3.0.4 this worked for me: |
That did work, but maybe I'm misunderstanding the purpose of the server. I'll make a question on the Q&A |
So
Sorry it took a little bit to gain some consensus. |
@hpvb sounds reasonable, thanks for the information! |
Is it possible to export a project as a headless binary? I would love to export my server scene into a file that you could run from the command line without opening a window. It would be nice for docker containers, for instance |
If I understand @hpvb correctly, that's the purpose of the server binary since 3.0.3-stable. You should be able to launch your project either by launching the server binary from the root of your project, or alternatively from a different directory with the |
I understand that, it works well. But to run that you need the source code. I'm looking for a way to completely export the project for distribution, but when you run the exported program no window is created, just like when you run a project with the server. |
You should be able to run an exported project in headless mode by placing the exported PCK file in the same directory as the headless server binary. You can also specify its path using |
That's exactly what I was looking for, thank you! Are the command line arguments documented anywhere? I couldn't find them, aside from the few in the tutorial |
You can pass |
This has been fixed in 3.0.6 with the 'headless' builds. |
Godot version:
3.0.3.stable Linux server
OS/device including version:
Alpine Linux v3.7
Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
No GPU (it's a Docker image for CI/CD)
Issue description:
Running
godot --export "Linux/X11" game_name
should producegame_name
andgame_name.pck
, instead the build fails with the following output:Running with the verbose flag
-v
provides additional details:Looks like it's interpreting the preset as a resource to load. Changing that to
godot -v --export="Linux/X11" game_name
(note the equals sign=
) seems to get me past that, but now it fails on the export name:Separating the export name with double dashes (
--
, with spaces on both sides) makes no difference.3.0.2.stable Linux server works without a hitch (except for the complaining about missing audio drivers, which doesn't appear to be a problem).
Steps to reproduce:
See above.
Minimal reproduction project:
Could be anything, but I'm attaching a very simple project I've tested on.
rotation.zip
The text was updated successfully, but these errors were encountered: