Giter VIP home page Giter VIP logo

playnite-legendary-plugin's Introduction

playnite-legendary-plugin

Epic Games Store library integration with Legendary Launcher for Playnite, based on Epic Store library integration.

Crowdin GitHub release (latest by date)

Bugs

If you encounter any bug, then you can report it at github.com/hawkeye116477/playnite-legendary-plugin/issues, but before opening any ticket you should read Troubleshooting section on wiki.

New cool features

If you want some new feature, then you can say about that at https://github.com/hawkeye116477/playnite-legendary-plugin/issues, but before opening any new subject you should look at github.com/users/hawkeye116477/projects/1 if it's not already planned.

Questions

If you read wiki and still don't know something, then you can ask a question on forum.

License

This project is distributed under the terms of the MIT license and uses third-party libraries that are distributed under their own terms (see ThirdPartyLicenses.txt).

playnite-legendary-plugin's People

Contributors

crowdin-bot avatar dependabot[bot] avatar github-actions[bot] avatar hawkeye116477 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

playnite-legendary-plugin's Issues

Check for games updates seems broken

Playnite version

10.32.0.18786

Plugin version

1.5.0.40296

Legendary Launcher version

0.20.34

Bug description

Every time I try to check whether my epic games are up to date, the plugin breaks, giving me a screen and forcing me to reload Playnite entirely.

Relevant log


27-01 12:46:13.685|ERROR|PlayniteApplication:Unhandled exception occured.
System.ArgumentNullException: Value cannot be null.
Parameter name: key
   at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at LegendaryLibraryNS.LegendaryUpdateController.<CheckGameUpdates>d__2.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryGameController.cs:line 426
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at LegendaryLibraryNS.LegendaryUpdateController.<CheckAllGamesUpdates>d__3.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryGameController.cs:line 473
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at LegendaryLibraryNS.LegendaryLibrarySettingsView.<GamesUpdateCheckBtn_Click>d__22.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrarySettingsView.xaml.cs:line 564
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   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.Window.ShowHelper(Object booleanBox)
   at System.Windows.Window.Show()
   at System.Windows.Window.ShowDialog()
   at Playnite.Windows.WindowFactory.<>c__DisplayClass16_0.<CreateAndOpenDialog>b__0(Object a) in C:\projects\playnite\source\Playnite\Windows\WindowFactory.cs:line 82
   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 System.Windows.Threading.DispatcherSynchronizationContext.Send(SendOrPostCallback d, Object state)
   at Playnite.Windows.WindowFactory.CreateAndOpenDialog(Object dataContext) in C:\projects\playnite\source\Playnite\Windows\WindowFactory.cs:line 57
   at Playnite.DesktopApp.ViewModels.DesktopAppViewModel.<InitializeCommands>b__323_48(Object a) in C:\projects\playnite\source\Playnite.DesktopApp\ViewModels\DesktopAppViewModel_Commands.cs:line 351
   at Playnite.SDK.RelayCommand`1.Execute(Object parameter) in C:\projects\playnite\source\PlayniteSDK\RelayCommand.cs:line 205
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   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 Playnite.DesktopApp.ProgramEntry.Main(String[] args) in C:\projects\playnite\source\Playnite.DesktopApp\ProgramEntry.cs:line 71

Screenshots

image

Nothing is downloading. Neither games nor the EOS overlay now.

Prerequisites

Playnite version

10.33.0.16167

Plugin version

1.7.6.39050

Legendary Launcher version

0.20.34

Bug description

For some reason, I can't download anything. All is listed as "queued". What do I do?

Relevant log

I don't know where to find the log for this specific issue, but it just says "queued".

Screenshots

legendary

Improve custom launcher path selection dialog

Is your feature request related to a problem? Please describe.

Currently it the dialog asks you to select a directory

Describe the solution you'd like

In my opinion it would be better if the dialog had a filter set to legendary.exe so it's more clear what you should select.

It can be done like this:

playniteApi.Dialogs.SelectFile("legendary exe|legendary.exe");
https://api.playnite.link/docs/api/Playnite.SDK.IDialogsFactory.html#Playnite_SDK_IDialogsFactory_SelectFile_System_String_

Describe alternatives you've considered

No response

Additional context

No response

Most games won't import

Prerequisites

Playnite version

10.33.0.16167

Plugin version

1.7.7.38382

Legendary Launcher version

0.20.34

Bug description

Whenever I update the Legendary (Epic) library it only imports two of my installed games and only displays a few of the uninstalled Epic games. The Epic plugin sees them fine, although whenever I migrate them from the Epic plug in the Legendary plug in doesn't migrate any games apart from the ones it already finds.

I have tried uninstalling both plugins and deleting their folders then reinstalling the Legendary plug in (same issue) and I have also uninstalled and reinstalled Legendary via PIP. Whenever I run Legendary via CLI it sees all my games (using legenday list-games and legendary egl-sync), but everytime I run it through Playnite it just won't see the rest of my games, installed or uninstalled.

I would reinstall them through the plugin but sadly most of the games don't even show up in the ininstalled section.

Any help is appreciated.

Relevant log

Going of the log, when it runs legendary it sees the games.

30-07 10:01:58.201|DEBUG|LegendaryLibrary#CliWrapCommandExtensions:Executing command: C:\Python312\Scripts\legendary.exe -V
30-07 10:02:18.009|DEBUG|LegendaryLibrary#LegendaryLibrary:Found 23 installed Epic games.
30-07 10:04:43.071|DEBUG|LegendaryLibrary#LegendaryLibrary:Found 329 library Epic games.

Screenshots

View of the Legendary (Epic) library
Screenshot 2024-07-30 120609

View of the Epic library
Screenshot 2024-07-30 120629

Account Authentication Broken

Plugin's version

1.1.3

Playnite's version

10.20

Bug description

Tried to connect my Epic Games account to the plugin and authenticate but authentication is totally broken. Tried restarting, deleting the config file and re-installing the extension. Nothing works.

Relevant log

Error message says 'Failed to authenticate user'

Screenshots

image

Toggle for Playtime sync

Is your feature request related to a problem? Please describe.

With the Playnite Setting "Import playtime of games in library" set to "Always" the playtime for the EGS games gets reset after every library sync, and we lose the time tracked by Playnite itself.

Describe the solution you'd like

A toggle under settings to disable playtime syncing and the resulting overwriting.

Describe alternatives you've considered

If the plugin has access to the Playnite entry's playtime it could compare it to the time reported by Legendary and use whichever is greater.

Additional context

Related issues: #6 and derrod/legendary#502

Plugin says I'm unauthenticated on library update but works after opening the extension settings once

Playnite version

10.32

Plugin version

1.7.1

Legendary Launcher version

0.20.34

Bug description

This has happened multiple times randomly when updating the library.

To reproduce:

  1. Try to update the library
  2. I get a notification saying that I'm not authenticated
  3. After clicking the notification, it opens the settings and it says that I'm signed in. I don't do anything other than close the window.
    image
  4. I try to update the library again and this time it updates the library without any issues.
  5. Subsequent library update attempts work without any issues and it only seems to appear again if several days have passed since the last library update.

Relevant log

21-03 17:36:28.171|DEBUG|LegendaryLibrary#LegendaryLibrary:Found 8 installed Epic games.
21-03 17:36:29.529|ERROR|LegendaryLibrary#EpicAccountClient:Failed to validation Epic authentication.
LegendaryLibraryNS.Services.TokenException: errors.com.epicgames.common.oauth.invalid_token
   en LegendaryLibraryNS.Services.EpicAccountClient.<InvokeRequest>d__19`1.MoveNext() en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:línea 271
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   en LegendaryLibraryNS.Services.EpicAccountClient.<GetIsUserLoggedIn>d__14.MoveNext() en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:línea 165
21-03 17:36:29.953|ERROR|LegendaryLibrary#LegendaryLibrary:Failed to import linked account Epic games details.
System.Exception: User is not authenticated.
   en LegendaryLibraryNS.Services.EpicAccountClient.<GetAssets>d__15.MoveNext() en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:línea 184
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   en System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   en LegendaryLibraryNS.LegendaryLibrary.<GetLibraryGames>d__17.MoveNext() en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:línea 116
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   en LegendaryLibraryNS.LegendaryLibrary.GetGames(LibraryGetGamesArgs args) en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:línea 210

Screenshots

No response

EA Game doesnt launch. EA APP Activation button doesnt detect games or initiate a setup.

Prerequisites

Playnite version

10.33

Plugin version

1.7.5

Legendary Launcher version

0.20.34

Bug description

Hi there, Today EGS gave away an EA game called Dragon Age Inquisition. This is the first EA game ive added to my EGS account and the game will not launch. The game is linked to my EA account but when i launch it doesnt see playnite. EA APP tells me its looking for EGS. In Legendary Epic Plugins settings ived attempted to use the activate button under EA App and it tells me that there is no EA games nor does it show me a setup process. I logged out and logged back into my EGS account in the Legendary Epic plugin settings and this does not resolve the issue. the ubisoft activate games button works fine like it always has for me but not the EA activate one. perhaps EA games acquired thru EGS need EGS to be installed unlike ubisoft games?

Relevant log

"No availible EA games" after clicking activate games buttons in plugin settings. not even a set up process.

Screenshots

No response

Button to clear completed downloads

Is your feature request related to a problem? Please describe.

Currently downloads have to be removed one by one

Describe the solution you'd like

A button to clear all completed downloads would be very helpful

Describe alternatives you've considered

No response

Additional context

The button should go around here

image

Extension not working after 1.7.0 update.

Playnite version

10.32

Plugin version

1.7.0

Legendary Launcher version

0.20.34

Bug description

When i open playnite the plugin can't import games and gives the error: errors.com.epicgames.common.oauth.invalid_token. And if i go to the plugin settings the program crashes asking for a restart.

Relevant log

playnite log.zip

Screenshots

error
crash

EOS Overlay install crash

Plugin's version

1.1.1

Playnite's version

10.17

What happened?

Playnite crashes when trying to install EOS Overlay. Simple, from what it looks like its just a type cast issue so it should be a quick fix

Relevant log

16-06 15:56:30.392|ERROR|PlayniteApplication:Unhandled exception occured.
System.InvalidCastException: Nie można rzutować obiektu typu 'System.String' na typ 'Download'.
   w LegendaryLibraryNS.LegendaryGameInstaller.<LegendaryGameInstallerUC_Loaded>d__20.MoveNext() w C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryGameInstaller.xaml.cs:wiersz 0
--- Koniec śladu stosu z poprzedniej lokalizacji, w której wystąpił wyjątek ---
   w System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   w System.Windows.Threading.DispatcherOperation.InvokeImpl()
   w System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   w MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   w System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   w MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   w System.Windows.Threading.DispatcherOperation.Invoke()
   w System.Windows.Threading.Dispatcher.ProcessQueue()
   w System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   w System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   w MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   w MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   w System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   w System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   w System.Windows.Window.ShowHelper(Object booleanBox)
   w System.Windows.Window.Show()
   w System.Windows.Window.ShowDialog()
   w LegendaryLibraryNS.LegendaryLibrarySettingsView.EOSOInstallBtn_Click(Object sender, RoutedEventArgs e) w C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrarySettingsView.xaml.cs:wiersz 102
   w System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   w System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   w System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   w System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   w System.Windows.Controls.Primitives.ButtonBase.OnClick()
   w System.Windows.Controls.Button.OnClick()
   w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   w System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
   w System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   w System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   w System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   w System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   w System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
   w System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
   w System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   w System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   w System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   w System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   w System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   w System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   w System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
   w System.Windows.Input.InputManager.ProcessStagingArea()
   w System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   w System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   w System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   w System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   w System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   w MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   w MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   w System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   w System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   w System.Windows.Window.ShowHelper(Object booleanBox)
   w System.Windows.Window.Show()
   w System.Windows.Window.ShowDialog()
   w Playnite.Windows.WindowFactory.<>c__DisplayClass16_0.<CreateAndOpenDialog>b__0(Object a) w C:\projects\playnite\source\Playnite\Windows\WindowFactory.cs:wiersz 82
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   w System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   w System.Windows.Threading.DispatcherSynchronizationContext.Send(SendOrPostCallback d, Object state)
   w Playnite.Windows.WindowFactory.CreateAndOpenDialog(Object dataContext) w C:\projects\playnite\source\Playnite\Windows\WindowFactory.cs:wiersz 57
   w Playnite.DesktopApp.ViewModels.DesktopAppViewModel.<InitializeCommands>b__319_48(Object a) w C:\projects\playnite\source\Playnite.DesktopApp\ViewModels\DesktopAppViewModel_Commands.cs:wiersz 350
   w Playnite.SDK.RelayCommand`1.Execute(Object parameter) w C:\projects\playnite\source\PlayniteSDK\RelayCommand.cs:wiersz 205
   w MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   w System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   w System.Windows.Threading.DispatcherOperation.InvokeImpl()
   w System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   w MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   w System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   w MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   w System.Windows.Threading.DispatcherOperation.Invoke()
   w System.Windows.Threading.Dispatcher.ProcessQueue()
   w System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   w MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   w System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   w MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   w MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   w System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   w System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   w System.Windows.Application.RunDispatcher(Object ignore)
   w System.Windows.Application.RunInternal(Window window)
   w System.Windows.Application.Run(Window window)
   w Playnite.DesktopApp.ProgramEntry.Main(String[] args) w C:\projects\playnite\source\Playnite.DesktopApp\ProgramEntry.cs:wiersz 61

Cannot authenticate

Playnite's version

10.20

Plugin's version

1.1.3

Legendary Launcher version

?

Bug description

When I try to authenticate, it is giving me an error "Failed to authenticate user". It has imported the installed game, but due to the authentication error it cannot import the other games. OS - Windows 10. I installed legendary by downloading the legendary.exe from github. I was trying to authenticate by entering my epic account email and password.

Relevant log

The error message is "Failed to authenticate user".

Screenshots

Screenshot (6)

Screenshot (7)

Following is the location where legendary.exe is stored:
Screenshot (8)

Playnite not loading extension

This from the logs could be related:

30-05 00:19:25.781|ERROR|ExtensionFactory:Failed to load plugin: Legendary (Epic Games) library integration
System.ArgumentException: Caracteres no válidos en la ruta de acceso.
   en System.IO.LongPathHelper.Normalize(String path, UInt32 maxPathLength, Boolean checkInvalidCharacters, Boolean expandShortPaths)
   en System.IO.Path.NewNormalizePath(String path, Int32 maxPathLength, Boolean expandShortPaths)
   en System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   en System.IO.Path.GetFullPathInternal(String path)
   en LegendaryLibraryNS.LegendaryLauncher.get_DefaultGamesInstallationPath() en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLauncher.cs:línea 85
   en LegendaryLibraryNS.LegendaryLibrarySettings..ctor() en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrarySettingsViewModel.cs:línea 26
   en LegendaryLibraryNS.LegendaryLibrarySettingsViewModel..ctor(LegendaryLibrary library, IPlayniteAPI api) en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrarySettingsViewModel.cs:línea 55
   en LegendaryLibraryNS.LegendaryLibrary..ctor(IPlayniteAPI api) en C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:línea 41

Should it be C:\Users\ (My User) \Documents\... ? Bartek is not my windows user

Tried with both, 1.0 and 1.1.0, downloaded from inside playnite and github.

Overlay not working

Plugin's version

1.1.2

Playnite's version

10.20

Bug description

I'm not sure if I'm missing something or if it's not supported but the Epic overlay is not available in the games

Relevant log

Logs don't contain any reference to the plugin when launching the game

Screenshots

image

Requires authentication, but when re-authenticated again it does nothing

Playnite version

10.32.0.18786

Plugin version

1.5.0.40296

Legendary Launcher version

0.20.34

Bug description

It said 'Requires authentication', but when i click Authenticate and logged in with my Epic account, the browser is exit and nothing changed, no popup error or something.
Restart Playnite still got same error authentication

Relevant log

30-01 12:38:30.562|DEBUG|LegendaryLibrary#LegendaryLibrary:Found 1 installed Epic games.
30-01 12:38:30.562|ERROR|LegendaryLibrary#LegendaryLibrary:Failed to import linked account Epic games details.
System.Exception: User is not authenticated.
   at LegendaryLibraryNS.Services.EpicAccountClient.<GetAssets>d__15.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:line 178
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at LegendaryLibraryNS.LegendaryLibrary.<GetLibraryGames>d__17.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:line 116
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at LegendaryLibraryNS.LegendaryLibrary.GetGames(LibraryGetGamesArgs args) in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:line 207

Screenshots

image

Playnite crashes

When I try to access the legendary tab or try to download/repair games Playnite will crash.

Bellow you can see the logs
g.zip

Error while installing overlay

Plugin's version

1.1.2

Playnite's version

10.20

Bug description

The error happened when using pip-installed Legendary. Enabling and configuring a custom launcher path fixed the issue when attempting to install again

Relevant log

[DLManager] INFO:  - Cache usage: 0.00 MiB, active tasks: 0
[DLManager] INFO:  + Download	- 0.00 MiB/s (raw) / 0.00 MiB/s (decompressed)
[DLManager] INFO:  + Disk	- 3.26 MiB/s (write) / 0.00 MiB/s (read)
[DLManager] INFO: Waiting for installation to finish...
[DLManager] INFO: All done! Download manager quitting...
[cli] INFO: Finished downloading, setting up overlay...
[cli] INFO: Updating overlay registry entries from "C:\Program Files (x86)\Epic Games\Epic Online Services\managedArtifacts\98bc04bc842e4906993fd6d6644ffb8d" to "G:\Games\PC\Legendary\.overlay"
Traceback (most recent call last):
  File "c:\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python39\Scripts\legendary.exe\__main__.py", line 7, in <module>
  File "c:\python39\lib\site-packages\legendary\cli.py", line 3086, in main
    cli.manage_eos_overlay(args)
  File "c:\python39\lib\site-packages\legendary\cli.py", line 2348, in manage_eos_overlay
    remove_registry_entries(prefix)
  File "c:\python39\lib\site-packages\legendary\lfs\eos.py", line 134, in remove_registry_entries
    remove_registry_value(HKEY_LOCAL_MACHINE, VULKAN_OVERLAY_KEY, value)
  File "c:\python39\lib\site-packages\legendary\lfs\windows_helpers.py", line 58, in remove_registry_value
    k = winreg.OpenKey(hive, key, reserved=0, access=access)
PermissionError: [WinError 5] Acces Denied

19-10 12:20:19.578|ERROR|LegendaryLibrary#LegendaryDownloadManager:[Legendary] exit code: 1

Screenshots

No response

Right click game menu shows a lot of items if multiple items are selected

Playnite version

10.32

Plugin version

1.7.1

Legendary Launcher version

0.20.34

Bug description

I don't know if it's intended but selecting multiple items shows a lot of items in the right click menu and I think it's not clear and there are possible improvements:

  1. Move items to their own "Legendary Library" submenu to make it clearer that these actions belong to the plugin
  2. Show these items when only 1 game is selected because currently it's not very friendly seing too many items there and also don't know to which game each one belongs. Keeping it simple would be better in my opinion.
    For an installed game:
    image
    For an uninstalled game:
    image

Not showing all items would also help to improve performance because currently there's a small freeze due to adding to many items to the menu

Relevant log

Screenshots

image

image

Confusing update message on startup

Prerequisites

Playnite version

10.33

Plugin version

1.7.4.41039

Legendary Launcher version

0.20.34

Bug description

I got this update notification window on startup after disabling my PC internet and restarting it.

The window displays some of my games with a 0 after them, which I guess it's supposed to be the game update size. My guess is that the plugin tried to check for game updates and failed to fetch correctly if there was an update because there was no internet but mistakenly identified that there were updates available with 0 size.

Relevant log

I forgot about it and deleted my log yesterday that contained the logs after this happened. Let me know if it's needed to try to reproduce it again.

Screenshots

Playnite DesktopApp_yZdvdIy55k

image

Metadata download sets incorrect developer and publisher fields

Prerequisites

Playnite version

10.33

Plugin version

1.7.7.38382

Legendary Launcher version

0.20.34

Bug description

Publisher seen on game store page is being set as Developer and no Publisher is being set.

Example using game Islets:

image

image

Cursed to Golf:

image

image


I also found a weird case where in Frontier Hunter: Erza's Wheel of Fortune both the developer and Publisher on the store page is IceSitruuna but it's not applying any Publisher like in the previous examples and is setting Chongquin[...] as Developer, which is not seen anywhere in the store page.

image

image

Relevant log

Not applicable

Screenshots

No response

Extension unable to utilize {PlayniteDir}

Plugin's version

1.1.2

Playnite's version

10.19

Bug description

Legendary Playnite extension is unable to recognize {PlayniteDir} in both game install location selection, and custom legendary install directory. Effectively neuters portable playnite installations using playnite-legendary-plugin.

Relevant log

N/A

Screenshots

No response

Can't connect to Epic account warning on Playnite initial startup

Playnite version

10.32.0.18786

Plugin version

1.7.1.30041

Legendary Launcher version

0.20.34

Bug description

When I launch playnite for the first time a day, I get a warning that the plugin fails to connect my Epic account - clicking the warning prompts the plugin to sign into Epic then goes away (I don't need to input my log in details again, it just seems the plugin isn't triggering a login upon loading playnite). Closing and Launching playnite subsequently the issue doesn't occur, only after PC restart / shutdown and reboot.
Is there a way to prevent this?

The log file for extensions (extensions.log) snippet pasted below refers to a user path called "C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:line 116" which I do not have on my PC. Could this be the issue?

Relevant log

23-03 17:58:16.033|DEBUG|LegendaryLibrary#LegendaryLibrary:Found 0 installed Epic games.
23-03 17:58:17.163|ERROR|LegendaryLibrary#EpicAccountClient:Failed to validation Epic authentication.
LegendaryLibraryNS.Services.TokenException: errors.com.epicgames.common.oauth.invalid_token
at LegendaryLibraryNS.Services.EpicAccountClient.d__19`1.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:line 271
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at LegendaryLibraryNS.Services.EpicAccountClient.d__14.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:line 165
23-03 17:58:17.177|ERROR|LegendaryLibrary#LegendaryLibrary:Failed to import linked account Epic games details.
System.Exception: User is not authenticated.
at LegendaryLibraryNS.Services.EpicAccountClient.d__15.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\Services\EpicAccountClient.cs:line 184
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at LegendaryLibraryNS.LegendaryLibrary.d__17.MoveNext() in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:line 116
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at LegendaryLibraryNS.LegendaryLibrary.GetGames(LibraryGetGamesArgs args) in C:\Users\Bartek\Documents\git\playnite-legendary-plugin\src\LegendaryLibrary.cs:line 210

Screenshots

No response

Unable to update game

Prerequisites

Playnite version

10.33

Plugin version

1.7.7.38382

Legendary Launcher version

0.20.34

Bug description

Unable to update game Frontier Hunter: Erza's Wheel of Fortune after it got updated to the full game from Early Access.

  1. Right click on game -> Check for updates indicates that there's no update available:
    Playnite DesktopApp_6I2cElvgba

  2. Same for Main menu -> Extensions -> Legendary -> Check for updates
    image

  3. Upon launching game, the game is not run it opens this dialog to download an update but doesn't display anything:
    Playnite DesktopApp_R4YpCfWoD0

Relevant log

26-07 07:50:31.062|DEBUG|LegendaryLibrary#CliWrapCommandExtensions:Executing command: C:\Games\Software\Legendary\legendary.exe -y sync-saves 50a44688f80743a8b7880b41ef69f489 --skip-upload --save-path C:\Users\Brandon\AppData\LocalLow\IceSitruuna\Frontier_Hunter\PlayerPrefs\
26-07 07:50:32.304|DEBUG|LegendaryLibrary#LegendaryCloud:[Legendary] [Core] INFO: Trying to re-use existing login session...
26-07 07:50:32.696|WARN |LegendaryLibrary#LegendaryCloud:[Legendary] [Core] WARNING: Game Manifest "G:\Games\PC\Epic Games\TheWitness\.egstore\22DFA4E24129653464CC83B9A11AE985.manifest" not found, cannot import!
26-07 07:50:32.696|WARN |LegendaryLibrary#LegendaryCloud:[Legendary] [Core] WARNING: Game Manifest "C:\Software\Twinmotion2020.2EDU\.egstore\510A5DA74CC9B6149BD4BAAAE6CD8F5A.manifest" not found, cannot import!
26-07 07:50:32.696|WARN |LegendaryLibrary#LegendaryCloud:[Legendary] [Core] WARNING: Game Manifest "G:\Games\PC\Epic Games\YookaLaylee\.egstore\63EDAB2948586729284592997B0769C6.manifest" not found, cannot import!
26-07 07:50:32.993|DEBUG|LegendaryLibrary#LegendaryCloud:[Legendary] [cli] INFO: Got 1 remote save game(s)
26-07 07:50:32.993|DEBUG|LegendaryLibrary#LegendaryCloud:[Legendary] [cli] INFO: Checking "Frontier Hunter: Erza's Wheel of Fortune" (50a44688f80743a8b7880b41ef69f489)
26-07 07:50:32.993|DEBUG|LegendaryLibrary#LegendaryCloud:[Legendary] [cli] INFO: Overriding save path with "C:\Users\Brandon\AppData\LocalLow\IceSitruuna\Frontier_Hunter\PlayerPrefs\"...
26-07 07:50:32.993|DEBUG|LegendaryLibrary#LegendaryCloud:[Legendary] [cli] INFO: Save game for "Frontier Hunter: Erza's Wheel of Fortune" is up to date, skipping...
26-07 07:50:33.105|DEBUG|LegendaryLibrary#CliWrapCommandExtensions:Executing command: C:\Games\Software\Legendary\legendary.exe launch 50a44688f80743a8b7880b41ef69f489
26-07 07:50:35.678|DEBUG|LegendaryLibrary#LegendaryPlayController:[Legendary] [cli] INFO: Logging in...
[Core] INFO: Trying to re-use existing login session...
[cli] INFO: Checking for updates...
[cli] ERROR: Game is out of date, please update or launch with update check skipping!

26-07 07:50:35.679|ERROR|LegendaryLibrary#LegendaryPlayController:[Legendary] exit code: 1

Screenshots

image
__

Dialog being displayed when starting or closing game

Playnite version

10.32

Plugin version

1.4.0

Legendary Launcher version

0.20.34

Bug description

A dialog saying "Downloading Metadata" is being displayed when a game is started or when it is stopped. This happens to all games, even the ones not imported by this plugin.

Relevant log

Nothing about the plugin available in logs

Screenshots

image

image

image

Game Updating

Is your feature request related to a problem? Please describe.

When trying to launch an outdated game, you currently just get an error. The 'Repair' option also doesn't seem to cover updating. Because of this, you have to either uninstall and reinstall entirely or go outside playnite to update.

Describe the solution you'd like

Since there doesn't seem to be a method for checking for updates, a manual context menu action calling install with --update-only or --repair-and-update would handle it fine.

Describe alternatives you've considered

Currently, I use the CLI to update unless it's a very small game.

Additional context

No response

Doesn't Import Installed Games

Prerequisites

Playnite version

10.33

Plugin version

1.7.6

Legendary Launcher version

NA

Bug description

I have a few Epic installed games, but Legendary in Playnite isn't showing installed games in the Installed filter option. Picture 1 shows my Epic launcher installed games. Pic 2's Legendary library filter. Pic 3 the library name in focus.

Relevant log

NA

Screenshots

image
image
image

Rare support

Prerequisites

  • I've looked through existing issues to make sure that this feature hasn't been requested before .

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

I'm only guessing that since Rare (https://github.com/RareDevs/Rare) is using Legendary, it may be possible to add support for Rare too.

Describe alternatives you've considered

I may didn't found the way to do this already, maybe you support this already.

Additional context

No response

"Failed to import games from Legendary (Epic). User is not authenticated."

It seems that playnite legendary plugin can't refresh token after it "expires_at" time in user.json file at ".config\legendary", and thus playnite is welcoming me with above notification. I am able to authenticate through plugin's configuration, but after token's expiration date authentication needs to be repeated. I do also have installed Heroic Launcher (not starting with system) and instead of manual authentication through plugin's configuration I can just run Heroic Launcher which updates user.json file automatically and thus playnite legendary plugin no longer requires authentication.

I don't know if this is of any use, but I've tried putting standalone version of legendary .exe in "Program Files\Legendary", use custom launcher path in plugin's configuration and installing legendary through pip. None of this helped me with authentication issue.

Am I doing something wrong here or is it expected behavior? I've started to use playnite recently as GOG Galaxy substitution. Also never used Legendary Launcher before (or Heroic Launcher).

Upload playtime to Epic Cloud

That would be good feature to add for feature, but I would need to do research how request for that should look like and for now can't find info about that at official Epic site.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.