HPL3/Scripting/Scripting Guide/Setting up CodeLite

From Frictional Wiki
< HPL3
Revision as of 21:59, 5 August 2020 by TiMan (talk | contribs)
Jump to navigation Jump to search

CodeLite - Introduction

As mentioned Scripting in HPL3 can look a lot like regular programming, but less complicated.

Because of that, we need tools that will be able to aid us when we write our code. For HPL2, Notepad++ or even Notepad were enough for that. This time around, something more powerful is needed.

We need a tool that will be able to provide us with easy access to documentation on the fly, autocomplete our code and provide easy ways to view the structure of our code, as well as referenced code from other script files. For this, we will use a program called CodeLite.

CodeLite is very much like a text editor, but much more programming-oriented than Notepad++. It is the tool used officially by Frictional Games to develop their HPL3 games. It will make our job much easier and reduce the chances of making errors in our code, which will eventually make our workflow faster and more efficient.

For the scripting guide, CodeLite 12.0.0 will be used, which is the latest stable release that can work with HPL3 without any errors or bugs.

In addition, you should download the zip file that can be found in this page, it contains some additional themes, colors and keywords, which will result in a better display of the script files.

Setting-up CodeLite

  1. Download CodeLite version 12.0.0 or lower from here.
  2. Launch CodeLite and configure:
    1. Settings→Code Completion→Display and Behavior: Activate "Keep function signature un-formated".
    2. Settings→Code Completion→ctags→Search Paths: Click Add.. and navigate to the SOMA game folder and select the script/ folder.
    3. Settings→Code Completion→Colouring: Enable colour local variables.
    4. (optional) Settings→Code Completion→Colouring: Enable colour workspace tags, also enable enumerator but leave the rest with default setting.
    5. (optional) Settings→Code Completion: Configure the rest to your liking. For example, auto-show & case sensitive enabled.
    6. Settings→Colours and Fonts→Customize, select C++ and in Global Settings add *.hps to the File Extension list.
  3. Create a new workspace. Do this by going to Workspace menu and select "New Workspace…". Pick C++ Workspace. Name is as you like and set the workspace path as you like as long as it is on the same drive as SOMA.
  4. Create a new project in the workspace. Do this by right-clicking on the workspace in the list to the left and choose the Create New Project option. Select others → Non-code project. Name as you like and leave rest as default.
  5. Add one folder to the project. Right-click on the project folder and choose New Virtual Folder. Name it _api (you can create others later when you know more).
  6. Time to add files to the project.
    1. Right-click on _api and Add An Existing File, add the file "SOMA GAME FOLDER LOCATION/hps_api.hps" (might need to launch the game executable one time to have this file created).
    2. Right-click on the project in the list to the left, pick Import Files From Directory. Navigate to the SOMA GAME FOLDER and select it. In the next window, check the boxes for maps and scripts and make sure that the *.hps file extension is present in the list of extentions to import. Click OK.

That should be it, you should now have three top folders in your project and a lot of sub-folders with various script files. Hps files should be color coded and parsed for completion as you open them in the project. If they do not, you can re-tag the workspace, project or the single file to see if it helps.

Start typing something, for example Entity (depending on configuration this can be case sensitive!) and a drop down should appear showing all the functions that begin with Entity and the documentation for each selected function. You can force things to appear using these shortcuts:

  • ctrl-space will bring up the completion drop down.
  • ctrl-shift-space will bring up hints when inside the () of a function.

Issues & Info

  • Write Class@ object and not Class @object, the later will screw up coloring.
  • If you loose all coloring and can't get it back, just re-tag the workspace.
  • Parameters with &in will break coloring of parameter, but will have no other side-effects.

Extra Info

Info about Settings→Colours and Fonts→Customize→Styles→Edit Lexer keyword sets, Set 0 to Set 4:

  • Set 0 User configured list of keywords not already parsed. Can be edited.
  • Set 1 Unknown.
  • Set 2 Doxygen keywords, words here will be colored in comments using /** codeblocks when prepended with @ ie @var int myInt. Can be edited.
  • Set 3 Used for the setting "Colour workspace tags", automatically created (not visibly). Can NOT be edited.
  • Set 4 Used for the setting "Colour local variables", automatically created (not visibly). Can NOT be edited.