Case Studies

Zynga

Problem:

  • Users are running out of memory when playing Farmville 2 resulting in not being able to play the game.
  • Users were experiencing slow frame rates resulting in poor gameplay experience.

Identification:

  • We identified over 30% of users were experiencing some form of degraded performance through the use of runtime metrics from our player base of 40 million monthly active users.
    • Memory Issues
      • Some of the users with larger farms were using 1.5GB of ram.
      • The majority of memory usage was texture memory due to the diverse set of assets on the players farm.
    • Frame Rates
      • Some users with larger farms were seeing frame rates under 10fps due to draw call count. Each crop was being rendered separately to the screen (see flower crops in the image above)

Solutions:

We identified two avenues to make a large impact on performance:

  • Introduction of ATF texture optimization pipeline, thus increasing the stability of visual rendering
  • Asset batching and runtime texture atlases to reduce drawcall count

ATF Textures

Farmville2 was based on a Adobe flash API Stage3D allowing for GPU accelerated 3D graphics. We identified engine support for compressed textures using the ATF image format. DXT1 and DXT5 image compression was chosen due to its stability and usage in the gaming industry on console and PC.

Source image left DXT1 compression on the right

We identified a path to convert all existing in-game textures to the new format and assisted in processing all assets. We created tooling for the conversion process and trained the artists and outsourcing managers to use the toolset for additional content.

Batching

We identified all assets were being individually drawn to the screen resulting in many drawcalls on large farms. To reduce the drawcall count we implemented a runtime mesh combiner for assets that used the same texture.

a single wheat field asset
group of wheat field

In addition, we created a runtime texture batching system that would combine textures of different crops a player had on their board together allowing for those crops meshes to also combine for additional savings.

Results:

These pipeline improvements resulted in a reduction of 30% of memory budget and 100% improvement in frame rate for our user base.

This was rolled out live to the userbase with no customer service requests. After the improvements were live for all players the CTO for Farmville2 remarked “You just gave us another 6 months of runway for our users, Thank you.

top

OssoVR

Problem:

  • Creating a new experience for a client took 6 months to author

Identification:

  • We identified the process had four major bottlenecks
    • Autocad models supplied by the vendor had too many polygons to be performant at runtime
    • Converting the whitepaper into a set of steps that the engine would support
    • Creation of 3d models and points
    • Creation of physics volumes for VR interaction
    • Authoring an experience in engine

Solution:

Mesh Optimization

  • Leveraging a 3rd party decimation tool PolyCruncher we created a custom tool that would automatically assign and decimate the imported Autocad files with pre-determined settings.
  • A custom exporter was created that allowed the version tracking of the exported model in the event the client provided updated models.

Unity Mesh Importer

  • A custom Unity importer was created to import assets with the proper settings for the 3d models and textures without additional work from the artists.
  • A custom script was created to automatically generate the physics volumes for each medical tool.

Whitepaper Conversion Process

  • We created a naming convention and leveraging google slides created a deck that allowed artists to quickly transfer the whitepaper into a predefined set of steps compatible with the game engine. This allowed for a high level of iteration and collaboration from the Medical staff to review and approve the steps prior to artwork generation.

Custom gSheet Exporter

  • A custom exporter was written to export the DOM data into Json format via one toolbar button in google chrome.

Unity Step Procedure Creator

  • A custom Unity tool was authored to import the JSON step data into Unity Gameobjects and components needed for the engine to play the procedure.

Result:

Content generation increased from a 20-step procedure needing 5 people and 6 months to a 600-step procedure authored by a single artist in 1 month.

top