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].
    
  • Extended Random game picker

    Extended Random game picker

    Feature description

    After adding various itch.io bundles to my already big game library, I am starting to loose track of all the games I have in my library. When I used the Random game picker in the past, I could remember the games via their name and their Cover Artwork, but lately I find myself thinking "what game was that exactly?" Unfortunately, the Random game picker doesn't really help with answering that question. There was another issue opened here https://github.com/JosefNemec/Playnite/issues/1762 to add a "Go to game page" option which would be very helpful indeed. Another possible feature could be to display the genre(s) and tags of the game or even the description text, making it easier to decide if I want to install the game or continue hitting the "Pick another" button ;)

    Screenshots

    No response

  • [SDK] Allow LibraryPlugin to trigger library update

    [SDK] Allow LibraryPlugin to trigger library update

    Feature description

    E.g. for Epic Games Launcher, installing and uninstalling games is reflected by some manifest files, and I guess other launchers have similar files/directories for that. Not posting this in the extension repo because what I want to request is an addition to the SDK. LibraryPlugins or LibraryClients could have an event that Playnite subscribes to that triggers the library to be updated. The library integration could then monitor manifest files/directories (if applicable), and trigger that event if a relevant change occurs (indicating game installation, for example).

    Screenshots

    No response

  • Import Emulator - Cemu Error

    Import Emulator - Cemu Error

    Bug Description

    Playnite does not configure Cemu emulator.

    I was told to go to Library > Configure emulators... > Import > Choose the folder where Cemu is installed.

    However a bar appears like it's searching for something, but then it does nothing. 3 or 4 minutes later it closes like you did nothing.

    To Reproduce

    Just go to the Menu > Library > Configure emulators... > Import > And choose the installation folder for the emulator.

    Diagnostics ID

    b67ad5d8-0ec8-473c-bdc3-b481ade13af6

    Screenshots

    playnite

  • SDK: Allow execution of game actions from extensions/themes

    SDK: Allow execution of game actions from extensions/themes

    Feature description

    Currently, Game Actions can be iterated and information about them captured, but they can only be executed from very specific contexts. I would like to be able to incorporate the running of game actions into a View, so that extension module or a theme can add extra custom controls for executing them.

    The specific potential feature that prompted this request is the same one that prompted #2942 , in this case to allow the launching of ROMs directly from the Details/Overview page of a game. In combination these could allow games with more options for execution to more thoroughly visually document what is possible and make it easier to utilize secondary actions.

    Screenshots

    No response

  • Grid list is scrolled horizontally on startup

    Grid list is scrolled horizontally on startup

    Bug Description

    When starting playnite, on grid view game list will be placed like scrolled to the right, and so you have to scroll to put them on the original place. After the first scroll you can't scroll any more horizontally.

    In the video is not very annoying but in the past I had another size that all the games of the right column were hidden because of that (not sure if hidden or just placed onto the next row though).

    Tested on default theme on the video, but it happens at least with EmixedNiteMC and one darklinkpower's theme too. Didn't test any more themes but I assume it will happens too

    I check github issues and asked on discord support channel but I didn't find anything related to this issue nor receive any answers.

    To Reproduce

    • Start playnite.
    • Scroll on the grid list to see that the list is scrolled.

    Diagnostics ID

    8e6ec2c3-6b1a-4521-a01f-72e52eabaa60

    Screenshots

    https://user-images.githubusercontent.com/11770760/171266179-03ff8641-b480-4016-8a30-81105a0087fd.mp4

  • Include IGDB game IDs in emulation database

    Include IGDB game IDs in emulation database

    Feature description

    This should speed up metadata downloads significantly for emulated games. Plus it will be possible to manually correct bad matches for all users.

    Requires IGDB search rework on backend first.

    Screenshots

    No response

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.

Jun 12, 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

Jun 21, 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

Mar 7, 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

Jun 20, 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.

Jun 18, 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

Jun 14, 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

Oct 14, 2021
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

Jun 17, 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.

Jun 20, 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.

Jun 11, 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.

Mar 3, 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

Jun 15, 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

Jun 14, 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架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

Jun 15, 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.

Jun 15, 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.

Jun 23, 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.

Sep 17, 2021
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.

Jun 24, 2022