Пікірлер
@christinanorman4144
@christinanorman4144 17 сағат бұрын
Is this code available?
@randomtoxickid663
@randomtoxickid663 20 сағат бұрын
for some reason it displays only 3 and 1, not 2. I tried it with 6 and it went 6 4 2 1.
@joethewolf3750
@joethewolf3750 4 күн бұрын
This was really informative for such a short video, I think it's gonna help a lot with my current project. More so than more on topic tutorials, even. Thanks for making this! :D
@Not2CommonSense1
@Not2CommonSense1 4 күн бұрын
I am still questioning the validity of this video due to having floral-print furniture...
@MarkusEicher70
@MarkusEicher70 5 күн бұрын
Many thanks, Johnny. Very good introduction to the new DOTS in Unity. While having a bit of experience with C# but not much with Unity, I think I will use the opportunity to get started learning it with DOTS in mind. I like the idea of data driven design. Looking forward to learn more from your fantastic content. Thank you for doing this.
@drewcastalia6372
@drewcastalia6372 5 күн бұрын
Thanks so much for playing and showcasing our games, Turbo. It was a joy to watch after all the hours tilling code and stressing over features. That moving level of Tic Tac Noo is indeed solvable. : ) Wish I was available during the stream to kibitz like all the other helpful devs.
@TurboMakesGames
@TurboMakesGames 5 күн бұрын
@@drewcastalia6372 that was a tough one! I want to go back and see if I can figure it out and check out the other levels too
@suicune2001
@suicune2001 6 күн бұрын
Good job everyone!
@mesopable
@mesopable 7 күн бұрын
Omg! You are featured in Unite. Nice, Cool, Great job and Congratz!
@fives349
@fives349 11 күн бұрын
i would like to thank behalf all of these people watching the tutorial, thank you for making this free for everyone thank you again
@qaisbayabanni
@qaisbayabanni 11 күн бұрын
private void start and update are not working in Authring monoscript file why? plz
@JamesCarolan1993
@JamesCarolan1993 13 күн бұрын
Yes exactly the topic I wanted :)
@JamesCarolan1993
@JamesCarolan1993 12 күн бұрын
A lot of it went over my head though haha.
@AaronAsherRandall
@AaronAsherRandall 16 күн бұрын
This is awesome. Now I just want to make a Vampire Survivors clone on steroids 😆
@AaronAsherRandall
@AaronAsherRandall 18 күн бұрын
Holy wow you are a legend man! Just curious, does this use Unity’s NavMesh system?
@TurboMakesGames
@TurboMakesGames 16 күн бұрын
Nope, this just uses a simple node to node path for the minions and essentially random motion for the AI champions. Wanted to keep that part simple to focus on the ECS/Netcode aspects. The Agents Navigation asset on the asset store is a great example of an ECS based system that uses Unity's NavMesh - I have some videos on it if you want to check it out
@AaronAsherRandall
@AaronAsherRandall 16 күн бұрын
@@TurboMakesGames oh cool! Thanks for the info! I basically use NavMesh in all of my Unity projects now. It’s probably my favorite thing about Unity. Does it fair pretty well in a networked Netcode for Entities environment? I’m not even sure how you would sync up say the baked NavMesh and the various NavMesh agents for the different players / clients.
@VioletBeamGames
@VioletBeamGames 18 күн бұрын
Awesome stuff! You must be one of them developers that get bitches xD
@leo44370
@leo44370 22 күн бұрын
Exciting stuff! Sadly I have some big deadlines coming up and won't be able to participate. Hopefully I can make it to the next one.
@garlicbutter3
@garlicbutter3 22 күн бұрын
Thanks!
@TurboMakesGames
@TurboMakesGames 16 күн бұрын
Thank you so much for the support 😀
@manuelglez9347
@manuelglez9347 23 күн бұрын
10/10
@henrikwerner7441
@henrikwerner7441 28 күн бұрын
Can anyone help with this error message: "Large serverTick prediction error. Server tick rollback to Unity.NetCode.NetworkTick delta: -10.74014"? I did not change anything in the final project (using Unity 2022.3.32f1) and it's reproducable. When I start the build as Server&Client and join with the editor as Client only, as soon as I increase/resize the build/application window above a certain size, it starts to give me that error message. The frequence increases with the size of the window. When the window is fullsize it is almost unplayable.
@henrikwerner7441
@henrikwerner7441 27 күн бұрын
If anyone has the same problem: "Negative network delta time will skip updating the system group." Fixed in Netcode for Entities [1.3.0-exp.1] - 2024-06-11
@theonerob
@theonerob 28 күн бұрын
Is it just me, or is your website down?
@TurboMakesGames
@TurboMakesGames 28 күн бұрын
It is lol - my host migrated my site, so I just updated DNS. Should be back up soon(TM)
@matthiaspeene5631
@matthiaspeene5631 28 күн бұрын
For only moving after rising around 1:51:58 I think it would be better to use without the RiseSpeed component since you remove that after rising. This saves you from having to remove and add components. Still great video though, thank you.
@driedpotatoes
@driedpotatoes Ай бұрын
It took me 3 days to finish this. The best part is the colossal amount of repetition. In many tutorials, this would be bad, but the repetition here really cements the workflow into your brain.
@TurboMakesGames
@TurboMakesGames Ай бұрын
Cool - glad to hear that repetition was helpful! Nice work on completing the tutorial 👍
@eki-eki-eki
@eki-eki-eki Ай бұрын
Renamed to ICleanupComponentData in 1.0
@donliu3300
@donliu3300 Ай бұрын
You didn't make the head turn function, so the navigation looks OK, but when you actually use it, it can't show satisfactory results at all.
@Haxel0rd
@Haxel0rd Ай бұрын
10:30 i think the bottleneck there was mapsize, as once the space is filled up, there is no avoidance space left which should result in calculation loops when using local avoidance.
@abhayshivamurthy8555
@abhayshivamurthy8555 Ай бұрын
I have a similar issue, except it only freezes when in VR using oculus air link. I can't remember exactly what I did that made this happen. The issue doesn't occur if I run the same scene without a VR headset connected. I can still use the editor freely while in play mode in VR, however, the entire editor freezes when I try to exit play mode.
@stevenpike7857
@stevenpike7857 Ай бұрын
It would be amazing if you were platform agnostic. Unreal Engine has an ECS engine, and maybe, with enough support, Godot could start implementing one.
@TurboMakesGames
@TurboMakesGames Ай бұрын
Definitely would like to do a jam like that in the future!
@GoodNewsJim
@GoodNewsJim Ай бұрын
Starfighter General is live on Steam using Dots .17 to .5 to .51 because of you. Thank you. I need to gut it down from hdrp to urp
@Chrispins
@Chrispins Ай бұрын
Hey! Since Unity 6 Preview just came out, one thing I am confused about is whether this tutorial will work in Unity 6. Are the Entities packages bug-free for the new editor version or do we need to stick to LTS? There are so many changes to ECS over the years that it's hard for me to keep up...
@TurboMakesGames
@TurboMakesGames Ай бұрын
This will work with Unity 6 100%! Newer versions of ECS have even been more stable lately and they work on both 2022 LTS and 6
@Chrispins
@Chrispins Ай бұрын
@@TurboMakesGames Awesome thanks. It definitely seems ECS support is only getting better with time!
@watercat1248
@watercat1248 Ай бұрын
im don't think able to do that the game im work now is multiple fps game and the target audience i is people that like old multiple shooter like quake, half life ,unreal tournament ect i have 0 idea what name convention thos game use yes for sure i know those games have name's however thos game don't have name like escape phobia ect. and as game general the are just Multiplayer fps game, it's that some people call quake , unreal tournament, arena shutters. however my game is not quake clone yes the are inspired for games like ,half life ect but the have the own unique spine and i have multiple many mekanins that is more common in new shooter's.
@GameDevNerd
@GameDevNerd Ай бұрын
Can we plz get #region/#endregion bug fixed for DOTS/Burst/Jobs? I use it to collapse ugly using directive, precompiler and IDE stuff at the top of files or organize anything that's got parts best read in sections (i.e., file with lots of small definitions). But it breaks compilation ... seems it messes up something in code gen and theres a mismatch from #region and #endregion.
@danielkandersen6599
@danielkandersen6599 Ай бұрын
Mind sending an example snippet that breaks. (I recall having made tests that ensured it works for IJobEntity and System generators)
@GameDevNerd
@GameDevNerd Ай бұрын
@@danielkandersen6599 I removed #regions from my whole Unity package but I will try to recreate the problem for ya. It's possible it got fixed in the meantime but I never heard mention of it. So I will let ya know what happens. But from what I remember it seemed like it would break from simply having #region <using directives here> #endregion and then try to write an IAspect or IJobEntity, possibly worse if you have multiple definitions in a .cs file.
@DanielKierkegaardAndersen
@DanielKierkegaardAndersen Ай бұрын
​@@GameDevNerd wouldn't be surprised if IAspect still fails, but hopefully IJobEntity doesn't. So if you find it I'll be on the case :)
@sjoervanderploeg4340
@sjoervanderploeg4340 Ай бұрын
You can assign functions in an array of weapons, for example I could attach Fire() to weapon[0] and then call weapon[0] as a function to fire whatever "weapon" you assigned to it.
@emz6133
@emz6133 Ай бұрын
Does VSCode support source generation? Can I use for Netcode development?
@boomerangaming
@boomerangaming Ай бұрын
💐💐💐💐💐
@eki-eki-eki
@eki-eki-eki Ай бұрын
Thanks!
@junzhao5709
@junzhao5709 Ай бұрын
Thank you for providing this fantastic tutorial free for all. I have been following this video step by step and learned more than I expected. Awesome work! As nothing is bug free, I found a few in this project.
@junzhao5709
@junzhao5709 Ай бұрын
Two bugs were found with your FinalProject. 1st: When I set the minPlayersToStart to 2, the game will start correctly once the 2nd player joins. However, the 3rd player will be frozen with the game start UI "Waiting for -1 more to join...". And the TeamPlayerCounter component for all clients has 0 for both BlueTeamPlayer and the RedTeamPlayer. (But the 3rd player won't have this problem if he joins before GameStartTick) 2nd: Only happens if the host is a build not the editor. If there are more than one player. The host's abilities UI for Q and W will not be on cooldown correctly. Also, the host's abilities cooldown UI will be on cooldown if the 2nd or 3rd player casts a spell. This only affects the UIs, the internal cooldown is correct for the host or clients. Another bug is, the "var skillShotAbility = ecb.Instantiate(skillShot.AbilityPrefab);" will be excuted on both the client and the host if the client casted a SkillShot. Similiar with the 2nd issue.
@junzhao5709
@junzhao5709 Ай бұрын
Solution for the 1st bug: In the "ServerProcessGameEntryRequestSystem", change "if (playerRemainingToStart <= 0 && !SystemAPI.HasSingleton<GamePlayingTag>()){ }" to "if (playerRemainingToStart <= 0) { if (!SystemAPI.HasSingleton<GamePlayingTag>()) { // If enough players joined and the game hasnt started before. var simulationTickRate = NetCodeConfig.Global.ClientServerTickRate.SimulationTickRate; var tickUntilStart = (uint)(simulationTickRate * gameStartProperties.CountdownTime); var gameStartTick = SystemAPI.GetSingleton<NetworkTime>().ServerTick; gameStartTick.Add(tickUntilStart); ecb.AddComponent(gameStartRpc, new GameStartTickRpc { NetworkTick = gameStartTick }); var gameStartEntity = ecb.CreateEntity(); ecb.AddComponent(gameStartEntity, new GameStartTick { NetworkTick = gameStartTick }); } else { // The client joined after game started. ecb.AddComponent(gameStartRpc, new ClientJoinedAfterGameStartedRpc { }); } }" . Add "public struct ClientJoinedAfterGameStartedRpc : IRpcCommand { }" somewhere. In the "CountdownToStartGameSystem", add the if statement like "if (!SystemAPI.HasSingleton<GamePlayingTag>()) { var gamePlayingEntity = ecb.CreateEntity(); ecb.SetName(gamePlayingEntity, "GamePlayingEntity"); ecb.AddComponent(gamePlayingEntity, new GamePlayingTag()); } ecb.DestroyEntity(entity); OnCountdownEnd?.Invoke();". Otherwise, there will be more than one GamePlayingTag if a new client joins the game while on countdown. Also, add "foreach(var (clientTag, entity) in SystemAPI.Query<ClientJoinedAfterGameStartedRpc>().WithAll<Simulate>().WithEntityAccess()) { var gamePlayingEntity = ecb.CreateEntity(); ecb.SetName(gamePlayingEntity, "GamePlayingEntity"); ecb.AddComponent(gamePlayingEntity, new GamePlayingTag()); ecb.DestroyEntity(entity); OnCountdownEnd?.Invoke(); }" just after the exsiting foreach loop. The last thing is add "_beginGamePanel.SetActive(false);" inside "GameStartUIController.EndCountdown()" because we skipped the countdown.
@junzhao5709
@junzhao5709 Ай бұрын
Solution for the 2nd bug: In "AbilityCooldownUISystem.OnUpdate()", add "WithAll<GhostOwnerIsLocal>()" at the end of the first foreach query. Solution for the 3rd bug: In "BeginSkillShotSystem.OnUpdate()", find the 2nd foreach loop which instantiate the skillShot entity. Add "GhostOwnerIsLocal" inside the "WithAll<>".
@Grumpy_Muppet
@Grumpy_Muppet Ай бұрын
I will pay good money to have this as a course. RTS is my favourite genre and I like to make something!
@worldkho
@worldkho Ай бұрын
Does this consider local avoidance?
@falricthesleeping9717
@falricthesleeping9717 Ай бұрын
So for anyone trying to do this in later versions (0.5,1.0 ...) the archetype needs another type PhysicsWorldIndex, yeah I know johnny commented the same thing, but just gonna comment this again since I just wasted 12 hours trying to understand why no triggerevents are not being processesd by the job
@troin4731
@troin4731 Ай бұрын
thank you
@LesP56
@LesP56 Ай бұрын
Excellent Vid! Easy to understand for the somewhat hard of hearing. Question: It sounds like ECS would be ideal for larger, open world, multiplayer games...would I be correct in assuming this?
@TurboMakesGames
@TurboMakesGames Ай бұрын
Thank you so much! ECS certainly benefits the game types you discussed, but that is far from an exhaustive list. ECS can also work very well for smaller games with dynamic entity structures
@etiennecandat2087
@etiennecandat2087 Ай бұрын
Amazing work here! Thank you very much for this very complete course, I learned a lot :) By the way, I can confirm that it still works fine with Unity 6000.0.4f1 using Entities 1.2.3. Oh and also, I had to add a "state.RequireForUpdate<MobaPrefabs>()" in the "ClientRequestGameEntrySystem" to make it work properly on a client build, otherwise the subscene NetCode prefabs may not be loaded in time when the client receives the spawning data from the server, resulting in a NetCode error followed by a disconnect (apparently streaming the sub-scene can take longer than it takes for the systems to start running).
@junzhao5709
@junzhao5709 Ай бұрын
"add a "state.RequireForUpdate<MobaPrefabs>()" in the "ClientRequestGameEntrySystem" " saved me. This issue didn't bother me till I started testing the MaxPlayersPerTeam. It's like the player has been connected and counted as a +1 for the selected team, then disconnected for a reason (I dont know the reason exactly).
@TurboMakesGames
@TurboMakesGames Ай бұрын
Thank you so much for the support and confirmation this is working on the latest version 😀
@BrianSterling-ki7kx
@BrianSterling-ki7kx Ай бұрын
Any thoughts on how you would need to implement the thin clients to use the aoe ability when they hit that timer? I've been trying something in a project of mine that has a similar setup but it's not working. I'm setting an InputEvent in my IInputComponentData GhostField, but when I inspect the Input Buffer Data on the entity in the inspector it has a size of 0. I'm guessing that Thin clients can't use InputData components?
@TurboMakesGames
@TurboMakesGames Ай бұрын
Make sure in the ThinClientEntrySystem you are adding an AbilityInput component and an InputBufferData<AbilityInput>> buffer to the thinClientDummy. That *should* be all that is required for thin client ability input. Hope this helps get it working!
@BrianSterling-ki7kx
@BrianSterling-ki7kx Ай бұрын
@@TurboMakesGames I had those, turns out in my ThinClientInputSystem if I don't create a new AbilityInput component before the input timer expires, the next frame the inputevent was still "Set", oddly though this would mean that every frame "WasPressedThisFrame" was true, but yet when inspecting the InputBuffer in the inspector it was not and my system that queries the InputData was not seeing it. The aspect that returned ShouldAttack was always true as well which was confusing. Anyways, figured it out, thanks for the help.
@adamodimattia
@adamodimattia Ай бұрын
Good it's July :) Maybe I'll get my shift together by that time. Please don't do any standard cliché theme!
@chocholatebunny
@chocholatebunny Ай бұрын
Thank you so much for hosting this Jam!
@BrianSterling-ki7kx
@BrianSterling-ki7kx Ай бұрын
Biggest problem for me, no "Dedicated Server" platform to select.