Dynamic Map System

1231895--51926--$Jj2Zo1S.png

Dynamic Map System

Price: $15
Asset Store Link
Web Player Demo

Say goodbye to individual region scenes, and hello to infinite regions in only one scene!

This system will allow you to create limitless game worlds by only loading the map chunks near your character or camera. It uses two maps, a Floor Map (Terrain), and an Object Map (GameObject Collection).

You can customize the system to your liking by changing the dimensions of the maps, as well as how far away the character needs to be to load a map region.

This system is also easy to use, and does not require any packaging of map files. It loads each map from your resources folder in an average time of 1 Millisecond.

The package also comes with an Example Scene, as well as a Step by Step guide on setting up a new scene using the system. It also comes with Realtime E-Mail support for help, as well as suggestions for future versions.

If you have any questions, email me at GambinoIndustries@live.com.

1 Like

Current Version 1.4.2
Current Version on Asset Store 1.4.2

Hi,

Looks interesting. Does the ground have to be a terrain or can it be a mesh object?

Also, does this reposition everything when the player gets too far away from the origin to avoid jitter?

Well it supports Terrain maps, and Object Maps. Basically an Object Map is an empty game object, with child game objects being whatever you want! So you could disable floor maps, and only use object maps and add your mesh object to the object map.

For the second part of your question, I’m not quite sure I understand.

Also, If you do plan on purchasing it, I recommend waiting until Version 1.31 is accepted in the asset store. The current version is very primitive compared to 1.31.

Unity has an issue where when you get far away from the origin the floating point precision decreases and objects jitter when they move. They normal solution is to dynamically move the current scenery to origin. It should be easy to test with a large terrain.

I understand exactly what you’re saying, and no it does not, BUT I’ll add it in Update 1.4.
How should it be done? Say when the character reaches 50k+ in an axis, it moves everything to 0? Or should, as you walk, the actual tiles move and the player stays at 0,0 at all times?

I think it only needs to done periodically. Needs to be tested to be sure the problem exists then we can fix it.

I’ll test it out now.
Edit: Alright, I coded it. You can set how many unitys before it readjusts. It works with with any number, including 1 etc, with no issues.

Uploaded Version 1.4 to the Asset Store with this update.

Nice one, just purchased. Is there a max amount of tiles that’s supported - I take it they are handled by a double array.

Nope, that would cause too much of a memory leak. It just checks for mapdata based on your map region (X/Map Size, Y/Map Size).
If none exists and it’s set to generate a default map, then it’ll generate a default map, otherwise it will generate nothing.

You can have a map chunk at 100,0,100 and a map chunk at 5,000,000 0 5,000,000 and it wont cause any issues at all. Just make sure you have version 1.4 or higher.

Hi,
Would your system work with Magic Portals, Teleporters, …?
Aka, not preloading the chunks next to you, but preloading a portal destinations?
Thanks.

There is a Coordinates.cs file in Version 1.4, which allows you to use “real” coordinates.
You would have to create a method (which I’ll include in the next update) which will sort of set the offset.

This is the real coordinates method

	//Returns real coordinates for exact coordinates
	public static float[] GetCoordinatesForPlayer (float x, float z)
	{
		return new float[] {x - xAdjustment,z - zAdjustment};
	}

This is the method you are looking for:

	//Moves an Object to the desired "real world" coordinates
	public static void MoveObject (float x, float z, GameObject movingGameObject)
	{
		float[] coords = GetCoordinatesForPlayer (movingGameObject.transform.position.x, movingGameObject.transform.position.z);
		movingGameObject.transform.position = new Vector3 (movingGameObject.transform.position.x + (x - coords [0]), movingGameObject.transform.position.y, movingGameObject.transform.position.z + (z - coords [1]));
	}

I tested this and it works perfectly.

What it does is it checks the distance away from the desired position using “real” coordinates, and adds them to the exact coordinates making the player end up in the correct spot on the map without truly being at those coordinates and still at the center.

Without the adjust for origin system, Deferred Rendering would not work on most machines (It bugs after a few thousand units away from origin) and jittering would occur at 100,000.0001+. It takes a little getting used to.

Also, it wouldn’t need to preload an area. The loading is done in around 1 millisecond per map chunk. In the current version on the asset store, it takes around 3 seconds, but once version 1.4 is approved it will be instant.

If you are talking about loading an actual destination object as a reference point, this can’t really be done UNLESS you load the object map without actually instantiating it, search through the children for the teleporter object, and find its coordinates based on that.

Also if this isn’t a very serious professional game you could keep the teleporter objects always in the scene and not inside of an object map so they are always loaded since they wouldn’t affect performance really.

There’s always a way to do it, :slight_smile:

Version 1.4.2 is now accepted and live on the asset store.

bump

Nice on, missed this post last week.

Nice plugin!!!This is exactly what i’ve been looking for, bump it to spread to more peeps!!!
Could you please upload the documentation so that we can have a look of the workflow;) Thanks!

HI ! I know it might be a Litle bit Too much to Ask … Of your STill humble But Amazing Development Reached here …

But I got Some Ideas / that We been Trying IN house …
That maibe you COuld reach it !

  • Could you get to this extension a Spherical world Tipe of map ?

… And one that You are not just on the Ground But That you can fly Around Also .

In a Way to Put the Area Blocks not just on x/y But Lay them out in X/Y/Z

  • Ok Let me have a visualization:

Instead of having Areas layed out Side by Side like this

Each area is a Cube right .

So Each cubic area they could be loaded And Streamed on any axis Side and up

Now reaching to a point we could load any amount of Cubic Areas Stacked and Load them on The STreaming Sistem

Ok now next would be to be able to position those Level areas - Even “inside eachothers” and STacked in a Way That is Non linear …

Allowing Areas That Are Diferent Sizes To be Stacked Anywere in WorldSpace / Even Inside eachothers ANd be Still Streamed

Allowing also a Way for us to RESIZE Them for not be just Cubic …

But Also rectangular

So we can pipe them out …


Also having Custom “portals” At each Area - That Would Send us to Another Area, Even far Away …
like having a Expecial Teleporter Area “cube” were if the player enters there , It will be Sended to Another Place Linked…

http://forum.unity3d.com/threads/191527-Asset-WIP-Dimensional-Gate-Portal-for-Unity3d-(Pro-amp-Standard)

That Way having 3 Types of Cubic Areas ,

1 - Level Areas - Cubes Areas with Terrain And Objects

2 - Transition Areas - Cubes that are “3d elevator” tipe of areas that we can Animate and they take the player there to the destination at the end of animation

3 - Teleporter Areas - Cube Areas that Are linked with Eachothers … You put 2 Teleporter Areas in a huge world scene, and if the player enters there , go end up at the other Area were its linked

On the Level Editor Each Area is Represented by a Simple Wireframe CUBE That we can drag Around And put Any contents

Each tipe of Area got a Diferent Color …

We could put the cube in Any place in world …

And we Could Load And unload / that is SAVE And LOAD That Cubic Area CONTENT - Anytime we want.

Also Having PROXY Contents … That is Alternative representations of CUBIC Areas Content … That we could load and unload FroME ditor View …


And have no limits in mixing those …

Not just Side by Side / BUT ALSO INSIDE EACHOTHERS !

Having for that a Cubic Area a Zone That we can Drag visualy Were Teh Area Will load The others Near …

This way the Inside cube is the Area Eachself …

And the external Area Limiter is were All the others surounded would be loaded …

Should be possible in the editor to edit the Streaming Influence of That Area to all Other Areas Surounding it …


ALSO For this Level Areas be trully SEAMLESS It should be having a LOD Area Sistem …

That is When Flying into the sky - or 360 Degrees All other surounding areas will have to become visible …

  • If you fly Reaaly high you will have Large hundreds Areas Below And surounding you That you can See. In the Distance

  • So Each CUBIC area Would have a up to 8 levels of LOD Representational Sistem… ~
    Much Like Unity pro LOD Wich You would be able to REPLACE the AREA / With Severall LOD versions Of it …

ACording Player/Camera Distance. It would just see a More or les sdetailed “representation” of the surounding areas That would be Sequencialy loaded into other lod stages …

And entering the zone of the Cubic area It would load reaaly all the area Contends …


This LOD AREA Sistem Should be able to Work in 2 Ways …

By Screen Size / And by Distance …

SO for example we could replace a Area That is far Away and strech it To appear a LOD Version that is Bigger than the actual area itself …

So we could have 1 or 2 Gigantic Representations of the 360 Degrees Flying world far far way … Instead of 300 Small areas LODS … in the distance …

For that We could setup a Range in DIstance That the Distant Gigantic Area is Swaped

Well imagine a real Gigantic World …

Were characters can Actualy FLY also have Flying Mounts and flying veicules / and they can Fly Around Unlimitedly Having this UNLIMITED 360º DEGREES Cubic Areas Sistem …


We could And should also Make Save load CUBIC AREAS TEMPLATES


SO for example …

To do a Volumetric 3D World Streaming Would be to Stack Each Area Like this .


If ( In your Lifetime / lol ) you are Able to Make Such Complete true 360º Area Level Streaming … With all those features.

I would even pay 4x Times More the price of the curent extension for it .

Not just me / i bet reaaly many hundreds Developers would .


THANK YOU FOR YOUR INTEREST IN AVAILING TO DEVELOP FURTHER THIS AMAZING PROJECT YOURS !

I Will keep a Eye And will bookmark this project and eaguer You Are able to Achieve this .

Thanks So much For your efforts.


:: PS: If you Need a BETA TESTER You can Also COunt-me In …

  • I am Currently a Active Beta tester and Contributor to the Terrain Composer also World Composer From Nathaniel Doldersum…

SO i Have some experience in beta Testing that You can Also Use it.

PS2: All this Ideas Were actualy in Development / By Nathaniel Doldersum, From terrain Composer To deliver as a Extension to its product … but he is With load of Work Fro 1 man now … And only in 1 Year or more will be actualy to Implement all this in its Product.

http://forum.unity3d.com/threads/151365-Terrain-Composer-A-Tool-for-making-AAA-photorealistic-Unity-Terrain-in-just-minutes

The guy is so incredible that he even coded a Schematic Interface to CONECT AREAS ! …

On a Real gigantic World level degree …

And he will want also to reach the Level of Voxelfarm in World Area Managemnt …

( Voxelfarm is the Amazing engine of Everquest next )

WIch actualy also have ports to unity as extension

There have been alot of study also on the Amazing HEROENGINE Umlimited Seamless Areas Sistem …

http://hewiki.heroengine.com/wiki/Building_Areas_Tutorial

http://hewiki.heroengine.com/wiki/Seamless_Area_Link_Tutorial

http://hewiki.heroengine.com/wiki/Seamless_World_2.0

http://hewiki.heroengine.com/wiki/Seamless_World

All this Crazy ideas on how to Deliver a Really 360º Degrees world Navigation IN UNITY Been Tackled and Going tru Heavy Experiences on the TerrainComposer WORLD Development Gardens …

But Right now its too much work for one guy alone …


As you Are already in the Same Tipe of Development .

Maibe if you Hurry Up you can get Ahead In Business …

Or Even TEAM UP ! With him …

He is a very nice All minded open Developer.


THANKS SO MUCH FOR LISTEN !

And thanks so much for keeping the PRICE LOW ! On this extension …

You GoT Here a New Customer / no matter where This Development reaches.

The features are already greath and deserve a Immediate buy …

But the Possibilities and needs in a Cubic area sistem Are reaaly Way beyond Arent they ?

PS: This Discussion was Posted at soulsshine-unity.deviantart.com Production blog
http://soulsshine-unity.deviantart.com/blog/

After read And analize all This !
If you think Is too much of a long post here / And does not Add to your Business … please say something and i will delete / edit this post and will leave just the link to the journal There…

THANKS SO MUCH FOR EVERYTHING !.

SILVA DINIS
SOULS SAGA Studio

Looks awesome, and I’ve been thinking about buying a system like this for an upcoming project.

BUT.

The framerate is excellent with a simple terrain like the one you have there, but how would it compare when the terrain is filled with detail meshes, grass, game objects, NPCs, etc.?

As a small suggestion for future versions of this amazing tool: please change the separator of regions names from “.” to something else (“_” for example). Some applications interpreting the dot as file extension separator, being unable to read the type of the file. I experienced this.
Thank you.

A project using Dynamic Map System with real world terrains data: http://www.peopledin.com/game/h/romania-munti/Web.html
(1 scene, 25 terrains once, 370 total terrains of 2688 x 3968, map size about 100 km x 40 km)

@StewartB: I tried to reach the limits with some tests; for me, Dynamic Map System itself it’s working very well with complex terrains; the problem I found on compiler side (3.5 GB memory limit).