Jump to content

Map Editor Tutorial - Default Script Files


R4bitF00t

Recommended Posts

logo.png.2daaf617449a0c9e1c637ec4ce05d03a.png

Hello there!

We have went over quite a few scripting topics, and they just keep coming.

In this chapter, we will look at which scripts the game loads by default, and how you can create your independent script, that is not tied to any tagged entity.

 

If you encounter any issues, don't hesitate to ask in Skylords Reborn Map Making Discord.

 

 Content

splitter.png.b88958376f2b49606f513de34d9a3733.png

  • Default Scripts
  • Tagged Entity or Script Group Scripts
  • _main.lua
  • _scriptgroups.lua
  • _spawngroups.lua
  • _globalvars.lua
  • _scriptlist.lua
  • Next Chapter

 

 Default Scripts

splitter.png.b88958376f2b49606f513de34d9a3733.png

BattleForge automatically loads some predetermined scripts when starting the map.
I have named these scripts the
default scripts.

The scripts the game automatically loads are:

  • scripts that are named after a tagged entity or a script group
     
  • _main.lua - this is the main script of the map, as such, every map needs to have a _main.lua script
     
  • _scriptgroups.lua - you define script groups in this file
     
  • _spawngroups.lua - here, you define the waves for warfare patterns
     
  • _globalvars.lua - you can have global LUA variables in this file, and reference them in any other script in your map
     
  • _scriptlist.lua - here you can declare your own independent scripts, that are not tied to any entity

 

 Tagged Entity or Script Group Scripts

splitter.png.b88958376f2b49606f513de34d9a3733.png

BattleForge automatically detects scripts, that share the name with a tagged entity or a script group.

For example:
If you have an entity on the map tagged big_guy - you can create a script named big_guy.lua and it will automatically load upon map start.
Same with script groups, if you have a script group named
sg_small_guys, you can create a script named sg_small_guys.lua and it will be automatically loaded.

 

These scripts have one downside, as they only work for as long as the entity / entities are alive.

Once the entity is dead, and there is no OnRespawnEvent in the script, the script will stop working.

 

 

 _main.lua

splitter.png.b88958376f2b49606f513de34d9a3733.png

As stated above, the _main.lua script is the main script of the map.

You can script general functionality in this script as it is not tied to any entity on the map.

In official development, this script is mostly used for implementing difficulties or starting global timers.

 

 

 _scriptgroups.lua

splitter.png.b88958376f2b49606f513de34d9a3733.png

We went over the _scriptgroups.lua file in the Script Groups, Script Areas and Script Paths chapter.

We define our script groups in this file, and add any adjustments to script groups for different difficulties.

Example of the script

image.png

 

 

 _spawngroups.lua

splitter.png.b88958376f2b49606f513de34d9a3733.png

_spawngroups.lua is used for warfare patterns.
Warfare patterns are used to easily create waves of enemies, control them and have them respawn.

We will dedicate a whole chapter to warfare patterns.

 

 

 

 _globalvars.lua

splitter.png.b88958376f2b49606f513de34d9a3733.png

Sometimes, you want to use the same value in multiple places in your script, or even in multiple scripts.

You can either type  the value manually everywhere, or you can declare it as a global variable - giving you access to the same value in all your scripts.

We can do that through _globalvars.lua.
Inside the script, you just need to name your variable and assign it a value, like this.

image.png

Then, you can reference the global variables in any script.
In my case - reference 
global_respawn_seconds to get a value of 20, or number_of_enemies to get a value of 5.

image.png   image.png

_globalvars.lua makes it also very easy, if you want to change global variables based on difficulties.
In my case - I can shorten the global respawn time and increase the number of enemies on higher difficulties.

image.png

Here is the script, if you want to make use of this on your map.
I will be covering ifs and loops in a separate chapter.

_globalvars.lua

 

 

 _scriptlist.lua

splitter.png.b88958376f2b49606f513de34d9a3733.png

As stated above, scripts that are tied to entites on the map only work for as long as the entity is alive.
While you can design around this, it is not ideal and after a while, you might have trouble finding specific events.

In _scriptlist.lua you can declare "independent" scripts.
You can name them whatever you like, and these scripts will execute their events regardless of any entity on the map.

We can, for example, create a script called map_start.lua, where we will handle the setup of the map - outcries, objectives and fog of war.
Then, create a
win_lose.lua script, where we will handle all the victory and game over events.

For the game to recognize these scripts, we need to declare them in the _scriptlist.lua - so we also need to create that.

image.png

Inside the _scriptlist.lua, we need to return the names of our independent scripts, like this.

image.png

We will return a list of the names of our scripts in parenthesis, with the .lua extension. The names are separated by commas.

You can also write this into one line, I just like to separate them into multiple lines for better readability.

image.png

Generally, you want to script all specific functionality into separate scripts for clarity.
Having everything in the _main script can lead to a mess of hundreds, if not thousands of lines of code, and working with the script becomes very inconvenient.

Compare that to separating the functionality into individual scripts like: boss_behaviour.lua, objectives.lua, main_gate_opening.lua etc. Each script having only a couple of events, that are all tied to a specific function.
I think you can see the benefit of doing this.

 

 

 Next Chapter

splitter.png.b88958376f2b49606f513de34d9a3733.png

This might have been a bit complex. But these special scripts become essential as you start creating more intricate maps.

The next chapter covers script group member scripts, which allow you to do some neat stuff with individuals inside a script group.

 

 Creating Member Scripts 

 

Middle_splitter.png.a770f452e94ed383c001e9d7af974010.png

Edited by R4bitF00t
Metagross31 likes this
Link to comment
Share on other sites

  • R4bitF00t changed the title to Map Editor Tutorial - Default Script Files

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use