phoboslab / Impact

HTML5 Game Engine
MIT License
1.99k stars 204 forks source link

FYI: I ported Impact to TypeScript #73

Open city41 opened 4 years ago

city41 commented 4 years ago

Hey everyone,

I am a big fan of Impact, and have decided to use it on a new project I am starting. I wanted to use Impact with modern tooling, so I ported the engine to TypeScript.

The port is here: https://github.com/city41/impact.ts

I did not fork this repo since the result ended up being so different.

tophermade commented 4 years ago

Awesome work @city41 !

city41 commented 4 years ago

I'm not really sure what to do with this port :) I forked the TS port and brought that fork into a closed source app I am working on, and have made a fair number of changes on that fork that are possibly not good for Impact in general. Some of these changes have enabled me to get an Impact Storybook client going:

https://twitter.com/mattegreer/status/1216950630838759424

Which is starting to prove pretty useful. Working on entities in isolation with the browser automatically updating on each change is pretty sweet.

tophermade commented 4 years ago

Yeah, I get that. I don't use Impact anymore myself, sadly, but I found your note here while poking around nostalgically. Is nice to see such a cool base living on, and it looks like you're doing some legit work on SB

Protonull commented 4 years ago

I've been mulling this over recently as I've been wanting to create little projects in Impact but sort of dreading going back to like 2014 style of coding with putting everything in the global namespace and not having rest spread nor null coalescence nor optional chaining or any of that.

But, while your TypeScript port is certainly very impressive and I applaud the work you've put into it, I can't help but feel that you're at a crossroads between supporting and porting every little change to Impact, which is still in active development, or breaking backwards compatibility, both of which are not ideal.

I'm wondering if ImpactES6 has the right idea. If we could improve this to support the even more modern standards we have now, then this could serve as a bridge between the old and the new.