nesbox / TIC-80

TIC-80 is a fantasy computer for making, playing and sharing tiny games.
https://tic80.com
MIT License
5.08k stars 492 forks source link

Multiple file project support #2639

Open ephetic opened 4 months ago

ephetic commented 4 months ago

TIC-80 should support breaking projects up into several (reusable) source files as it is such a basic software engineering feature and not anachronistic with the fantasy console spirit. Switching between files can be done from the console via edit <filename>. This would require support for language import features and save/build support for adding additional source files to the bundle.

This absence of this feature is currently the blocker from using TIC-80 to teach kids game development as it is too confusing to share base libraries with them via copy/paste.

S0ZDATEL commented 4 months ago

It might be a bit difficult to manage the cartridge size with code being split into different files. But not too bad, just sum the sizes of all the files. It won't be very useful to the developer. Let's say you import 10 files, and you run out of cartridge space. You want to optimize and clean up your code, but you don't really see all the code in one place and have to switch between files to find your code. And then you add a new feature into one of the files, the size of the file on its own is fine, but once you import it into your project, then it becomes over the limit. So, we'll need to come up with something to make managing size of multi-file projects easier.

ephetic commented 4 months ago

I see your point. Once the features are modularized, the kind of global optimizations you'd in a single file would be really hard to refactor out of separate files. But I'm sure some compromise coding strategies can be found and developers bumping up against that limit can simply not use multiple files.

Another little thing that could help at the limit is make the cart size limit soft, disabling export etc, but not blocking development.

shaleh commented 3 months ago

https://github.com/scambier/TQ-Bundler perhaps as an alternative?

ephetic commented 2 months ago

In the end, I switched to teaching with Löve and external media editors. Thanks tho.