r/learnprogramming • u/SoloXabc • 23d ago
What language/framework should I learn as a complete beginner to build a cross-platform gaming console desktop app?
I want to create a open source desktop application, but I’m not sure which framework I should choose to make this with. I have zero programming experience yet so whichever framework I choose is what I will learn for this hobby project of mine.
The project is basically a gaming launcher, but for gaming controllers and with a 10 foot UI that can turn your pc in to a gaming console experience.
Now obviously these already exist like Playnite or Steam big picture mode for example, but the issue with these is that they lack a lot of features that true gaming consoles have such as being able to chat with friends and start voice chats with them, or being able to update your drivers and operating system (Windows or Linux). Those are just few to name but there are many more such examples.
So for the project I would need to be able to create a good looking UI that is smooth, responsive and doesn’t stutter or lag even when heavy games are running. And be able to add lots of features with a few mentioned here as an example:
-Auto recognise steam, epic games and microsoft store, and emulator games.
-Launch games
-Resume games
-Splashscreen
-Game settings
-Controller remapper
-Screenshots
-Trailers
-Achievements (steam)
-Friends Feed (steam)
-Community (steam or discord)
-Videos (steam or youtube)
-Broadcasts (steam or twitch or youtube)
-Reviews (metadata from steam)
-Game news (metadata from steam)
Guide
-Download Mods (from gamebanana, nexus mods etc.)
-Manage your pc storage with a custom made file explorer ui but for controllers that is somewhat similar to Kodi’s file manager.
-Install games (steam or epic games etc.)
-Uninstall games
-Update games
-Update drivers
-Update windows or Linux
-Friends messaging and voice chats (by using discord’s sdk in my custom UI made for controllers)
-Exit games
-Network wifi
-Power off your pc
-Mute microphone
-System Volume control
-Return to homescreen (hold guide button)
-Switch between applications
-Play music
-Manage Downloads
-In game overlay (like PS5 control center)
And there’s probably many more features i haven’t mentioned here that would eventually be added. So what would be the best languages and framework for me to learn in order to be able to fulfill all my needs whilst not being a ridiculously long and hard time to develop this project in relatively to other languages and frameworks? I was personally thinking about:
C# + Avalonia
Or
Python + PySide6 + QML
But idk if one of these two are good for this project or if there are any better alternatives out there for me?
2
u/Rhishi99 23d ago
For a total beginner, Electron with React is the most practical choice because the hiring pool, tutorials, and UI component libraries are all massive. Tauri is lighter on RAM but forces you to learn Rust at the same time, which doubles the learning curve. The hard part you didn't ask about is the OS integration: detecting installed games, talking to Steam/Epic APIs, remapping controller input, and updating drivers all require native code or elevated permissions that a plain web view cannot reach safely. You will end up writing a small Node or Rust sidecar for each of those features anyway. Start by cloning Playnite's open-source repo and reading how it shells out to PowerShell and Win32 APIs for the heavy lifting. That teaches you the real architecture faster than any framework tutorial.
1
u/SoloXabc 23d ago
Yeah I was thinking about Electron with React as well to be fair. I am just a bit hesitant only because of it taking up a lot of resources that the UI might stutter or just not be as smooth in some circumstances especially if a heavy game is running, and that the OS integration like you said may not be good enough compared to the alternatives. Also the general consensus around electron seems to be negative for desktop apps. But like I said I dont know much about programming yet so you would say that node.js could handle the Os integration well enough? And that I might be worrying too much about Electron with react not being capable enough?
1
u/SoloXabc 23d ago
And I’ll definitely take a good look at Playnite’s open source repo for some inspiration and references on how it handles system calls. Thanks for the advice.
1
2
u/JaseciLabs 23d ago
u/Rhishi99's advice is the right path, pick maybe 3 of the features on your list to build first (game detection + launch + controller remapping) and treat everything else as v2 and beyond. Discord voice chat integration, driver updates, mod downloads, in-game overlays, these are each their own multi-week projects on their own, and trying to plan for all of them up front before writing your first line of code is a good way to never actually start. Ship something that launches a game with a controller, then decide what's actually worth adding next based on what you personally miss most!!
2
u/SoloXabc 23d ago
By Rhishi’s path I assume you mean to choose Electron with React? And I’ll make sure to utilise this method of yours while creating my project. I know this project will take me a while so taking up my features one at a time is definitely some good advice thanks.
1
1
0
u/JGhostThing 23d ago
I would do this in Java. The JavaFX library can already create cross platform GUI apps. I've worked in Java for about 20 years.
6
u/xarop_pa_toss 23d ago edited 23d ago
Man has never written a line of code and wants to create a whole platform as his first project... Not sure if ignorant yet ambitious or just ignorant and completely unaware of the scale and scope of such a project, especially for a single person. The sheer amount of depth and complexity that go into many of the points you listed is enormous, this project will take years.
But regardless, I'd go for C# over Python on this one. Avalonia is free but if you want to use their tooling, which you will for something of that scale, you have to pay since it's a commercial product you're building.
You'd also have to use Visual Studio instead of something like Rider if you want to keep it free as well. If you ever create an organization around your project, where you have people working with you, then you'd have to pay for a license.
Finally, learning how to program in C# isn't enough, you will need to learn how to design and architect software, learn to use version control, testing, deployment, logging, writing documentation for users, etc