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

Overview

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

Issues
  • 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

    bug 
    opened by 0x6A7232 75
  • 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.

    localization 
    opened by JosefNemec 60
  • 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.

    bug 
    opened by wonx 45
  • 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

    enhancement library_provider 
    opened by Kaneth 29
  • 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.

    bug 
    opened by vtheofilis 27
  • 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

    enhancement library_provider 
    opened by janforster 23
  • 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

    enhancement 
    opened by MarcNuernberger 22
  • 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

    bug 
    opened by faulkenberryjacob 21
  • "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

    bug 
    opened by TechLibrarian 20
  • 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.
    opened by bburky 19
  • 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].
    
    bug 
    opened by bburky 18
  • Font Fallback / Secondary Font

    Font Fallback / Secondary Font

    Feature description

    Playnite's default font is Trebuchet MS, which contains only alphabets; CJK and other characters are supplemented by the OS system font. I would like to be able to change the font used here to something like Helvetica, Arial, sans-serif in CSS.

    Screenshots

    fontfallback

    enhancement 
    opened by waitingmoon 0
  • Select all text when entering a text-field (either by clicking once or by using tab)

    Select all text when entering a text-field (either by clicking once or by using tab)

    Feature description

    Currently, if you're editing a game in Playnite, and you're navgating from field to field, either by left-mouse clicking into the field or by using tab, Playnite places the cursor where you clicked in the field; double-clicking the field will select all text.

    It would be convenient if a single click would select all text in the field, for example, like Firefox does when you click on the url bar. It would most definitely be convenient if this would also happen when you "tab" into the field. The latter would be especially nice when adding links, which have the "NewLink" and "NewUrl" default texts; currently you need to double click or tab in, ctrl-a to replace that text. It would be really nice if you could just click once or just tab in and by default the text in the field is selected, which means you can start typing a replacement text, or shift-arrow key to a subselect immediately.

    Screenshots

    No response

    enhancement 
    opened by rubin55 0
  • New Game Field: Summary

    New Game Field: Summary

    Feature description

    Descriptions, especially when derived from steam, tend to be overly long and include non-text elements such as images. These lengthy and cluttered entries tend to render poorly in certain regions of the UI, especially for Fullscreen. One solution would be an abbreviated summary of the game. Added as a new game field 'summary', this property could have only a limited number of characters intended to be rendered as plain text. This field could be populated using the existing implementation to retrieve the IGDB description, as it is consistently short enough to work.

    Attached are screenshots using https://github.com/davidkgriggs/PlayniteModernUI demonstrating how this new field could be used while browsing games vs viewing the details of a particular game (note the text).

    Screenshots

    Current Behavior: Poorly fitting description Potential New Behavior: Brief Summary Better Fitting Description Better Fitting Description

    enhancement 
    opened by cnapolit 0
  • Add ability to move extension specific menu options to a grouped subsection on an individual basis

    Add ability to move extension specific menu options to a grouped subsection on an individual basis

    Feature description

    As extensions continue to be released, bloat within the game/main menus will become a greater issue. One potential solution is to allow the ability to move extension specific menu options into a grouped subsection:

    // Current Behavior

    game menu -> ExtensionOptionInMenu        -> SomeOptions...
              -> AnotherExtensionOptionInMenu -> SomeOptions...
              -> SomeExtensionOptionInMenu    -> SomeOptions...
    

    // New Behavior with functionality enabled for 'AnotherExtensionOptionInMenu' & 'SomeExtensionInMenu'

    game menu -> ExtensionOptionInMenu -> SomeOptions...
              -> Extensions            -> AnotherExtensionOptionInMenu -> SomeOptions...
                                       -> SomeExtensionInMenu          -> SomeOptions...
    

    This could be supported in the UI via a list of extensions that can be toggled individually to indicate whether to hide the menu options or not. It may be worth having two toggles, one for each menu (game/main).

    Screenshots

    No response

    enhancement 
    opened by cnapolit 0
  • Option to change Playtime import setting per game

    Option to change Playtime import setting per game

    Feature description

    Option to change Playtime import setting per game.

    My proposal is to have a combobox to define the game behavior under Edit -> Advanced with the following options:

    • Use Playnite's playtime import setting
    • Always import playtime
    • Never import playtime

    The use case for this is that some people might want Playnite to track certain libraries instead of what the library profile gathers during library import and but not for others or even it can differ for specific games for a certain reason. A per game setting would give flexibility for all use cases.

    Screenshots

    No response

    enhancement 
    opened by darklinkpower 1
Releases(9.18)
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.

null 120 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

OpenShot Studios, LLC 851 Jun 30, 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 Contents General Info Installation To Do General Info Video stabilization is a software-based approach in real-time to eliminating

null 5 Mar 7, 2022
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

Ange Yaghi 8 Jun 20, 2022
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.

NVIDIA DesignWorks Samples 109 Jun 28, 2022
🎬 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

Nicke Manarin 17.7k Jun 25, 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

Fire Falcom 2 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

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

Maya Posch 2.2k 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.

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

Megan Grass 5 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

Twitter 852 Jun 27, 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

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

null 287 Jun 23, 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 Team 6.2k Jun 26, 2022
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

krishna kumar T 10 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.

ossrs 18.5k Jul 3, 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.

Techainer 11 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.

null 1.2k Jun 24, 2022