Unity is used for an incredible range of applications already. Across console, PC, web, mobile, AR and VR, with content that ranges across every type of interactive experience from critically-acclaimed games, to education, to real-time visualisation for innumerable business applications. It’s everywhere.
Well, not quite. The Unity editor might lower the barriers to creating all of this, but to date it’s not been suitable for making the most lightweight of games. Games that load instantly, games that are way smaller than your average webpage. Games that could reach a billion browsers and beyond that, could run on the most modest of internet of things (IoT) devices.
That’s the big aim of Unity’s Project Tiny – to bring interactivity and the Unity editor to new frontiers. So MCV travelled to Unity’s headquarters in Copenhagen once again and broke out its best magnifying glass, in order to see the latest iteration of the tiny technology and learn about its huge potential.
THE BEST THINGS COME…
Unity first talked about Project Tiny under the name Unity for Small Things at last year’s GDC. But its come along a huge way since that initial demo, as Nikoline Høgh, UX design lead, demonstrates for us.
Høgh brings up what looks like the usual Unity editor onscreen, but it’s actually Project Tiny, she explains: “It’s not a separate install as such. It’s a package.”
And like Unity’s many other packages you simply download it to enter the mode. Høgh loads up a project. It’s a pretty smart-looking match three game with a cool dino-rampage theme called, appropriately, Tiny Arms. “So I’ll hit play and what we’re going to see is that it’s gonna launch immediately in the browser,” Høgh says.
It pops open a new Chrome tab and loads the game as fast as you could possibly expect – you can try it for yourself using your camera on the QR code above or use this link.
Speaking of QR, another couple of clicks and a code appears on Høgh screen: “We can also test it directly on our device.” We scan the QR code and in an instant the game loads up in our browser and we’re playing.
Høgh takes on the role of content creator and starts to make changes in the Project Tiny version of Unity. With a few clicks she changes the game’s launch screen background and makes the ‘Play’ button twice as big. When she’s done, the changes are instantly implemented.
“So I think this kind of speaks for itself,” Høgh smiles confidently. “As a content creator, for me to be able to see this on a device, look at it, see how it feels, and then quickly be able to iterate this way is invaluable.”
It’s easy to imagine a team quickly iterating different versions in a design meeting, and engaging with those on numerous target devices. All with the ease of use, the power, and the familiarity of the Unity editor.
The version we’re seeing is creating development builds. The final builds will be smaller still. But even today Høgh proudly tells us that they’ve “got a runtime here which is just around 700 kilobytes. That’s really small for an actual working game.”
We’re later told that the impressive little hack-and-slash title Tiny Knight (pictured on page 48), when packaged as a single-file HTML game, is also just 750 kilobytes. Out of this around 200 kilobytes are the runtime and game logic, the remainder are assets. And things can get tinier still: for a basic runtime that can handle 2D sprite rendering, some basic animation and simple UI, it’s just 125 kilobytes.
“That’s smaller than most most image sizes,” says Høgh. “That’s very, very small. And this is what’s going to really enable our developers to get access to all of those platforms that right now Unity can’t hit, but is going to be able to hit in the future.”
MASTERS OF THE TINYVERSE
Before we get into target platforms and possible uses, we’d better introduce three more key members of the highly-experienced team which has been responsible for scaling Unity down to function at this scale.
Vlad Vukicevic, the team leader on Project Tiny, is best known for creating WebGL, the key standard for 3D graphics on the web, while at Mozilla. Martin Best, senior technical product manager for platforms also worked at Mozilla in a senior role, bringing both WebGL and WebAssembly to market, both of which are utilised by Project Tiny. Alongside them is Etienne Whittom, lead engineer, who has been using Unity professionally for eight years, developing tools and optimising workflows for the platform.
Best explains the core thinking about the move to smaller things: “End user patience on waiting for content on existing mobile platforms is decreasing. As the mobile industry ships higher and higher end phones, so too increases the number of lower end phones on the market. This is widening the range of potential hardware our users may want to target. Alongside these trends, we see an ever growing catalog of new consumer products looking to build visually rich user experiences.”
It seems like the target for Tiny is likely to shift as hardware and internet speeds improve. But Whittom doesn’t see it that way around: “Tiny is about enabling developers to create experiences on any platform, and most of our efforts are platform-agnostic.”
Vukicevic adds that “developers will simply choose newer, or more feature-rich modules to use. This lets developers adapt to what Tiny means for them – someone targeting emerging markets with low cellular bandwidth will have a different definition than someone wanting to develop a title for locales with nationwide 5G adoption. We want to put the choice in the hands of developers, rather than make the choice for them.”
Best chimes in: “The common thread we are addressing with Project Tiny is to empower developers that want to instantly deliver content to mobile devices without install or run their content on resource constrained devices. The ability to run experiences, such as ads or games running in social apps are strong initial use cases.”
And while Tiny has its own editor, for Unity’s engineering team it shares core technology and a core philosophy with the changes being made elsewhere on the platform, Vukicevic explains: “One of the foundations of Project Tiny, as well as Unity’s overall data oriented approach, is the idea of modularity – we’re building functionality divided up into modules that the developers can choose to include based on their needs.”
MAKING IT MODULAR
If you’ve been following recent developments with Unity, then this will all sound very familiar. And that’s because Project Tiny’s technology and engineering philosophy is deeply integrated with work being done across the Unity ecosystem.
Brett Bibby, VP of engineering, explains how “historically Unity entered from sort of a lower end,” with it being a simple 3D game editor for Macs. “And as we added more and more features we moved up and that’s great,” he continues.
“We initially covered very nicely the low-end use cases but what’s happened is as we’ve been adding more and more to the product we’ve become very centered [in the middle] but then there’s a layer of functionality that is very difficult for us to reach right at the small end.”
Bibby draws a bell-curve of development cases, and demonstrates that Unity today largely covers the large middle hump, “the core of games development,” but not the very high-end of triple-A or the very small end of web games.
So for the last few years, it’s had teams re-engineering the core of Unity in order to better serve the full range of use cases. But they quickly “came to the realisation that they were actually kind of solving the same problem,” Bibby reveals.
And the solution to that problem is modularity. Taking what you need and leaving out what you don’t. Whether that’s in order to squeeze your experience right down in size, or to streamline your runtime for the highest performance.
Bibby makes an analogy to cars. At present Unity is like a fully-loaded family car, with all the additional options you could want. It’s very flexible, but it’s never going to serve as either a go-kart (that’s Project Tiny) or a Formula 1 car (that’s triple-A). You can strip stuff out of it to try and make it lighter or faster, but it’s never going to really work as either. What you need instead is a modular set of components that you can build any kind of car you need.
Høgh provides some detail on how this works on Project Tiny: “It all comes down to modular runtime, strip out everything else that you don’t need. It’s opt-in, so you have a core that you need, and it’s a very, very small core and then everything on top of that is something that you show intent for: ‘I want this, I want this, I don’t want this, I don’t want that’. And in that sense you can actually customise what you get instead of having a lot of things that you’re not using.”
Bibby adds: “And then our tools can tell you when you’re trying to use something that is outside what you defined. It’s all about surfacing that control… It makes it easier to tailor make the editor for different experiences and different industries as well. If you can imagine someone coming in and needing Unity for a very specific purpose, we can set them up with the right tools, and not with a lot of things that they don’t basically need. So it ties in really well with a lot of our other strategies.”
DOT TO DOTS
More specifically Project Tiny embraces Unity’s move to C# and the Entity Component System (ECS) that we discussed at length in issue 933, last year’s GDC edition of MCV. In short that’s a shift to data-oriented design, with the new Burst Compiler providing a highly-performant executable for the target platform, be that an Xbox One X or a web browser.
Initial versions of Project Tiny used TypeScript, but the project is rapidly transitioning over a C# environment.
“C# is Unity’s main language, and while originally we weren’t sure we could add support while keeping to our size goals, we’re now confident that we can,” says Vukicevic. “While TypeScript is a great language, we want to give our developers a consistent ecosystem, and make sure that their knowledge can scale regardless of what their target is.”
Whittom explains that the team “shipped a first preview version of Project Tiny in December, mostly to gather user feedback around ECS and the Tiny use cases. ECS really changes how you think about game development, and getting it right requires a tight feedback loop.”
Above: Vlad Vukicevic's GDC 2018 talk on what then was called 'ECS for Small Things'
And through that loop the team has “really learnt a lot from the user feedback we’ve received both from our public preview users, and our alpha users in the months before,” adds Vukicevic. “The data-oriented approach is very different, and it’s been very important for us to learn how to best present it to developers in a way that both makes sense and is approachable. Since last year’s GDC, we’ve made many improvements to both the core data-oriented APIs as well as the functionality available in Project Tiny in direct response to user feedback.
“This year is about adding support for C# to Project Tiny, transitioning to a unified Data-Oriented Technology Stack (DOTS), and about moving 2D support out of preview. We’ll also talk about our plans for 3D for the small games use case. With DOTS, we’re excited to be able to offer Unity developers one approach to developing content, whether they’re building a 256KB instant game or a triple-A title at massive scale.”
But while the engineering behind Project Tiny stretches across the whole spectrum of possible devices, right up to high-end games consoles, the project is still sharply focused on bringing Unity’s toolset to bear on devices at the bottom of the ladder.
Those platforms and use cases are incredibly varied. But even if the IoT devices and playable ads in browsers aren’t your thing, there are plenty of more creative opportunities here for core Unity game developers.
Bibby provides some examples: “So even if I made a PS4 game, how cool would it be to land on the game’s home page and have a playable snippet or vignette of the game? Or how about I want to build some side stories to my game. I just want to do an instant loading media thing but I want to be able to use stuff I already have to do that.”
The idea of say a 30 second demo of Overcooked, which could be imbedded in webpages as a playable advert, and invariably ends up with your whole kitchen on fire has a lot of appeal. Project Tiny could take the core appeal of your game and give it huge reach.
Of course, there’s also messenger games, web games, even playable game adverts within games. Vukicevic continues: “We want Unity content built with Project Tiny to be able to go everywhere. Giving developers the tools to build without limits is our main goal, but making a great game is only the first step in getting it in front of players. Like all Unity projects, we’ll continue to add features that will help developers to create, operate and monetise their games”
And then of course there’s the ever-growing Smörgåsbord (or ‘det kolde bord’ as we’re in Denmark) of IoT: “We love the fact that there’s choice in the world, from wearable clothing to smart refrigerators, to obviously web everywhere across all kinds of devices,” enthuses Bibby.
But Unity isn’t just targeting certain kinds of hardware with its new technology, it’s targeting a whole swathe of potential new users as well, Høgh explains to us: multimedia designers.
“People working on smaller experiences, typically in the past it would come through Flash, though today it’s more like hacking something together with various bits and pieces. And that’s a space that’s really interesting for us to look at,” says Høgh.
Bibby continues: “We have features like timeline and we can configure Unity to look roughly like a Flash experience already. We have the ability to manage the different media elements within that but what we haven’t done is brought those features into Tiny yet.
So I think our goal would be a year from now you would be able to do this demo, and make a Space Invaders in just ten minutes.”
But while trying to entice multimedia designers, Bibby is also thinking that many current Unity users will be able to sidestep hiring just such skills: “Over the last few years if you wanted a playable ad you would hire a designer, you’d give them the game and they might borrow some assets or they might recreate them.
“You pay them: ‘Here’s say twenty grand, go make me a lightweight version of this’. And all because it turned out playable ads performed better than display ads,” he says, recreating the scene that many in games development have experienced first hand.
But with Project Tiny, a Unity-based studio could easily do that work for itself, Bibby explains: “It’d be really nice if I could create a branch of this repo, switch myself into tiny mode, opt into the pieces I need, drag-and-drop my way there in the Unity that I know. And I’ve got a game. Most of the users that are on the [Project Tiny] preview are those types. They were studios that were saying: ‘We don’t want to pay an agency so we’re gonna do it ourselves’. And they were hacking things together internally and saying ‘I wish Unity would do this’,” he exclaims – and soon it will.
There are other game engines for the web of course, Whittom admits, but none of them have the flexibility of Unity he points out: “Our tools are built to enable developers to make one game, and deploy it on any platform with minimal effort.”
Vukicevic adds: “The Unity Editor experience is more advanced than anything else available in this space, and we will expand the types of content that can be created using that tooling, including 3D. We’re also bringing a new development approach that will give creators the foundation to scale from small games to big, seamlessly, using their existing knowledge.”
Early indications from the TypeScript preview version have been positive the team tells us and they are pushing ahead to deliver a C# preview version to all Unity users soon after GDC.
“Apart from switching to C#, fixing bugs, and improving the overall architecture, we’re working on the public API for editor extensibility, on system visualisation, on scene/prefab data management, and on the UX around ECS relationships. User research helped tremendously when it came to identifying and prioritising these tasks,” Whittom tells us.
“The reaction has been generally positive,” says Best. “A big part of what we hoped to learn via the Tiny preview is focused on users’ experience around ECS and what we can do to make things easier for them. We have established an active community on the forums that have been great sharing their experience.
“Other than the list Etienne [Whittom] mentioned, features like more advanced UI and animation tooling are high on the wish list,” Best continues. “3D is also something developers are really asking for. Once C# is in preview, our focus will be on adapting to what we have learnt and polishing things up for release of our initial 2D features set.”
And that request for 3D is on the roadmap, Vukicevic informs us: “We have a plan to add 3D and AR support later this year… We have a team exploring 3D already. Much of the work is defining exactly what capabilities a Tiny 3D renderer should have, because it’s not going to be the same as extremely high-end desktop graphics! We want to make sure that it can support the types of content that developers want to create today and in the next few years, and that there is a clear and easy upgrade path when those needs change.”
Best finishes up: “I’d like to say a big thank you to our early adopters that are helping us during the preview, it’s of real value to the team to hear your thoughts so keep them coming. Those of you that haven’t had a chance to check it out yet, I’d encourage you to come learn more on our website. We hope you’ll give it a try and let us know what you think.”
And where best to start than trying a Project Tiny game, so if you haven’t scanned that big QR code yet, what are you waiting for?