Halo 5’s Forge is an immensely powerful overhaul of the Forge tool from previous iterations. The API is also an incredibly powerful tool, although only players who are also developers know how to use it properly. Having said that these are powerful tools, I want to talk about how to make them better. I’m not going into details on each one better individually, but instead focusing on how to make them better together. In this article I will address two issues, set an end goal for each, and detail different options to both end goals.

A common complaint of people is that Forge maps don’t have a custom picture. They just use the default image for their canvas. So the solution to this is to give custom maps a custom image. Now how does 343 Industries get from the problem to the solution? I have a few options that I’d like to go into: in-game objects, in-game action, and file linking.

The first option is using an in-game object, or specifically a static camera. Static cameras are in Forge already, although most Forgers tend to look over them. They only come up in matches when the player’s death cam can no longer follow the killer. The static cam can also appear when players are disintegrated, as for some reason the game doesn’t detect a biped so the camera just despawns. This special static cam would have a different label, such as Map Image. What it would do is whenever the file is saved, part of the saving process would use whatever the camera sees as the map’s custom image. It is worth noting though, if a player or a monitor were in frame, it would more than likely include them. It also changes how players recognize a map. If a map were to change the location of the static cam, it would change the picture globally. This could be viewed as a positive effect also, as it is more representative of the current map.

The second option is an in-game action. When players are creating their map, they will open up map options to change environment settings. These are things like lighting, fog, and weather effects. This particular option would be to enter map options and then press a button to capture what the monitor is looking at. Generally speaking, this would remove the problem of a player or monitor being inadvertently in frame, but the negative is that it wouldn’t update with every iteration of the map. Like before, this is both a positive and a negative.

The last option is file linking. This would have been the option of choice on the Xbox 360, as screenshots and maps on the game engine level, instead of screenshots now being on the OS level. If Halo were to return to game engine level screenshots, this would again be the best method. What it does is ties a screenshot taken in Theater to a map. These files would be linked together through Waypoint. Players could delete stuff from their hard drive, as long as both were uploaded to Waypoint.

Now how does this link into the API? The API supports both Maps and Map Variants. Maps are defined as base maps, while variants are defined as any version different from the base map. An example of a Map Variant to a Map is Guillotine to Alpine. Currently, the API halfway supports map variants. If a map is in matchmaking, it is supported. If it’s a user map that’s not in matchmaking, too bad so sad. Taking a look into the Map and Map Variant API call results give some interesting results. The Map call will return “ImageUrl” which should (and is) the image for the base map. The Map Variant call will return “mapImageUrl” which should bring back an image of the map. Instead it returns the base map image. The image below shows that the API links the Map Variant image to the same location that the Map image, while also showing that the MapID on the Variant is the same as the ID of the map itself. It can be concluded from here that at some point in the future, 343 Industries plans to expand Map Variants to have an image different from the base map image.

The next thing I want to focus on is the new Events API endpoint. The Events API endpoint was added on April 4, 2016. What this does is give a detailed rundown of each event that happens in game. This can be one of many events such as a player’s death, a weapon pickup, a player spawning in, and more. What I would like to see added is on weapon pickups and player spawns. For death events, the API returns the X, Y, and Z coordinates of the killer and the victim. I would like to see these X, Y, and Z coordinates added to the weapon pickups and spawns. What this does is gives detailed data about what weapons and spawns players are getting on a map. This is particularly important for Forgers, so they can see what spawns might be weighted highly or what weapons aren’t getting used.

So for example, in a custom match on my map, I can load up the Events endpoint and go through all events that happened in game. If I see a spawn event, it has more than just “Player”, “Event name” (which in this case is “PlayerSpawn”), and “TimeSinceStart”. I would also get EventWorldLocation, which would have X, Y, and Z positions for that event. Then I could go into Forge and see what spawn point that was.

An alternative to this to give each spawn point and weapon a different id attribute. It’s not confirmed, but it is suspected that when a player duplicates an object, there’s a hidden id attribute that is also duplicated. This also applies to spawn points, and is my personal suspicion as to why some spawn points are heavily favored over others. How I think it works is that the system determines that spawn-point id=5 is a good place to spawn, but the game sees 2 points where the spawn-point id==5, and it goes with the one of the entries. That’s just pure speculation on my end, but regardless I think the game should have an option to show all spawn ids. This way, on the events call, the game could give a spawn id for the PlayerSpawn event. This would apply to weapons and weapon pads also. The player could then go into Forge and see what spawn points are where, based on the ids visible in-game.

With the goal of providing more event details to map makers, this would give developers the ability to make tools for Forgers. The next goal is make these tools as good as tools that 343 Industries use. This provides benefits for everyone, as Forgers could get better data and make better maps out of the process.