I am a newbie who’s currently designing a space-based realtime MMO. I’ve been looking at Unity as a way to build the game’s environment but I have a few questions before committing.
The game backend contains a large database, here are a few relevant pieces of information:
- The galaxy in which the gameplay takes place features around 2 million stars, 5 million planets and a few million celestials to begin with.
- These are all stored in a database and each item has a load of properties, e.g. stars have location (x,y,z), class, subclass, color, surface temperature, age, diameter, solar system modifiers, etc.
- Each player will have to access this database through the Unity frontend (through a midtier which will take commands and get relevant data from the database)
The data retrieval path is client->server->database->server->client (so no direct connections).
I’m starting small, so the first thing I’d like to implement is galaxy view. In Galaxy view, a player clicks on a button in the GUI and then the GUI renders colored dots, each of the dots representing a star. Each dot will be positioned according to x, y, z, which are relative to the center of the galaxy. Each dot will be colored according to “color” value from the database.
The player should be able to zoom in and out using mouse scroll, rotate the galaxy using left click + drag, pan across using right-click + drag.
When right-clicking a star, more information about that star should be retrieved from the database and displayed in a small pop-up, e.g. age, temperature, class, subclass, chance of having planets.
I’ve been thinking of using an API call with OAuth implementation to make sure players will only see what’s available to them (e.g. visited stars would be blinking).
My question: does Unity3D support this kind of implementation? I’m particularly worried about database size and the ability to retrieve such a large number of records. An alternative would be to save common data in the client and have that data downloaded, then synchronize changes on demand. For example star locations will never change, but star names can change (there is a default name and a custom name, by default the custom name is empty but players can set names for stars under certain circumstances).
I already have this data in the database, but as a complete newbie I only know how to access the data directly (using SQL), not how the client would obtain it in a proper manner.
Any hints would be much appreciated!