Creating Games For Legends of Learning

Legends of Learning has some core requirements for their games and we’ve adapted many of our existing behaviors to fit their requirements.


Download Size: Schools are often bandwidth constrained. With that in mind, the max game size is 30MB, with an ideal game size being under 15MB. Note that this is download size, which will be less than the size of your HTML5 downloaded project. GameSalad generates both ogg and mp4 files for browser compatibility. A browser will only download one or the other, so you only have to count your sound files once.

Aspect Ratio / Resolution: LoL wants games exported at 1024×576 resolution. That’s not one of our drop-down target resolutions, so you can either set your scene size manually or use the iPhone 6/7 Plus resolution. Our wrapper will export your game as the correct resolution and it will stretch accordingly.

Font Size: In game text should be 14pt or higher.

Language & Translation:

LoL is used by speakers of many languages. You will only need to provide the english translation of your game and LoL will take care of the rest. Just make sure that your game can accommodate changes in text length. We’ll get into more details about how to handle translations in the Integration Guide later.

Self Contained:

Your games cannot access external services. In the case of GameSalad, don’t use the network behaviors and you will be fine.

Suitable Content:

The audience for these games is students in grades 3-9 (Ages 8-15). Have fun, but keep your target audience and their parents in mind.


Integration Guide: 

GameSalad has done all of the integration work for you. In the HTML5 publishing target you will see a new index file ‘sample-legendsofleanring.html’. This new file contains all the logic necessary to bridge GameSalad behaviors to the LoL SDK. But in order to interact with LoL’s API, you’ll need to use existing Behaviors in interesting ways. 


First, let’s go over the lifecycle of a game. There are some steps in here that we will go over in more detail later.

  • Game loads then pauses.
  • LoL sends a ‘start’ event to Game. Game unpauses. The locale is set (device.Language and device.Region)
  • If Game is resumable, progress and score attributes are set.
  • Game request language data
    • Action: In App Purchase – Request Purchase Data (**)
      • Start Index: 1.
      • End Index -1
  • Game should indicate maximum possible progress steps.
    • Action: Platform – Update Achievement 
      • AchievementID: ‘maximumProgress’
      • Percentage: number or progression steps in your game.
  • Game should notify LoL of  progress.
    • Platform – Update Achievement
      • AchievementID: ‘progress’
      • Percentage: step number and not % of progress.
  • Game should speak text as needed
    • Tweet Sheet (**)
      • Message: Translation key for text.
  • Game should show questions periodically 
    • Change Scene
      • Whichever scene is appropriate.
      • Reward Video Ad (**)
  • When game is complete, game should notify LoL with Platform – Update Achievement
    • AchievementID: ‘complete’
    • Percentage: (does not matter).


Language & Translations:

To ensure a consistent interface between all games, we’ll be using the Purchase Table as the source of any text displayed in your game. The ‘key’ for the text will be in the Label column and actual text to be displayed will be in the ‘Name’ column.

When a game loads, you will need to use the “In App Purchase – Request Purchase Data” action to load the current language translation. This will overwrite your existing translations table with the current language.

For any text displayed on your screen, you will use table expressions to grab look up text by the ‘key’ and display whatever is in the Name column. An example expression for the Display Text behavior to look up the current translation of the phrase “Welcome to the game” might look like:


tableCellValue(game.PurchaseTable, tableRowNumber(game.PurchaseTable, “welcomeMsg”), 3)


When you upload your game, LoL will request that translation data be provided as a JSON file. Check back here and we’ll provide a tool that will take the exported CSV from the Purchase Table and automatically convert it to the correct format.


Text To Speech

In order to accommodate students with auditory learning styles, games are required to speak key text.

You just need to use the “Tweet Sheet” behavior. In the Message field, you will need to provide the translation table key for the text to be spoken. The system will take care of the rest.

Keep this in mind when designing your game. Key text like dialog and titles need to be “spoken” out loud. LoL suggests that a UI element be added to allow students to request text be spoken.


Player Progress & Score

Your game should have an incremental concept of progress. Progress is used by teachers to track students.

Your game must have at least 8 progress steps (levels, lessons, etc). LoL suggests at least 15 so teachers can get a good idea of student progress. Progress must never go backwards. If you are using rooms explored as a progress meter, then just send the max number of rooms explored. If you are using level, don’t have players drop back down a level.

So that the LoL system knows how many progressions steps there are in the game, call the “Platform – Update Achievement” action once at the start of the game with the achievement “maximumProgress” and the total number of progression steps in your game.

To notify the LoL system of player progress, you can use the “Platform – Update Achievement” action with the achievement “currentProgress” and the progress number (not the percentage).

Your game could also have the concept of score. You can submit the score with the “Platform – Post Score” action. We only pay attention to the score attribute, so don’t worry about the leaderboard field. 

The current system requires you to post maximumProgress and currentProgress achievements before posting a score or else we ignore the post score request.

If you indicate to LoL that your game is resumable they will send progress as part of game initialization. In the ‘sample-legendsoflearning.html’ look for <attribute for progress>. You will need to replace that value with GameSalad’s internal id for progress attribute. Unfortunately, you will need to crack open the gameproj file for that. Contact support and we can help you.



LoL has question banks appropriate for a given subject. At different points in the game, you should display questions to the student. A common pattern is a subject related game where level progression depends on the student correctly answering a question.

LoL provides a question display overlay so you don’t need to worry about question UI. 

Since displaying a question is sort of like a reward ad, that’s what we’ll use. To display a question, use the Change Scene action with “Reward Video Ad” option. This will display the question overlay. 

When a student submits an answer, the game.adReward.value attribute will be updated. We’ve tweaked it slightly as follows: -2 means the student skipped the question and didn’t answer. -5 means the student got the question wrong. 5 means the student got the question right.



When a student completes a game, you will want to let LoL and the student’s teacher know. You can do this by using the “Game Service – Update Achievements” behavior, using the “complete” achievement.

If you try to send the “complete” achievement and currentProgress does not equal maximumProgress, then the complete message will fail to send.

Was this article helpful?

Related Articles