2014-02-21

Level Up - Construct 2: Don't Confuse "+" And "&"

I just spent over an hour debugging a problem in my Construct 2 code. Suffice to say the solution is now ingrained in my brain. Now, I want to explain a little intricacy of C2.

TLDR: In Construct 2, whenever you are dealing with text and you want to concatenate/append additional text (or a variable), then you need to use the ampersand "&" symbol. Using the plus "+" symbol will cause a silent error/bug, i.e. the program won't tell you that there is a bug. Ex: If I try to set text to "Score: " + PlayerScore, then the value of the variable `PlayerScore` will not appear. The correct way to set the text would have been: "Score: " & PlayerScore. Note, the only difference between the two codes was the plus and ampersand.

Other programming languages have "overloaded" concatenaters, meaning the "+" symbol in some languages like Java are contextual. Depending on the value to the right and left of the plus sign, it will act a different way rather than not working at all, as in C2.

In Construct 2, the only time that you should use the plus symbol is when you want to add two numbers together. That is it.

Anyways, the issue that I was trying to solve for over an hour involved using WebStorage and Functions with programmatically assigned parameters. Saving and retrieving values was working great, just not exactly the way I wanted it to. I had a highscores table for easy, medium, and hard difficulties, but they were all staying the same values across each of them. My buggy code included lots of ampersands surrounding the entire area, but basically, this is what it looked like: Save("HighScore" + LevelDifficulty, PlayerPoints). Note: The plus sign is wrong.

No programming languages I use have the ampersand as a String concatenate. So, when I viewed the code snippets a few times, even completely writing them, my mind knew exactly that String + String should be working.

If I hadn't already read the manual/documentation before this point, then I probably wouldn't have found the answer myself.


Experience built through learned mistakes.
~ Danial Goodwin ~

ps - Just in case I haven't said it enough yet... When you are using Construct 2 and dealing with text, use the ampersand, &. Don't use the plus, +, sign!




No comments: