This project has been sunset as of 1st Jan 2018 and is no longer supported or maintained
This is a minor patch release, which updates Protogame code for changes made in external libraries.
This updates internal Protogame code for changes made in the MonoGame and Protoinject libraries. There are no changes to the Protogame APIs that impact developers, and no bug fixes in this release.
If you are using Protobuild, you can upgrade Protogame by editing the version specified in Module.xml
and then running:
Protobuild.exe --upgrade-all
If you are using NuGet, you can use the NuGet package manager to update Protogame.
All packages both as dependencies of this package, and Protogame's available in general are now on NuGet. If you are using the latest version of Protobuild, you can install the package like so:
Protobuild.exe --install [email protected]
If you are not using Protobuild, just search for Protogame
in the NuGet package manager. You will need to install the dependencies manually, which are listed below:
In a future version these will be pulled in automatically, but this is dependent on new features in Protobuild.
This release arrives soon after the Global Game Jam 2017, and includes multiple improvements that were made during the creation of Super Ball Brawlers at the event.
This release primarily contains startup performance improvements, and expands the APIs available for controlling the physics system. A detailed changelog is listed below.
ILoadingScreen
. Because of these changes, some of the overridable methods on Game
now occur before the IGameContext
, the world or the world manager is available. In particular, engine hooks now need to check if gameContext.World
is null before attempting to access it, as it may not yet be available. To show loading screens, you must append a fixed render pass of type I2DBatchedLoadingScreenRenderPass
, e.g. pipeline.AddFixedRenderPass(kernel.Get<I2DBatchedLoadingScreenRenderPass>());
.ConfigurationAttribute
attribute has been created. When at least one assembly contains this attribute, game startup will use game configuration classes specified by this attribute. You can add as many ConfigurationAttribute
s as you like, to as many assemblies as you like. Using ConfigurationAttribute
is much faster than the previous method, as Protogame no longer needs to scan for all implementations of IGameConfiguration
and IServerConfiguration
. You can use this attribute by placing the following directive after a using block but before a namespace block: [assembly: Configuration(typeof(NameOfYourGameConfiguration))]
. If no attributes are found, Protogame falls back to the more expensive type scanning method to locate implementations.CoreGame
called PrepareGameWindow
which allows you to center, reposition or resize the game window during game start.Volume
property available, which allows you to change the volume of a sound before, during or after playback.IPhysicsWorldControl
interface. You can use this interface to change the gravity of the world and set custom callbacks for determining restitution and friction during collisions. You can also disable speculative contacts in the physics system, or tell it to ignore angular velocity during collisions.ClearDepthBuffer
property to true
and the GBufferBlendState
property to BlendState.AlphaBlend
on the 3D deferred render pass.PhysicalBaseRigidBodyComponent
can now be derived by your own classes, making the implementation of custom physics shapes much easier.Material
class now has a cloning constructor, which makes modifying existing materials or materials loaded from models easier.Render3DModelComponent
would not pick the correct shader when there is no normal map on a material.DefaultDirectionalLightEntity
.GamePadIndex
was not set correctly on GamePadThumbstickActiveEvent
events.Loop
on an audio instance would not result in the audio instance starting playback.ProtogameCoroutineModule
is no longer needed. Support for coroutines and coroutine scheduling is now done in the core module, so calls to load ProtogameCoroutineModule
can be safely removed.AssemblyLoadStrategy
is now no longer bound by default in ProtogameAssetModule
. This load strategy was prohibitively expensive when loading the first asset in the game, as it would perform reflection to scan all types in all loaded assemblies. If you still need this load strategy (for example, when using AIAsset
), you should bind it in your game module like so: kernel.Bind<ILoadStrategy>().To<AssemblyLoadStrategy>().InSingletonScope();
.--debug-startup
as an argument to your game executable.If you are using Protobuild, you can upgrade Protogame by editing the version specified in Module.xml
and then running:
Protobuild.exe --upgrade-all
If you are using NuGet, you can use the NuGet package manager to update Protogame.
All packages both as dependencies of this package, and Protogame's available in general are now on NuGet. If you are using the latest version of Protobuild, you can install the package like so:
Protobuild.exe --install [email protected]
If you are not using Protobuild, just search for Protogame
in the NuGet package manager. You will need to install the dependencies manually, which are listed below:
In a future version these will be pulled in automatically, but this is dependent on new features in Protobuild.
This marks one of the first releases under the new semantic versioning scheme. We're marking this as a pre-release since it's the first 6.0 release, and we want to perform some additional testing in the future to make sure we have a stable version across desktop platforms.
Prior to this release, Protogame used a rolling release model, where we did not explicitly version releases (instead developers often just used master). This makes it difficult to build a changelog for the first semantically versioned release.
Future releases will contain a more detailed changelog; for now please refer to the README for details on engine features.
All packages both as dependencies of this package, and Protogame's available in general are now on NuGet. If you are using the latest version of Protobuild, you can install the package like so:
Protobuild.exe --install [email protected]
If you are not using Protobuild, just search for Protogame
in the NuGet package manager. You will need to install the dependencies manually, which are listed below:
In a future version these will be pulled in automatically, but this is dependent on new features in Protobuild.
This is a reasonably stable version of Protogame 2.0. We do however, recommend using Protogame in a Git submodule if you're using Git as your version control system, as you will be able to receive updates much more frequently.
This is the original version of Protogame. It only supports Windows and doesn't have many of the infrastructure improvements present in version 2.