Venture Forth

Venture Forth

Not enough ratings
Venture Forth Blueprints Tutorial - 101 - Accompanying Materials
By 4thGenRobot and 1 collaborators
This documentation section is meant as an accompanying piece for the Tutorial video from the videos section.
   
Award
Favorite
Favorited
Unfavorite
Let's Get Started
Welcome to the first Venture Forth Blueprints tutorial. This is meant to accompany the tutorial video, which is available on the Venture Forth Community Hub.


Before diving in, there are a few items that are necessary to go over.

Where are the files at?
On a Windows machine, the files for editing the Blueprints can be found, here (unless you've personalized your games structure, somehow):

The Core Program

C:\Program Files (x86)\Steam\SteamApps\common\Venture Forth\

In this folder, you'll find the following 2 executable files:
  • Venture Forth.exe
  • Venture Forth - Dev Mod.exe

For the purposes of this document, you need only concern yourself with the "- Dev Mod" file. You can run it from the folder itself or you can rename it to "Venture Forth.exe" and run it straight from Steam. Remember, if you choose the latter, you'll have to name the original file to something else.

Note that updates will revert any changes made in this folder.

settings_testing.txt

..\resource\settings\

The only item of note for modding is settings_testing.txt. We'll go into the necessary adjustments in a bit, but for now just keep this file handy.

The Blueprints Folder

..\resource\settings\Blueprints\

In addition to being the storage place for your new Blueprint files, there are several pre-loaded files in this particular folder that you'll need to keep mindful of:

  • File_List.txt
  • Steps.txt
  • Simple.txt

File_List.txt
The contents of this file list all the Blueprint files you'd like the game to load. As you create or download blueprint files, you'll want to update this list in order to be able to use them in the game.

Steps.txt, and Simple.txt
These files are example blueprints to work with. Steps.txt is particularly helpful as it gives detailed descriptions of all parts of a blueprint file. Definitely for advanced users.

Simple is as the name implies: an extremely basic room.

Reference these files and modify them as you like. It's an easy way to play with and learn the toolset.

What do you need?
Really and truly there are only a couple things that you might need to get going:

  • Some decent screen real estate
  • A handy-dandy text editor (I like Notepad++ or Sublime Text, but that's just me)



When launching the Venture Forth - Dev Test executable, the game will open in windowed mode. Additionally, a friendly (and extremely useful) debugger window will open. Just make sure you have easy access to all three of these items: game, debugger and text editor.

Ok, now what?
Now you go to the next chapter, is what.
Chapter 1: Some Basics
I'm starting simple. Really simple. Simpler than simple.txt and that's simple.

Some Quick Basics
First things first... general Blueprint file format.

The Header
There are a few things that go in the header of each file:

Landmark: TITLE OF BLUEPRINT
This tells the game what the name of the room is that you're building. If you launch Venture Forth and look at the map, you'll notice that all the rooms have a variety of names: The Steps, Abyss, The Funnel, Chamber of the Heart, etc. These names come from the Landmark string. The Landmark string will populate the Blueprint.txt file found in the ../Blueprints/Name_Lists/ folder.

So,
Landmark: The Abyss
would create a room called, "The Abyss"

Layout
Underneath the Layout section is where the blueprint is written. The blueprints must mimic the hex format that is used inside the actual game:



That would represent a single hex, which could theoretically be built with a layout as such:

Landmark: Single Hex Layout: 001

Where 001 is the label of the only hex in the room. However, this is not a room that could actually be built in the game. It's too small. We'll get to a more appropriate one, shortly.

Building the Room

Where the "Layout:" section defines the room's top-down blueprint structure, the "Build:" section would actually give the parameters for how the room will look to the player.

The ridiculously small and unrealistic single-hex room we built above would be completed by the following code:
Landmark: Single Hex Layout: 001 Build: 001

And, of course, this is the absolute simplest example of how to build a room, but it's a start. Now let's actually build something useful (barely).

Something Useful(barely)
To expand upon our unrealistically small room, we'll make an incredibly simplistic room that looks like this:



And here's the code for it:

Landmark: Four Hex Layout: | 001 |002 003 | E01 Build: 001 002->003 E01

When opening this room in the game, it looks like this:



Formatting
There are a few things that need mentioning, here:

Under the "Layout:" header, each line must start with a vertical bar/pipe character: "|"

This symbol tells the game, "I'm going to give you the next line of the room layout, please pay attention, dangit!" It tells the game to start recording hexes and spacers. Now, this room has no spacers in it, but the hexes must appear in the format mentioned above. Here's an important rule, so I'm going to use all-caps:

DO NOT USE TABS

When building these Blueprints, it's important that you use only spaces and not tabs as the engine will not interpret tabs in the fashion necessary to accurately build your level. When building more advanced levels, you'll be tempted to use tabs, but I'll remind you:

DO NOT USE TABS

This is because not all text editors display tabs in the same way, so in order to avoid layout inconsistencies, we have just eliminated tabs altogether in the layout. Place your left-most hexes directly against the vertical par/pipe and your indented hexes two-spaces from the pipe. Place each hex one space from the next closest hex when building hexes adjacently.

Under the "Build:" header, you'll see a list of the numbers used in the
Layout:
section. Here's a quick summary of what they do:

Hex Identifiers (TAGs)
The TAGs (identifiers) in this example are 001, 002, 003, and E01. When building a room, you can use any three-digit TAGs you want, to help you organize your layout. There are, of course, a few exceptions. E01, or Entrance 01, tells the game that hex is the location that the landmark will be generated at when a world is built. Any TAG starting with an 'E' is designated as an "entrance" to the landmark. Think of it as a door, connecting this room to other landmarks in the world.

Specs
There are a wide variety of symbols that tell the game how to attach hexes together. The simplest are these "->". They tell the game, "Hey, attach these two hexes together with a line of hexes in between." In the "Foyer" example, below, you'll see this in action. The line, "003->E01" is required to let the game know that the exit is going to be connected to this point in the room. As you can see in the above image, it's also intrinsically attached to 002, but it needs that initial contact point or the room cannot be built.

Shorthand
While it's not my preferred method, you can use a much more succinct shorthand. It works the same as the initial example, but saves space. The method above simply helps me visualize things as I'm building and will be used frequently throughout the manual. Depending on who's writing what chapter, you'll also see the below format:

Landmark: Four Hex Layout: | 001 |002 003 | E01 Build: 1 2->3 E01

This shows how you have the option to drop any leading zeros ('0') from the beginning of a TAG when referencing it in the "Build:" section. (MUST only be LEADING zeros: 001 can become 1, but 101 cannot become 11). But remember, in the "Layout:" section, you must use the full 3-digit TAG marker. You may also place any number of build commands on each line as long as each command is separated by a space.

And now we start building a larger Blueprint...
Chapter 2: Testing Your File
OK, you've got a brand new Blueprint. So, how do you check it out in the game?

Open the Dev Test Version
Simply go to the Venture Forth folder on your drive (see Intro for details) and open it. You're looking for "Venture Forth - Dev Test.exe".

The game will open in a window with a secondary developer's debugger that'll tell you everything you're doing wrong. From there, start a new game in either mode.

"But wait, that's not opening my room, WTF man?!?"

Jeez, just keep reading...

Opening Your Level
settings_testing.txt
A few steps, here. First, open the "settings_testing.txt" file located in the ..\resource\settings\ folder. Scroll down to line 85*:
generateTestRoom = f

Just change the 'f' to a 't' (setting the generateTestRoom to "True"). Then, starting at line 89**, post the following line of code somewhere in the list***:
#testRoomType = "Four Hex"

You'll want to remove the "#" (uncomment the line) when you're ready to test your level, but remember to add the "#" (comment out the line) for any other uncommented Landmarks. This just tells the game which file to load, in the order listed. For example:
#testRoomType = "Pandora's Box" #string #testRoomType = "The Funnel" #string #testRoomType = "The Riverbed" #string testRoomType = "The Abyss" #string #testRoomType = "The Steps" #string testRoomType = "The Cathedral" #string #testRoomType = "The Nest" #string
If you accidentally make a mistake, and leave more than one room un-commented, like this, it will load "The Abyss" even though "The Cathedral" is also not commented, just because it sees "The Abyss" first. The comments (anything following a '#') just tell the game, "Move along, nothing to see, here."

Blueprints folder
Now go to the Blueprints folder and ensure your Blueprint, "EXAMPLE FILE.txt" is saved there. Then, open the "File_List.txt" file and ensure your file is listed there (add it if it is not. It doesn't matter where you place it, as long as it is on its own line.)

Load the New Blueprint
Go back to the game and, while in game, press ALT+J. This reloads the current level. It'll also recognize all the changes you've just made to the settings_testing file. Just continue making changes in your blueprint file to your heart's content (remember to SAVE your blueprint file's changes before re-loading) and then pressing Alt+J in-game to re-load it and check your changes in-game.

* It's line 85 as of the writing of this manual so please yell at us if it's no longer there. If it's no longer line 85 because you edited the file without prompting... well, you're SOL! :-P (actually just find the "generateTestRoom" definition, and set it equal to "True". It should be somewhere in there.)
** See above footnote... but replace "line 85" with "line 89".
*** Replace Four Hex with the name of your file's Landmark.
Chapter 3: Your First Custom Room
This chapter defines and constructs a small and simple room. Feel free to use the knowledge you've uncovered up to this point to generate a room of any shape or size.

The Code

As usual, you'll see the header for the room we'll call the Foyer. It's referenced in the video you'll see, linked in the Introduction.
Landmark: Foyer Layout: |001 xxx xxx 002 | 003 xxx 004 |005 xxx xxx 006 | 007 E01 008 Build: 001->002 003->004 005->006 007->E01 E01->008

That's it. Super simple. This layout will generate something that looks like this:


The "xxx" spacers just tell the program how large you want the room to be. You could replace those spacers with blank spaces, but that is just asking for a ridiculous number of mistakes and resulting error messages.
Chapter 4: Sections
Sections: Building more complex areas
When building more complex landmarks (ones with multiple rooms, ceiling sizes, dungeon areas, water and lava features, tunnels, etc), you'll expand on your code to include "Sections." When constructing sections, you define different rooms or areas within your landmark.

I've provided an example, here:
Landmark: Mansion Layout: Section: Foyer | F01 C01 F02 |F03 xxx xxx F04 | F05 xxx F06 |F07 xxx xxx F08 | F09 E01 F0A Section: Hallway | C02 |H01 H02 | H03 |H04 H05 | H06 |H07 H08 | H09 |H0A H0B | H0C |H0D H0E | C01 Section: Main Hall |M01 xxx xxx xxx xxx xxx xxx M02 | M03 xxx xxx xxx xxx xxx M04 |M05 xxx xxx xxx xxx xxx xxx M06 | M07 xxx xxx xxx xxx xxx M08 |M09 xxx xxx xxx xxx xxx xxx M0A | M0B xxx xxx xxx xxx xxx M0C |M0D xxx xxx xxx xxx xxx xxx M0E | M0F xxx xxx C03 xxx xxx M0G |xxx xxx xxx xxx xxx xxx xxx xxx | xxx xxx xxx C02 xxx xxx xxx Build: # Build the Foyer F01->C01 C01->F02 F03->F04 F05->F06 F07->F08 F09->E01 E01->F0A # Build and attach the Hallway C02 H01->H02 H03 H04->H05 H06 H07->H08 H09 H0A->H0b H0C H0D->H0E C01 # Increase the ceiling for the Main Hall C=8 # Build and attach the Main Hall M01->M02 M03->M04 M05->M06 M07->M08 M09->M0A M0B->M0C M0D->M0E M0F->C03 C03->M0G C03->C02

Now, let's break this down.
Foyer
There are two things to differentiate this Foyer from the one in the previous sub-chapter:
  • A new TAG formula
  • A new TAG type

As a completely optional organizational tool, you can use the three-digit TAG system to separate each section of your landmark into distinctive labels. In this example, 001 changes to F01, where F is my label for Foyer.

There's an additional TAG type that I've stuck in there: C01. While this TAG could be defined as any other three-digit TAG, I'm isolating it with its own label to highlight its function. C01, in this case, is used as a connecting hex.

The connecting hex serves to tie each Section together in the way you want them to appear. To connect two Sections, they must each share at least 1 hex TAG.

C01 connects the Foyer and the Hallway.

Hallway

There's nothing new or special about the Hallway. As you can see, it's merely a new area with a different blueprint layout. There's nothing keeping you from putting any of these Sections together in one giant Layout piece, but I've segmented them here for instructional purposes. It's also a method I use to keep larger landmarks organized.

C01 connects the Hallway to the Foyer while C02 connects the Hallway to the Main Hall.

Main Hall

The singular difference between the Main Hall and the other Sections is the following build instruction:
C=8
This tells the game that you want to define a new ceiling for all the build commands from here onwards, until redefined as another value.

And so, the Main Hall appears larger in every aspect: width, length and height.


Here's what the map in the game will look like when it's run. But go ahead and check it out on your own.

Play with these variables and construct some crazy-ass landmarks of your own. In the next guide, we'll be adding effective use of randomized floors, water and lava levels, randomized ceilings, ridiculously large rooms, and other effects to give your level a more cavernous appearance.

Please submit the code for any and all landmarks you construct, along with screenshots, for sharing purposes. If you have any questions about why your code isn't working, we'll be happy to help you debug it.