Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.

Playnite Crowdin

An open source video game library manager and launcher with support for 3rd party libraries like Steam, GOG, Origin, Battle.net and Uplay. Includes game emulation support, providing one unified interface for your games.

Screenshots are available at the Homepage

If you find Playnite useful please consider supporting the lead developer Josef Nemec on Patreon.

Features

See the Homepage for the list of features.

Download

Grab the latest installer or portable package from the download page. Playnite will automatically notify you about a new version upon release.

Requirements: Windows 7, 8 or 10 and .NET Framework 4.6.2

Extensions

Playnite can be extended with plugins (written in .NET languages) or by scripts (PowerShell and IronPython are currently supported).

See the extensions portal for tutorials and the full API documentation.

FAQ

Can be found on the wiki

Known Issues

The list of known issues and solutions can be found on the wiki.

Privacy Statement

Playnite doesn't store any user information and you don't need to provide any information to import installed games. Account connection process is usually done via official login web forms and only the web session cookies or tokens are stored, the same way when you login to those services via the web browser.

All information about your library is stored locally on your PC.

Questions, issues etc.

If you find a bug please file an issue and if relevant (crashes, broken features) please attach a diagnostics package, which can be created from inside the "About Playnite..." submenu.

Biggest community around Playnite currently gathers on our Discord server and Forums. You can also follow @AppPlaynite for general updates.

Contributions

Translations

See the How to: Translations wiki page.

Themes

See the How to: Themes wiki page.

Code Contributions

Please ask in the related issue first before starting implementing something to make sure that nobody else is already working on it. If an issue doesn't exist for your feature/bug fix, create one first.

Regarding code styling, there are only a few major rules:

  • private fields and properties should use camelCase (without underscore)
  • all methods (private and public) should use PascalCase
  • use spaces instead of tabs with 4 spaces width
  • add empty line between code block end } and additional expression
  • always encapsulate the code body after if, for, foreach, while etc. with curly braces:
if (true)
{
    DoSomething();
}

DoSomethingElse();

instead of

if (true)
    DoSomething();
DoSomethingElse();

Branches

  • master - default branch representing state of currently released build.
  • devel - development branch containing latest changes. All pull requests should be made against devel branch.
  • devel* - development branches for specific features/versions.

Roadmap

You can see the planned versions with their features in the milestones overview.

Development

See the wiki for info about building and setting up the development environment.

Others

.NET development tools courtesy of JetBrains

jetbrains

Code signing courtesy of SignPath

Capture

Comments
  • Breakpoint A Breakpoint has been reached

    Breakpoint A Breakpoint has been reached

    Left Playnite on with Rage of Mages 2: Necromancer running in foreground overnight; screen locked of course. Logged back in the next day, ROM2 is still running but minimized, and I have a message from Playnite: "Breakpoint A Breakpoint has been reached" or similar. Playnite re-launched fine when I opened it again.
    Playnite.log: https://pastebin.com/WgMK6xBc PlayniteUI.exe.log (Microsoft generated, I think?): https://pastebin.com/8RWrpQfA

  • Localization updates

    Localization updates

    This is just a notification issue that will be updated when changes are made to English localization files. It's for people to subscribe to it and be notified, so they can update custom translations.

  • Cannot authenticate on twitch

    Cannot authenticate on twitch

    I configured all other libraries without any problem, but twitch does not seem to be working for me. In the Settings/Libraries menu, I select Twitch, I click on "Authenticate". I enter my username and password, the window closes... and nothing happens. The "Authenticate" button is still there saying "requires authentication".

    Is this a known issue?

    I am using the last playnite client (version 4.72) on Windows 10 64 bit.

  • UPlay detect uninstalled games

    UPlay detect uninstalled games

    Steam, GOG and Battle.net detect uninstalled games - is it possible to do the same for UPlay and Origin? I guess your hands may be tied by their platforms making it impossible - but just wanted to raise it nonetheless.

    Thanks :D

  • Battle.net log-in credentials are not preserved.

    Battle.net log-in credentials are not preserved.

    Although Playnite preserves the necessary data for it to log in for all the other supported distribution platforms, this doesn't seem to apply for Battle.net. Specifically, every time I reload the Games list, just to refresh it or due to Playnite's start up, I have to manually enter my Battle.net password.

  • Humble Bundle integration

    Humble Bundle integration

    Hi,

    One more platform that would be nice to integrate with is the Humble Bundle store. There are some applications that integrate against their API for download of games (https://pypi.python.org/pypi/humbleclient), so I guess it would be at least partly possible.

    What do you think?

    Cheers

  • Better handling of game duplicates

    Better handling of game duplicates

    Hi,

    as I couldn't find a similiar request I would like to ask for a new filter that makes it possible to filter for duplicate games over all game libraries (GOG/STEAM/etc.).

    Greetings Marc

  • Sims 4 Never Discovered As Installed

    Sims 4 Never Discovered As Installed

    Describe the bug Sims 4 is installed on my other SSD (not C:) using the typical installation path (Origin\Sims 4). Playnite easily finds Battlefield V which is installed the same way - in the same Origin folder - however refuses to acknowledge Sims 4 is installed. Also, when manually checking 'Installed' under Settings -> Installation, that only fixes it temporarily. This seems to be reset - presumably when Playnite refreshes my library.

    To Reproduce Install Sims 4 on another drive (not C:) using default Origin installation configuration. If not found, manually set Installed then refresh Origin library.

    Screenshots Sims4_Uninstalled

  • "Profiles Features Limited" Steam games not being imported

    Hi Josef! I noticed that the game Shadowlings is missing in Playnite. My Steam account is set to public and most (it seems) other games (added before and since) are showing. I have over 1000, so I haven't combed through. Found this one by fluke. Diagnostic: d46effb4-9781-45d9-827f-ebe35f3b538a See screenshot: missing game

  • PowerShell Cleanup v2

    PowerShell Cleanup v2

    First pass at reimplementing #924.

    • Switch to using the Microsoft.PowerShell API to build PowerShell commands.
    • Load extensions using Import-Module instead of evaling the source.
    • Replace PowerShell GetFunctionExits() with a GetFunction() method that returns the CommandInfo object.
    • Enable working debugging and breakpoints
    • Load PowerShell extensions as PowerShell modules

    Loading the .psm1 extension source using Import-Module correctly causes the correct file path to be shown while debugging an extension. Additionally, the automatic $PSScriptRoot and $PSCommandPath variables now are correctly set.

    ~~Because the extension is loaded as a .ps1 file and not a .psm1 file, it is not possible to access the ExportedFunctions like #924 did. Additionally, global functions never show up in ExportedFunctions which are used by lots of existing extensions.~~

    Extensions are now loaded as a PowerShell module. The exported functions are looked up using ExportedCommands instead of Get-Command.

    PowerShellTests.ExecuteWorkDirTest was broken, it accidentally depended on having a usable working directory from IronPythonTests running before it. I fixed it and the one for IronPython, but now IronPythonTests.ExecuteWorkDirTest is failing. If PowerShellTests.ExecuteWorkDirTest was run alone, the following error would occur:

    Playnite.SDK.Exceptions.ScriptRuntimeException : Access to the path 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\workDirTest.txt' is denied.
    

    Debugging and breakpoints somewhat to work fine now. ~~I'm not quite sure why but I can't get it to work in VS Code's PowerShell integrated debugger.~~ I was able to use PowerShell ISE though. Some reason a second "[Remote File]" tab pops up in PowerShell ISE, maybe it's not correctly finding the original source file on disk, ~~and that's why VS Code doesn't work either.~~

    Debugging usage:

    1. Run the following commands in the PowerShell ISE console:
    Enter-PSHostProcess -Name Playnite.DesktopApp
    Debug-Runspace -Name "LibraryExporter.ps1"
    
    1. Trigger your extension in Playnite somehow (e.g. click the menu to trigger `GetMainMenuItems).
    2. A tab labeled "[Remote File]" will appear in PowerShell ISE. Breakpoints may be set now. Click "Run/Continue" when ready.
    3. Interact with your extension some more and breakpoints will be hit.

    Breaking changes:

    • PowerShell extension files must be a PowerShell module. For most extensions this means renaming the .ps1 file to .psm1. PowerShell .psd1 modules are also supported.
    • Functions must be exported from the PowerShell module. Note: any function defined in the module scope is exported automatically, this means that no change may be needed for some extensions. However, functions in the global scope are not exported from the module, remove global: from any function definitions to ensure they are exported
    • Exported functions, MainMenuItems and GameMenuItems functions must accept the exact number of arguments. Previously this was not an error, but now it is.
    • PowerShell extensions now run in the STA apartment state instead of MTA.

    I have verified that:

    • [x] These changes work, by building the application and testing them.
    • [x] Pull request is targeting devel branch.
    • [x] I added myself into contributors file if I want to receive contribution credit in the application itself.
  • Crash on startup: Could not load file or assembly CefSharp.Core

    Crash on startup: Could not load file or assembly CefSharp.Core

    Playnite is crashing on startup. This occurs when installed or when run as a portable app.

    This issue looks very similar to #562. CefSharp.Core.dll does exist in the installation directory.

    2018-12-05 18:01:03.1174|INFO:Application started from 'C:\Users\Blake\Desktop\Playnite462\PlayniteUI.exe', with '' arguments.
    2018-12-05 18:01:03.1643|ERROR:Unhandled exception occured.System.IO.FileLoadException: Could not load file or assembly 'CefSharp.Core, Version=57.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138' or one of its dependencies. The specified resource name cannot be found in the image file. (Exception from HRESULT: 0x80070716)
    File name: 'CefSharp.Core, Version=57.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138'
       at PlayniteUI.CefTools.ConfigureCef()
       at PlayniteUI.App.Application_Startup(Object sender, StartupEventArgs e)
       at System.Windows.Application.OnStartup(StartupEventArgs e)
       at System.Windows.Application.<.ctor>b__1_0(Object unused)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.DispatcherOperation.InvokeImpl()
       at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
       at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.ProcessQueue()
       at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
       at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
       at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
       at System.Windows.Application.RunDispatcher(Object ignore)
       at System.Windows.Application.RunInternal(Window window)
       at System.Windows.Application.Run(Window window)
       at PlayniteUI.ProgramEntry.Main(String[] args)
    
    WRN: Assembly binding logging is turned OFF.
    To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
    Note: There is some performance penalty associated with assembly bind failure logging.
    To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
    
  • Addition of game variable helper

    Addition of game variable helper

    Feature description

    Manually adding games to Playnite often benefits from using game variables like {InstallDir} for the working directory of a game as an example. Right now this means to either type these variables from memory or leaving Playnite to copy them from help pages or similar.

    My feature request is to add a button on windows accepting game variables (like the edit game details window) to either input these variables directly into fields supporting them or at least copy them with one click.

    I'm thinking about two possibilities to add this variable helper:

    1. A drop down menu with available variables. Clicking on a variable copies it.
    2. An advanced implementation of this button could act similar to the build action editor of Visual Studio: Clicking on the button unfolds the list of possible variables and next to each variable is a display of the resulting value.

    Screenshots

    No response

  • Allow game covers to display in variable sizes wtihin grid view and in fullscreen

    Allow game covers to display in variable sizes wtihin grid view and in fullscreen

    Feature description

    Not all game covers are created equal. Some are portrait such as on Steam, while others are more like squares like on certain consoles, and then there are landscape covers from itch.io. I feel that grid view and fullscreen themes should do their best to display the whole cover without compromise. There could be multiple settings for this too, see below:

    • User-specified aspect ratio - All covers will expand to fit this ratio
    • Most common aspect ratio - Playnite will determine the most common aspect ratio for the current search/filter and use it across all visible covers
    • Variable aspect ratios - All covers are displayed in full, may require a separate setting to indicate when to shrink a cover when it is too wide

    Screenshots

    No response

  • Backup Options

    Backup Options

    Feature description

    I'd like to propose additional options for backup restoring:

    • Full Overwrite
      • The library content gets entirely replaced by the backup content. I believe this is the existing behavior.
    • Partial Write/Overwrite Items A. If the library and the backup have a matching item, then the backup content would overwrite the library content. B. If the backup has an item that is NOT in the library, then that item's content would be added to the library. C. If the library has an item that is NOT in the backup, then that item would remain (unaffected) in the library.
      • Options to enable/disable B and C might be nice
    • Custom Overwrite
      • User can select which entries in the backup get applied (written/overwritten) to the library.

    Screenshots

    No response

  • Restore backup without overwritting current library data

    Restore backup without overwritting current library data

    Feature description

    The backup and restore feature is incredible, thank you

    When you have content in your library and you go to restore your library with another backup, it will delete all of the content in your library and add the content from the backup your restoring.

    I would like to suggest adding a feature which will import a backup but this backup will not overwrite any content in the library that the backup includes. For example if your library has the following games...

    Call Of Duty: Modern Warfare 2
    Skyrim
    

    And this backup you want to import includes the following games...

    Call Of Duty: Modern Warfare 3
    Skyrim
    

    Once you import this backup, this will be the games in your library

    Call Of Duty: Modern Warfare 2
    Call Of Duty: Modern Warfare 3
    Skyrim
    

    Skyrim will not be overwritten, whatever data the game ID for Skyrim has in the backup will not be imported since the library already contained Skyrim.

    This would be useful for merging two backups into your library.

    Screenshots

    No response

  • Launching an emulated game trough Playnite prevents clip capture from Medal

    Launching an emulated game trough Playnite prevents clip capture from Medal

    Bug Description

    This is a very strange anomaly, at least I want to know what causes it, but I've determined it's got something to do with the way Playnite boots an emulated game.

    Medal is a clip recording software which I use for all games, it also works on emulated games, however if used with mGBA then Medal will fail to capture the window for some reason but only if the game has been launched trough Playnite.

    Booting up the emulator directly without Playnite allows Medal to record it just fine though. Should mention too every other game launched trough Playnite is recorded fine.

    Image 1 is the instance where the emulator has been launched directly, yellow border indicates Medal is recording it. 1

    Image 2 is the instance where an emulated game has been launched with Playnite, no yellow border so it's not recording it. 2

    Any help would be appreciated , it's the same when playnite used in safe mode.

    To Reproduce

    -Configure a GBA game with the mGBA emulator to launch in Playnite. -Launch the game trough Playnite. -Clipping with Medal using F8 will appear as if the game is out of focus and won't record it properly/won't record at all.

    Diagnostics ID

    773e93b6-9742-46ed-985d-663ab4358466

    Screenshots

    No response

  • Rounded Corners Missing on Windows 11

    Rounded Corners Missing on Windows 11

    Bug Description

    On Windows 11, rounded corners are missing from the Playnite window. Microsoft documentation for rounded corners: https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/apply-rounded-corners

    To Reproduce

    No response

    Diagnostics ID

    4c62a962-1eec-4887-8560-bd701d845976

    Screenshots

    Playnite Rounded Corners Missing

Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.
Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.

Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.

Oct 9, 2022
OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

Dec 3, 2022
Video stabilization is a software-based approach in real-time to eliminating environmental effects (wind, heavy vehicle etc.) and enhance the visual performance that degrade video streaming quality.
Video stabilization is a software-based approach in real-time to eliminating environmental effects (wind, heavy vehicle etc.) and enhance the visual performance that degrade video streaming quality.

Video Stabilization Contents General Info Installation To Do General Info Video stabilization is a software-based approach in real-time to eliminating

Nov 23, 2022
DTV is a library that provides a simple interface for generating video files from a C++ application
DTV is a library that provides a simple interface for generating video files from a C++ application

Direct to Video (DTV) What does DTV do? DTV is a library that provides a simple interface for generating video files from a C++ application. It uses F

Nov 30, 2022
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

Dec 7, 2022
🎬 ScreenToGif allows you to record a selected area of your screen, edit and save it as a gif or video.
🎬 ScreenToGif allows you to record a selected area of your screen, edit and save it as a gif or video.

ScreenToGif ?? screentogif.com This tool allows you to record a selected area of your screen, live feed from your webcam or live drawings from a sketc

Dec 4, 2022
theora-player is an embeddable theora video player C++ library based on the libtheora sample. It has no audio support at this moment.

theora-player Description theora-player is an embeddable theora video player C++ library based on the libtheora sample. It has no audio support at thi

Jun 18, 2022
Vita Recorder is a plugin that allows to record video clips during your play sessions.

Vita Recorder Vita Recorder is a plugin that allows to record video clips during your play sessions. The code is based off VITA2PC at which has been a

Nov 8, 2022
NymphCast is a audio and video casting system with support for custom applications.
NymphCast is a audio and video casting system with support for custom applications.

NymphCast is a software solution which turns your choice of Linux-capable hardware into an audio and video source for a television or powered speakers. It enables the streaming of audio and video over the network from a wide range of client devices, as well as the streaming of internet media to a NymphCast server, controlled by a client device.

Dec 1, 2022
A homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters

A homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters, line doublers and of course TV processing of 240p video. The Wii and Dreamcast versions have modes for 480i and 480p evaluation as well.

Dec 1, 2022
A project for the latest Steam PC (US) release of Resident Evil 4 that patches the game to use high-quality MP4 video.

A project for the latest Steam PC (US) release of Resident Evil 4 that patches the game to use high-quality MP4 video.

Oct 10, 2022
Vireo is a lightweight and versatile video processing library written in C++11

Overview Vireo is a lightweight and versatile video processing library that powers our video transcoding service, deep learning recognition systems an

Dec 8, 2022
Color composite video code from ESP_8_BIT as an Arduino library

ESP_8_BIT Color Composite Video Out Library Purpose The composite video generation code from ESP_8_BIT extracted and packaged into a standalone Arduin

Nov 27, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

Nov 30, 2022
Olive is a free non-linear video editor for Windows, macOS, and Linux.
Olive is a free non-linear video editor for Windows, macOS, and Linux.

Olive is a free non-linear video editor for Windows, macOS, and Linux.

Nov 30, 2022
A WFH utility to visually indicate user engagement of audio and video
A WFH utility to visually indicate user engagement of audio and video

DIY: In meeting indicator - WFH Utility The need for in meeting indicator at home So many of you have gotten accustomed to work from home by now. This

Jun 28, 2021
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

Dec 5, 2022
SortNode is a JS binding for SORT: Simple, online, and real-time tracking of multiple objects in a video sequence.

SortNode is a JS binding for SORT: Simple, online, and real-time tracking of multiple objects in a video sequence.

Aug 2, 2022
ScanNet is an RGB-D video dataset containing 2.5 million views in more than 1500 scans, annotated with 3D camera poses, surface reconstructions, and instance-level semantic segmentations.

ScanNet is an RGB-D video dataset containing 2.5 million views in more than 1500 scans, annotated with 3D camera poses, surface reconstructions, and instance-level semantic segmentations.

Dec 6, 2022