User Tools

Site Tools


This is an old revision of the document!

Config encryption


Before speaking of encryption, let's talk quickly about config file organization.

As you know, you can include as many config files you want from a single file (cf. config includes).
In addition to allowing an easy development process (gathering config by type, for example), it is also very useful when you release your game and you want the end-user to be able to tweak some parts of the config but not all of them.

For example, in the main config file, you can include a file that doesn't exist during the development (the include will be simply ignored), but that can be used by the end-user to store its own config values.

For example, here's a simple scheme that can be used in the main config file.

; First we define here all our default settings for values that can be overidden by the end-user

; We now include the end-user modifiable file that will be stored in config.ini in this example
@[email protected]

; Finally we put all the settings that we don't want to end user to mess up with
; If the end-user did provide values for them, they'll be overidden here anyway

In the same way, we can add included files for customized inputs, for example. We would add it just after the inclusion of config.ini.
If the file exist it will be loaded, otherwise, if there's no custom saved controles, it will simply be ignored.
As a reminder, you can save the whole input settings by calling:


So in the end, we would have this kind of scheme for our main config file.

; Default settings that are allowed to be overridden by end-user

; End-user custom settings
@[email protected]

; End-user custom inputs
@[email protected]

; Non-overridable config stuff (ie. everything else)

And, of course, you might not want the end-user to mess up with this file, so we now need to encrypt it when releasing our game.


Let's clear something about the encryption itself right now: it is not a safe encryption. It merely is a visual encryption that prevents human reading of your file. But it can be easily decrypted by someone that has your encryption key as it's a very fast, non-robust encryption.

Well, now that we've said that, let's see how we can use it! =)

First of all, we need an encryption key (or pass phrase). The longer, the better. If you don't provide any, orx's default one will be used, so you might want to change it for one of yours so that others can (too easily) decrypt your stuff. ;-)

To set the encryption key, you need to call:


Of course, as orx will load its main config file it is initialized, you need to issue the call to orxConfig_SetEncryptionKey() before initializing orx. It would look something like this:

int main(int argc, char **argv)
  // Sets our encryption key
  // Executes orx for our game
  orx_Execute(argc, argv, MyInit, MyRun, MyExit);
  // Done!
  return EXIT_SUCCESS;

But one question remains: how can we encrypt our config files? There are two possible answers: either doing it by code (calling orxConfig_Save(“FileName”, orxTRUE, MyFilterCallback)) or by using the command line tool called orxCrypt. =)


WIP =)

en/orx/config/encryption.1254402030.txt.gz · Last modified: 2017/05/30 00:50 (5 years ago) (external edit)