︎
ABOUT ME        CONTACT

NEON Worlds


Note: A lot of content is still missing as I am awaiting approval on what material I can use.

Background


NEON (formerly known as STAR Labs) is a Samsung Research America team specializing in Virtual Humans. The product, also called NEON, was initially designed to be a 2D human-like companion that would assist you in various ways. NEONs may help you buy different products or have a regular conversation with you. Since the 2D technology was already there, much research within the team went into creating a 3D mesh out of a NEON. When we were able to create 3D meshes out of existing NEONs, it led to the idea of allowing the user to generate their 3D NEONs, which eventually led to “Neonworlds,” a virtual world where you can scan your face using a phone and generate a 3D Avatar of yourself. This world features you controlling your avatar, meeting your friends, playing games, creating content, and roaming around beautifully designed spaces.

Design and Implementation





Foundation

The Design and Engineering teams were freshly hired when Neonworlds was announced. During the initial phases, the design team was leading efforts on how the experience should look like, while the engineering team was evaluating the different choice of engines and which one would best suit our use-case. For this, we decided to rapid-prototype on important technical features on Unity and Unreal.

Engine Features

We started brainstorming on the list of the essential features required for the engine we wanted to use from a technical standpoint.

  • Multiplayer/Social

    Unreal Engine supports Epic Online Services, allowing for easy cross-platform playability in future. While Unity’s multiplayer is ever-evolving, going with Unreal’s fully-fledged system was a no-brainer.

  • Engine flexibility

      Another requirement was adopting the current native C++ NEON stack onto the engine. With Unity, this would mean building a native plugin for each platform. But, for Unreal, C++ is directly supported, which would make our lives much easier.

    • Geometry

      Since all modern engines are able to handle large geometry, this came down to personal preference. With Kitbash support, we decided that Unreal Engine was much suitable for this job.

    • Profiling

    • Again, both engines had access to excellent profile tools, so this did not matter much. Having Unity profiling experience, I was slightly inclined towards it. But, after giving Unreal Insights a try, I felt comfortable with it pretty quickly.

    • Designer Friendly

    • Giving Designers the ability to make changes to the logic without needing to code was going to be crucial. Our designers were pretty comfortable with visual scripting so using Unreal for Blueprint support was the way to go! 

    Gameplay Features

    To support design in a structured way, we started building different systems.

    • Multiplayer System

      We implemented a layer on top of Epic Online Services to support multiplayer connectivity. This included authentication, friend subsystem, party subsystem, lobby subsystem and voice chat.
    d
    • Widget System

      To support the different UI elements, we created a system so that the widgets were properly initiated. The view, model and logic were decoupled in an MVC fashion.

    • NEON System

      This is the underlying native NEON system responsible for generating 2D NEONs. These NEONs were spread across the world as virtual assistants.

    • AI System

      This was responsible for the NPC behavior across the world. The AI would behave like any other human and greet you upon seeing you.

    • Inventory/Quest System

      In few places around the world, there were objectives you could complete given to you. You also had access to an inventory to interact and pickup things around the world.

    • Player System

      This consisted of all the player metadata like current location, player pawns, player icons, etc. All of this information was stored in a database.



    Conclusion

    Video: