Over the past year and a half, we have been working on converting all major pages in our app to Lua. Our most recent push was turning on the Lua Home & Games page to 100% across all mobile devices.
We are proud to announce that as of today, we have begun an AB test on iOS Phones for an all-new Lua Game Details page. This page will get users into your games faster and provide a more visually pleasing experience while users learn what your game is about.
Here are performance comparisons between the current & new Game Details page. (This is using an iPhone 6 on our internal network. Load times may be impacted based on your own device & network.)
A Note on Game Thumbnails: We noticed while we were building this page that certain games round the corners of their thumbnails. To achieve this effect, they are coloring the corners white. We recommend that games do not do this as it is not considered best practice.
FAQ
Q: What’s next? A: 2019 is going to be an incredible year for Roblox and our app. We have many improvements to this page queued up for the coming months. On top of this, we will continue our mission to move Web Views into Lua. The first pages on our list are Badges & Store in the Game Details page.
Q: Did you remove anything? A: No, we just moved everything around.
Q: I noticed that some pages still take me to the old Game Details? A: Due to our current native infrastructure, it would have required a high level of effort to have the navigation stack hook up to the Lua page. This is giving us more fuel to drive the conversion of all Web Views into Lua pages.
Because it uses the same API that all of Roblox uses, it renders through the engine that we also use with some optimizations since a web app doesn’t need to run at 60FPS all the time. Lua webviews are easier to maintain than compiled ones or HTML/CSS/JS ones.
One of the benefits of building the pages within the Roblox engine is that it lets us run into the same pitfalls and issues developers also experience. Any marginal benefit that can be produced from writing lua pages can be directly given back to the greater developer community and playerbase.
A great visible example of this is all the work done on the new UI backend has been tested throughly against these lua pages and the benefits of the new UI backend are experienced in your games as well.
And as the data in the original post shows, Lua is much more responsive than our old native webviews.
We discovered a minor bug and will be rolling back the AB test for now. The AB test will be turned on in the next client version which will be next year.
I wouldn’t say “vastly” faster. Lua is actually really fast for what it is. To do it in C would probably only improve the speed of the page by fractions of seconds so it’s not really worth it. This is my speculation at work but having used Lua to make standalone pages and executables before, it’s comparable to a lot of other languages for most things. I’m more curious about what made them run it in the Roblox engine because Rbx.Lua is much slower than its vanilla counterpart (although I guess that leads inevitably into the question of “why do it in Lua at all?” at that point so ).
That’s a benefit but it’s not really a reason. It would just be silly to build the app in-engine for the sole purpose of testing UI backend when there are assuredly better ways to do so.
Running stuff in-engine means they can use the same UI codebase across multiple devices, and they can fix issues they run into with Roblox’s engine to everyone’s benefit.
It isn’t all just UI, the avatar editor runs in-engine too.
Shows how far behind the app’s development I am that I didn’t know it even had an avatar editor. I suppose that makes sense. Wasn’t really upset about it, it just seemed strange at first.
The avatar editor is the only page that lagged me in the mobile app, I’m assuming that the games page won’t lag as it’s not running any game simulation in the background? (if my understanding is correct)