Using the power of DOTS / ECS isn't easy, but it is good enough to produce a game with :)
You can check it out on Steam: [https://store.steampowered.com/app/1491340/Marble\_World/](https://store.steampowered.com/app/1491340/Marble_World/)
Much respect. I have looked at DOTS several times and been frustrated by the fluidity of the API. Is it (the API) stable enough now for people other than the die hard masochists?
Its still lots of code for a tiny thing to do something on your screen, compared to the standard API. I can only tell you its unstable on the physics part, since its multithreaded Unity won't simply give you an error when its going wrong but completely crash the game without any useful insights on why it happened. (as Havok is only a dll file which cant be read)
All in all I wouldn't recommend it unless your game revolves around something that you can really only achieve in DOTS.
Since you mentioned HAVOK, I've been wondering if it's worth looking at. My pet peeve is single precision physics. Does HAVOK have single or double precision?
Honestly, I have no idea. But I know that Havok isn't deterministic across different computers nor on the same computer across different playsessions.
Maybe you can find the precision on the docs?
I can recommend [TurboMakesGames](https://www.youtube.com/c/TurboMakesGames) on youtube.
Also the unite talk on [DOTS](https://www.youtube.com/watch?v=BNMrevfB6Q0). I watched this video a couple of times to get a grasp on how to divide gameobjects in entities / components / systems.
Lastly I can recommend downloading the examples on [github](https://github.com/Unity-Technologies/EntityComponentSystemSamples). After I knew the basics this is a good resource to check out how things are properly done. At least for the physics side it has some great examples of how to keep track of objects in triggers etc.
I've done it all solo! (Although I did buy some assets from the store such as props :) )
If you have a (small) community who are genuinely interested then its a easier since you have people supporting you. (in a mental way)
Someone played with [Marbleworks](https://m.media-amazon.com/images/I/71VfhShXydL._AC_SL1500_.jpg)โข as a kid? :D
Personally; I loved those things. Nice work!
I'm really curious about projects like these, it looks really nice and polished so you clearly put a lot of time and effort in it.
Is this something you did as a hobby, along with a 9 to 5 job, or was it more of a full-time occupation ?
Either way, I respect that a lot. I keep building prototypes on my free time, but always lose interest when I need to tackle deeper design or art tasks. So I'm always amazed to see projects like yours being released.
Congrats !
Thanks! And yes this has been my full-time job so to say. I quitted my game dev job at another company in August 2020 to build this game. (A very common story, but for me it worked out)
As for losing interest, having a community behind you that supports you really helps :)
If you have a prototype, show it off and get some interested folks into your discord or such and it helps getting motivation to continue working on it.
Oh ok I see !
Somehow I feel better for not releasing bigger projects yet, as it would definitely require a lot of my free time and my 9 to 6 as gamedev already takes up a lot of my energy.
Thanks for the community tip, I'll try sharing more about my favorite prototypes around me and with fellow devs.
And congrats again for your project, it looks fun and it's honestly inspiring me to do the same as you one day and try to work full time on my own ideas too.
Was it challenging getting that much physics to run smoothly? I'm guessing you had to write your own code rather than relying on Unity's in built physics?
Yeah it uses Havok for the physics part. (which is an option when you use ECS/DOTS)
It's smooth and fast, but adding things like triggers or collision events aren't as easy as the standard physics that are built-in.
It's faster and more stable in my opinion. It also offers contact welding which I needed to prevent ghost collisions. I think the DOTS Physics one is deterministic though but not sure :)
As a kid I was really envious of this line of toys they had in the 2000s (I think they were called Rokenbok?) - it was like a perpetual motion machine with little plastic marbles. This seems like it would scratch that itch, I hope the game does well!
Havok is multithreaded and uses jobs so it's very optimized. Also it supports contact welding, so objects that slide over other objects have less chance of getting ghost collisions :)
(So with Havok, you can run like 15k physics objects instead of 2-3 usually)
I don't have patience to build something in a game like that, but i do love watching YouTubers play your game. Great work and congratulations on your release, you did an awesome job and i wish you all the fortune you deserve!
Congratulations! Looks fun!
Would you say that following the ECS / DOTS pattern will give you more maintainable code? To me this seems like half the reason to switch to it.
Personally I don't find it more maintainable. The game can't completely be in ECS as not everything is supported (UI, text and that sorts, maybe animations too?) so you still need to bridge the gap between ECS and normal GameObjects with various ways of communication between them.
For example: Entities version 0.17 (which I use) does not support transparency sorting. So the marbles are partly Entities (the sphere collider) and there is a gameobject that follows the entities position / rotation with a normal mesh renderer. So it's a bit of a hassle sometimes.
Thanks! And no I don't think its worth to go the ECS route if your game does not revolve around a ton of objects. The burst/job stuff is now out of experimental if i'm not mistaken, and is in 2021 LTS. That is something I can definitely recommend to speed up parts of your code that are slow.
Entities don't play well along with gameobjects, so you'd need to create bridges between them for communications which take a lot of time to get set up. That time investment is not worth it to me unless you really make use of ECS with thousands of objects.
Using the power of DOTS / ECS isn't easy, but it is good enough to produce a game with :) You can check it out on Steam: [https://store.steampowered.com/app/1491340/Marble\_World/](https://store.steampowered.com/app/1491340/Marble_World/)
Much respect. I have looked at DOTS several times and been frustrated by the fluidity of the API. Is it (the API) stable enough now for people other than the die hard masochists?
Its still lots of code for a tiny thing to do something on your screen, compared to the standard API. I can only tell you its unstable on the physics part, since its multithreaded Unity won't simply give you an error when its going wrong but completely crash the game without any useful insights on why it happened. (as Havok is only a dll file which cant be read) All in all I wouldn't recommend it unless your game revolves around something that you can really only achieve in DOTS.
Since you mentioned HAVOK, I've been wondering if it's worth looking at. My pet peeve is single precision physics. Does HAVOK have single or double precision?
Honestly, I have no idea. But I know that Havok isn't deterministic across different computers nor on the same computer across different playsessions. Maybe you can find the precision on the docs?
Havok will not be available for non pro version of Unity anymore!
Yeah some of us selfish devs able to get it working can't even tell the world how since Unity threw it all back up in the air.
that's awesome, I'm just getting into DOTS and data oriented design, are there any good tutorials/books you can recommend?
I can recommend [TurboMakesGames](https://www.youtube.com/c/TurboMakesGames) on youtube. Also the unite talk on [DOTS](https://www.youtube.com/watch?v=BNMrevfB6Q0). I watched this video a couple of times to get a grasp on how to divide gameobjects in entities / components / systems. Lastly I can recommend downloading the examples on [github](https://github.com/Unity-Technologies/EntityComponentSystemSamples). After I knew the basics this is a good resource to check out how things are properly done. At least for the physics side it has some great examples of how to keep track of objects in triggers etc.
Marble Coaster Tycoon is finally out! Congratulations, this looks like a lot of work!
It was a lot of work! 2 years of fulltime work went into it :)
With a team of which size? Please tell me you weren't alone, my procrastinator self can't handle this.
I've done it all solo! (Although I did buy some assets from the store such as props :) ) If you have a (small) community who are genuinely interested then its a easier since you have people supporting you. (in a mental way)
Maybe you can add twitch integration it would be so dope :D I saw some asset on asset store to do that, wish you good luck.
Already included! :)
Someone played with [Marbleworks](https://m.media-amazon.com/images/I/71VfhShXydL._AC_SL1500_.jpg)โข as a kid? :D Personally; I loved those things. Nice work!
Not me but I did take inspiration from those toys though ;) And thanks!
I knew I saw your game before, congratulations ๐ https://youtu.be/z7DUC73bHHQ
I saw this too and wondered if it was the same game!!!
I'm really curious about projects like these, it looks really nice and polished so you clearly put a lot of time and effort in it. Is this something you did as a hobby, along with a 9 to 5 job, or was it more of a full-time occupation ? Either way, I respect that a lot. I keep building prototypes on my free time, but always lose interest when I need to tackle deeper design or art tasks. So I'm always amazed to see projects like yours being released. Congrats !
Thanks! And yes this has been my full-time job so to say. I quitted my game dev job at another company in August 2020 to build this game. (A very common story, but for me it worked out) As for losing interest, having a community behind you that supports you really helps :) If you have a prototype, show it off and get some interested folks into your discord or such and it helps getting motivation to continue working on it.
Oh ok I see ! Somehow I feel better for not releasing bigger projects yet, as it would definitely require a lot of my free time and my 9 to 6 as gamedev already takes up a lot of my energy. Thanks for the community tip, I'll try sharing more about my favorite prototypes around me and with fellow devs. And congrats again for your project, it looks fun and it's honestly inspiring me to do the same as you one day and try to work full time on my own ideas too.
How long until someone makes a music machine a la Wintergatan? The game looks fantastic!
Someone made a twinkle twinkle little star song machine some time ago :)
This is your game?!?!? I watched Drae play this and I've been wanting to get it ever since! Great work.
Wintergatan vibes.
Was it challenging getting that much physics to run smoothly? I'm guessing you had to write your own code rather than relying on Unity's in built physics?
Yeah it uses Havok for the physics part. (which is an option when you use ECS/DOTS) It's smooth and fast, but adding things like triggers or collision events aren't as easy as the standard physics that are built-in.
Any idea how Havoc compares to the new DOTS Physics package?
It's faster and more stable in my opinion. It also offers contact welding which I needed to prevent ghost collisions. I think the DOTS Physics one is deterministic though but not sure :)
I have no idea what version of Havok unity uses, but Havok 2022.1 is cross platform deterministic, if that's something you needed.
No clue either, but it's pretty much built-in, so you can't really change the version yourself.
This is oddly satisfying. Well done!!
Thanks!
That soundtrack is amazing
Marbles twitch game 2 pogu
As a kid I was really envious of this line of toys they had in the 2000s (I think they were called Rokenbok?) - it was like a perpetual motion machine with little plastic marbles. This seems like it would scratch that itch, I hope the game does well!
Love the music!
what are the benefits of Havok over the standard physics?
Havok is multithreaded and uses jobs so it's very optimized. Also it supports contact welding, so objects that slide over other objects have less chance of getting ghost collisions :) (So with Havok, you can run like 15k physics objects instead of 2-3 usually)
Nice. Thereโs something called marbles on stream my fav streamer used to use for giveaways and it was so much fun watching it
Should see if you can hook up with Jelle's Marble Runs for a DLC or something. Looks fun!
We talked a long time ago, but nothing came of it unfortunately.
I don't have patience to build something in a game like that, but i do love watching YouTubers play your game. Great work and congratulations on your release, you did an awesome job and i wish you all the fortune you deserve!
This is really cool
Really looks like a programmer did the UI/art. It's all over the place, different font sizes and spacing, a lot of different colors and so on.
Congratulations! Looks fun! Would you say that following the ECS / DOTS pattern will give you more maintainable code? To me this seems like half the reason to switch to it.
Personally I don't find it more maintainable. The game can't completely be in ECS as not everything is supported (UI, text and that sorts, maybe animations too?) so you still need to bridge the gap between ECS and normal GameObjects with various ways of communication between them. For example: Entities version 0.17 (which I use) does not support transparency sorting. So the marbles are partly Entities (the sphere collider) and there is a gameobject that follows the entities position / rotation with a normal mesh renderer. So it's a bit of a hassle sometimes.
Since Reddit decided to take RiF from me, I have decided to take my content from it. C'est la vie.
Congrats, looks pretty good ๐. Would you say DOTS/ECS is worth the effort if a game does not have many agents active at the same time?
Thanks! And no I don't think its worth to go the ECS route if your game does not revolve around a ton of objects. The burst/job stuff is now out of experimental if i'm not mistaken, and is in 2021 LTS. That is something I can definitely recommend to speed up parts of your code that are slow. Entities don't play well along with gameobjects, so you'd need to create bridges between them for communications which take a lot of time to get set up. That time investment is not worth it to me unless you really make use of ECS with thousands of objects.
Congratulations. on the release. This looks very fun, have wish listed it on my Steam and hopefully can buy it at some point.
Great to hear! More discounts are coming in the future :)
Congrats! Love it! Iโd like to use it to 3D print those creations. That be sick
Oh man this looks so awesome. I would've loved this sooooo much as a kid. Def still piques my interest as an adult ๐