Skip to content
This repository has been archived by the owner on Mar 6, 2018. It is now read-only.

Releases: RedpointArchive/Protogame

Version 6.0.4

13 May 07:06
Compare
Choose a tag to compare

This is a minor patch release, which updates Protogame code for changes made in external libraries.

Changes

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.

Upgrading

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.

Installation

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:

  • Jitter.Redpoint
  • protobuf-net.Redpoint
  • MonoGame.Framework.Redpoint
  • NDesk.Options.Redpoint
  • Prototest
  • AStarPathFinder
  • Protoinject
  • Newtonsoft.Json
  • HiveMP.TemporarySession
  • HiveMP.NATPunchthrough
  • HiveMP.Lobby
  • HiveMP.Attribute

In a future version these will be pulled in automatically, but this is dependent on new features in Protobuild.

Version 6.0.3

26 Jan 03:35
Compare
Choose a tag to compare

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.

Changes

This release primarily contains startup performance improvements, and expands the APIs available for controlling the physics system. A detailed changelog is listed below.

Features

  • The performance of launching games has been greatly improved.
  • Protogame now supports showing loading screens during the initial game load. This makes the game feel more responsive on launch. You can change how the loading screen is rendered by implementing and rebinding 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>());.
  • An assembly-level 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 ConfigurationAttributes 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.
  • There is a new virtual method on CoreGame called PrepareGameWindow which allows you to center, reposition or resize the game window during game start.
  • Audio instances now make a Volume property available, which allows you to change the volume of a sound before, during or after playback.
  • Many properties and behaviours of the physics system can now be controlled by the 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.
  • 3D deferred render passes can now be configured such that they can be layered on top of 2D render passes. This allows for cheap skybox techniques where you render a 2D skybox in a batched or direct 2D render pass, and then render your world in a 3D deferred render pass after that. To do this, set the ClearDepthBuffer property to true and the GBufferBlendState property to BlendState.AlphaBlend on the 3D deferred render pass.
  • The alpha value in colors within a 3D deferred render pass are now used correctly, providing the blend state is configured such that alpha values are used. This allows for rendering of semi-transparent 3D worlds in a 3D deferred render pass.
  • PhysicalBaseRigidBodyComponent can now be derived by your own classes, making the implementation of custom physics shapes much easier.
  • The Material class now has a cloning constructor, which makes modifying existing materials or materials loaded from models easier.

Bug Fixes

  • An issue was fixed where Render3DModelComponent would not pick the correct shader when there is no normal map on a material.
  • The direction of directional lights placed in the ATF level editor is now honored by DefaultDirectionalLightEntity.
  • An issue where the ATF level loader would incorrectly parse color values has been fixed. This issue led to scenes being rendered with blue lights, even when the lights were configured for a different color.
  • Fixed an issue where GamePadIndex was not set correctly on GamePadThumbstickActiveEvent events.
  • Fixed an issue where calling Loop on an audio instance would not result in the audio instance starting playback.
  • An issue where execution of scheduled coroutines occurred immediately instead of being delayed until the next update has been fixed.

Other Notes

  • Explicitly loading 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();.
  • Startup logs are no longer automatically emitted to the debug window in Visual Studio. These logs caused a noticeable increase in load time. If you need to diagnose game startup (in particular, determining what game and server configurations it is loading), pass the --debug-startup as an argument to your game executable.

Upgrading

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.

Installation

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:

  • Jitter.Redpoint
  • protobuf-net.Redpoint
  • MonoGame.Framework.Redpoint
  • NDesk.Options.Redpoint
  • Prototest
  • AStarPathFinder
  • Protoinject
  • Newtonsoft.Json
  • HiveMP.TemporarySession
  • HiveMP.NATPunchthrough
  • HiveMP.Lobby
  • HiveMP.Attribute

In a future version these will be pulled in automatically, but this is dependent on new features in Protobuild.

Version 6.0.2

15 Jan 22:13
Compare
Choose a tag to compare
Version 6.0.2 Pre-release
Pre-release

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.

Changes

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.

Installation

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:

  • Jitter.Redpoint
  • protobuf-net.Redpoint
  • MonoGame.Framework.Redpoint
  • NDesk.Options.Redpoint
  • Prototest
  • AStarPathFinder
  • Protoinject
  • Newtonsoft.Json
  • HiveMP.TemporarySession
  • HiveMP.NATPunchthrough
  • HiveMP.Lobby
  • HiveMP.Attribute

In a future version these will be pulled in automatically, but this is dependent on new features in Protobuild.

Version 2.0

21 Dec 05:53
Compare
Choose a tag to compare

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.

Version 1.0

12 Jul 15:01
Compare
Choose a tag to compare

This is the original version of Protogame. It only supports Windows and doesn't have many of the infrastructure improvements present in version 2.