Whether you're a huge team working on a AAA video game or an indie studio with limited resources, you need an environment for your game, VR experience, training simulation, or application. Unfortunately, it's slow and expensive to create these environments today, especially if you're trying to reproduce the real world. If you use existing mapping solutions, you're either stuck with only the details annotated by humans in OpenStreetMap, or worse, photogrammetric meshes that show how the world looks but don't give you real trees, transparent windows, or interactive models. Geopipe uses AI to understand every detail of what's in the world at scale, then turns that rich information into detailed, interactive worlds.
The "Geopipe for Games" Unity SDK makes it easy to put the real world (or simply large, detailed environments) into your game, application, or experience instantly. The SDK hooks into your Unity projects and streams city models directly from Geopipe's servers, so that you don't have to manually download models from us. With a license, you can publish a game with the SDK, allowing your users to arbitrarily explore, walk, fly, or drive through a city of any size. If you prefer, you can also embed a portion of our world directly into the game, so that an internet connection isn't required.
Step 1: Download the SDK
The SDK is freely downloadable on Geopipe's website. Go to https://geopi.pe/unity, click "Install the Unity SDK", and if necessary, make a free account or log in. On the Get SDK page, you can download the SDK itself, see your SDK key, and see the geographic areas you can load. If you use Geopipe for your own projects, you can get that region expanded to a larger area or even to additional cities.
The Geopipe for Games SDK homepage, and download the SDK package.
The SDK downloads as a Unity package: you can open it directly, or you can import it into an existing Unity project.
Step 2: Open the SDK in Unity
If you open the SDK package directly, Unity will launch, and you can choose to import the SDK into a new or existing project. If you already have a project open, you can go to Asset -> Import Package, and choose the Geopipe SDK .unitypackage. Accept the default of importing all items in the package. You can then open one of the included sample scenes (FlightSimulatorScene or SimpleExplorationScene) from the Projects -> Assets tab at the bottom of the screen.
Importing the Geopipe for Games SDK, then opening one of the built-in scenes to test the SDK.
Step 3: Configure the SDK
The Geopipe Unity SDK includes sane defaults; all you need to do is configure your API credentials. In the Scene view at left, click on GeopipeModelEngine, and in the Unity Inspector, set the API Group ID and API Key in the API Access section. You can find both of these on the Get SDK page; they uniquely identify you or your application.
Configuring the GeopipeModelEngine scene component with your credentials from the Get SDK page).
Step 4. Play!
That's it! Simply click the Play button in the Unity Editor, and after the SDK initially downloads the necessary world models from the Geopipe server, you'll be able to fly or look around the environment. Controls:
- FlightSimulatorScene: Use WASD to roll and pitch the aircraft, Space and Shift to accelerate and decelerate, and F to deploy deploy flag
- SimpleExplorationScene: Use WASD to move and strafe, hold Shift to move faster, hold right-click to orbit.
- HDRPExplorationScene: Like SimpleExplorationScene, but meant for use with the High-Definition Rendering Pipeline.
Going Further and Troubleshooting
The Geopipe Unity SDK has a few other features and requirements about which you'll want to be aware:
- The Geopipe Unity SDK supports both the standard rendering pipeline and the high-definition rendering pipeline (HDRP). To test out HDRP support, create an HDRP project, import the Geopipe Unity SDK, and open up the HDRPExplorationScene scene.
- If you build a binary with the Geopipe SDK and the standard rendering pipeline, make sure you add the ShaderRetention scene to your build. You never need to actually load it, but its presence within the binary will ensure that all necessary shaders are included in the binary as well.