Spark AR Studio — incorporating custom scripts
Marc Mills
As a software engineering student, regardless of the language or framework, the pattern of learning is often as such: learn a concept, understand why it’s necessary, and then learn how to abstract it away so that one can focus on the next, slightly more complex problem. Entire libraries have been built to accomplish this never ending task, and now more and more programs are abstracting the need to write code almost completely. The goal (I presume) is to include technology users without coding skills in becoming technology contributors. This widens the net to creative thinkers and can produce some pretty incredible mods and apps. As a developer who has climbed the mountain high enough to see the endless range of complex technological mountains ahead and is often overwhelmed by such a sight, I found the opportunity to build custom AR effects that can be easily deployed to facebook and instagram exciting enough to download it, run through some tutorials and read some of the documentation.
While a ton of cool things can be built using this visual drag-n-drop style IDE, my real interest becomes, ‘where do custom scripts come into play?’ If you open a new project, you’ll see an assets column on the left hand side. Click ‘Add Asset’ at the bottom of this box and you’ll get a dropdown menu. Click script, and you have a nicely documented JS file appear in your assets folder that opens in the editor of your choice once it’s double-clicked. Getting into the documentation of custom script writing leads to some interesting “under-the-hood” observations. One is the fact that Spark AR studio uses reactional programming rather than imperative programming. The example the documentation gives is if you have the function
Y = 2x + 3
A typical JavaScript compilation (using imperative programming) evaluates the value of y when it runs the computation. If the value of x changes at any point in the future, an update function must run to update the value of y. With reactional programming, the value of Y is ‘bound’ to the value of the function itself, and that the updating of Y is stored in native code, increasing performance and scalability for when, say, that y value is a y-axis value of someone’s nose or iris being tracked by the program and needs to update every frame (which is a lot of y values). Abstractions are occurring at every level in Spark AR studio.
So ultimately, the question becomes — are programs like this useful or detrimental to developers? I love that I can build AR features quickly after downloading the IDE and without a ton of technical documentation or training, but I also love make levels on Super Mario Maker 2 — it doesn’t necessarily make me a game developer. Does it take away a step of analytical thinking that those who built programs from scratch 30 years ago attained? While I would say that the latter answer is ‘yeah it probably does to some degree’, I still think it is a useful tool for developers, as well as useful in inspiring other to become developers. As a developer, the fact that you understand compilation, call chains, env setups, object oriented programming, inheritances, etc., allows you a sense of ease and understanding of what’s probably under the hood without needing to know what’s actually under there. Finally, beginner accessibility to building custom tech software is the key to taking the next generation of tech users and inspiring them to become tech contributors. More contributions lead to the progressive advancement of ideas, and falls in line with the ideals of the founding mothers and fathers of the internet. I look forward to continuing to play around with this cool piece of software.
Feel free to share your experience with Spark AR studio in the comments below!