Hi!
As I wrote in the title, I’m a Unity game developer.
Recently I’ve wondered what else can I do outside of Unity with my C# knowledge & It seems like I was wrong, everything I Know in Unity doesn’t really apply to regular software development in VS.

I had an idea to develop a software interface using C# NOT a game, but I don’t know where to start because Unity is the only place I know how to develop “Softwares” with.
I can fairly say that my C# Programming knowledge is very good when I develop games in Unity –
But I came to the conclusion that it’s time to learn programming outside of Unity and to not rely on it forever.

I’m not interested in building Web pages – I’m interested in developing PC Software, Games & Servers (Multiplayer, DB…) – Pretty much a Backend developer.

My question is what do I need to learn as a guy that only knows C# Monobehaviour programming in Unity in order to break from the Unity environment and to be able to program any software & Server that I want without the need to rely on Unity & Some third-party addons like Networking. (And no, I never said it’s easy to make software)

Because I’m stuck in the Unity environment I have no idea about the Difference Frameworks & what else do I need to learn in order to develop things outside Unity and really become a real Backend developer.
My goal is still to develop Video games, but I want to extend my knowledge to other paths and not to rely on Unity forever and also to make Opportunities to work in the Programming industry.

Will appreciate any help I’m really confused.
Personally, nearly all of the professional .NET work I’ve done has been web application development. I think in fact 100% of the customer facing work I’ve done in .NET is web apps.

I used to work at a consultancy that specialized in extending Sharepoint for enterprise customers, and for that I wrote quite a bit of backend code that augmented or added functionality to Sharepoint sites. That might be closer to what you’re looking for, but I still would call that web application development.

Currently my work is mostly on a massive PHP LMS application, but I work on staff for a university and as such there’s a lot of sort of one off utilities. Things like “Parse out this massive text log file and move the data into SQL” or things of that sort of nature. However, when I interviewed for this job, the technical questions of the interview were centred around web application development.

My point being that I think from my (obviously anecdotal) experience, you’ll want to learn web application development. My recommendation for something very ubiquitous and easy to find work doing would be to learn ASP.NET, preferably using .NET Core. If you want to be a specialist in some potentially excellent new tech, learn Blazor.

We actully have a number of desktop applications written in .NET, both C# and VB, that we’re currently in the process of rebuilding as ASP.NET apps to move away from the desktop interface that our users really don’t love and into browsers instead.
Thank you!

A pretty common backend project is making a Rest API that interacts with some database. I know little about game development though so I’m not sure how useful is this knowledge there. Maybe you can try making an API to handle some sort of global ranking, just an idea.

I second this idea. While it can be used for web apps, definitely explore making a RestfulAPI. It is the cornerstone for modern back end development where multiple clients exist. Start with basic endpoints and then begin expanding into your desired flavor of databases.

This is an interesting question since I already have the knowledge you’ve written about but I’m still getting bombarded by gamedev jobs only though I can do servers, tools and frameworks. My answer would be to just start doing what you want to learn about as your pet and/or open source projects.

What is the languages you know & what I need to learn. c#, .net (What does it even mean?), sql, js?…
You could start with something like WPF, which is a framework to make windows applications with a focus on ui interactions. You could use visual studio templates to make a hello-world app that compiles & runs without any customization, then add to it as you learn.

The benefit of that would be that you get a ui interface & enough tools to display & interact with data. You would have similar tools with websites, but the ecosystem for building websites is very diverse & most of the good ways to build them don’t rely on pure c#.

Once you have are comfortable with making buttons & displaying text & data, you can add ways to get data – like connecting to databases or apis or parsing text files or stuff like that.

Just like Unity, you bootstrap your way through learning stuff by solving problems, but how you find advice is different. Learning basic Unity relies more on video tutorials while back end development is more reading documentation & cross referencing details. In that it is more like solving a Unity problem by searching forums & stack overflow. The more you do that, the more self sufficient you’ll get as a programmer.
Good luck 😄
Start with wpf. Learn what mvvm is and work from there.
My list would be:

Console applications – you can do a simple command line application with no front end and focus on the backend. These will also be the types of applications you might use for data processing.
Learn what linq is.
Write coded tests with xunit.
Entity Framework and SQL Server. Learn to work with simple databases.

If you’ve got the above,you can start applying for jobs. But if you want to be even better:
ASP. NET Razor Pages – I know you don’t want to do Web, but knowing how to build the backend for websites is useful.
Make android mobile apps with Xamarin (I prefer Flutter, but it’s not C#). Harder than websites but very cool.

Learn about Azure: App Services, SQL Server and Azure functions.
Then, stick it together: Collect data from a mobile app. Have a Web API on Azure recieving the data and storing it in a database. Use Azure functions to process it. Then make the processed data available on a website.
Use github. You’ll be able to share what you can do with any companies you apply to.

My other top tip. Read up on what new features we’re added in the last few versions of C# and what’s coming next. Your technical interview will hopefully be with a coder and talking about the latest changes in C# can be an engaging conversation for you both.

source