-
-
-
Shops allow players to buy/sell items
-
Select the items to bring with you via the Loadout
-
Enter the raid either via a teleporter or a Lobby Status UI
-
Battle ranged/melee enemies using both ranged and melee weapons
-
Find an extraction point in order to secure your loot
-
Receive a summary of the Raid, your items, etc.
-
The world is full of in-depth help UI to get developers started with remixing it
Thanks for checking out my Raid Extraction Template. This template is a remixable foundation for creating your own raid-based adventure in Horizon Worlds. From lobby to loadout to raid to extraction, it includes all the core systems of an extraction looter - items, shops, weapons, NPCs, stashes, and - of course - extraction. And it's all modular, documented, and ready to remix into any genre.
Inspiration
I've been wanting to see a good Raid Extraction Shooter-type of game in Horizon Worlds, and this jam seemed like a perfect opportunity to build out the backbone for it, hoping that others will remix it into their own cool World. Along with a multitude of modular systems, I also added help UI all around the template to explain how to set everything up.
What it does
There's a lot of features included in this template, all modular and ready to be remixed:
- A full Raid flow system.
- Includes a Lobby area where players can view their stashed items, shop to buy/sell items, select their Loadout for the Raid, and then queue up and enter the game.
- A main phase for the raid where players collect loot, fight, and try to find an extraction point.
- Successfully reaching an extraction point allows the player to escape with their items which get sent to their stash. Death in the raid causes the player to drop all items in their backpack.
- A fully functioning multi-platform item system that works either via PPV (player persistent variables) or Meta Horizon Entitlements/Commerce items.
- Press Button2 to Store whatever item you are holding in your backpack.
- Simply select true/false for each item definition to decide whether it should be stored as a PPV or if it should grant an Entitlement/Commerce item.
- Items can be stackable, can sell for different amounts - or even TYPES - of currency, have display names, icons, etc. etc. There is also consumable food that restores HP when eaten.
- The backpack (which has an icon on the HUD) allows the player to equip/unequip and drop items. Equipped items are placed on the player's holster and updates the player's hotbar on their HUD. You can also tap the hotbar to unholster that item.
- Shops where players can spend earned currencies.
- Items can be set to different prices and even different currencies for each shop and can be sold to shops.
- Multiple shops can be setup at a time via ShopDefinitions, each with their own items to sell. The ShopDefinitions file allows many customizable features for developers.
- Quantity selection in order to buy/sell more at a time.
- There is a Loadout UI where players select 5 items to bring into the raid with them.
- These are auto equipped to the player when they enter the raid, if possible, otherwise they're put in their backpack.
- Includes features for selecting quantities, swapping loadout and available items, it shows item descriptions, etc.
- There are functioning melee and ranged weapons with 2 examples of each.
- For ranged there is a laser pistol and rifle, for melee there is a sword and a sledgehammer.
- They all have customizable values via item definitions such as damage, damageType, maxAmmo, fireRate, reloadTime, isAutomatic, etc.
- Ranged weapons require ammo which also exists and works, along with reloading.
- There are enemy NPCs.
- They can be either ranged or melee, with customizable settings via NPCDefinitions for both. There is an existing prefab for each one for testing and learning.
- They can patrol via assigned patrol paths, just assign the tag and apply it to all patrol points, they will be sorted alphabetically.
- They can chase after players and attempt to attack them. They use raycasting to ensure line-of-sight, if they lose LOS then they will run to the last spotted position of the player before giving up.
- There is a player HUD with health, current weapon ammo, a backpack icon, and a hotbar of equipped items.
- Clicking the backpack icon opens the players backpack and allows them to equip, unequip, or drop items they have found in the raid.
- The player HUD only shows up once you enter the raid from the lobby. Ammo and health are currently updated from the server and have a minor delay that I'd like to reduce.
- There are game managers with many customizable features.
- This includes JSON support for item/loottable/npc definitions. You can use either TypeScript or JSON via ConfigurationManager.
- The NPCManager allows the developer to toggle on Friendly Fire for NPCs while the PlayerManager allows them to toggle PvP mode on/off.
- The RaidManager controls things like the tag of Raid SpawnPoints, the hub/lobby spawn point, the min players to start a game, the duration of a raid, spawn protection, and re-entry behavior (heal or disallow or none)
- There are help/tutorial UI scattered throughout the template to help with setup and to onboard new developers.
How I built it
A lot of time, patience, and coding. Having never built many things like Weapons in Worlds previously, there was a lot of learning that had to happen. Luckily, I had quite a bit of experience with NPCs, general item usage & grabbing, game flow, client/server interactions, etc. due to my previous contest entries with Mr. Packard's Mansion. For assets, I've used only Meta-provided assets that allow developers to easily swap them out and remix the entire world.
Challenges I ran into
One of the largest challenges was that my Horizon account suddenly became unable to open the Desktop Editor the day before submissions were due. Having taken two days of PTO to finish it, I lost about 24+ hours of work and polish time. I ended up going back and forth with support for days and never getting the issue solved, I had to submit the world via the VR editor in the end.
But even having lost that time and polish I'm still very happy to have shipped a working template with all functional systems necessary. I think the only major thing that I wasn't able to polish due to the lack of time was the VR version, so this template is Mobile/Web first.
Accomplishments that I'm proud of
This entire template. Many, many hours of work went into creating something that I can share with the entire community. I would like to continue to support the template and keep adding features and fixing bugs. The proudest accomplishment isn’t any one feature... it’s that all of them work together in a remixable way. Swap the assets and you’ve instantly got a pirate raid, a dungeon crawl, or a sci-fi shooter. Not to mention, it also has many systems like inventory, persistent stashes, JSON utility, entitlements, shops, combat, NPCs, etc. that others should be able to learn from and integrate into their own projects piece-meal.
What I learned
Well I certainly learned how to better coordinate complex client/server systems in Horizon Worlds... and how to prioritize features when time is short. I'm glad that I started with very technical and modular pieces and expanded from there.
What's next for Extraction Template
First up are things I planned to do in the last two days but was unable too, due to the Editor not working:
- Redoing the HUD and backpack for VR.
- Adding SFX. Everything is setup to accept SFX but I was never able to get into the editor to assign them to the prefabs.
- Holster positioning. I was not able to go through and edit all of the prefabs due to the editor issue, so the holsters are all positioned in the middle of the player currently, instead of proper positioning.
If this ends up being a template that others like, I have a bunch of ideas for future improvements.
- Properly timed extraction pickups where players need to wait for an extraction timer before they're able to exit the raid.
- Get recoil working. Most of the code for it is in there, but due to the technical issues before submission, I was not able to get it functional so I had to tear it out.
- Openable loot chests. All loot spawns currently just operate as spawning on the ground, it would be nice to have some simple chests that open and give the player item(s).
- A progression system. I built a battle pass for Mr Packards Mansion and would love to do the same for this template, time allowing.
- Crafting. I almost tried to fit this in at the last minute, but again it was impossible with the technical difficulties. The item system is set up modularly enough that a basic crafting system could be setup in a couple days.
- Teamplay. Allow players to join the Raids in teams using the Teams API would be a top priority going forward.
- Non-enemy NPCs. The code should already allow for non-hostile NPCs, but the current prefabs included with the template are only enemies.
- A full looting UI. So instead of a player dropping their items, they drop their backpack which players can open and select items to take.
Built With
- horizon
- typescript


Log in or sign up for Devpost to join the conversation.