Okay, so I’ve been getting into 2D game developing/programming , and many games I’ve seen use some sort of scripting language too. So I’m wondering – What’s the purpose of using scripts in games? I know there’s not simple one reason answer, and I’ve been trying to consider all the possibilities. Here’s what I ‘think’ I know so far:
1) Scripts allow for changing the game without having to re-compile.
2) Scripts are easier for non-programmers to use.
3) Scripts allow me to separate the engine from the game itself allowing me to make other games with the same components quicker?
That’s about all I’m aware of. My next question is, if I’m going to be Dev/programming a game alone – do I really need to use scripts? Or could I prototype the game using something like python or ruby, to allow for rapid testing, then rewrite the code in C++ saving time and compiler bugs, etc?
Another thing I’m wondering, Am I better off using Ruby or Python since I’m most experienced with those? Or should I use Lua, Perl or something else if it better fits what I aim to achieve? Speaking on that matter, what really should I use scripts for? should I use them to position and model game menu UI’s, write/read save-files, load map levels, hold arrays or structures of game terminology such as “New Game” or “Quit,” all of the above, none of the above?
If I make use of scripts, won’t that allow game mechanics to be edited by the end user? Or is there a way to package the scripts into one compressed file that the engine can read?
Most basically, I’m wondering:
What should I use scripting in my game for? And why?
Do I need use scripting languages if I’m working alone or with programmers as opposed to Devs?
What scripting language ‘should’ I use if I were to be making platformers, RPGs, or what-have-you?
your top 3 reasons are all 100% correct and are the main reasons for using scripting languages along with your game engine.
Personally I’ve only really had experience with Lua through Luabind. It’s a little tricky to setup but it was worth it. What you can do with scripting languages is expose the data structures and/or functionality that you want the ‘user’ in this case yourself, to be able to use. Generally speaking the only game mechanics etc that can be editted would be the ones you allowed them to.
What should I use scripting in my game for? And why?
Asset loading, exposing features/types, ie, for our game engine (written in c++), we had a base level, and then many different types of level inherriting from it, such as wave level, death match, etc. The user simply states in the script what type of level they need, and then chucks in the assets here too. In my demo we had;
Level=”wavelevel”
–Level Initial number of enemies
EnemyNumbers=”3″
–Level Total number of waves
WaveNumbers=”4″
–Wave coefficient
WaveCoeff=”1.1″
–Size of terrain
TerrainSize=”256″
–Terrain file
TerrainFile=”resource/Models/mountainous.raw”
Don’t worry too much about the numbers and all of that.
As you can see that does some asset loading as well as determining the level type
We also gave a lot of control for the AI to scripts, in fact, the data structures were almost completely exposed to Lua.
Do I need use scripting languages if I’m working alone or with programmers as opposed to Devs?
Yes no maybe? We all prefer ‘real’ coding of course. If you can make your game engine abstract enough to build completely different games just with Lua, then it means you’ve done a great job and have designed it very well.
The other thing you have to think about, especially if you’re game engine is quite huge, and lets face it, there isn’t really going to be a small one, each time you compile, it can take minutes! It’s the linker that’s taking time here.
What scripting language ‘should’ I use if I were to be making platformers, RPGs, or what-have-you?
I’ve only ever used Lua, so that’s the only advice I can give here.
Hope this is helpful info for you.