Difference between revisions of "Levelgen Tutorial 02"
(Created page with "Category:Scripting = Introduction = Welcome to the Bitfighter levelgen tutorial. Before we get started, here is a list of things you should know, and things you will lear...") |
(levelgen -> bf) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
= Introduction = | = Introduction = | ||
− | Welcome to the | + | Welcome to Part 02 of the Levelgen Tutorial. In this lesson, we will learn how to create new game objects, and add them to the level. |
− | == | + | == Prerequisites == |
− | + | You should have completed [[Levelgen Tutorial 01]]. Specifically, you should know: | |
+ | * How to create levelgen scripts and use them in a file. | ||
+ | * What the <tt>main()</tt> function is for. | ||
== Outcomes == | == Outcomes == | ||
When finished with this tutorial, you should know: | When finished with this tutorial, you should know: | ||
− | * How to create and | + | * How to create a new <tt>TextItem</tt> and add it to the game. |
− | + | * How to set the text of a <tt>TextItem</tt>. | |
− | * How to | + | |
− | + | ||
− | = | + | = Code = |
− | + | Save the following code as a .levelgen file, and create an empty level which uses it. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<source lang="lua"> | <source lang="lua"> | ||
function main() | function main() | ||
− | + | local myTextItem = TextItem.new() | |
− | local | + | myTextItem:setText("Hello, world!") |
− | + | bf:addItem(myTextItem) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
end | end | ||
</source> | </source> | ||
− | + | Now test the level. If everything went well you should see a text item that says "Hello World!" right in the center of your empty level. Behold, the magic of levelgens! | |
− | If | + | If it didn't work, check the [[Troubleshooting]] page of the wiki. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
= How It Works = | = How It Works = | ||
− | |||
− | |||
<source lang="lua"> | <source lang="lua"> | ||
function main() | function main() | ||
</source> | </source> | ||
− | + | As in every levelgen, we put the main chunk of code in the <tt>main</tt> function. | |
<source lang="lua"> | <source lang="lua"> | ||
− | local | + | local myTextItem = TextItem.new() |
</source> | </source> | ||
− | Here we are creating a new TextItem and storing it into the variable <tt> | + | Here we are creating a new TextItem and storing it into the variable <tt>myTextItem</tt> for later use. Remember that variables can refer to anything in Lua, whether it be a number, a string of text, a game object, or "nothing". Here, it's referring to our new TextItem, which is a game object. |
+ | |||
+ | Now we will set the text of this TextItem to say hello: | ||
<source lang="lua"> | <source lang="lua"> | ||
− | + | myTextItem:setText("Hello, world!") | |
</source> | </source> | ||
− | This line | + | |
+ | This line means "set the text of <tt>myTextItem</tt> to <tt>Hello, world!</tt>". | ||
+ | |||
+ | The part before the colon (the <tt>:</tt> sign) is our variable name (<tt>myTextItem</tt>). The part after it is the function we're calling (<tt>setText</tt>). | ||
+ | |||
+ | Again, we are passing some text as the argument to a function. This time, it is <tt>setText</tt> instead of <tt>print</tt>, but as you can see there is not much of a difference in how we write it. | ||
+ | |||
+ | Next, we must actually add our TextItem to the game: | ||
<source lang="lua"> | <source lang="lua"> | ||
− | + | bf:addItem(myTextItem) | |
</source> | </source> | ||
− | After creating our TextItem and setting it up as we'd like, we must add it to the game. To do this, we call <tt> | + | After creating our TextItem and setting it up as we'd like, we must add it to the game. To do this, we call <tt>bf:addItem</tt>. <tt>bf</tt> is a variable which is predefined by Bitfighter when it runs a lua script. This variable represents the currently running script, and provides functions for doing things to the game. <tt>bf:addItem</tt> takes one argument, the object to add to the game. In this case, it is our TextItem instace, <tt>myTextItem</tt>. |
− | ''Note:'' If you do not call <tt>addItem</tt> on objects you create with <tt>.new()</tt>, they will not appear in-game. | + | ''Note:'' If you do not call <tt>bf:addItem</tt> on objects you create with <tt>.new()</tt>, they will not appear in-game. |
<source lang="lua"> | <source lang="lua"> | ||
end | end | ||
</source> | </source> | ||
− | + | And again, we end our <tt>main</tt> function. | |
= Conclusion = | = Conclusion = | ||
− | If you understand everything mentioned in the Outcomes section above, you are ready for [[Levelgen Tutorial | + | If you understand everything mentioned in the Outcomes section above, you are ready for [[Levelgen Tutorial 03]]. |
Latest revision as of 22:22, 10 October 2013
Introduction
Welcome to Part 02 of the Levelgen Tutorial. In this lesson, we will learn how to create new game objects, and add them to the level.
Prerequisites
You should have completed Levelgen Tutorial 01. Specifically, you should know:
- How to create levelgen scripts and use them in a file.
- What the main() function is for.
Outcomes
When finished with this tutorial, you should know:
- How to create a new TextItem and add it to the game.
- How to set the text of a TextItem.
Code
Save the following code as a .levelgen file, and create an empty level which uses it.
function main() local myTextItem = TextItem.new() myTextItem:setText("Hello, world!") bf:addItem(myTextItem) end
Now test the level. If everything went well you should see a text item that says "Hello World!" right in the center of your empty level. Behold, the magic of levelgens!
If it didn't work, check the Troubleshooting page of the wiki.
How It Works
function main()
As in every levelgen, we put the main chunk of code in the main function.
local myTextItem = TextItem.new()
Here we are creating a new TextItem and storing it into the variable myTextItem for later use. Remember that variables can refer to anything in Lua, whether it be a number, a string of text, a game object, or "nothing". Here, it's referring to our new TextItem, which is a game object.
Now we will set the text of this TextItem to say hello:
myTextItem:setText("Hello, world!")
This line means "set the text of myTextItem to Hello, world!".
The part before the colon (the : sign) is our variable name (myTextItem). The part after it is the function we're calling (setText).
Again, we are passing some text as the argument to a function. This time, it is setText instead of print, but as you can see there is not much of a difference in how we write it.
Next, we must actually add our TextItem to the game:
bf:addItem(myTextItem)
After creating our TextItem and setting it up as we'd like, we must add it to the game. To do this, we call bf:addItem. bf is a variable which is predefined by Bitfighter when it runs a lua script. This variable represents the currently running script, and provides functions for doing things to the game. bf:addItem takes one argument, the object to add to the game. In this case, it is our TextItem instace, myTextItem.
Note: If you do not call bf:addItem on objects you create with .new(), they will not appear in-game.
end
And again, we end our main function.
Conclusion
If you understand everything mentioned in the Outcomes section above, you are ready for Levelgen Tutorial 03.