I was thinking of using ECS DOTS for the upcoming Ludum Dare game jam. Only I would need to get up to speed with the latest API’s and what is and is not included also the best/fastest ways to write systems and get around the boilerplate problem?
So anyone using ECS / DOTS for game jams or fast prototype development and what hints, tips or tutorials would you recommend?
I have experience of working with GameObjects and found it fast and effective in game jams, but the last time I worked with ECS it was all [Inject]ion based, and it was a simple Space Invaders Clone.
If last time you have used ECS is so long ago I would not risk using ECS for a game jam. You do not lose time on figuring out how something should be done because it could lead to frustration.
Yea I second that, having been working with ECS since November I can tell you I still can’t explain HOW you do stuff.
I would just wait until the ease of use end of DOTS is all complete, or at least nearing completion before bothering with ECS in a Game Jam.
Agreed. Don’t use it for a Game Jam unless you are already very comfortable with the APIs and have a fair amount of examples to copy+paste boilerplate from. And even so, you will likely run into issues that you’ve never seen before. Nobody is going to care if your Game Jam game has a terrible frame rate, so go nuts with MonoBehaviors and call your game “5 FPS” because that will guarantee some laughs!
It depends why you’re doing the jam. If you care about the outcome don’t do it. If you want to throw yourself into the deep end and learn ECS then it sounds like a very good way to get experience. I would do it for the adventure.
It’s a lot less boilerplate than it used to be, and you can do things in simple ways. I myself am prototyping in ECS but just skipping jobs for now and doing it all on the main thread. I find this is a good way to rapidly write concise code, and I can port things to jobs later when I want to.
If you already made a game with an older version of it then you’re the best person to estimate your man-hour requirements for the project - not us.
They dumped the Inject stuff last I heard, so your architecture will be different. Might be good to get up to speed over the weekend? The full DOTS system is not production ready, has tons of caveats to consider and many design gaps to bridge in order to make it a comparable alternative to the MonoBehavior/GameObject/Prefab path for all but the most low level developers. I’d avoid it in all cases except for the one above.
The only place it really shines is when you have something of substantial volume to process. There’s no real reason to use it for basic things. If you have 10k invaders on the screen, that makes sense but traditional invaders would be kind of silly to do in DOTS/ECS.
Unity ran a 24-hour game jam with the Serbian Games Association that was 100% DOTS projects and it turned out to be a pretty big success! Most of the teams did not have any DOTS experience beforehand, though they did have a few people from Unity on-site if they had questions.
All in all, I think a game jam is a great opportunity to learn how to use DOTS, but that comes with the tradeoff that development may be harder since you’re using a new set of tools. You may be able to make something with DOTS that was previously impossible with Unity. Only you and your team can decide if that’s worth it!
I thought DOTS was limited in features e.g. Sound / Navigation / AI / Input / Animation / Netcode are all still regular API features and have not been converted to DOTS so their games would be limited to just rendering and movement if they were a 100% DOTS?
Or are there new APIs that allow DOTS to work with these aspects of the game engine?
I think you took “100%” too literally, because now even rendering is not 100% DOTS. (hence the package name Hybrid Renderer). I think he meant the calculations/game states are all in DOTS. e.g. 100% in the sense that if you were able to alter any of game’sentity data at will you could control the whole game, not 100% in the sense that everything that makes the game work (game data + DOTS package + engine) are data oriented.
Game jam should be fantastic to learn all the post-preview.28 apocalyptic changes. Maybe you could handicap yourself to use only game object conversion workflow to make a massive but simple game in a short time frame. Or learn how the new sub scene feature works and build a game based on that.
Tried the DOTS samples and they don’t work in WebGL (not rendering) this is kind of fundamental for a lot of game Jams, is there a way to get DOTS to work with WebGL?
I don’t think it’s survivable without a few unity staff on hand, frankly, for a game jam
But once visual scripting comes I can see it being the most popular jam tool.
I just used it for LD: Baby Benjamins by foolmoron. Uses ECS with Burst Jobs and Unity Physics (except custom behavior for planet gravity and 2D-only bodies). Took my entire first 24 hours just to get the basic physics working, but after that it was pretty smooth.
Until the building portion. The webgl build crashes on load for reason (gonna make a thread about it) but the windows x64 one is fine. The x86 doesn’t work even though I should have the dependencies that it asks for? Whatever.
A year ago I used the old ECS system for LD also, and it runs quite well on webgl after some initial chugging: Zap Herder by foolmoron
I’ve been advising people to steer clear of ECS for the moment unless they are team programmers with a CompSci background rather than solo Indies with less insight in low level code.
I know that Unity probably gets more revenue from the former, but it’s a pity that the latter are left without easier access to the ECS workflow.
Myself, I didn’t get the samples and the package manager and Visual Studio all working together until the 2019.1 release.
Much happier with the MegaCity demo!
I read: “Sure, it’s a great idea! If you happen to have a few Unity engineers nearby to help you understand the design patterns, where to find working examples, when and when not to use it, the caveats to using Burst vs not using it, which features are fully implemented and which ones are missing, etc.”