Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Back to "building a sandbox". This is obviously the most open ended category you can get, but let's just cover the basics for now: creating the world.
A "sandbox world" is basically a bunch if separate maps (scenes) all strung together. You will most likely have several "hub" scenes linked together, such as city blocks, and interior scenes, such as the inside of buildings on those block. Lets start with how to build a Hub.
First you will want to create a Global Variable named "Travel" (or anything you want).
Next you want to create some "Invisible Block" props, one for every entry into the scene (such as outside of a building) and set their interaction type to "Dummy". Name these props "Spawn Location 1", "Spawn Location 2", and so on. Now drag those blocks to their appropriate location within the scene.
Now for the more complicated part (although still pretty simple), the triggers. For every spawn location within a scene you must create a trigger. Luckily if you build one, you can just copy/paste and tweak it. The trigger will look like this:
When: On Map Start
If: Travel (the name of the Global Variable) is equal to 1
Do: Warp Teleport Player0 to Spawn Location 1
The trigger will change depending on the Travel variable. If it equal to 2, teleport the player to spawn location 2, etc. You can also choose to warp teleport additional actors by expanding upon the "Do" command. There's some room to tinker here and figure stuff out.
The final step is creating exit props with triggers. I use the same Invisible Blocks as the Spawn Location props for almost everything in my UGC, including exits. The difference is I set the interaction type to "Generic", and change the symbol to "Transition". I name them
"(TargetSceneName) Exit".
Exit triggers to go with those props will look like this (assuming the Exit will open a scene named Store):
When: Store Exit is interacted with
If: triggering actor is Player0 (usually a good idea to prevent some bugs).
Do: Open scene Store.
Now the exit trigger from the Store back out to the City Block scene will look like this:
When: City Block Exit is interacted with
If: triggering actor is Player0
Do: Set variable Travel to 1
Open scene City Block
Now when the City Block is loaded, the game will see the Travel variable is equal to 1, and Teleport the player to the location of the Spawn Location 1 prop (which should be outside the store building).
This can be used for every interior building within a hub, and for travel between hubs. You can even have an interior building with multiple exits into a zone by setting the Travel variable to a different number at every exit.
Hope that helps you understand how to create a basic layout of a Sandbox world, but the true depth of the Sandbox world is really up to you, and can get infinitely complex. If you have another, more specific question, ask away.
Also one key aspect of sandbox will be persitance. Kill a mob and its dead when you come back. Is that handled in a datastore? Does that scale?
As far as scale, there are two types of variables: local and global. Local variables are contained within each scene and cannot affect anything outside of that specific map. Global variables on the other hand can track changes to the entire game world, and are very important to a sandbox type game (they will be your best friend). It wouldn't be practical to create a global variable specifically for every mob to check if it's been killed, but could easily be accomplished for boss-types, or to see of an entire area has been cleared.
For example, create a Bool variable called "Gang_Boss_Killed". It will be set to False be default. Now when the player kills the Gang Boss, create a trigger that sets the Bool variable "Gang_Boss_Killed" to True. You can now reference that variable everywhere in the game, creating triggers that will only spawn the Gang Boss and his henchmen if the variable is False, create dialogue options that are only available depending if the options is set to True of False, etc.
BUT I think this would be a great idea:
Have every major map(scene) have a state variable:
1 = Gang is in peace mode (Full Strngth)
2 = Gang is on Alert mode (there was fighting)
3= Gang is in Survival mode (they took heavy loses)
4= Gang is dead
You could have a global string for each map that tells you which important npcs are aliv. Eg. "1,1,1,1,0" - All alive except for the last one.
With these combinations you can setup the scene correctly :)
I use random encounters in my world scenes. For random encounter, the game generates a number for a Global variable called "Encounter", between 1 and 30, using a trigger. The trigger also sends what's called an Event (basically a way to fire a trigger, or a series of triggers). When the event named "Encounter Check" runs, it checks what the Encounter variable is equal to. If it equals 1, then X event happens, if it equals 2 than Y happens, and so on. One of the encounters would spawn gang members in the scene to harass the player, and that would be where the mob slaying would come in. Each possibility on the encounter list would require it's own trigger, and the "When" function for each trigger would be when the Encounter Check event runs. So when the event runs, every trigger tied to that event would fire, but only one of them would be true (If Encounter = X number), and actually do anything.
You could still use a global state to affect the World Scenes. Think about letting the players affect the world via choices in a mission. You could have the world state affect the random encounters.
So if the players drive off a gang in a mission, it could make the world better .. or worse (if a worse gang moves in).
Question:
In the Dragonfall the main player block was destroyed after the assault .. did they do that by simply loading a different map? Or do they change the buildings in the same map?
You could for example create a boolean global-variable called "Gang Driven Off", and set it to true when the players run the gang out of the city. During the random encounter event, add an extra line to the IF line of the trigger that spawns the gangers that reads "If Gang Driven Off is False". That way the gangers will only spawn if you haven't already driven them from the city. Obviously with that variable as a reference point, you can create some negative effects to the gang being gone, like some revenge happening in the future or a new gang moving in or whatever.
As for your question about the scenes, it would be far easier just to create a second version of the scene, one destroyed, and one not. If you wanted to travel back and forth between the scene like a hub still, you need to add a line to the IF command of every trigger that opens the scene, that checks a boolean global-variable called "City Block Destroyed" (or whatever). It will look like this:
When: Store Exit is interacted with
If: City Block Destroyed is False
Do: Open City Block scene
Otherwise: Open Destroyed City Block scene
However, a note here: If you want to use the Otherwise function of a trigger you should only have one item in the IF line, otherwise it will fire the Otherwise command unless all the IF items are true. So if this is the case, you will have to change the exit trigger so it no longer checks to see if the triggering actor is player0. Instead you will need to modify the Exit props, and change their pre-requisite so that only Player0 can interact with them.
The wiki is great but obviously lacking. And I appreciate people who have put hundreds of hours on the tool are making threads like this (hint: thank you!!!) and I would liek to first go through and exhaust any documentation out there before coming back to you guys!
Although there's something to be said about the joys from learning through experimentation.
The editor is like the Last Mission of Dragonfall; each time I figure something out I am even more motivated by that sense of "Achievement", like I beat a very hard mission with an unarmed adept, but there's always the next "mission" or problem/challenge.
In the interest of increasing UGCs I request that the devs consider using Steam "Achievements" as rewards to further motivate the community into using the editor.
When trying to create a new content pack after naming your content pack you move on to choosing the content pack dependancies, now in every video/page I have read on this page there should be ShadowrunCore and Seattle displayed in content packs. However on mine the table contaning content packs is completely empty, so when I create a pack it has no resources avalible to it because there are no content packs avalible for me to load. Can anyone shed some light on this or tell me if theres somthing I'm missing? (running Mac OS 10.9.2)