Skip to content

Configuration files

dgcor edited this page May 15, 2021 · 3 revisions

Configuration files

DGEngine use JSON files to create user interfaces and everything that happens in-game.
These JSON files are not 100% valid JSON files, since you can have repeated elements (not standard JSON).
They are processed in order.

First, let's analyse the provided main.json.

{
  "title" : "Diablo",
  "version": "1.09",
  "refWindowSize": [640, 480],
  "minWindowSize": [800, 600],
  "windowSize": [800, 600],
  "framerate": 60,
  "keepAR": true,
  "stretchToFit": true,
  "smoothScreen": true,
  "init": true,
  "mountFile": [
    { "file": "DIABDAT.zip", "append": true }
  ],
  "action": {
    "name": "if.fileExists",
    "param1": "ui_art/title.pcx",
    "then": { "name": "load", "file": "ui/loadMain.json" },
    "else": { "name": "load", "file": "ui/dataMissing.json" }
  }
}

title - String that is shown in the game window's title.

version - String that identifies the version. Can be used with if clauses when making mods that use previous game files.

refWindowSize - Array with reference width and height. Used to position game elements on screen. Diablo's reference size is [640, 480], so if you add an element at position [10, 10] that is anchored to nothing, it will be positioned in the appropriate screen position of the current window size.
Default value is [640, 480].

minWindowSize - Array with the minimum window width and height. You can't resize the window below this.
Default value is [640, 480].

windowSize - Array with the current window width and height. Change this to resize the game window.
Default value is [640, 480].

framerate - Game frame rate. Use value between 30 and 60.
Default value is 60.

keepAR - Boolean that defines if game windows keeps the aspect ratio when resizing and stretching is on.
Default value is true.

stretchToFit - Boolean that defines if the game windows stretches the content when resized. It uses the minWindowSize as the stretching size.
Default value is false.

init - initializes (opens) the game window. call only once at game initialization.

To see all of the supported options, see:

https://github.com/dgcor/DGEngine/blob/master/src/Parser/ParseFile.cpp

action

"action": {
  "name": "if.fileExists",
  ...
}

To see more about actions, check the Actions wiki page.

mount

"mountFile": {
  "file": "DIABDAT.zip",
  "append": true
}

file - Relative path in relation to the initial game file's path used. Required.
append - Append to game file's search path. Use to define the order in which to search for game files when mounting multiple archives. Default is false.
mount - Path to mount the archive in. Use to mount in a path different from root. Default is ``.

Resource Loading

Resources must be loaded before using them. The same resource can be used with many drawables.
All resources have the following (one exception):

id - Resource id used when creating a drawable that uses the resource. Required.
file - Resource full file path on disk. Required.

Here is a list of resources currently supported:

audio
bitmapFont
celFile
celTexture
font
palette
sound
texture

font

"font": {
  "id": "liberationSerif",
  "file": "res/LiberationSerif-Regular.ttf"
}

texture

"texture": {
  "id": "smlogo",
  "file": "ui_art/smlogo.pcx",
  "mask": "0x00FF00"
}

mask - colour to use as transparent mask. Optional.

Drawables

Drawables are shown on screen. They implement the UIObject interface.
All drawables have the following:

id - Drawable id. Required.
anchor - Anchor. Default is ["top", "left"].
position - Position on screen. Default is [0, 0].
visible - Visible flag. Default is true.

animation

"animation": {
  "id": "smlogo",
  "texture": "smlogo",
  "frames": 15,
  "position": [125, 0],
  "anchor": "none",
  "refresh": 50
}

texture - Animation texture. Required.
frames - Number of frames. Animation textures will be vertically split by this number to animate.
refresh - Refresh rate in milliseconds. Default is 50.

image

"image": {
  "id": "mainmenu",
  "texture": "mainmenu",
  "anchor": "none"
}

texture - Image texture. Required.