Interviewing Stakeholder and Determining Direction for Project (9/29/2020)
For this week, I interviewed one of my stakeholders and reached out to several others. Based on what we discussed, I spent the rest of my time reviewing resources sent to me, and coming up with a rough direction for my project.
Access most recent webbuild here: Click Link
Interview with Apoorva (1 hour)
I was able to get an interview with Apoorva, a software engineer from Sucker Punch Games. He had experience developing procedural generation tools for Ghost of Tsushima, which proved to be invaluable for completing the open world. Below is a summary of what we discussed:
Why use procedural generation?
Procedural generation is useful for when you don't have enough people to create the content you are envisioning. Ghost of Tsushima's world is 20x bigger than anything the studio has done in its history:
Although the team has well over 100 developers, creating that entire map by hand would take too much time. Apoorva mentioned that seeding the island alone would take roughly 5+ years (which is exactly how long it took them to complete the game). To mitgate this, they needed a system of level design tools which allow them to:- Build at a fast and scalable level
- Have great flexibility and allow for iteration
- Create and balance the distribution of content on the island (vegetation, rocks, rivers)
- Allow for the management of in-game economy: bamboo, iron, resources, etc.
Biggest Challenges
One of the biggest challenges that the team had was that they were solving a problem that they didn't know the solution to. You could take inspiration from other studios, such as Guerrilla Games, or view previous GDC talks:
While these help at a high-level, Sucker Punch studio has its own in-house engine. The tools for Ghost of Tsushima needed to solve the problem of automating the creation of the world, but also be mindful of the engine's capabilities and the vision for the game. Furthermore, you have to be aware of how much procedural generation to do. While it is useful, it has to generate content in a way that is manageable and support interaction with the different gameplay and environmental systems present.Saving Changes
Another question I asked Apoorva was in regards to how the studio saved procedural changes. If the tools generate content the designers like, what architecture is necessary to ensure those changes are not overwritten by other level designers? Here were some ways this was resolved:
- Make the editing experience real-time. When someone is using a tool, they work on a specific subsection of the map. As the user adds and removes content, they can see the immediate impact of their work. This allows designers to visualize their changes and prevent making game-break alterations to the map.
- Cache any content necessary for the missions (NPCs, pathfinding, enemy placements) in memory so that it cannot be modified. If you need something specific for the player to interact with (for instance, Jin leaning on a tree after completing a mission), hardcode it into the environment instead of relying on the procedural generation tools to create it.
- Foster communication across the entire team. The designers should always be aware of what each other is doing so that changes can be assessed and no game-breaking alterations are made.
Research Feedback
For my project, my initial idea was to create a tool which will automatically create 3D levels, based on seeding informatioon provided by the designer. They would be able to inspect the level to see if they like it and download it in a variety of file formats. While this idea seems promising, it may be difficult to finish by the end of the semester. To help refine my idea, Apoorva gave the following feedback:
- Think about concrete(s) problems to solve in level design. How can I make the tool so that it can address specific issues, and be useful to someone?
- Be mindful of my audience: for academia, having a broad issue is generally fine. However, for the game industry, developers need specific tools to resolve specific problems.
Research industry usages of Procedural Generation (4.5 hours)
After getting Apoorva's feedback I spent a majority of time looking into industry-specific usages of procedural generation. Both he and another stakeholder sent me an abundance of useful resources, which will be summaries below.
Deep Rock Galactic-Procedural Level Generation
Deep Rock Galactic is 4 person FPS co-op game, where you explore procedurallly generated caves with your friends and mine for resources. One of the biggest goals of the developers (Ghost Ship) was to create a sense of exploration: everytime you play the game, you discover something brand new and unexpected:
The developers chose to make cave generation system. They first hand crafted several cave templates, each of varying size. Then, these levels are chosen at random, and connected with varying size tunnels. Then, enemy placements, crystals, gold, and the entrance and exit are randomly placed. While the developer notes that more work needs to be done, the system works very well for them.Procedural Generation for Everyone-Kate Compton
This video gives a great walkthrough of different procedural generation techniques. It also gives an overview of different usecases of procedural generation, and how to effectively use it to build content quickly. Here are some usages:
- Minecraft: automatically generates terrain in its world.
- No Man Sky: procedural planet and universe creation. Diverse biomes.
- Dwarf Fortress: world building and the historic background of the player is randomized.
- Pip and Bars: provides you with different ways to stroke your beard as you think of chess moves.
- Save Seeds: Make a note of great content, and save their generation seeds (ex. perlin noise settings)
- Algorithms: Write algorithms to judge the viability of the content. However, use a rank-based system to prevent good results from being discarded.
- Constraint Solving: Enumerate the entire search space, and brute force for the best results. This is computationally intense, but valuable if implemented well.
Wildlands: Procedural Tools
Benoit Martinez sent me links to various talks he has given regarding the usage of procedural tools in developing Ghost Recon: Wildlands Wildlands is one of the largest open world games ever produced at Ubisoft. Here were some interesting features of the game's world:
- 11 Biomes and over 140 materials used to paint the environment.
- Over 656.421 km long roads and Footpaths 2150.24 km in size.
- Well over 58 villages, with 234,697 village props.
Next Steps (.5 hours)
After viewing these resources, I have a better idea of structuring my project. My work, going forward, will investigate ways we can use procedural generation to automate specific stages in the level design process. I found a nice article written by game designer Fredrik Henriksson that summaries the work necessary to build levels from concept to implementation:
- Planning: based on preexisting game assets, as well as reference material, decide on the type of map, you want to create and determine the atmosphere and mood of the level. After this, plan out the gameplay areas and the winning conditions.
- Prototyping and Blockout level: Use the level editor/game engine to build out basic features of the map. use primitive shapes to resemble rooms, doors, and important icons on the map.
- Testing: play the blockout levels, making sure that the player can walk and jump around without getting stuck. Solicit feedback from playtesters regarding the level, and use bug tracking tools to take note of serious issues.
- Item and Spawn placements: Determine optimal placements for pickups and weapons to encourage gameplay and risk and award.
- Decoration, Event triggers, and pathfinding: turn the blocks into a good looking level and add details. Add in event triggers and iterate upon feedback