Hi all,
Arvi Teikari, creator of Baba is You, kindly accepted to answer some questions about his game developer experience. This interview is mainly focus on his experience with Clickteam tools, extensions and the community graviting around it. For other interviews about the game itself, you will find some good ones out there. Arvi Teikari has also a twitch channel where you can learn a lot about game development, and especially the Lua extension of MMF.
I hope you will enjoy it and that we can expect other creators to share their valuable experience as Arvi Teikari did.
Please login to see this attachment.
1) I read an interview on gamasutra with the following answer:
I've made games since primary school; I started by dabbling with QuickBasic and Game Maker, but lack of skill in English & lack of motivation to learn programming made those rather inefficient tools. I eventually stumbled into Clickteam's products and have used them ever since.
Is "lack of motivation to learn programming" the reason why you chose Clickteam Fusion 2.5 to develop Baba is You?
To clarify, Baba Is You wasn't made with Clickteam Fusion 2.5 but it's predecessor, Multimedia Fusion 2. Back in primary school I wanted to make games but didn't have the skills or patience to learn actual programming. I tried out Game Maker but the scripting language used in it (GML) was already too complicated for me. Eventually a schoolmate introduced The Games Factory to me; TGF didn't require any scripting or coding at all, and thus it was easier for me to pick up. From TGF I moved to its successor, Multimedia Fusion, and since I grew very accustomed to the way these programs worked, I stuck with them. In fact, them not requiring any programming turned out to be a problem in that I found it very hard to understand the logic of actual programming because I had become so used to the way MMF and TGF handled things. I tried to use Unity and Actionscript 3 a couple times but lost motivation before getting very far. In 2016 Lukas Meller introduced me to the lua scripting language along with a plug-in that let me use said scripting language in MMF 2, and this combination motivated me enough to pick up scripting more seriously. So the reason I chose Fusion for Baba was because I had grown very attached to it and thus not had the motivation to move on from it, combined with the added power access to lua gave me.
2) Lukas 'Looki' Meller was a well-known active member of the english forum of Clickteam Fusion 2.5 and a developper of extensions for Clickteam Fusion 2.5 game engine. It seems that he played a big role in your experience with the game engine.
Can you tell us more how you met and how you worked together? Looki is coming from Germany and you are from Finland, how did it happen that you met: game jam, conference,...?
We met years and years ago, on the Clickteam-related website The Daily Click, and became online friends. Lukas is a very skilled coder and as said has developed extensions for the Clickteam tools; our friendship wasn't built on that aspect but Lukas has helped a lot over the years and I've learned very much from them.
3) You used lua scripts to develop Baba is You? Did you use an official extension or is it a custom made one from Looki?
Why did Lua scripting change the way you were developing? For you someone who did not learn a programming language, was it not more obvious to keep using a visual event editor?Or in other words what can you do with Lua that you cannot do with the visual editor in the context of Bab is You? From the image below, that is pretty much programming language. What did unlock your ability to work with it?
Please login to see this attachment.
Justin Aquadro had made the Xlua extension several years earlier, and then left it in a nearly-finished state. Lukas fixed a fairly serious bug in the extension to make it nicer to use, though. As stated, I had tried to move away from MMF several times over the years, but always came back due to how used I was to the program; being able to use a scripting language together with the already-familiar tool was important for me because it meant that I could benefit from learning the language while still utilizing its power together with MMF.
As for what lua added to my toolset, there are a couple important factors. First of all, lua is much faster than MMF's own code - I could loops and such in lua that would've slowed MMF down without slowdown. Secondly, MMF's visual programming isn't built around functions or tables, and that means that certain elements, e.g. recursion or databases, are very very difficult to implement neatly within MMF. With lua in my toolset, I could find much neater solutions to certain issues that would've been clumsy to do in MMF, while implementing certain features in MMF that in turn would've been clumsy to handle via lua. An example of this is the block-pushing code - if you push multiple things in a row, you need to recursively check what's in front of them to see if the way is blocked. In MMF, doing this is very tough in any more complicated system, but with lua the process was much, much simpler.
4) Except Lua, did you use other Clickteam Fusion 2.5 extensions? If yes, for which purpose?
I used the Tile Map extension made by Looki, because MMF in itself handles arrays rather badly and Tile Map automatically adds the possibility of handling graphical tiles and 3D arrays very neatly, while using a storage format that's rather lightweight compared to MMF's default array object. I also used Looki's Surface object, which creates a canvas that can be edited during runtime; it's a very versatile tool and was handy for e.g. creating thumbnails (although less important in Baba Is You in comparison to some of my other game projects.) I also used e.g. Looki's "JoyToKey" and "Sound Player" extensions to handle various features MMF handles badly on its own. The full list of extensions used can be seen in the game's credits.
5) You told in different talks that you loved playing difficult puzzle games. Is it what made you develop the idea of logic operator or did you study deeply logic or/and mathematics in school?
I've liked maths quite a bit as a kid & in high school, although logic was never a big part of those studies. I had learned a bit about logic from some extremely smart people I knew, but even at the time I got the idea for Baba Is You, I had only a very surface-level idea of the topic. The main push for Baba's idea was inspiration from certain other puzzle games I had played (Snakebird, A Good Snowman Is Hard To Build, Corrypt, Snakebird) combined with how my brain interpreted the theme of the Nordic Game Jam where I made Baba Is You originally, "Not There". The logic element of the idea was more a spurious mental association than a deeply-thought-out concept.
6) How did you handle all the combinations of the logic operators in your code (target, object and verbs)? You talked about "unintended solutions" in a Gamelab19 video. How did you manage your code so that they are working without "crashing" or "hanging"? Or did you accept
that some "buggy" behaviors are part of the games?
Most of the words in Baba Is You deal quite directly with gameplay elements, so it wasn't until quite late in development when I started dealing more with elements that could crash or loop infinitely (barring more everyday coding bugs.) I accepted early on that certain word interactions would result in odd/unintended behaviour, but my goal was to limit those to rare cornercases. My goal from the beginning was to make the rule system as dynamic as possible, and that helped make the different rule combinations work together because I didn't have to code every combination separately. As for "unintended solutions", that relates more to level design problems that problems with the underlying codebase.
7) How did you handle the difficulty in the game? Did you just put together all your ideas and sort them considering your feelings or with feedback from different users?
That's pretty much it, yeah. Sometimes I adjusted levels later by adding/removing extra elements in the levels (to "obfuscate"/"de-obfuscate" the intended solution), but since most levels started with a fairly definite idea of what the "trick" to it would be, there wasn't all that much that could be adjusted on that level and thus I opted more to ordering the levels by perceived difficulty *after* implementing them. A result of this approach was also that all sub-areas on the map have internal difficulty curves; the final level of Area A might be way more difficult than the first level of Area B, since the levels are categorized by the words used in them between the sub-areas and then by difficulty within said sub-areas.
MP2 games (Mathias) developed the port on Switch. How was the collaboration with him?
MMF has very limited porting capabilities, and I knew that I wouldn't be able to port the game to any other platforms without help. As such, MP2 Games was the obvious choice since the company has specialized in porting games made using Clickteam tools as well as other hard-to-port titles. We started collaborating quite early into Baba Is You's development and the collaboration has been extremely nice and fruitful; Mathias is another extremely skilled programmer.
9) What do you think are the best advantages of Clickteam Fusion 2.5 game engine?
The best feature of such a tool is very much the speed with which you can get a new project going. This is especially apparent at events like game jams - when you have only 48 hours to make something but the result doesn't have to be perfectly polished, a tool that offers tools for fast-paced prototyping is excellent. In this environment the main limitations of Fusion - e.g. lack of porting, various limitations on features such as game resolution, gamepad control etc. - are much smaller issues as well. I wasn't very confident about Baba Is You's idea initially, but thanks to MMF I was able to test it out and get a working prototype during the game jam, which in turn let me explore the potential of the idea.
10) What do you think can be improved in Clickteam Fusion 2.5 compared to other game engines?
By current standards Fusion is very outdated compared to its competitors; the tool is backwards-compatible with the first program in the family, Klik'n'Play, released already in 1994, and this causes there to be multiple somewhat awkward issues with usage of the tool. The lack of portability is a big issue these days, and Fusion's reliance on user-made extensions has further exacerbated this issue, since when using Fusion & the extensions, you're essentially giving up a lot of control to packages that might not work in specific situations or might have quirks that you won't have any control over. It's a bummer to have a finished game and run into an obscure bug that you can't fix because issue is in some obscure way related to the tool you're using instead of your own mistakes when using said tools. This is another way in which the collaboration with MP2 Games has been really valuable - we've been able to bypass many of Fusion's weaknesses.
11) For my last question, do you have plans, game ideas to develop with Clickteam Fusion 2.5 apart from the level editor you are developing for Baba is You? ESA2 or something else?
Yes, I've used the tool for so long that most of my game ideas still implicitly assume that I'm using Fusion. I have some ideas that require 3D assets and which I thus couldn't make with Fusion, but many of my future game ideas are also such that I could keep using the same tool, provided that I'll be able to collaborate on companies such as MP2 Games where those ideas can turn into full commercial titles. ESA2 is the obvious one, but there are a couple other concepts in my head, too.