Sandship

iOS Android Factory sim game

Project Details

  • Client :
  • Rockbite Games

  • What We Did :
  • Lead engineering, Engine design and maintenance

  • Skills :
  • JVM, Gradle, Go, Spring, Devops, Mongodb, Jenkins, Microservices, Kubernetes, Helm, Docker, NodeJs, JS,

Sandship faces a huge set of technical challenges to overcome to achieve its goals. Simulations on the factory must be fast in realtime and to simulate over long periods of time (when player is returning to play after hours+days). They must work with multiple factories at once, importing and exporting from each factory, as well as handling thousands of materials simulating through many different devices, many different buildings and all rendering at once on mobile devices.

Sandship is a giant project, the following are just a few parts of what we worked on with this project.

Engine design

  • Client and backend architecture for the core engine and runtime
    • Real time fast simulation of materials interacting through factories in a predictable reproducible way
  • Render engine including multi texturing support on gles 2.0 to keep draw calls down when rendering a large amount of texture intertwined
  • Emissive rendering and lighting based on time of day
  • Faking 3D system in a hierarchical editor based node rendering system that uses transform anchors for dynamic positions and scaling of assets
  • Event system and client API

Creation of custom tools

  • Tools for making cinematics in the game engine for export in trails and movie clips

  • Internal profiling and debugging tools

  • Editor, used for editing in game components, from data to assets

  • Asset pipeline tool for automated testing and preparation for production

    • Assets must conform to certain rules for certain assets
      • Within resolution sizes to make sure huge images don’t get into the game (bad for performance)
      • Naming conventions must match ruleset
      • Assets exported with other tools must have version requirements
        • Spine
        • VFX talos
  • Golang based helm deployment tool

    • Handles a custom multi versioned graceful k8s cluster deployment to have 0 downtime on server deployments supporting major/minor versioning, deleting, switching and deployment of new versions
    • Interacts with a helm chart to provide safe deployment of multiple major non compatible versions and all the connecting microservices

Production

  • Jenkins jobs for deployment of clients on staging/production as well as deployments for internal testing and cloud based testing
  • Helm and k8s structure for the cluster
  • Grafana, Elastic search, APM server, Prometheus stacks for monitoring and real time debugging