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.
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.
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!!
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
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 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.
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..
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.
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.
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
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!
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!
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
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.
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)
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.
19:46 Line 21. You should not use "while(notDone) await Task.Delay(someTime)". It's such a bad practice. Proper way of doing it is "while(notDone) await Task.Yield()". What this will do is literally tell the task manager that "there is nothing to do, let cpu do some job on available thread instead.
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.
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.
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?
Has anyone tried using the Post code in the video, every time I try from Unity I get error 400 Bad Request even though the JSON looks good. Always says I'm missing the field required
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
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.
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.😂
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!
Hey that's one great video. Regarding the sharing of models, I am doing something similar in my project, but instead of copying the DLL file on build I use Git Submodules for the shared code/models. Don't say it is better approach, but it kind of works for me. The build-in Unity json parser and httpClient is dogs**t. I cannot believe how bad they implemented it. I am just using newtonsoft in both API and Unity. Regarding the http client, I still cannot find good library online. The approach you are using looks nice. I would definitely love to see more videos from the series!
Thank you so much for this tutorial ! I was searching for something like this for one of my project and It's a good beginning to learn 😁 I have only a little problem. When I build my SharedLibrary and copy it in Unity as you showed us Unity tell me that He cannot find the properties... It tell me that he is "Unable to load attribute info on field SharedLibrary.Player::k__BackingField. Are you missing a reference?" Do you have an idea of what happening ?
Make sure if your unity project is using net standard 2, your library is also using that. Or net standard 2.1 etc. If this doesn't work pop into discord for a chat
Great video! It's exactly what I needed for a school project. I have a question though. After I make the build, I would like that when I open the Game.exe, it starts the dotnet server by its own, and of course be able to make API calls. And if it is possible, when I close the game window, it also terminates the server process. It would be a huge help if you could share your thoughts on this matter. Also if there are any differences between solving this issue on Windows or Linux clarify them please.
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.
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*
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.
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!!
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 :)
This was exactly the video I was looking for today with exactly the right level of detail for me, much appreciated!
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 :)
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
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!
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
Love your passion for servers too
Ugh, where you were 1 month ago?)) Thx for video) ♥️
Once again good stuff dude. Love that models can be shared.
This was a-maze-ing! You are so underrated!
Nice tutorial! If you're on Mac, use command 'cp' instead of 'copy'
I should have added that, thanks!
I've been looking for this video for months! You just spiced up my weekend! Thanks mate.
Enjoy your spicy weekend!
This is amazing. Like REALLY AMAZING. Thanks a lot!
Just what I've needed! Thanks!
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.
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
I was waiting for that!
Love the rant in the end btw xD
Regarding the json utility? Lol yeah, it's a huge pain
when i needed a multiplayer tutorial the most! Thaaaaanks Taro!
Omg tysm I was just thinking about doing a multiplayer game!
Just in time :)
This is exactly what I needed, thank you very much!
At 18:18 you could use "$(SolutionDir)" to avoid having to manually go all the way up to the solution directory
Keep up your work and u will reach the top when it comes to Unity contant on CZcams
Hello Elf Taro, good to see you
😂
Was about to complain about "Dlls", nice save.
Haha 😂
Love these tutorials, can't wait for more
Fire as always
🔥
looking forward to the next part
Waiting for part two
Knew all of these already, but cool tutorial! :)
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.
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!
just what i was looking for
Enjoyed it very much
I'm glad :)
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
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!
Amazing video well done
Amazing video , filled with great information
Thank you !
This is super amazing, Love u
Back at ya
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!
Just what I was looking for!
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 😊
Imma have to come back to this when I get smarter
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
Very informative Thank you so much
Marry me Q-Q I've been looking gor something like this for years. Thanks man ❤️
Where will we go on honeymoon?
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.
Uploaded just at the time I needed it. How you keep doing this?
I'm right outside your window
"It's gonna make Unity shit it's pants" 😂 Best quote since Unity shit it's pants for everything all day long hahaha
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)
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.
really dope video😁
For real time games are you using a custom server as well? great video as always!
19:46
Line 21. You should not use "while(notDone) await Task.Delay(someTime)". It's such a bad practice. Proper way of doing it is "while(notDone) await Task.Yield()". What this will do is literally tell the task manager that "there is nothing to do, let cpu do some job on available thread instead.
You're right. Good pickup!
i love it! please make more video about it
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
I like this , you are adding some great content
As good as always
Yes... Yes... Yes... YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Thanks Tarodev ❤
Please a tutorial for multiplayer with Unity 🙏🙏
Well, this is the start of 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.
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.
cool! thank you!!
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.
Realtime multiplayer wouldnt work with this right? Like 50ms< movement changes from different players
Yes, you need to use UDP for that.
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?
Has anyone tried using the Post code in the video, every time I try from Unity I get error 400 Bad Request even though the JSON looks good. Always says I'm missing the field required
Same D:
I found that JsonUtility.ToJson(data); only returns {}
Thank you
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
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?
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.
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.😂
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!
Excellent as usual, thank you.
Have you ever thought of webrtc for client server comms? Asking for a friend :)
Hey that's one great video.
Regarding the sharing of models, I am doing something similar in my project, but instead of copying the DLL file on build I use Git Submodules for the shared code/models. Don't say it is better approach, but it kind of works for me.
The build-in Unity json parser and httpClient is dogs**t. I cannot believe how bad they implemented it.
I am just using newtonsoft in both API and Unity. Regarding the http client, I still cannot find good library online. The approach you are using looks nice.
I would definitely love to see more videos from the series!
Git submodules you say... I'd like to know more
Submodules tend to play nuts with me 😆 but yeah, that's a totally valid approach
This is amazing content!
Thank you so much for this tutorial ! I was searching for something like this for one of my project and It's a good beginning to learn 😁
I have only a little problem. When I build my SharedLibrary and copy it in Unity as you showed us Unity tell me that He cannot find the properties... It tell me that he is "Unable to load attribute info on field SharedLibrary.Player::k__BackingField. Are you missing a reference?"
Do you have an idea of what happening ?
Make sure if your unity project is using net standard 2, your library is also using that. Or net standard 2.1 etc. If this doesn't work pop into discord for a chat
@@Tarodev Thank you so much ! It works. I didn't thought to check which .net was using by sharedlibrary.
Lol at the first server image
Great video! It's exactly what I needed for a school project. I have a question though.
After I make the build, I would like that when I open the Game.exe, it starts the dotnet server by its own, and of course be able to make API calls. And if it is possible, when I close the game window, it also terminates the server process.
It would be a huge help if you could share your thoughts on this matter. Also if there are any differences between solving this issue on Windows or Linux clarify them please.
could we .... include the Unity and the server VS Project into 1 VS Solution, and refer to that shared library?
Just thinking...🤔🤔
Man I gotta say I thought it was a bit weird that both our balls were tingling during that video...
Hah 😉
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?
yesss
I think you can use Newtonsoft in Unity as well
So for unity backend we're using NOT classic REST endpoints, but just entity/Get and so on?
5:27 Yes it can.
Amazing! It's slowly bridging the gap and will make resharper useless one day
20:03 clean get post code
Steal it at will!
I like the video, but there is a weird orc with elf ears that is present from start to finish... Just kidding! :D Great job!
I like to think I'm an elf with elf ears :)
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?
Sir please make dependency injection video with more detail
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.