Wanted to catch everyone up on some updates to MonoGame on GitHub.
MonoGame has gotten a lot of new platforms and we foresee more on the way. It has become a challenge to manage so may projects and keep them in sync to each other. This causes frequent build errors from missing files, wrong files being included for some platforms, missing features caused by missing files, etc.
To alleviate this a few weeks ago we started the migration to Protobuild. Protobuild is a simple tool which generates Visual Studio projects and solutions from a common definition file. It is a single small 106K EXE that is fully cross-platform running on Windows, Mac, and Linux desktops and some configuration files to drive the process.
With this in place we’ve removed the .sln and .csproj files for MonoGame.Framework from the MonoGame develop branch. To generate the projects you simply double click the Protobuild.exe and it will automatically generate all the projects and solutions relevant to your current desktop platform. You can also manually generate projects via the command line:
Protobuild.exe -generate Android Protobuild.exe -generate WindowsGL Protobuild.exe -generate PlayStation4
So far things have been great with it and the effort to make changes to the projects is largely automated. We plan to move more of the projects over to Protobuild in the coming weeks. I encourage you to learn more about Protobuild on its wiki and consider if it is a good solution for your own projects.
For a long time the binary dependencies for MonoGame have been in the ThirdParty/Libs folder which redirected to kungfubanana/MonoGame-Dependencies. This was fine for a long time, but the owner of that repo hasn’t been around in over a year now and it made it difficult to get things merged.
Just last night we moved the dependencies to a new repostitory Mono-Game/MonoGame.Dependencies controlled by the MonoGame team. Because of how Git submodules work we had to move it from ThirdParty/Libs to ThirdParty/Dependencies.
For developers with downstream forks you may see some messages related to this when merging the latest develop. Just remember to initialize and update submodules after you merge:
git submodule init git submodule update
Also if any of your own projects referenced binaries in ThirdParty/Libs you will need to update those.
Let us know how these changes affected you and how we can improve things moving forward.