There are so many different features which would be great to see in the app! I just wanted to list some off:
- A modules system! Just like real code, this allows you to import usable pieces of code which others have specifically designed to aid you in making your projects. So instead of digging around through confusing code, trying to figure it out (and directly remixing someone else’s project in the process) - for instance, a 3D rendering example - it’d simply be a quick import from another project, with parameters you could pass in, and even custom objects you could utilize from those projects! Think about it - instead of coding that finnicky joystick again or recoding a drawing pad system again, you could simply import a really good one from another user. Per se, if you wanted to use @Valgo’s cool custom velocity pen tool in a project, or his instant loading clone system, or even something as robust as @CreationsOfaNoob’s 3D rendering system - it’d be a simple drag and drop to import and reimplement, and less reinventing or reconstructing the wheel! And it really would help people like me that aren’t very good at super advanced math
- A refined collaboration or pass off system! Forget the remixing and in with the versioning! So this would allow you to pass off projects privately with other people, much like Git in the real world! Or at least something like private remixing, so that your project doesn’t get leaked when you post it for that split second on the app for everyone to see, even for just a minute. So your cool collab with MagmaPOP doesn’t get leaked and spoiled!
- Official asynchronous thread support! So I don’t have to make two separate when/forever loop conditional loops to complete asynchronous tasks. What this means is that, because only one block runs per frame, you have to separate code that you want to run at the same time into separate conditions! (I suppose with the new signal capability added to the app, if you delay by 1 frame this next sentence becomes semi irrelevant - but) With this, because these “async” processes are (or have been, I guess) based on constantly checking if a variable is true every frame, overall this will cause problems in your project running, and will also cause lag. So it’d be so cool to see a new collapsible “async” loop that creates a separate thread to run code within on the next frame, without having to separate when loops!
- Arrays (or lists)! Just think about how much easier pixel art would be if you could assign color values to a list/array… and that just about scratches the surface of what an array would be capable of!! Instead of storing data in many different variables or draw loops, just call an array and iterate upon it with a repeat/if loop combo! Finally, a nice way to make pixel art with DRY code. (And it would definitely not be limited to pixel art!) Arrays are preferred but lists would be ok too, I’m not complaining about it.
A really good music system! Audio has always been half the experience of a great project, in my opinion, when it comes to videos, movies and video games! Whether you’re a composer like @Anonymous or just a casual Hopscotcher looking to add some extra energy to their project, sound possibilities are crucial to creating a more original artistic experience! At the very least, it would be great to be able to:
- Change the pitch of sounds and music notes programmatically! So you could play a really deep drum or a really high pitched water droplet sound! This one feels like it’d be very simple to implement, if nothing else!
- Different instruments! We’ve already got the xylophone but imagine using a toy piano, or a triangle, or a violin! Or maybe something electronic like a saw wave! Adding musical (aka “sonic”) possibilities would make a world of possibilities in terms of experiencing a project!
- More drum variety! There are only a handful drums in Hopscotch - most notably the kick and the snare - but it would be sweet to get a closed hi hat, open cymbal, toms, claps, or more types of drum kits in general! Of course, changing the pitch on some of the current samples would be suitable too :)
- Audio effects! This is a big one! Effects truly make your music stand out in terms of originality, and allow for much cooler sounding songs! Many game engines have their own reverb engine built in, for example, and it would be great to have “room size” (how big the simulated room is which the reverb is played in) and “reverb time” (how long the effect lasts for) as parameters, but it would also be cool to get a simple delay effect that lets you set your delay time in milliseconds or beats, an 8-bit effect and maybe even a stereo field plugin, so you can send sounds to the side for headphone users, and to reduce clutter in music projects at the same time. Just play notes in the side channels and sounds in the middle channel, or vice versa!
- Lag-free notes straight out of the box! When you play notes, by default there is a lot of stuttering and delays that happen. It’s also pretty hard tp play lots of sounds in a short period of time without noticing some lag, in my experience. I know there are already some methods of bypassing musical delay lag [(Courtesy of @Awesome_E)] but it would be great to have some speed optimizations to the current music system!
- A dedicated BPM system! I mean come on, this would be sweet! :)
- Levels, curves and gradient editing to images and sprites. Okay I have no idea exactly how practical this would be, but it’d be cool to see. Imagine making Bear a polar bear!!! Just with one grayscale gradient modifier! It’d be a dream come true. (Think HSV Adjustment/Curves/Levels in Photoshop, but on sprites, and it’s programmatic!)
There now user variables, custom images, copy pasting and z indexing added to the editor, which are really nice features, honestly! Thanks for adding them!
But I feel like the engine could use some slight adjustment, for things like easier collaboration, a nicer music system, some simple async support, and of course, arrays! (And then the levels adjustment thing would be cool too. )
I’ll tag you guys in this topic again if I think of more good features to add!