You're definitely missing out on a really, really big and amazing world of C#. Learning C# via Unity definitely seems to create a lot of bad habits for junior devs and I notice people who have never stepped outside of Unity usually have great, big gaps in their understanding of C# and OOP ... for example, junior devs who have worked with Unity for 1 to 3 years will often make every single thing a MonoBehaviour, even when that's a terrible idea, and won't know how to write a regular C# class of their own and simply instantiate it with a constructor. So I often have to provide intense, focused training for junior devs to fix this and fill the gaps. You'd be surprised how many of them think int and float are the only primitive data types and can't distinguish between value vs reference types (structures vs classes) or where they live. I wholeheartedly recommend everyone reads a traditional C# programming book and practices writing some console apps, because Unity tutorials generally only show bad ways to use a tiny part of the C# language to complete a sketchy and flimsy feature. Otherwise people will have a huge struggle trying to learn to put their Unity knowledge into a real game that can scale up and be maintained.
The history of C# (.NET actually) is quite interesting. They've gone from being platform specific (Windows) to full cross-platform with the introduction of .NET Core, performance has also seen a massive improvement. Don't let the frameworks put you off however, the main thing to keep in mind now is to go for anything that is .NET 6 + (.NET 7 to be released later this year which will include MAUI which is something I've been keeping my eye on for some time)
Wow, you mean that a widely known Object-Oriented Programming language is used for more things than making games in a single game engine? TOTALLY MINDBLOWING
I know it’s important to have a tutorial for every section of each new step but I think it’s SUPER important to see the grand scope of a project as quickly as possible. So new coders can visualize all the steps and how they interconnect. Excellent tutorial! I hope you create more in this vein in the future :)
That's what I was thinking. I don't think there is something like this on the internet right now and it should be super handy for somebody wanting to see it from start to finish. It shows how to piece it all together as well as a bunch of points to google and learn.
I've been working on Java web APIs for coming on 5 years now and never really understood the root of how it works because it never really mattered for getting my tasks done. Funny how the place I learn about how it all works is on a guide video for my hobby projects. As always, love the stuff you put out. Big fan of your style of teaching and how you assume I have some knowledge or at least am capable of getting that knowledge if necessary.
Agreed. Would be nice to see this deployed and what the cost/speed of the servers would be in an affordable tier. I've thrown some .NET web APIs on free tier Azure but it is not ideal for anything beyond small tests.
I spent 3 weeks searching for a solution like this.. 3 weeks!! I love your tutorial so much, its so similar to how Laravel works except this is in C# which is just that beautiful to do. Thank you so much!!
Instead of having a class library project outside Unity and copying the built DLL into Unity there are two other solutions one can try: 1. Create a SharedLibrary folder within Unity and create an assembly definition file so Unity treats it as a separate c# project. Now in the standalone solution you can also create a SharedLibrary project and inside its csproj file just define that it should link in all the files from the SharedLibrary folder inside Unity. Now both Unity and standalone solution see the same files on the hard drive and you can change them from either place. AsmDef is important so you don't accidentally reference other code from within Unity that is not part of that folder. This is the method I used with success in the past. 2. If you have AsmDef file in that Unity folder Unity will actually generate a csproj file for that folder in the root of the project, so you could just try to directly link that csproj inside your standalone solution. This I haven't tried.
I tried out the second method method, and while it worked initially it seems fragile as Visual Studio misconfigured the path of the unity csproj's corresponding dll file after being reopened. I found that instead of directly linking the csproj, link the SharedLibrary.dll from unity as a dependency for the Server solution. The SharedLibrary.dll should be generated in Library/ScriptAssemblies.
I use chatGPT for clearer instruction in the option 1 and it worked Here are the steps in more detail: Create a SharedLibrary Folder in Unity: - In Unity's Project window, right-click in the Assets folder or wherever you want to store your shared code. - Choose "Create" > "Folder" and name it something like "SharedLibrary." Create an Assembly Definition File in Unity: - Within the "SharedLibrary" folder, create an assembly definition file (AsmDef) by right-clicking, choosing "Create" > "Assembly Definition," and giving it an appropriate name. - The AsmDef file helps Unity treat this folder as a separate C# project and manage its dependencies correctly. Create a SharedLibrary Project in Your Standalone Solution (e.g., Visual Studio): - In your standalone solution (e.g., Visual Studio), create a new project that represents your shared code library. This project should not have its own source files; instead, it will link to the files in the "SharedLibrary" folder in Unity. Edit the .csproj File of the SharedLibrary Project (StandAlone Solution): - Open the .csproj file of the "SharedLibrary" project in a text editor. - Inside the .csproj file, you'll define that it should link in all the C# files from the "SharedLibrary" folder inside Unity. This is typically done using ItemGroup elements in the .csproj file. For example:
- Make sure to adjust the path to match your Unity project's directory structure. Managing Shared Code: - With this setup, both Unity and your standalone solution will see the same code files from the "SharedLibrary" folder. You can make changes to these files from either place, and the changes will be reflected in both environments. Benefits of Assembly Definition (AsmDef): - The AsmDef file is crucial because it defines the scope of what code Unity should consider when building. It ensures that Unity only includes code from within the "SharedLibrary" folder and not unintentional references to unrelated code.
@@shunpeng5700 Hey, I tried following the steps written here but I'm really confused on the linking to the files in unity part because the SharedLibrary doesn't contain anything but the assembly definition and no .cs files. I think I might be just dumb, but can I get some clarification on that part?
Nvm, I managed to do it now. I should not have ignored the "This project should not have its own source files" since I thought that all the code is doing is just copying and pasting the dll to the SharedLibrary folder in unity upon compiling or something. If you followed the tutorial, just move the .cs files under the standalone solution to the SharedLibrary folder in unity and then rebuild the standalone solution. I am dumb indeed
I have been working for companies as a programmer for about 5 years and your videos are exactly what was missing for someone like me to get into a new tool as fast as possible. I will check out your channel if you have any video for BaaS techs.
Who is a web dev and is enjoying this content ? For me because I'm new to game dev and frankly the mindset for game dev is totally different from web dev, i find this video super enjoyable because i know and deeply understand what is he taking about compared to advanced game dev stuff where i feel a bit lost, not the programming part, that's easy but the part about game design, modeling, shaders, million options and toggles in unity editor
Cause Tarodev is a boss! It's always easy to follow along with his videos because he breaks it down in layman's terms effectively, and has enough humor to make it an enjoyable experience
I've yet to find a good, up-to-date .NET course that isn't stretched to infinity and beyond. They're designed for people completely new to programming, which makes them a slog if you aren't. And oftentimes, even if you replicate the code and environment exactly, what works in the tutorial may break on your PC. Chasing down a fix through StackOverflow for technology you don't understand is a pain and a turn-off. This applies to the official documentation, even.
You gotta make a full round based game (take a simple 2v2v2NPC-on-a-chessboard-with-obstacles match) with server authoritative logic, storing progress and player data in DB. One of the bigger problem I face, when thinking of building own backend, is IAP server side validation - so maybe another topic for you to cover with GREAT value to a lot of people, who rely on Google Play Store, where due to policies all purchases has to be through their services.. so they grab 30% of the revenue. Yay..
Great video - loving it so far - but question I gotta rip right off the top is can't ASP NET Core support UDP API's? I am very interested in squeezing the server for all its worth and would want to know how to get rid of the TCP overhead once the client is properly authenticated and using a JWT or other server authoritative token in future communications.
I love servers, I have one setup for my home, but nothing specialized for games or anything never made anything software wise but and do some server admin stuff. :D
Thank you for the video! I'm currently learning webdev and yet I only saw nodejs and maybe python for backend solutions. Seeing a statically typed language for webdev/servers gives me new motivation to learn back end ^^' no front to js and python ofc
Blazor is awesome if you like typed languages for both front and back end. That's not to say you can't still use JS on the front-end, you can have isolated JS/CSS files for pages/components. Invoke JS from C# and vice versa. .NET has vastly improved since the .Netframework days.
17:00 Don't know how it is with Rider but in Visual Studio you can just open the same solution in another instance of VS. I used to debug two LAN apps this way and I had no issues with it. I suppose it works similar in game-server scenario.
As a .net dev I highly appreciate this series. I once wrote a simple matchmaking tool and I still remember which pain the Unity part was. Now I'm at a point in my game where I want to implement some simple things like Highscores and struggle with the decision of trying it again or just use some premade solutions. Does your solution work in WebGl? Because besides unity often being "special" WebGl is the real pain in my opinion xD
Thank for sharing! I have a question. Is there any game server framework like Nakama that using .Net Core? It may be super helpful for the client dev like me
This was an excellent video. I come from a low-level background and over the last 15 or so years I've never stepped into the world of servers and web apps. But lately this has been my "final frontier" I've wanted to learn, and I've been writing some desktop utilities doing various stuff with System.Net and System.Web, like scraping pages and downloading remote databases and assets. Creating my own web servers and APIs is what I've been wanting to get into next, so I can dive into the AWS platform and start providing some interesting web services and servers for games and apps. So I truly thank you for this excellent video, I'll be trying this out and trying to get my own servers running on AWS soon!
TaroDev, it would be awesome if you did a series showing how to make a game like Super Auto Pets. It looks like that game emulates a massive multiplayer game by matching a player with other previously recorded players because no user interaction is needed during the game simulation.
The SharedLibrary is so the Player class in the server and unity are the same correct? If we were to instead create our own Player class in unity that has the same fields as the servers Player class, would it not work?
Thank you on a Get function, i get this error on Swagger "403 Undocumented Error: Forbidden" and on Response headers content-length: 0 date: Fri,08 Jul 2022 11:49:54 GMT server: Kestrel what can I do?
After going through the turorial and not having any background info into it, I'd say its not something see and follow but rather creating dots kindoff concept. Introducing many streams that are untouched for devs who are in the C# environment have not stepped out of unity.
I came across this video and found it very interesting. I do have a question regarding async void. It is adviced to not use it. Is Unity handling this differently? By all means, as far as I understood it always should be a Task or you might end up with other problems.
I think I would have gone with Node until seeing this.. Makes a whole lotta sense keeping the Models in a SharedLibrary.. and the Server bit in C# will keep the project, what's the word.. isomorphic? Another great lesson @Tarodev ... Cheers!
I would really like this series to continue. Is implementing SignalR a good option for syncing the data? Otherwise, I am requesting a bundle of requests to the server every few milli-seconds (for a single session!). I gave up implementing SignalR for now because I could never make Microsoft.AspNet.SignalR.Client package work in Unity.
Hi! Thanks for this awesome content! But i hawe maybe an awkward question. What can you suggest to read to get more involved into backend, servers and client - server architecture for unity developer? Thanks in advance!
This is an amazing video. Thanks a lot. I have some issues with this kind of server, and it's when we have some work with times. For example, a turned base game and a timer for changing the player's turn after its time. It could be so great if you can cover some of it. Cheers.
Awesome content! This is perfect for me. I'm familiar with .NET Web API on a basic level and use it for small tests/sample projects, but have yet to to tie into my Unity projects. Really excite to see where this goes! Looking forward to how you handle auth, and also curious if deployment will be part of the series? (you may have mentioned that already sorry if i missed it)
love your videos, can you make a complex animation tutorial , always scared of animation with inverse kinematics , layers, events and stuff, your teaching is great
I think that ASP is hot garbagé, so I use a java backend (Spring-Boot). There is a way to share the models as well! The tooling I use is JaXB and an xsd with the definition of the models. Then generate those for the backend with an jaxb plugin triggered by an ant script and for C# i use Microsofts xsd.exe as an PreBuildEvent.
Larry D.... You'll need to defend that statement. Why do you think it's garbage? (I really hope you're not judging it from experience many years ago. It's a whole other beast now)
I've used ASP.NET a couple of times but the overall impression I've got from it was very mediocre. In my day job we develop backends exclusively with Spring-Boot some in Kotlin but most of them in Java. Maybe that's why I'm biased towards Java backends maybe a little stockholm syndrome sprinkled on top as well. 😁
But staying in one ecosystem is not the worst choice one can make. But having the opportunity to develope an distributed Softwaresystem in multiple programming languages and have them work together is very cool, except if you inherit it and have to maintain it.😂
I'm just getting started on migrating some .NET 5 APIs to .NET 6, and I had no idea they merged they Program & Startup files into one. That is _significantly_ better, and I wish I knew about it sooner.
Which is cheaper? PlayFab, or creating our own Server and using a hosting service? Also do you have any recommendations for hosting service to get this Backend up and running? Excuse my noobness as I'm new to backend stuff. I tried PlayFab recently this week, but their CloudScript is so unintuitive that I just stopped using it. I couldn't even get it to do simple thing like list total number of Characters the Player has. Basically not having intellisense hurts my iteration time. This backend solution you have seems much more easier to understand than PlayFab's Cloudscript.
I have uploaded a repo on git recently to address networking for unity. Its a server and a sample project you can check out and test. A teaser to this is on my channel.
Man how did you make this work? I'm all day struggling with .net 6.0 from the SharedLibrary.dll in Unity's project. I think it is 'cause .net in Unity is 4.7.1. So It's always throwing erros... how can i fix this?
Well this is amazing, thanks a lot for that, didn't know this can be done so cleanly! Do you perhaps have any ETA on the second part? Would love to see that one too!
@@Tarodev That would be great! If you don't mind asking, as I don't really have any experience with deploying asp.net applications, can they be simply uploaded to the web hosting services FTP that most of the people have, or do we need to rent a virtual machine in order to have a running server there that can operate those? Up until now I have actually been doing post/get implementations through PHP scripts uploaded to the hosting providers FTP that communicate with the database, but it is quite tedious to set up and this just seems like a cleaner solution. PHP Scripts can be simply uploaded to the ftp and called via HTTP request, it would be great to know if using asp.net applications would be possible to do similarly without the need of renting an extra virtual machine. Maybe I'm completely off with this, but I think it might be a bit of an unclear topic for others too, so it may be a good point to touch upon a bit in the next video, just to mention it briefly. Thanks again for making all of this, it's crazy valuable content!
@@jakubreichman they do need a virtual machine, although azure has very cost effective Web-app services which abstract all the tedious parts for you. They have a free development tier also. You can deploy directly to azure via your IDE, or easily setup CI using github actions or alternatives. I've always loved the Microsoft deploy workflows
@@Tarodev Thanks for the tip, just made Azure account and tried deploying the first sample scene they provided with the free tier, worked great with visual studio code! You have no idea how well timed this video was, I was already preparing myself mentally of again making the database communication via PHP which is an actual nightmare to maintain and any changes cause so much headache and potential issues, don't get me even started on this. The second part video is also amazing I was just staring at the screen and wondering how easy a database implementation can actually be, and any changes to the classes are not major pain points where you can just update it and it works. Seeing it was really amazing ... You sir, just saved me a lot of nerves and precious time, thanks a lot for that! If there is anything that I could do to help you just let me know, I owe you something!
@@jakubreichman I'm glad you could work out the deployment so easily. I'm debating a part 3 at some stage where I show how to setup a deployment pipeline. And yeah, entity framework makes DB management an absolute cakewalk.
I'm new to back-end but I have some experience with Unity and I intend to make some multiplayer projects later on. What are the advantages of developing my own back-end for my games instead of using something like Netcode for GameObjects or any other third-party solutions? Even if I use third-party solutions for my back-end will I significantly benefit of having really good back-end skills? I want to become a professional game dev, but right now my only option to get a job I wold enjoy is to become a back-end developer since where I live it's really hard to get a game dev job.
Never used C# outside of Unity. This is a really mind blowing content for me. Please keep on continuing the series!
Same
You're definitely missing out on a really, really big and amazing world of C#. Learning C# via Unity definitely seems to create a lot of bad habits for junior devs and I notice people who have never stepped outside of Unity usually have great, big gaps in their understanding of C# and OOP ... for example, junior devs who have worked with Unity for 1 to 3 years will often make every single thing a MonoBehaviour, even when that's a terrible idea, and won't know how to write a regular C# class of their own and simply instantiate it with a constructor. So I often have to provide intense, focused training for junior devs to fix this and fill the gaps. You'd be surprised how many of them think int and float are the only primitive data types and can't distinguish between value vs reference types (structures vs classes) or where they live. I wholeheartedly recommend everyone reads a traditional C# programming book and practices writing some console apps, because Unity tutorials generally only show bad ways to use a tiny part of the C# language to complete a sketchy and flimsy feature. Otherwise people will have a huge struggle trying to learn to put their Unity knowledge into a real game that can scale up and be maintained.
The history of C# (.NET actually) is quite interesting.
They've gone from being platform specific (Windows) to full cross-platform with the introduction of .NET Core, performance has also seen a massive improvement.
Don't let the frameworks put you off however, the main thing to keep in mind now is to go for anything that is .NET 6 + (.NET 7 to be released later this year which will include MAUI which is something I've been keeping my eye on for some time)
Wow, you mean that a widely known Object-Oriented Programming language is used for more things than making games in a single game engine? TOTALLY MINDBLOWING
I know it’s important to have a tutorial for every section of each new step but I think it’s SUPER important to see the grand scope of a project as quickly as possible. So new coders can visualize all the steps and how they interconnect.
Excellent tutorial! I hope you create more in this vein in the future :)
That's what I was thinking. I don't think there is something like this on the internet right now and it should be super handy for somebody wanting to see it from start to finish. It shows how to piece it all together as well as a bunch of points to google and learn.
I've been working on Java web APIs for coming on 5 years now and never really understood the root of how it works because it never really mattered for getting my tasks done. Funny how the place I learn about how it all works is on a guide video for my hobby projects.
As always, love the stuff you put out. Big fan of your style of teaching and how you assume I have some knowledge or at least am capable of getting that knowledge if necessary.
That's the exact attitude I wish for from my viewers. That they're okay for me to glance over something and to google it for more info.
@@Tarodev Yes I really appreciate your pace! It's perfect for my skill level and experience.
The final step most of these tutorials leave out is actually hosting a server. I hope you get into that at the end of this series!
Agreed. Would be nice to see this deployed and what the cost/speed of the servers would be in an affordable tier. I've thrown some .NET web APIs on free tier Azure but it is not ideal for anything beyond small tests.
Yeah, Microsoft Azure would be cool!
I think I did this a long time ago and had a website. I think I owe them money, actually.... *hides head*
I spent 3 weeks searching for a solution like this.. 3 weeks!! I love your tutorial so much, its so similar to how Laravel works except this is in C# which is just that beautiful to do.
Thank you so much!!
Instead of having a class library project outside Unity and copying the built DLL into Unity there are two other solutions one can try:
1. Create a SharedLibrary folder within Unity and create an assembly definition file so Unity treats it as a separate c# project. Now in the standalone solution you can also create a SharedLibrary project and inside its csproj file just define that it should link in all the files from the SharedLibrary folder inside Unity. Now both Unity and standalone solution see the same files on the hard drive and you can change them from either place. AsmDef is important so you don't accidentally reference other code from within Unity that is not part of that folder. This is the method I used with success in the past.
2. If you have AsmDef file in that Unity folder Unity will actually generate a csproj file for that folder in the root of the project, so you could just try to directly link that csproj inside your standalone solution. This I haven't tried.
Very nice!! Thanks for the info
I tried out the second method method, and while it worked initially it seems fragile as Visual Studio misconfigured the path of the unity csproj's corresponding dll file after being reopened. I found that instead of directly linking the csproj, link the SharedLibrary.dll from unity as a dependency for the Server solution.
The SharedLibrary.dll should be generated in Library/ScriptAssemblies.
I use chatGPT for clearer instruction in the option 1 and it worked
Here are the steps in more detail:
Create a SharedLibrary Folder in Unity:
- In Unity's Project window, right-click in the Assets folder or wherever you want to store your shared code.
- Choose "Create" > "Folder" and name it something like "SharedLibrary."
Create an Assembly Definition File in Unity:
- Within the "SharedLibrary" folder, create an assembly definition file (AsmDef) by right-clicking, choosing "Create" > "Assembly Definition," and giving it an appropriate name.
- The AsmDef file helps Unity treat this folder as a separate C# project and manage its dependencies correctly.
Create a SharedLibrary Project in Your Standalone Solution (e.g., Visual Studio):
- In your standalone solution (e.g., Visual Studio), create a new project that represents your shared code library. This project should not have its own source files; instead, it will link to the files in the "SharedLibrary" folder in Unity.
Edit the .csproj File of the SharedLibrary Project (StandAlone Solution):
- Open the .csproj file of the "SharedLibrary" project in a text editor.
- Inside the .csproj file, you'll define that it should link in all the C# files from the "SharedLibrary" folder inside Unity. This is typically done using ItemGroup elements in the .csproj file. For example:
- Make sure to adjust the path to match your Unity project's directory structure.
Managing Shared Code:
- With this setup, both Unity and your standalone solution will see the same code files from the "SharedLibrary" folder. You can make changes to these files from either place, and the changes will be reflected in both environments.
Benefits of Assembly Definition (AsmDef):
- The AsmDef file is crucial because it defines the scope of what code Unity should consider when building. It ensures that Unity only includes code from within the "SharedLibrary" folder and not unintentional references to unrelated code.
@@shunpeng5700 Hey, I tried following the steps written here but I'm really confused on the linking to the files in unity part because the SharedLibrary doesn't contain anything but the assembly definition and no .cs files. I think I might be just dumb, but can I get some clarification on that part?
Nvm, I managed to do it now. I should not have ignored the "This project should not have its own source files" since I thought that all the code is doing is just copying and pasting the dll to the SharedLibrary folder in unity upon compiling or something.
If you followed the tutorial, just move the .cs files under the standalone solution to the SharedLibrary folder in unity and then rebuild the standalone solution.
I am dumb indeed
I have been working for companies as a programmer for about 5 years and your videos are exactly what was missing for someone like me to get into a new tool as fast as possible. I will check out your channel if you have any video for BaaS techs.
I've been hugely into BaaS over the last two years, but unfortunately no content. Glad you enjoyed the video :)
Who is a web dev and is enjoying this content ?
For me because I'm new to game dev and frankly the mindset for game dev is totally different from web dev, i find this video super enjoyable because i know and deeply understand what is he taking about compared to advanced game dev stuff where i feel a bit lost, not the programming part, that's easy but the part about game design, modeling, shaders, million options and toggles in unity editor
Glad you enjoy the web dev side of things :)
lot's of " .Net core 6 in 2\3\4\100 hours full course" videos out there and i learned far more in this 24 minutes video! thanks!
Cause Tarodev is a boss! It's always easy to follow along with his videos because he breaks it down in layman's terms effectively, and has enough humor to make it an enjoyable experience
I've yet to find a good, up-to-date .NET course that isn't stretched to infinity and beyond. They're designed for people completely new to programming, which makes them a slog if you aren't. And oftentimes, even if you replicate the code and environment exactly, what works in the tutorial may break on your PC. Chasing down a fix through StackOverflow for technology you don't understand is a pain and a turn-off. This applies to the official documentation, even.
This was exactly the video I was looking for today with exactly the right level of detail for me, much appreciated!
Great content - keep making more - and complete this series.
I have a feeling that this vid will be SUPER useful
Yess. Cant wait for part 2. Could even make more tuts about that
Coming right up!
This was a-maze-ing! You are so underrated!
Love your passion for servers too
Very cool video, especially the bit about dependency injection helps my brain to slowly wrap around the concept.
15:50 nah this is awesome, you show a lot of different things so we can understand what to learn more
Once again good stuff dude. Love that models can be shared.
I've been looking for this video for months! You just spiced up my weekend! Thanks mate.
Enjoy your spicy weekend!
Ugh, where you were 1 month ago?)) Thx for video) ♥️
Love the rant in the end btw xD
Regarding the json utility? Lol yeah, it's a huge pain
Just what I've needed! Thanks!
Hello Elf Taro, good to see you
😂
Was about to complain about "Dlls", nice save.
Haha 😂
when i needed a multiplayer tutorial the most! Thaaaaanks Taro!
At 18:18 you could use "$(SolutionDir)" to avoid having to manually go all the way up to the solution directory
This is exactly what I needed, thank you very much!
Nice tutorial! If you're on Mac, use command 'cp' instead of 'copy'
I should have added that, thanks!
Love these tutorials, can't wait for more
looking forward to the next part
This is amazing. Like REALLY AMAZING. Thanks a lot!
Waiting for part two
I was waiting for that!
Omg tysm I was just thinking about doing a multiplayer game!
Just in time :)
You gotta make a full round based game (take a simple 2v2v2NPC-on-a-chessboard-with-obstacles match) with server authoritative logic, storing progress and player data in DB. One of the bigger problem I face, when thinking of building own backend, is IAP server side validation - so maybe another topic for you to cover with GREAT value to a lot of people, who rely on Google Play Store, where due to policies all purchases has to be through their services.. so they grab 30% of the revenue. Yay..
.. did I mention a tutorial about Redis cache also :D
Keep up your work and u will reach the top when it comes to Unity contant on UA-cam
Great video - loving it so far - but question I gotta rip right off the top is can't ASP NET Core support UDP API's? I am very interested in squeezing the server for all its worth and would want to know how to get rid of the TCP overhead once the client is properly authenticated and using a JWT or other server authoritative token in future communications.
I love servers, I have one setup for my home, but nothing specialized for games or anything never made anything software wise but and do some server admin stuff. :D
I like how you always cover everything I need. Btw will there be in the next episode how to store for example player inventory in the database?
Yes, if the next part is not too long I'll include some actual feature suggestions 😊
Thank you for the video! I'm currently learning webdev and yet I only saw nodejs and maybe python for backend solutions. Seeing a statically typed language for webdev/servers gives me new motivation to learn back end ^^'
no front to js and python ofc
Blazor is awesome if you like typed languages for both front and back end.
That's not to say you can't still use JS on the front-end, you can have isolated JS/CSS files for pages/components.
Invoke JS from C# and vice versa.
.NET has vastly improved since the .Netframework days.
Fire as always
🔥
Knew all of these already, but cool tutorial! :)
17:00 Don't know how it is with Rider but in Visual Studio you can just open the same solution in another instance of VS. I used to debug two LAN apps this way and I had no issues with it. I suppose it works similar in game-server scenario.
For real time games are you using a custom server as well? great video as always!
Enjoyed it very much
I'm glad :)
Uploaded just at the time I needed it. How you keep doing this?
I'm right outside your window
As a .net dev I highly appreciate this series. I once wrote a simple matchmaking tool and I still remember which pain the Unity part was.
Now I'm at a point in my game where I want to implement some simple things like Highscores and struggle with the decision of trying it again or just use some premade solutions.
Does your solution work in WebGl? Because besides unity often being "special" WebGl is the real pain in my opinion xD
It'll be perfectly fine in webGL 😊
@@Tarodev I'll count on that mate
2 years old but @ 17:55 just put the full path to the directory you want in quotations.
Example: "C:\unity\asset\location\DLLs"
Imma have to come back to this when I get smarter
Thank for sharing! I have a question. Is there any game server framework like Nakama that using .Net Core? It may be super helpful for the client dev like me
just what i was looking for
This is super amazing, Love u
Back at ya
This was an excellent video. I come from a low-level background and over the last 15 or so years I've never stepped into the world of servers and web apps. But lately this has been my "final frontier" I've wanted to learn, and I've been writing some desktop utilities doing various stuff with System.Net and System.Web, like scraping pages and downloading remote databases and assets. Creating my own web servers and APIs is what I've been wanting to get into next, so I can dive into the AWS platform and start providing some interesting web services and servers for games and apps. So I truly thank you for this excellent video, I'll be trying this out and trying to get my own servers running on AWS soon!
TaroDev, it would be awesome if you did a series showing how to make a game like Super Auto Pets. It looks like that game emulates a massive multiplayer game by matching a player with other previously recorded players because no user interaction is needed during the game simulation.
Seems like most mobile multiplayer games are like that nowadays. Very interesting video idea!
The SharedLibrary is so the Player class in the server and unity are the same correct? If we were to instead create our own Player class in unity that has the same fields as the servers Player class, would it not work?
Amazing video well done
Thank you
on a Get function, i get this error on Swagger
"403
Undocumented
Error: Forbidden"
and on Response headers
content-length: 0
date: Fri,08 Jul 2022 11:49:54 GMT
server: Kestrel
what can I do?
Is this like a serverclient you can put on a pc running at home, like Minecraft (atleast back in the day) use to host your own private server?
After going through the turorial and not having any background info into it, I'd say its not something see and follow but rather creating dots kindoff concept. Introducing many streams that are untouched for devs who are in the C# environment have not stepped out of unity.
"It's gonna make Unity shit it's pants" 😂 Best quote since Unity shit it's pants for everything all day long hahaha
I came across this video and found it very interesting.
I do have a question regarding async void.
It is adviced to not use it. Is Unity handling this differently?
By all means, as far as I understood it always should be a Task or you might end up with other problems.
i love it! please make more video about it
I think I would have gone with Node until seeing this.. Makes a whole lotta sense keeping the Models in a SharedLibrary.. and the Server bit in C# will keep the project, what's the word.. isomorphic? Another great lesson @Tarodev ... Cheers!
I would really like this series to continue. Is implementing SignalR a good option for syncing the data? Otherwise, I am requesting a bundle of requests to the server every few milli-seconds (for a single session!). I gave up implementing SignalR for now because I could never make Microsoft.AspNet.SignalR.Client package work in Unity.
Very informative Thank you so much
This is a pretty solid tutorial, but it's tough to take it seriously with the elf ears.
You must absorb knowledge from even the biggest of idiots
Hi! Thanks for this awesome content! But i hawe maybe an awkward question. What can you suggest to read to get more involved into backend, servers and client - server architecture for unity developer?
Thanks in advance!
really dope video😁
Amazing video , filled with great information
Thank you !
This is an amazing video. Thanks a lot. I have some issues with this kind of server, and it's when we have some work with times. For example, a turned base game and a timer for changing the player's turn after its time. It could be so great if you can cover some of it.
Cheers.
So for unity backend we're using NOT classic REST endpoints, but just entity/Get and so on?
Hello, is there a good free alternative for a Postman?
Man I gotta say I thought it was a bit weird that both our balls were tingling during that video...
Hah 😉
could we .... include the Unity and the server VS Project into 1 VS Solution, and refer to that shared library?
Just thinking...🤔🤔
would this setting work for a massive online game or more of a multiplayer hosting situation where a few players can get into a game?
Excellent as usual, thank you.
Have you ever thought of webrtc for client server comms? Asking for a friend :)
Just what I was looking for!
Marry me Q-Q I've been looking gor something like this for years. Thanks man ❤️
Where will we go on honeymoon?
I like this , you are adding some great content
Realtime multiplayer wouldnt work with this right? Like 50ms< movement changes from different players
Yes, you need to use UDP for that.
Awesome content! This is perfect for me. I'm familiar with .NET Web API on a basic level and use it for small tests/sample projects, but have yet to to tie into my Unity projects. Really excite to see where this goes! Looking forward to how you handle auth, and also curious if deployment will be part of the series? (you may have mentioned that already sorry if i missed it)
love your videos, can you make a complex animation tutorial , always scared of animation with inverse kinematics , layers, events and stuff, your teaching is great
Thank you
I think that ASP is hot garbagé, so I use a java backend (Spring-Boot). There is a way to share the models as well! The tooling I use is JaXB and an xsd with the definition of the models. Then generate those for the backend with an jaxb plugin triggered by an ant script and for C# i use Microsofts xsd.exe as an PreBuildEvent.
Larry D.... You'll need to defend that statement. Why do you think it's garbage? (I really hope you're not judging it from experience many years ago. It's a whole other beast now)
Also, every time I read your comments I'm always picturing the guy in your avatar staring at me just like that
I've used ASP.NET a couple of times but the overall impression I've got from it was very mediocre. In my day job we develop backends exclusively with Spring-Boot some in Kotlin but most of them in Java. Maybe that's why I'm biased towards Java backends maybe a little stockholm syndrome sprinkled on top as well. 😁
But staying in one ecosystem is not the worst choice one can make. But having the opportunity to develope an distributed Softwaresystem in multiple programming languages and have them work together is very cool, except if you inherit it and have to maintain it.😂
cool! thank you!!
I'm just getting started on migrating some .NET 5 APIs to .NET 6, and I had no idea they merged they Program & Startup files into one.
That is _significantly_ better, and I wish I knew about it sooner.
Oh dude, it's beautiful. Might be confusing to new devs as they may not understand it's split into two sections. But yeah, much better.
20:03 clean get post code
Steal it at will!
I think you can use Newtonsoft in Unity as well
Thanks Tarodev ❤
Please a tutorial for multiplayer with Unity 🙏🙏
Well, this is the start of it :)
5:27 Yes it can.
Amazing! It's slowly bridging the gap and will make resharper useless one day
Yes... Yes... Yes... YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Can you make a UDP communication tutorial in the future?
Sir please make dependency injection video with more detail
Hello, Do you have in depth tutorial to create a server for Unity game using .Net Core?
Which is cheaper? PlayFab, or creating our own Server and using a hosting service? Also do you have any recommendations for hosting service to get this Backend up and running? Excuse my noobness as I'm new to backend stuff. I tried PlayFab recently this week, but their CloudScript is so unintuitive that I just stopped using it. I couldn't even get it to do simple thing like list total number of Characters the Player has. Basically not having intellisense hurts my iteration time. This backend solution you have seems much more easier to understand than PlayFab's Cloudscript.
Using a service is much simpler and cheaper. Give Unity Gaming Services a crack, it's better than Playfab (imo): on.unity.com/3xIMVB7
I have uploaded a repo on git recently to address networking for unity. Its a server and a sample project you can check out and test. A teaser to this is on my channel.
As good as always
Would it be easy enough to make something like this but with websockets instead of http?
Man how did you make this work? I'm all day struggling with .net 6.0 from the SharedLibrary.dll in Unity's project. I think it is 'cause .net in Unity is 4.7.1. So It's always throwing erros... how can i fix this?
Well this is amazing, thanks a lot for that, didn't know this can be done so cleanly! Do you perhaps have any ETA on the second part? Would love to see that one too!
Hopefully it's the next video I release!
@@Tarodev That would be great!
If you don't mind asking, as I don't really have any experience with deploying asp.net applications, can they be simply uploaded to the web hosting services FTP that most of the people have, or do we need to rent a virtual machine in order to have a running server there that can operate those? Up until now I have actually been doing post/get implementations through PHP scripts uploaded to the hosting providers FTP that communicate with the database, but it is quite tedious to set up and this just seems like a cleaner solution. PHP Scripts can be simply uploaded to the ftp and called via HTTP request, it would be great to know if using asp.net applications would be possible to do similarly without the need of renting an extra virtual machine.
Maybe I'm completely off with this, but I think it might be a bit of an unclear topic for others too, so it may be a good point to touch upon a bit in the next video, just to mention it briefly.
Thanks again for making all of this, it's crazy valuable content!
@@jakubreichman they do need a virtual machine, although azure has very cost effective Web-app services which abstract all the tedious parts for you. They have a free development tier also.
You can deploy directly to azure via your IDE, or easily setup CI using github actions or alternatives. I've always loved the Microsoft deploy workflows
@@Tarodev Thanks for the tip, just made Azure account and tried deploying the first sample scene they provided with the free tier, worked great with visual studio code!
You have no idea how well timed this video was, I was already preparing myself mentally of again making the database communication via PHP which is an actual nightmare to maintain and any changes cause so much headache and potential issues, don't get me even started on this.
The second part video is also amazing I was just staring at the screen and wondering how easy a database implementation can actually be, and any changes to the classes are not major pain points where you can just update it and it works. Seeing it was really amazing ... You sir, just saved me a lot of nerves and precious time, thanks a lot for that! If there is anything that I could do to help you just let me know, I owe you something!
@@jakubreichman I'm glad you could work out the deployment so easily. I'm debating a part 3 at some stage where I show how to setup a deployment pipeline.
And yeah, entity framework makes DB management an absolute cakewalk.
I'm new to back-end but I have some experience with Unity and I intend to make some multiplayer projects later on. What are the advantages of developing my own back-end for my games instead of using something like Netcode for GameObjects or any other third-party solutions? Even if I use third-party solutions for my back-end will I significantly benefit of having really good back-end skills? I want to become a professional game dev, but right now my only option to get a job I wold enjoy is to become a back-end developer since where I live it's really hard to get a game dev job.
just use netcode for gameobjects, Unity did the heavy-lifting for you