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

Improve Build System Epic #12

Closed
xen2 opened this issue Aug 3, 2018 · 5 comments
Closed

Improve Build System Epic #12

xen2 opened this issue Aug 3, 2018 · 5 comments
Assignees
Labels
Epic Epic are defined on ZenHub side, but label also exists for easier visibility with GitHub
Milestone

Comments

@xen2
Copy link
Member

xen2 commented Aug 3, 2018

Right now we build Xenko as a single package.
Ideally we should move on to do something more in line with what NuGet expects:

  • One NuGet package per dll
  • Use "runtimes" for platforms and graphics API
  • Games would move from referencing huge Xenko to referencing Xenko.Engine and Xenko.Physics for example.

Other area of improvements:

  • Compiling with PackageReference against a local development version (we currently use this "redirect" concept but it's not great). This might need some improvements/discussion with NuGet team.
  • Simplify target files
  • Review up to date check
  • Possibly cross compile multiple platforms from a single solution (TargetFrameworks)

Use cases:

  • Create solution from VS & add Xenko from NuGet package manager, then open it with Game Studio
  • Use only specific part of Xenko from any Visual Studio project
  • Create nuget packages from your code/assets and publish them on nuget so that anybody can use them easily
  • People can customize small part of Xenko and only publish the modified part in their own streams.
  • Much faster to update (i.e. no need for everybody to redownload sample if we update only a specific part of the engine)
@DW01
Copy link
Contributor

DW01 commented Aug 3, 2018

A good number of large projects on NuGet (i.e. Discord.NET, Newtonsoft.JSON, etc..) also tend to utilise metapackages to make referencing all components or specific subsets of components easier on the developer. Given how many libraries Xenko creates, this could be an idea.

We could, for example, do this:

  • Xenko (overall metapackage)
    • Xenko.Graphics (compartmentalised render backends)
    • Xenko.Editor (Game Studio / "native" UI for editor and extensions)
    • Xenko.Tests (unit testing)
    • etc

as well as individual library packages for the adventurous.

@xen2
Copy link
Member Author

xen2 commented Aug 3, 2018

Yes, metapackages would still be possible. However, in practice, since PackageReference are transitive, I expect referencing Xenko.Engine should transitively pull everything a simple game need so they might not even be necessary. This goes in line with what https://github.com/dotnet/corefx and .NET Standard are doing.

@weekendkoder
Copy link

will there be a webGL export ?

@tebjan
Copy link
Member

tebjan commented Aug 1, 2020

@weekendkoder this is discussed in: #70

@weekendkoder
Copy link

@tebjan .. okay. Thx.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic Epic are defined on ZenHub side, but label also exists for easier visibility with GitHub
Projects
None yet
Development

No branches or pull requests

4 participants