I almost dumped Unity's DOTS! - World Simulation Project - Indie Game Devlog #3 (Unity DOTS/ECS)

  Рет қаралды 5,734

BanditBloodwyn Devs

BanditBloodwyn Devs

Күн бұрын

Finally it's time to start a completely new passion project "World Simulation Project" along with a devlog channel.
In this video we'll take a deeper look at the technical backgrounds and the usage of DOTS and create a tile selection system.
It's my first serious attempt to create a huge scoped simulation of a world.
Timestamps:
0:00 Intro
1:09 What was the problem?
2:31 Failed attempts
3:19 New world generation process
4:56 Tile selection system
6:38 Settings
7:54 Outro
---------------------------------------------
If you are interested in more deeper discussions about Unity, DOTS or game development in general, feel free to join my Discord server:
/ discord

Пікірлер: 29
@Churdington
@Churdington Жыл бұрын
Minecraft doesn't use individual cubes. Each chunk is one object. When you are breaking a "block", you're actually deforming the chunk's singular mesh. It just updates the polygons of the mesh. When you place a block onto the terrain, it just adds new vertices to the mesh, and removes the vertices underneath the new block. It still remains one mesh. That's why you don't see cubes when you clip underneath the surface. You're seeing one big mesh with only the external triangles generated. Why would anyone use thousands or millions of objects when it could just be ONE object? As for raycasting, you don't need to use physics for that. You're using a grid. You could design an extremely fast lookup system that would take almost no time at all to calculate, probably just the equivalent of few hashmap lookups, instead of having a literal physics engine to determine your grid.
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
About the mesh you're absolutely right. It's only the chunks "surface" that is displayed via a mesh. The idea with the grid is really good. When I go over my features for refactoring and optimizing, I will check this out (it's already added to the Trello Board). If you want, you could join the discord so we can talk about it in more detail. Thanks for the feedback :)
@JacobNax
@JacobNax Жыл бұрын
@@banditbloodwyndevs8782 also please dont introduce state in your systems. its bad. State goes into component data!
@WAYNGames
@WAYNGames Жыл бұрын
Nice job ! Great to see people trying new tech like DOTS and sharing the issues they meet and how the solved it.
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
And I thank you for the cooperation!
@LukeAps
@LukeAps Жыл бұрын
Nice! We got there in the end!
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
YES! Absolutely awesome! Thanks for your help :)
@khaledalrass8910
@khaledalrass8910 11 ай бұрын
Amazing!
@MrBinyata
@MrBinyata Жыл бұрын
nice work! I am currently trying to understand dots with the physics library, hopefully you make it far in your project
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
Thank you 😊 I hope so. That's why I make the videos: showing my stuff to interested people keeps me motivated.
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
Are there any features you would wish in this kind of game? Put them here in the comments and they will be added to the idea pool in my Trello board :)
@EmanX140
@EmanX140 Жыл бұрын
I guess vegetation, animals and biomes) In the end it will be cool to see simulation with villages cities and resource management)
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
@@EmanX140 my plan is to completely revamp the world generation process in a future iteration. For now I have a basic process to be able to continue with other stuff. But yes, I plan to have biomes, rivers etc.
@thewhiterabbit4268
@thewhiterabbit4268 Жыл бұрын
DOTS is another word for triggering Burnout
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
🤣Well said! But I really like it. It needs time for training, but when you are familiar with it, it's very cool.
@FantaLaTone
@FantaLaTone Жыл бұрын
looks great but it needs some optimization i recommend looking into Minecraft's code
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
You're absolutely right. Especially the mesh creation is horribly inefficient. That's a point I have to work on in the future.
@hominusprogramming
@hominusprogramming 11 ай бұрын
For the entire video my question was: "Why he isn't using the unity 3d tilemap for the grid?" then i found out that you store the data of the tile inside the tile itself. That's the worst things you can do, not even Terraria does that! The way to go here is to have a world manager that each time you walk outside of a chunk the manager save the state of the chunk, then, when the player is near that chunk (at least 1 chunk out of screen of distance) the manager run the simulation to "fake" that the chunk continued to live on during the player's absence. Not only this, but ECS was developed for entities i.e., npcs, mobs, vehicles or in other word the part of your game that are kinda "alive". Tiles are essentially textures (or object) that exists without doing nothing, some games even instantiate tiles directly in the GPU, and because (especially if you don't "dig or build") they don't have to do nothing all changes are handled by the famous WorldManager I mentioned earlier. In this way you can have a lot of tile without destroying the users pc. Remember "use the right tool for the right job" if you already have a system (tilemap) that with a little bit of modification can help you achieve what you need don't force yourself to adapt an entrie different system (ecs) to your needs. And you can see that even at Unity they didn't think of using DOTS for everything infact you cannot create a "DOTS-only" project from Unity Hub you need at least one scene with some Mono object inside. This is only a suggestion, i'm not an english speaker so if it's came off as a rant i'm sorry. However you decide to go i wish you luck with your project!
@banditbloodwyndevs8782
@banditbloodwyndevs8782 11 ай бұрын
Thanks a lot for your feedback :) I'm sure you're right with what you say. Let me explain my point of view: Regardless of what it was originally intended for, ECS is a toolset. And what tools are used for it only limited by the skills and creativity of the one who uses them. In my case, my skills are limited, but I try to find creative ways to use it. As far as I understand the purpose of ECS, it's a super optimized technology to store and manipulate data. And that is exactly what I need for my world simulation. So maybe there are better ways of doing it, but with this project, I try to use ECS. I hope you still enjoy what I'm doing with this project and whatever comes in the future.
@il35215
@il35215 10 ай бұрын
World manager ... cool, another guru telling how to implement god class anti-pattern. If your project has classes named Manager or Controller, then congratulations, you are a shitty programmer.
@EmanX140
@EmanX140 Жыл бұрын
So no physics at all now?
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
No ECS-Physics, correct. But the chunk GameObjects have a traditional MeshCollider for the raycasting.
@JudahDoupe
@JudahDoupe Жыл бұрын
​@@banditbloodwyndevs8782 I also had performance problems with the default dots physics system. But I also had good success rolling my own physics system. It's essentially only basic collisions, but the code can be hyper optimized for my use case.
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
@@JudahDoupe good to know. I think sooner or later I will go back to all of my systems to refactor and improve. Maybe I will also change some things related to the physics.
@sinistermephisto65
@sinistermephisto65 Жыл бұрын
Great video but , the music is distracting
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
Thanks for your feedback 😊do you mean all tracks or just one of them?
@Arkaen-AI
@Arkaen-AI Жыл бұрын
Invite invalid 😞
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
Oh sorry for that. I will check that. Thanks for telling me
@banditbloodwyndevs8782
@banditbloodwyndevs8782 Жыл бұрын
I updated the invitation link. discord.gg/dqFy6zDnpz Would be happy to see you there :) Sorry again for the confusion.
Procedurally Generating Icons for my Farming Game
18:50
ThinMatrix
Рет қаралды 136 М.
Каха и суп
00:39
К-Media
Рет қаралды 1,9 МЛН
DO YOU HAVE FRIENDS LIKE THIS?
00:17
dednahype
Рет қаралды 82 МЛН
Switching Game Engines... Twice? - Devlog #7
10:55
TIMBER
Рет қаралды 80 М.
Regions and side dungeons in my dungeon crawl programming game | Devlog
5:28
Unity DOTS vs Assembly Benchmark - Which is fastest?
30:34
Lingon Studios
Рет қаралды 80 М.
Why Stairs Suck in Games... and why they don't have to
11:24
Nick Maltbie
Рет қаралды 1,5 МЛН
Unity Job System - A Practical Code Example
13:50
Infallible Code
Рет қаралды 80 М.
Simulating an ENTIRE Ecosystem... | Devlog 4
8:11
SigmoidDev
Рет қаралды 38 М.
Watch This Before Working on a Big Game in Unity
18:44
John Leorid
Рет қаралды 292 М.
В России ускорили интернет в 1000 раз
0:18
Короче, новости
Рет қаралды 1,8 МЛН
Klavye İle Trafik Işığını Yönetmek #shorts
0:18
Osman Kabadayı
Рет қаралды 234 М.
ОБСЛУЖИЛИ САМЫЙ ГРЯЗНЫЙ ПК
1:00
VA-PC
Рет қаралды 1,4 МЛН
Собери ПК и Получи 10,000₽
1:00
build monsters
Рет қаралды 2,3 МЛН
Хотела заскамить на Айфон!😱📱(@gertieinar)
0:21
Взрывная История
Рет қаралды 6 МЛН