martenfur / nopipeline Goto Github PK
View Code? Open in Web Editor NEWA Monogame Content Pipeline enhancer.
License: MIT License
A Monogame Content Pipeline enhancer.
License: MIT License
When putting in a Unix path to the references block in the .npl, the paths don't resolve as expected. For example, ~/.nuget/packages/...
resolves to {Project Working Directory}/~/.nuget/packages/...
. The expected behavior would be for it to resolve to {home directory}/~/.nuget/packages/...
. Likewise, /etc/...
resolves to {Project Working Directory}/etc/...
instead of /etc/...
.
A workaround solution could be platform-specific reference settings in the .npl file.
hey, you did really awesome works. I think you can add a donate link or a sponsor page .
I am unable to use Nopipeline as-is on Linux. However, changing all backslashes to slashes in Nopipeline.Task.targets makes things work correctly.
I expect macOS to have the same problem and I think Windows doesn't care but I only tested this change on Linux.
I saw a closed issue on this but there was no answer.
Currently this project requires .netcore 3.1 to be installed when building. Due to being backwards compatible, i would like to see this being able to run with only .net5 or .net6 installed on the machine.
Like title says, can I set global properties from the .npl file (outPutDir, intermediateDir, platform, config, profile, compress), or can it be supported if it isn't?
Are there plans to support linked files? I usually have my code (and content.mgcb file) in a development drive and all my assets are in another drive, which forces me to use 'linking' in my MGCB for all my files.
Thanks!
Hi, this is looking really promising, I really struggle with the default editor so I'm going to try this out tonight thanks!
One issue with the original editor is keeping references between machines, especially nuget references. Could we add a reserved variable that points to the user's nuget folder or better yet a convention that finds nugets based on package name and version? Eg nuget:SomePackage-1.0.0. I could contribute if you think it's a good idea.
Then all we need is a simple ui that generates an npl config and we can phase out the mgcb-editor ;)
After being driven almost to tears by how awful the MonoGame Content Pipeline is, I decided to give this package a whirl. But when I try to install it into my project, I get the error
Severity Code Description Project File Line Suppression State
Error MSB3073 The command "dotnet C:\Users\owner\.nuget\packages\nopipeline.task\2.1.0\build\\..\tools\netcoreapp3.1\any\npl.dll """ exited with code -532462766. PongBreaker C:\Users\owner\.nuget\packages\nopipeline.task\2.1.0\build\Nopipeline.Task.targets 8
The tutorial on the readme file of this repository says that an NPL Config file is supposed to be created on the first build, but trying to build past this point results in the same error as before.
Installing the previous version, v2.0.1, does not result in any fatal errors, however, no NPL config file is produced anywhere in the file structure upon building, and instead I get the debug log
C:/Users/owner/Documents/MonoGame Projects/PixelDoughEngine/Engine/Content/Content.npl not found!
1>Run with path to .mgcb or .npl config as an argument:
1> NoPipeline.exe Content/Content.mgcb
1>or
1> NoPipeline.exe Content/Content.npl
C:/Users/owner/Documents/MonoGame Projects/PongBreaker/PongBreaker/Content/Content.npl not found!
1>Run with path to .mgcb or .npl config as an argument:
1> NoPipeline.exe Content/Content.mgcb
1>or
1> NoPipeline.exe Content/Content.npl
I have a Content.mgcb in my project, and I have one in the MonoGame Shared Library project in my solution. Could that have anything to do with it?
Rather than have this be deployed via an exe/vsix, would it be possible to deploy this as a nuget package, similar to how the Monogame.Content.Builder nuget works?
I believe the package would just need an exe/dll and a targets file, very similar to how the monogame nuget files work
Curious if this has been explored at all? If not, maybe I'll take a shot at submitting a PR.
This seems to me like it would be a much simpler integration/installation story...
Content.npl
"styles":
{
"path": "Styles/*.xml",
"recursive": "True",
"action": "build",
"importer": "XmlImporter",
"processor": "PassThroughProcessor",
}
when build
The command "dotnet mgcb /quiet /@:"Z:\RPS\RPS.GL\Content\Content.mgcb" /platform:DesktopGL /outputDir:"Z:/RPS/RPS.GL/Content/bin/DesktopGL/Content" /intermediateDir:"Z:/RPS/RPS.GL/Content/obj/DesktopGL/net8.0/Content" /workingDir:"Z:/RPS/RPS.GL/Content/"” exited with code 1.
This plugin brakes the MonoGames plugin on Rider! #17
Hi, how can I go about importing music and fonts with NoPipeline? I don't think I want to use TextureImporter do I?
Hi!
I've been struggling to get the NoPipeline to work. Running nopipeline produces the MGCB but not the XNB files, and the MGCB file it outputs also has a very odd structure.
Here's the repository that reproduces the issue. I can reproduce this on macOS by running the NPL from the terminal or building the project with Visual Studio 2022 and the latest version of Rider.
I got this by running dotnet "/Users/jussi/.nuget/packages/nopipeline.task/2.2.0/tools/net6.0/any/npl.dll" Jelly/Content/Content.npl
.
Nopipeline v2.2.0.0
Reading MGCB config /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/Content.mgcb
Reading setting: /outputDir:bin/$(Platform)
Reading setting: /intermediateDir:obj/$(Platform)
Reading setting: /config:
Reading setting: /profile:Reach
Reading setting: /compress:False
Reading content:././Graphics/fire.png
Reading content:././Graphics/jelly.png
Reading content:./Graphics/jelly.png
Reading content:./Graphics/fire.png
Reading content:Graphics/jelly.png
Reading content:Graphics/fire.png
Finished reading MGCB config! Got 6 items.
-------------------------------------
Reading NPL config.
No root found! Using default paths.
Reading content for: Graphics/*.png
Reading Graphics/fire.png
Reading Graphics/jelly.png
Finished reading NPL config!
-------------------------------------
Checking integrity of the final config.
Checking /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/././Graphics/fire.png
Checking /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/././Graphics/jelly.png
Checking /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/./Graphics/jelly.png
Checking /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/./Graphics/fire.png
Checking /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/Graphics/jelly.png
Checking /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/Graphics/fire.png
Updating snapshot!
-------------------------------------
Saving new config as /Users/jussi/tmp/ContentPipelineIssue/Jelly/Content/Content.mgcb
DONE. o-o
Any pointers for getting this work are appreciated. Hopefully, I'm just doing something obvious very wrong.
Hi!
I'd like to keep separate the mgcb for NoPipeline project and the mgcb project, and run mgcb twice when building the game.
When creating Content2.npl (or whatever name I put to the npl file) I always get this error
1> O:/tbd/Game1/Game1/Content/Content.npl not found!
1> Run with path to .mgcb or .npl config as an argument:
1> NoPipeline.exe Content/Content.mgcb
1> or
1> NoPipeline.exe Content/Content.npl
1>
It never works, unless of course npl file is Content.npl , then it seems to work well.
Is it a bug or I have to do something extra in order to get a different name working?
thanks!
Hello @Martenfur
I'm not 100% positive, but I couldn't make it work with full paths instead of relative paths. I was getting paths like C:\Path\To\ContentC:\Path\To\Project\Content
and things like that. I ended up fixing it, at least for my specific use case. I would issue a Pull Request but in my fork I also got rid of some things and updated it to be compatible with .Net Core so if you want to check it out, the changes I made and an explanation are in my fork (b9aac72). The changes are a couple of lines but let me know if there is a better way of fixing the isse. For all I know I fixed my case but made it not work with plenty of other cases, didn't really test it in depth.
Cheers.
I'm trying to set up multiplatform project like described here:
https://community.monogame.net/t/creating-a-cross-platform-project/14825/4
So I want to split my project into several shared projects. Is it possible to configure nopipeline to work with these shared projects?
Hello,
Just in case anyone is interested, I made it compatible in .net Core (3.1). Also deleted some things on the process tho, like the sample application which I couldn't compile as it requires some things from other packages that I don't have (And also didn't care about those). It's [here] (https://github.com/OAguinagalde/NoPipeline).
@Martenfur feel free to update your repo if necessary.
Currently, it's possible to customize the build process for MGCB using the property MonoGameMGCBAdditionalArguments
.
https://monogame.net/articles/tools/mgcb.html#customizing-your-build-process
However, with the way Nopipeline works, it's running the MGCB manually, without waiting for the RunContentBuilder
target from the MonoGame.Content.Builder.Task
package.
I wish the Nopipeline task didn't do the generation of the content, and instead targetted running before the RunContentBuilder
target. This would help a lot with configuring building for different platforms and configs through the csproj file.
For example, this is what I wanna be able to do while keeping the Nopipeline task included :
<Target Name="SetMGCBArgumentsMyself" BeforeTargets="RunContentBuilder">
<PropertyGroup Condition="'$(Platform)' == 'desktopgl-linux' Or '$(Platform)' == 'desktopgl-windows'">
<MonoGamePlatform>DesktopGL</MonoGamePlatform>
<MonoGameMGCBAdditionalArguments>/profile:HiDef /platform:$(MonoGamePlatform)</MonoGameMGCBAdditionalArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)' == 'WindowsDX'">
<MonoGamePlatform>Windows</MonoGamePlatform>
<MonoGameMGCBAdditionalArguments>/profile:HiDef /platform:$(MonoGamePlatform)</MonoGameMGCBAdditionalArguments>
</PropertyGroup>
<Message Importance="high" Text="'$(Platform)' '$(Configuration)' '$(MonoGameMGCBAdditionalArguments)' HELLO THERE HERE" />
</Target>
Unfortunately, this won't work if you build using Nopipeline.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.