HPL2/Tutorials/Scripts/Debugging

From Frictional Wiki
< HPL2‎ | Tutorials
Revision as of 14:48, 9 July 2020 by Maintenance script (talk | contribs) (Upload from wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introduction

Hello, stepper here! Today i am going in the depths of finding problems yourself! So you don't have to wait for answers and do it quickly.


Error menu

As always you see a error menu when you start the map with the error. There are error with misplacing, spelling errors, all that kind of stuff.
The menu looks like this:


While this error is hard to find in a large script. I put it in a short script.


[1]


As you can see is in wich map it is included, and what the name is. (custom_stories/name /maps/mapname.hps)
As you also can see is the main (132, 2): ERR : Unexpected end of file.
The 132 in my line is the position, this is really hard to find in Notepad. But easy in Notepad++, it's on the side.
So, i now know 132 is the position from up to down in my script. 2 is the position in that line. (left to right)
So, the position is 132 to down and 2 to right. Now you can go look what is missing, or wrong.


Fixing the errors.

Debugging the error that cause the game to crash before it even starts is a pain; fortunately, you don't have to restart the game every time - there's an easier way to do it, assuming you've set up your development environment correctly. Make a copy of the your current, erroneous script text, and store it somewhere for the time being. The goal is to make the map load correctly. So, either revert your map script to an earlier, working version, or just delete everything, and just put in an empty OnStart() method. Also, make sure that the game launches in windowed mode, so that you can edit the script while the game is running.


Once the game loads the map successfully, bring up the development menu (F1), and then go to your script editor, delete everything, and paste back the original, error producing code. Save, switch back to the game window, and reload the script. This time, the game will show you an error message, but it will not crash. This is a huge timesaver! Take note of the error message; it will usually give you a reasonably accurate description of what the problem is (although sometimes it might be a bit cryptic), and it will point you to the line in the file where the problem appears to be (often, it is the correct line, sometimes, it is one line above, or below, or close by). Note that the code editors like Notepad++ or Geany show you what line you're on in their status line. Also, they support syntax highlighting, with will greatly improve the readability of your code and also help you find some of the common errors. These are third-party tools, and are free.


Now we are going to fix the errors. I have put some errors right here, if you have another error, please Message me (stepper) on the forums.

Unexpected end of file

This error can be the most common, it's mostly the missing of another " somewhere, the most irritating of this is, you will need to look over the whole script for to know where it is.


[2]


Oh look, i found it. My error tells that it's on (132, etc…) altough it's actually on (19, etc…) (not shown on the image) So now i just replace it. And Done!


However, if you use syntax highlighting capability that comes with code editors, you will probably be able to find the problem spot more quickly. This is because, if syntax highlighting is enabled, string literals (the things written in double quotes, "like this") are displayed in a different color then the rest of the text; so if you forget a closing quote, there will be a piece of your code that will look a bit wrong. Your error will be there. Even so, the error still might not be too easy to spot, but it will be easier compared to not having syntax highlighting, when the text looks uniformly black.


In any case, having syntax highlighting will help you avoid this type of error as you write the script, since you'll be immediately able to see that you've accidentally omitted a quotation mark.


Here's how syntax highlighting looks like:


Shlcode.jpg


HPL2 engine uses AngelScript for scripting, but since it's syntax is similar to the languages in the C family, you can set up your editor to use syntax highlighting for C# or C++, or, if you're using Notepad++ or Geany, configure your editor as described on the corresponding page on this wiki.