ecsyjs / ecsy

Entity Component System for javascript
https://ecsyjs.github.io/ecsy/
MIT License
1.11k stars 115 forks source link

is ecsy dead? #279

Open grefrit opened 3 years ago

jerrygreen commented 3 years ago

Would not be cool if it is :\ I found it real cool

simonihmig commented 3 years ago

Kind of a duplicate of https://github.com/ecsyjs/ecsy/issues/262, though that issue also does not give us a clear answer. 😕

jerrygreen commented 3 years ago

I just started a blog, and wrote a couple articles about starting game project with TypeScript:

In first article I'm starting an ECSY project, and in second I'm getting rid of ECSY part 😂

Spoiler: official sample project performs much better now without ECSY. I indeed thought ECSY is cool, but soon figured that's not ECSY is cool, that's ECS is cool

iaiayou commented 3 years ago

I just started a blog, and wrote a couple articles about starting game project with TypeScript:

In first article I'm starting an ECSY project, and in second I'm getting rid of ECSY part 😂

Spoiler: official sample project performs much better now without ECSY. I indeed thought ECSY is cool, but soon figured that's not ECSY is cool, that's ECS is cool

please, can you provide the first article whole project or github address? thanks~

jerrygreen commented 3 years ago

please, can you provide the first article whole project or github address? thanks~

There’s none.

But what did you expect to see there anyway? ECSY project sample / boilerplate, with all the libraries included?

iaiayou commented 3 years ago

please, can you provide the first article whole project or github address? thanks~

There’s none.

But what did you expect to see there anyway? ECSY project sample / boilerplate, with all the libraries included?

I use typescript+escy, has some warn problem by ts. the comp type is always wrong, why? eg: class ContainerComponent extends Component {} ContainerComponent.schema = { cubage: {type: Types.Number, default: 0}, };

const comp:any = entity.getComponent(ContainerComponent); const {cubage} = comp;

jerrygreen commented 3 years ago

@iaiayou uhh, I don't remember exactly, but I, too, remember some troubles with types in ECSY (I didn't like the types). That's part of the reason why I ended up with my own ECS implementation

dumblob commented 2 years ago

@jerrygreen couldn't find your ECS-inspired project on GitHub - do you still develop/maintain it?

Btw. feel free to take a look at advanced yet minimal ECS for JavaScript: Polyphony.

jerrygreen commented 2 years ago

@dumblob I am, secretly*, continue developing the thing, it changed a lot but the most important: I'm still not entirely happy with it to ship to the masses.

A lot changed since back then, for example I now use Svelte instead of React: still, it has react-ish look, very simple to design interfaces (unlike any gaming frameworks), but it has much more lean code than React (I have to admit it, even though I've spent many years developing with React). I also use Tauri to be able to ship the game for desktops (instead of Electron, so the total executable size is small). I made my own AssemblyScript loader, so I can load AssemblyScript directy from files without any other "glue"-code like WebAssembly.instantiateStreaming(...), just as lean as any other function I'd import from JS/TS, like this:

image
(Svelte code; you can see the imported code is WASM/AssemblyScript, you can say this by the shown types)

What's also important, I try not to just build some game engine in vacuum, but I am also in the process of designing my own game (medieval-fantasy rpg-rts). I can barely say I've even started actual "game" code: only the engine code. Because apart from the engine, I'm spending time to many other things: making Design Doc (I rewrote it few times from scratch already), the sketches, designing UI, making PRs or filing issues to other related libraries, and I also spend a lot of inspirational time too: I am re-playing many games I've played early, which inspired me to make a game in the first place (because initially I'm more a software dev than game dev, and most of my professional work I spent on software other than games), and many other things like tinkering with UDP in web tech (it doesn't seem UDP is hugely used in web-based games, though it is technically possible... just unpleasant). So this engine I'm coming up, - still doesn't look to me to be ready for the masses. Particularly, I want this engine to better support client-server architectures, with dedicated servers, while as of now I mostly have spent time on client-side yet, and server-side is poorly supported and needs more thought.

Also I'm in doubt in overall if I should release this engine or any libs without an actual game. I would like the idea to be my own first customer of my own tool, and if I release the engine without a game, this fact will quickly become untrue and make me feel bad in many ways.

Last but not least, I am doing it all just by myself, no any hidden team behind, so the process takes real real long time, I don't even have a grasp on estimation of when any of it will be ready. Just doing it for fun in spare time. Not to expect any github project links anytime soon, unfortunately... And sorry for so much text, too.

* I mean not entirely secret of course, but at least I don't advertise or talk about this a lot. But yes I am working on it.

dumblob commented 2 years ago

@jerrygreen that sounds promising one way or another. Keep me posted, thanks!

Btw. if you'll find a few minutes, feel free to check out the Polyphony ECS system - it's a very good source of inspiration (see also discussion regarding "what could be done better").