• Register
Post news RSS Distro Horizons - Creating the Hubworld

Creating a level that is linked to every other level is easier said then done. Here is the current progress of the hubworld as well as new features implemented ready for the Desura Alphafunding launch on the 24th.

Posted by on

Hello guys 'n gals,
Today, I wanted to talk about the hubworld for Distro Horizons Vs. Galaximo's Army. In platforming video-games, specifically Banjo Kazooie, Super Mario 64, Crash Bandicoot (2/3) and Spyro the Dragon, a hubworld is a level which connects to your other levels (Usually using teleports or portals). These portals are locked off until you've collected enough of X item to unlock the next portal (Where you'll find more of X item to unlock ANOTHER portal and so on and so on).


As our project is taking place in Space, it makes sense to have the hubworld on Galaximo's ship. Seeing as the main villain is Galaximo and the player has been abducted by him, it made the most logical sense.

So we've done the simple part, building the level. Using models and various other bits and pieces, we've created (And are still updating) the layout of the level. Creating buildings and the such on the space station/ mothership is as I previously stated, the simple part.


Creating the portals is not a problem at all. Creating the model is the toughest part. After this, all we needed to do was create a box collider around the portal that application.load("Level1") and bam, it changes the game level to that level.

The next issue we have is locking off portals until X amount of item has been collected. This can be solved by creating a PlayerPref in which updates whenever a player collects X item and once PlayerPref says that the player has X item, the door to the room with the next portal in unlocks. Sounds simple, but so did the idea of a hubworld.


While creating the hubworld, we also created a pause menu using Pause Controller and NGUI, both A* assets on the Unity Asset Store. It sounds extremely complicated but it really isn't. After we created a simple pause menu within the UIRoot of NGUI, we linked the buttons to their respective scripts and we had a pause menu. But it was always on screen at once. This was the difficult part. No matter what type of pause script we created, hiding and unhiding the NGUI screen and pausing gameplay seemed impossible. That was before we found Pause Controller.

Once we found the Pause Controller asset, it was a simple case of linking the Pause Controller to NGUI and bam. It just worked straight away. There is only weird bug however (Where you have to pause twice to use the keyboard/controller during the pause menu) but that is a tiny trade-off to a fully working pause menu.


We still need to implement the Save and Load feature as well as post processing effects (And also finishing off the hubworld map). We are hoping to input the hubworld into the next alpha, which will be launching exclusively on our Desura release in the next few days, ready for our launch onto Desura in the coming days.

I hope this article can help people who are stuck in a similar boat!

Thanks for reading guys 'n gals,
Ryan S - Project Lead

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.