Skip to main content

Freeport

Freeport is a standalone mod for Fallout 4 where the Sole Survivor is approached by a master thief, Neal, who enlists the Sole Survivor to help steal priceless valuables from a bourgeoisie enclave, the Isle of the Blessed, in the Commonwealth.
Creation Kit (Fallout 4)
Play Video
Freeport
Engine:

Creation Kit (Fallout 4)

Development Time:

100 hours

Team Size:

Individual

Goals

  • Support separate 3 paths of play (hacking, locking, and charisma) along with the Quiet/Loud options. This was inspired by the recent Hitman games.
  • Quest Design that can be accessed globally by all actors in the level and change based on player choice.
  • Goal
    Offer re-playability by changing encounter and conversation placement based on path.

Level Overview

Freeport is a standalone mod for Fallout 4 where the Sole Survivor is approached by a master thief, Neal, who enlists the Sole Survivor to help steal priceless valuables from a bourgeoisie enclave, the Isle of the Blessed, in the Commonwealth.

Offering a mix of deception, stealth, and guns blazing combat, the Sole Survivor must help Neal discover how to break into the vault below the enclave’s famed Opera House and steal the residents’ priceless pre-war and post-war artifacts.

Level Overview

Level Layout & Maps

Freeport has an exterior and interior cell (the Opera House) in contrast to my initial design which had some smaller buildings with gameplay in the exterior.
The Opera House is located in the enclave ("The Isle of the Blessed"). I wanted to sell the idea of a larger space so the hills above this part of the town are populated so as to convey a sort of inner sanctum.

Freeport Exterior

Here is my initial paper design for this part of the level.
As mentioned above, this section suffered some cuts due to scope. The gameplay is now primarily inside the Opera House.

Freeport Main Interior

Here is my initial paper design for the main interior cell of the level.

The structure of this remained true to the final product

  • The size of main floor was blocked off in some areas and the side rooms were reduced overall by 30%
  • I used debris and hallways to constrict flows in area where the gameplay pace was slower

    Development Challenges & Solutions

    • Girl in a jacket
      Using Global Variables

      A takeaway from RoachWorks Inc. was being too rigid in my implementation and not allowing for a system that scaled appropriately and required a lot of hand-tuning to make look right.

      Coming into Freeport I wanted to alleviate this by storing my quest variables in a higher-level form.

      I settled on using global variables to distinguish the form the level would take.

      • If the player picked Quiet, killing guards or civilians will automatically fail the quest.
      • In the event the player steals the waiter's uniform, there is a global variable tied to the outfit the player is wearing. All actors in the level can read this variable at any time and adapt their dialogue accordingly.
      • This also applies to doors that lock and unlock during different stages of the quest depending on the path chosen.

      This let me keep the majority of the script in a centralized place within the quest which helped with debugging and balancing.

      I did run into a major issue with timing the start of the Opera. The player would only be allowed inside the Opera house after 6pm in game.

      • Sometimes the player would start the quest after 6pm, so when they would "wait" for the opera, the script to read the in-game time would not fire.
      • I learned a downside of storing variables globally is they can trigger at unintended times so to hinge the progression of the entire quest on them is dangerous.

      However, seeing that the script was tied to a certain quest stage, I already had a gate in place.

      I set up a simple while loop during this quest stage that would read game time stored as an integer.

      • By circumventing the game's time-reading function using global variables, I was able to solve an issue that the global variable system caused.
      • Additionally, I forced the mod itself to start at 11AM in-game as a failsafe.
    • Girl in a jacket
      Using Arrays to Control AI Behavior

      Having multiple NPCs on screen to sell the idea of something larger was an important consideration from the beginning.

      In conjunction with using a higher level framework, I decided on storing the actors and their desired behaviors into arrays that could be stepped through with minimal maintenance work.

      I had to establish a main actor along with a main AI package that could be inherited by the other patrons.

      The next step was to set up the array of objects (seating, idle positions, etc.).

      After the initial test of this system, I had to adjust some actors spawn positions ( due to actors bumping into each other while crossing paths to their seats).

      • The reactions of the NPCs to the raiders did not need adjustment (except to secretly nerf the patron's HP).
      • I am happy with how organic this implementation looked in the final product and how it informed my approach to controlling large amounts of AI in a scalable fashion.

    Afterthoughts

    What Went Well

    What Went Well

    I was able to do most of the package work in fragments tied to the quest rather than custom scripts which made tracking and debugging easier

    I cut early which saved me a lot of hassle in the long run, although probably not enough

    What Went Wrong

    What Went Wrong

    As mentioned, I cut but not nearly enough

    AI packages were finicky work and I did not get to dedicate as much time to sorting it out as I would have liked

    Parts of the interior have blown out lighting

    What I Learned

    What I Learned

    The usage of global variables was a great learning experience and opened my mind to a lot of possibilities on how I would construct a similar mission in the future

    Using arrays for actors and refs was an invaluable experience as I think the crowd management systems in Fallout are what really brings the world to life

    Making gates too contrived with multiple avenues of completion easily accessible ruins immersion

    • I think committing to the 3 distinct paths in addition to Quiet/Loud as proposed in my initial design would have solved this

    Connor Johnson

    Game & Systems Designer