Cleanups.

This commit is contained in:
Relintai 2024-05-03 16:00:11 +02:00
parent 4e41d95bf6
commit ad8f5a11a4
16 changed files with 203 additions and 373 deletions

View File

@ -1,10 +1,8 @@
Exporting # Exporting
=========
Overview ## Overview
--------
Now that you have a working game, you probably want to share your success with Now that you have a working game, you probably want to share your success with
others. However, it's not practical to ask your friends to download Pandemonium others. However, it's not practical to ask your friends to download Pandemonium
@ -20,8 +18,7 @@ Note:
If you haven't made "Dodge the Creeps" yourself yet, please read If you haven't made "Dodge the Creeps" yourself yet, please read
`doc_your_first_2d_game` before continuing with this tutorial. `doc_your_first_2d_game` before continuing with this tutorial.
Preparing the project ## Preparing the project
---------------------
In *Dodge the Creeps*, we used keyboard controls to move the player's character. In *Dodge the Creeps*, we used keyboard controls to move the player's character.
This is fine if your game is being played on a PC platform, but on a phone This is fine if your game is being played on a PC platform, but on a phone
@ -127,16 +124,14 @@ gdscript GDScript
$CollisionShape2D.set_deferred("disabled", true) $CollisionShape2D.set_deferred("disabled", true)
``` ```
Setting a main scene ## Setting a main scene
--------------------
The main scene is the one that your game will start in. For this The main scene is the one that your game will start in. For this
*Dodge the Creeps* example, in *Dodge the Creeps* example, in
**Project -> Project Settings -> Application -> Run**, set **Main Scene** **Project -> Project Settings -> Application -> Run**, set **Main Scene**
to `Main.tscn` by clicking the folder icon and selecting it. to `Main.tscn` by clicking the folder icon and selecting it.
Export templates ## Export templates
----------------
To export the project, you need to download the *export templates* from the To export the project, you need to download the *export templates* from the
http://pandemoniumengine.org/download. These templates are optimized versions of the engine http://pandemoniumengine.org/download. These templates are optimized versions of the engine
@ -164,8 +159,7 @@ Note:
Export templates are bound to a specific Pandemonium version. If you upgrade Export templates are bound to a specific Pandemonium version. If you upgrade
Pandemonium, you must download templates that match the new version. Pandemonium, you must download templates that match the new version.
Export presets ## Export presets
--------------
Next, you can configure the export settings by clicking on **Project -> Export**. Next, you can configure the export settings by clicking on **Project -> Export**.
@ -184,14 +178,12 @@ of your game, such as an `.apk` for Android or an `.exe` for Windows.
In the **Resources** and **Features** tabs, you can customize how the game is In the **Resources** and **Features** tabs, you can customize how the game is
exported for each platform. We can leave those settings alone for now. exported for each platform. We can leave those settings alone for now.
Exporting by platform ## Exporting by platform
---------------------
In this section, we'll walk through the process for each platform, In this section, we'll walk through the process for each platform,
including any additional software or requirements you'll need. including any additional software or requirements you'll need.
PC (Linux/macOS/Windows) ### PC (Linux/macOS/Windows)
~~~~~~~~~~~~~~~~~~~~~~~~
Exporting PC platforms works the same across the three supported operating Exporting PC platforms works the same across the three supported operating
systems. Open the export window and click **Add...** to create the preset(s) you systems. Open the export window and click **Add...** to create the preset(s) you
@ -215,8 +207,7 @@ Note:
than the default one, you need to change it manually. See than the default one, you need to change it manually. See
`doc_changing_application_icon_for_windows`. `doc_changing_application_icon_for_windows`.
Android ### Android
~~~~~~~
Tip: Tip:
@ -273,8 +264,7 @@ a **One-click Deploy** button to appear in Pandemonium's playtest button area:
Clicking this button builds the APK and copies it onto your device in one step. Clicking this button builds the APK and copies it onto your device in one step.
iOS ### iOS
~~~
Note: Note:
@ -302,8 +292,7 @@ The Xcode build procedure is beyond the scope of this tutorial.
See https://help.apple.com/xcode/mac/current/#/devc8c2a6be1 See https://help.apple.com/xcode/mac/current/#/devc8c2a6be1
for more information. for more information.
HTML5 (web) ### HTML5 (web)
~~~~~~~~~~~
Click **Export Project** on the HTML5 preset. We don't need to change any Click **Export Project** on the HTML5 preset. We don't need to change any
of the default settings. of the default settings.

View File

@ -1,10 +1,8 @@
Exporting projects # Exporting projects
==================
Why export? ## Why export?
-----------
Originally, Pandemonium did not have any means to export projects. The Originally, Pandemonium did not have any means to export projects. The
developers would compile the proper binaries and build the packages for developers would compile the proper binaries and build the packages for
@ -14,8 +12,7 @@ When more developers (and even non-programmers) started using it, and
when our company started taking more projects at the same time, it when our company started taking more projects at the same time, it
became evident that this was a bottleneck. became evident that this was a bottleneck.
On PC ### On PC
~~~~~
Distributing a game project on PC with Pandemonium is rather easy. Drop Distributing a game project on PC with Pandemonium is rather easy. Drop
the Pandemonium binary in the same directory as the `project.pandemonium` file, the Pandemonium binary in the same directory as the `project.pandemonium` file,
@ -32,8 +29,7 @@ tools like the editor and debugger.
Finally, Pandemonium has a simple but efficient system for Finally, Pandemonium has a simple but efficient system for
`creating DLCs as extra package files ( doc_exporting_pcks )`. `creating DLCs as extra package files ( doc_exporting_pcks )`.
On mobile ### On mobile
~~~~~~~~~
The same scenario on mobile platforms is a little worse. The same scenario on mobile platforms is a little worse.
To distribute a project on those devices, a binary for each of To distribute a project on those devices, a binary for each of
@ -52,8 +48,7 @@ that has been standardized for more than a decade, but mobile devices
use different formats for texture compression, such as PVRTC (iOS) or use different formats for texture compression, such as PVRTC (iOS) or
ETC (Android). ETC (Android).
Export menu ## Export menu
-----------
After many attempts at different export workflows, the current one has After many attempts at different export workflows, the current one has
proven to work the best. At the time of this writing, not all platforms are proven to work the best. At the time of this writing, not all platforms are
@ -86,8 +81,7 @@ export for that platform until they resolve it:
At that time, the user is expected to come back to the documentation and follow At that time, the user is expected to come back to the documentation and follow
instructions on how to properly set up that platform. instructions on how to properly set up that platform.
Export templates ### Export templates
~~~~~~~~~~~~~~~~
Apart from setting up the platform, the export templates must be Apart from setting up the platform, the export templates must be
installed to be able to export projects. They can be obtained as a installed to be able to export projects. They can be obtained as a
@ -100,9 +94,7 @@ option in the editor:
![](img/exptemp.png) ![](img/exptemp.png)
### Resource options
Resource options
~~~~~~~~~~~~~~~~
When exporting, Pandemonium makes a list of all the files to export and then When exporting, Pandemonium makes a list of all the files to export and then
creates the package. There are 3 different modes for exporting: creates the package. There are 3 different modes for exporting:
@ -132,8 +124,7 @@ non resource files such as `.txt`,`.json` and `.csv` to be exported with
the project. The second filter can be used to exclude every file of a certain the project. The second filter can be used to exclude every file of a certain
type without manually deselecting every one. For example, `.png)` files. type without manually deselecting every one. For example, `.png)` files.
Exporting from the command line ## Exporting from the command line
-------------------------------
In production, it is useful to automate builds, and Pandemonium supports this In production, it is useful to automate builds, and Pandemonium supports this
with the `--export` and `--export-debug` command line parameters. with the `--export` and `--export-debug` command line parameters.
@ -182,8 +173,7 @@ See also:
See `doc_command_line_tutorial` for more information about using Pandemonium See `doc_command_line_tutorial` for more information about using Pandemonium
from the command line. from the command line.
PCK versus ZIP pack file formats ## PCK versus ZIP pack file formats
--------------------------------
Each format has its upsides and downsides. PCK is the default and recommended Each format has its upsides and downsides. PCK is the default and recommended
format for most use cases, but you may want to use a ZIP archive instead format for most use cases, but you may want to use a ZIP archive instead

View File

@ -1,10 +1,8 @@
Exporting packs, patches, and mods # Exporting packs, patches, and mods
==================================
Use cases ## Use cases
---------
Oftentimes one would like to add functionality to one's game after it has been Oftentimes one would like to add functionality to one's game after it has been
deployed. deployed.
@ -18,8 +16,7 @@ Examples of this include...
These tools help developers to extend their development beyond the initial These tools help developers to extend their development beyond the initial
release. release.
Overview of PCK files ## Overview of PCK files
---------------------
Pandemonium enables this via a feature called **resource packs** (PCK files, Pandemonium enables this via a feature called **resource packs** (PCK files,
with extension `.pck`). with extension `.pck`).
@ -51,8 +48,7 @@ PCK files usually contain, but are not limited to:
The PCK files can even be an entirely different Pandemonium project, which the The PCK files can even be an entirely different Pandemonium project, which the
original game loads in at runtime. original game loads in at runtime.
Generating PCK files ## Generating PCK files
--------------------
In order to pack all resources of a project into a PCK file open the project In order to pack all resources of a project into a PCK file open the project
and go to Project/Export and click on “Export PCK/Zip”. Also make sure to have and go to Project/Export and click on “Export PCK/Zip”. Also make sure to have
@ -87,8 +83,7 @@ Note:
use a tool-build of the engine (for security), so it's best to keep use a tool-build of the engine (for security), so it's best to keep
the modding tool and game separate. the modding tool and game separate.
Opening PCK files at runtime ## Opening PCK files at runtime
----------------------------
To import a PCK file, one uses the ProjectSettings singleton. The following To import a PCK file, one uses the ProjectSettings singleton. The following
example expects a “mod.pck” file in the directory of the games executable. example expects a “mod.pck” file in the directory of the games executable.
@ -124,8 +119,7 @@ Note:
Then, before loading the resource pack, you need to load its DLL as follows: Then, before loading the resource pack, you need to load its DLL as follows:
`Assembly.LoadFile("mod.dll")` `Assembly.LoadFile("mod.dll")`
Summary ## Summary
-------
This tutorial should illustrate how easy adding mods, patches or DLC to a game This tutorial should illustrate how easy adding mods, patches or DLC to a game
is. The most important thing is to identify how one plans to distribute future is. The most important thing is to identify how one plans to distribute future

View File

@ -1,10 +1,7 @@
# Feature tags
Feature tags ## Introduction
============
Introduction
------------
Pandemonium has a special system to tag availability of features. Pandemonium has a special system to tag availability of features.
Each *feature* is represented as a string, which can refer to many of the following: Each *feature* is represented as a string, which can refer to many of the following:
@ -23,67 +20,40 @@ Features can be queried at run-time from the singleton API by calling:
OS.has_feature(name) OS.has_feature(name)
``` ```
Default features ## Default features
----------------
Here is a list of most feature tags in Pandemonium. Keep in mind they are **case-sensitive**: Here is a list of most feature tags in Pandemonium. Keep in mind they are **case-sensitive**:
+-----------------+--------------------------------------------------------+
| **Feature tag** | **Description** | | **Feature tag** | **Description** |
+=================+========================================================+ |-----------------|--------------------------------------------------------|
| **Android** | Running on Android | | **Android** | Running on Android |
+-----------------+--------------------------------------------------------+
| **HTML5** | Running on HTML5 | | **HTML5** | Running on HTML5 |
+-----------------+--------------------------------------------------------+ | **JavaScript** | `JavaScript singleton ( doc_javascript_eval )` is |
| **JavaScript** | `JavaScript singleton ( doc_javascript_eval )` is |
| | available | | | available |
+-----------------+--------------------------------------------------------+
| **OSX** | Running on macOS | | **OSX** | Running on macOS |
+-----------------+--------------------------------------------------------+
| **iOS** | Running on iOS | | **iOS** | Running on iOS |
+-----------------+--------------------------------------------------------+
| **UWP** | Running on UWP | | **UWP** | Running on UWP |
+-----------------+--------------------------------------------------------+
| **Windows** | Running on Windows | | **Windows** | Running on Windows |
+-----------------+--------------------------------------------------------+
| **X11** | Running on X11 (Linux/BSD desktop) | | **X11** | Running on X11 (Linux/BSD desktop) |
+-----------------+--------------------------------------------------------+
| **Server** | Running on the headless server platform | | **Server** | Running on the headless server platform |
+-----------------+--------------------------------------------------------+
| **debug** | Running on a debug build (including the editor) | | **debug** | Running on a debug build (including the editor) |
+-----------------+--------------------------------------------------------+
| **release** | Running on a release build | | **release** | Running on a release build |
+-----------------+--------------------------------------------------------+
| **editor** | Running on an editor build | | **editor** | Running on an editor build |
+-----------------+--------------------------------------------------------+
| **standalone** | Running on a non-editor build | | **standalone** | Running on a non-editor build |
+-----------------+--------------------------------------------------------+
| **64** | Running on a 64-bit build (any architecture) | | **64** | Running on a 64-bit build (any architecture) |
+-----------------+--------------------------------------------------------+
| **32** | Running on a 32-bit build (any architecture) | | **32** | Running on a 32-bit build (any architecture) |
+-----------------+--------------------------------------------------------+
| **x86_64** | Running on a 64-bit x86 build | | **x86_64** | Running on a 64-bit x86 build |
+-----------------+--------------------------------------------------------+
| **x86** | Running on a 32-bit x86 build | | **x86** | Running on a 32-bit x86 build |
+-----------------+--------------------------------------------------------+
| **arm64** | Running on a 64-bit ARM build | | **arm64** | Running on a 64-bit ARM build |
+-----------------+--------------------------------------------------------+
| **arm** | Running on a 32-bit ARM build | | **arm** | Running on a 32-bit ARM build |
+-----------------+--------------------------------------------------------+
| **mobile** | Host OS is a mobile platform | | **mobile** | Host OS is a mobile platform |
+-----------------+--------------------------------------------------------+
| **pc** | Host OS is a PC platform (desktop/laptop) | | **pc** | Host OS is a PC platform (desktop/laptop) |
+-----------------+--------------------------------------------------------+
| **web** | Host OS is a Web browser | | **web** | Host OS is a Web browser |
+-----------------+--------------------------------------------------------+
| **etc** | Textures using ETC1 compression are supported | | **etc** | Textures using ETC1 compression are supported |
+-----------------+--------------------------------------------------------+
| **etc2** | Textures using ETC2 compression are supported | | **etc2** | Textures using ETC2 compression are supported |
+-----------------+--------------------------------------------------------+
| **s3tc** | Textures using S3TC (DXT/BC) compression are supported | | **s3tc** | Textures using S3TC (DXT/BC) compression are supported |
+-----------------+--------------------------------------------------------+
| **pvrtc** | Textures using PVRTC compression are supported | | **pvrtc** | Textures using PVRTC compression are supported |
+-----------------+--------------------------------------------------------+
Warning: Warning:
@ -97,8 +67,7 @@ Warning:
`call JavaScript code ( doc_javascript_eval )` that reads the browser's `call JavaScript code ( doc_javascript_eval )` that reads the browser's
user agent. user agent.
Custom features ## Custom features
---------------
It is possible to add custom features to a build; use the relevant It is possible to add custom features to a build; use the relevant
field in the *export preset* used to generate it: field in the *export preset* used to generate it:
@ -113,8 +82,7 @@ Note:
running the project from the editor, even if the export preset marked as running the project from the editor, even if the export preset marked as
**Runnable** for your current platform has custom feature tags defined. **Runnable** for your current platform has custom feature tags defined.
Overriding project settings ## Overriding project settings
---------------------------
Features can be used to override specific configuration values in the *Project Settings*. Features can be used to override specific configuration values in the *Project Settings*.
This allows you to better customize any configuration when doing a build. This allows you to better customize any configuration when doing a build.
@ -138,16 +106,14 @@ Note:
tag(s) if you want them to override base project settings on all platforms tag(s) if you want them to override base project settings on all platforms
and configurations. and configurations.
Default overrides ## Default overrides
-----------------
There are already a lot of settings that come with overrides by default; they can be found There are already a lot of settings that come with overrides by default; they can be found
in many sections of the project settings. in many sections of the project settings.
![](img/feature_tags4.png) ![](img/feature_tags4.png)
Customizing the build ## Customizing the build
---------------------
Feature tags can be used to customize a build process too, by writing a custom **ExportPlugin**. Feature tags can be used to customize a build process too, by writing a custom **ExportPlugin**.
They are also used to specify which shared library is loaded and exported in **GDNative**. They are also used to specify which shared library is loaded and exported in **GDNative**.

View File

@ -1,11 +1,9 @@
Exporting for Linux # Exporting for Linux
===================
See also: See also:
This page describes how to export a Pandemonium project to Linux. This page describes how to export a Pandemonium project to Linux.
If you're looking to compile editor or export template binaries from source instead, If you're looking to compile editor or export template binaries from source instead,
read `doc_compiling_for_x11`. read `doc_compiling_for_x11`.

View File

@ -1,11 +1,9 @@
Exporting for macOS # Exporting for macOS
===================
See also: See also:
This page describes how to export a Pandemonium project to macOS. This page describes how to export a Pandemonium project to macOS.
If you're looking to compile editor or export template binaries from source instead, If you're looking to compile editor or export template binaries from source instead,
read `doc_compiling_for_osx`. read `doc_compiling_for_osx`.
@ -13,8 +11,7 @@ See also:
macOS apps are exported as an `.app` bundle, a folder with a specific structure which stores the executable, libraries and all the project files. macOS apps are exported as an `.app` bundle, a folder with a specific structure which stores the executable, libraries and all the project files.
This bundle can be exported as is, packed in a ZIP archive or DMG disk image (only supported when exporting from a computer running macOS). This bundle can be exported as is, packed in a ZIP archive or DMG disk image (only supported when exporting from a computer running macOS).
Requirements ## Requirements
------------
- To enable code signing with Apple Developer ID and notarization, you must export from a computer running macOS with Xcode command line tools installed. - To enable code signing with Apple Developer ID and notarization, you must export from a computer running macOS with Xcode command line tools installed.
- Ad-hoc code signing is supported on all platforms, without additional tools. - Ad-hoc code signing is supported on all platforms, without additional tools.
@ -23,18 +20,15 @@ Requirements
Warning: Warning:
Projects exported without code signing and notarization will be blocked by Gatekeeper if they are downloaded from unknown sources, see the `Running Pandemonium apps on macOS ( doc_running_on_macos )` page for more information. Projects exported without code signing and notarization will be blocked by Gatekeeper if they are downloaded from unknown sources, see the `Running Pandemonium apps on macOS ( doc_running_on_macos )` page for more information.
Code signing and notarization ## Code signing and notarization
-----------------------------
By default, macOS will run only applications that are signed and notarized. If you use any other signing configuration, see `Running Pandemonium apps on macOS ( doc_running_on_macos )` for workarounds. By default, macOS will run only applications that are signed and notarized. If you use any other signing configuration, see `Running Pandemonium apps on macOS ( doc_running_on_macos )` for workarounds.
To notarize an app, you **must** have a valid `Apple Developer ID Certificate ( https://developer.apple.com/ )`. To notarize an app, you **must** have a valid `Apple Developer ID Certificate ( https://developer.apple.com/ )`.
If you have an Apple Developer ID Certificate ### If you have an Apple Developer ID Certificate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Export your project from a computer running macOS with Xcode command line tools installed. - Export your project from a computer running macOS with Xcode command line tools installed.
- Enable `Code Signing`, `Notarization`, `Hardened Runtime` and `Timestamp` and disable the `Debug` entitlement. - Enable `Code Signing`, `Notarization`, `Hardened Runtime` and `Timestamp` and disable the `Debug` entitlement.
@ -48,104 +42,99 @@ If you encounter notarization issues, see `Resolving common notarization issues
After notarization is completed, `staple the ticket ( https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow )` to the exported project. After notarization is completed, `staple the ticket ( https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow )` to the exported project.
If you do not have an Apple Developer ID Certificate ### If you do not have an Apple Developer ID Certificate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Keep `Code Signing` enabled and leave the `Identity` option empty (when exporting from a computer running macOS, on other platforms this option is hidden). Keep `Code Signing` enabled and leave the `Identity` option empty (when exporting from a computer running macOS, on other platforms this option is hidden).
In this case Pandemonium will use a ad-hoc signature, which will make running an exported app easier for the end users, see the `Running Pandemonium apps on macOS ( doc_running_on_macos )` page for more information. In this case Pandemonium will use a ad-hoc signature, which will make running an exported app easier for the end users, see the `Running Pandemonium apps on macOS ( doc_running_on_macos )` page for more information.
Signing Options ### Signing Options
~~~~~~~~~~~~~~~
+------------------------------+---------------------------------------------------------------------------------------------------+
| Option | Description | | Option | Description |
+==============================+===================================================================================================+ |------------------------------|---------------------------------------------------------------------------------------------------|
| Enable | Enables code signing. | | Enable | Enables code signing. |
+------------------------------+---------------------------------------------------------------------------------------------------+
| Identity | The "Full Name" or "Common Name" of the signing identity, store in the macOS keychain. [1]_ [2]_ | | Identity | The "Full Name" or "Common Name" of the signing identity, store in the macOS keychain. [1]_ [2]_ |
+------------------------------+---------------------------------------------------------------------------------------------------+
| Timestamp | Requests a timestamp server to authenticate the time of signing. Required for notarization. [2]_ | | Timestamp | Requests a timestamp server to authenticate the time of signing. Required for notarization. [2]_ |
+------------------------------+---------------------------------------------------------------------------------------------------+
| Hardened Runtime | Enables "Hardened Runtime". Required for notarization. [2]_ | | Hardened Runtime | Enables "Hardened Runtime". Required for notarization. [2]_ |
+------------------------------+---------------------------------------------------------------------------------------------------+
| Replace Existing Signature | Replaces existing signatures of the GDNative libraries and embedded helper executables. | | Replace Existing Signature | Replaces existing signatures of the GDNative libraries and embedded helper executables. |
+------------------------------+---------------------------------------------------------------------------------------------------+
Note: Note:
To notarize an app, you must enable the `Hardened Runtime` and `Timestamp`. To notarize an app, you must enable the `Hardened Runtime` and `Timestamp`.
The `Hardened Runtime` and `Timestamp` options are incompatible with ad-hoc signing and will be ignored. The `Hardened Runtime` and `Timestamp` options are incompatible with ad-hoc signing and will be ignored.
.. [1] Leave `Identity` option empty to use ad-hoc signature. [1] Leave `Identity` option empty to use ad-hoc signature.
.. [2] This option is visible only when exporting from a computer running macOS. [2] This option is visible only when exporting from a computer running macOS.
Notarization Options ### Notarization Options
~~~~~~~~~~~~~~~~~~~~
| Option | Description |
|--------------------|---------------------------------------------------------------------------------|
| Enable | Enables automatic upload for notarization. |
| Apple ID Name | Apple ID account name (email address) |
| Apple ID Password | Apple ID app-specific password. |
| | See `Using app-specific passwords ( https://support.apple.com/en-us/HT204397 )` |
| | to enable two-factor authentication and create app password. |
| Apple Team ID | Team ID, if your Apple ID belongs to multiple teams |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Option | Description |
+====================+==============================================================================================================================================================================+
| Enable | Enables automatic upload for notarization. |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Apple ID Name | Apple ID account name (email address) |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Apple ID Password | Apple ID app-specific password. See `Using app-specific passwords ( https://support.apple.com/en-us/HT204397 )` to enable two-factor authentication and create app password. |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Apple Team ID | Team ID, if your Apple ID belongs to multiple teams |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
See `Notarizing macOS Software Before Distribution ( https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution?language=objc )` for more info. See `Notarizing macOS Software Before Distribution ( https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution?language=objc )` for more info.
Note: Note:
Notarization is supported when exporting from a computer running macOS, these options are hidden on other platforms. Notarization is supported when exporting from a computer running macOS, these options are hidden on other platforms.
Entitlements ## Entitlements
------------
Hardened Runtime Entitlements ### Hardened Runtime Entitlements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hardened Runtime entitlements manage security options and resource access policy. Hardened Runtime entitlements manage security options and resource access policy.
See `Hardened Runtime ( https://developer.apple.com/documentation/security/hardened_runtime?language=objc )` for more info. See `Hardened Runtime ( https://developer.apple.com/documentation/security/hardened_runtime?language=objc )` for more info.
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Entitlement | Description |
+=======================================+==================================================================================================================================================================================================+
| Allow JIT Code Execution [3]_ | Allows creating writable and executable memory for JIT code. If you are using add-ons with dynamic or self-modifying native code, enable them according to the add-on documentation. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Allow Unsigned Executable Memory [3]_ | Allows creating writable and executable memory without JIT restrictions. If you are using add-ons with dynamic or self-modifying native code, enable them according to the add-on documentation. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Allow DYLD Environment Variables [3]_ | Allows app to uss dynamic linker environment variables to inject code. f you are using add-ons with dynamic or self-modifying native code, enable them according to the add-on documentation. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Disable Library Validation | Allows app to load arbitrary libraries and frameworks. Enabled it if you are using GDNative add-ons and ad-hoc signature, or want to support user-provided external add-ons. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Audio Input | Enable if you need to use the microphone or other audio input sources, if it's enabled you should also provide usage message in the `privacy/microphone_usage_description` option. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Camera | Enable if you need to use the camera, if it's enabled you should also provide usage message in the `privacy/camera_usage_description` option. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Location | Enable if you need to use location information from Location Services, if it's enabled you should also provide usage message in the `privacy/location_usage_description` option. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Address Book | [4]_ Enable to allow access contacts in the user's address book, if it's enabled you should also provide usage message in the `privacy/address_book_usage_description` option. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Calendars | [4]_ Enable to allow access to the user's calendar, if it's enabled you should also provide usage message in the `privacy/calendar_usage_description` option. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Photo Library | [4]_ Enable to allow access to the user's Photos library, if it's enabled you should also provide usage message in the `privacy/photos_library_usage_description` option. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Apple Events | [4]_ Enable to allow app to send Apple events to other apps. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Debugging | [5]_ You can temporarily enable this entitlement to use native debugger (GDB, LLDB) with the exported app. This entitlement should be disabled for production export. |
+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. [3] The `Allow JIT Code Execution`, `Allow Unsigned Executable Memory` and `Allow DYLD Environment Variables` entitlements are always enabled for the Pandemonium Mono exports, and are not visible in the export options. | Entitlement | Description |
.. [4] These features aren't supported by Pandemonium out of the box, enable them only if you are using add-ons which require them. |---------------------------------------|--------------------------------------------------------------------------|
.. [5] To notarize an app, you must disable the `Debugging` entitlement. | Allow JIT Code Execution [3]_ | Allows creating writable and executable memory for JIT code. |
| | If you are using add-ons with dynamic or self-modifying native |
| | code, enable them according to the add-on documentation. |
| Allow Unsigned Executable Memory [3]_ | Allows creating writable and executable memory without JIT |
| | restrictions. If you are using add-ons with dynamic or self-modifying |
| | native code, enable them according to the add-on documentation. |
| Allow DYLD Environment Variables [3]_ | Allows app to uss dynamic linker environment variables to inject code. |
| | If you are using add-ons with dynamic or self-modifying native code, |
| | enable them according to the add-on documentation. |
| Disable Library Validation | Allows app to load arbitrary libraries and frameworks. Enabled it if |
| | you are using GDNative add-ons and ad-hoc signature, or want to support |
| | user-provided external add-ons. |
| Audio Input | Enable if you need to use the microphone or other audio input sources, |
| | if it's enabled you should also provide usage message in the |
| | `privacy/microphone_usage_description` option. |
| Camera | Enable if you need to use the camera, if it's enabled you should also |
| | provide usage message in the `privacy/camera_usage_description` option. |
| Location | Enable if you need to use location information from Location Services, |
| | if it's enabled you should also provide usage message in the |
| | `privacy/location_usage_description` option. |
| Address Book | [4]_ Enable to allow access contacts in the user's address book, if it's |
| | enabled you should also provide usage message in the |
| | `privacy/address_book_usage_description` option. |
| Calendars | [4]_ Enable to allow access to the user's calendar, if it's enabled you |
| | should also provide usage message in the |
| | `privacy/calendar_usage_description` option. |
| Photo Library | [4]_ Enable to allow access to the user's Photos library, if it's |
| | enabled you should also provide usage message in the |
| | `privacy/photos_library_usage_description` option. |
| Apple Events | [4]_ Enable to allow app to send Apple events to other apps. |
| Debugging | [5]_ You can temporarily enable this entitlement to use native debugger |
| | (GDB, LLDB) with the exported app. This entitlement should be disabled |
| | for production export. |
App Sandbox Entitlement
~~~~~~~~~~~~~~~~~~~~~~~ [3] The `Allow JIT Code Execution`, `Allow Unsigned Executable Memory` and `Allow DYLD Environment Variables` entitlements are always enabled for the Pandemonium Mono exports, and are not visible in the export options.
[4] These features aren't supported by Pandemonium out of the box, enable them only if you are using add-ons which require them.
[5] To notarize an app, you must disable the `Debugging` entitlement.
### App Sandbox Entitlement
The App Sandbox restricts access to user data, networking and devices. The App Sandbox restricts access to user data, networking and devices.
Sandboxed apps can't access most of the file system, can't use custom file dialogs and execute binaries (using `OS.execute` and `OS.create_process`) outside the `.app` bundle. Sandboxed apps can't access most of the file system, can't use custom file dialogs and execute binaries (using `OS.execute` and `OS.create_process`) outside the `.app` bundle.
@ -153,35 +142,28 @@ See `App Sandbox ( https://developer.apple.com/documentation/security/app_sandbo
Note: Note:
To distribute an app through the App Store, you must enable the App Sandbox. To distribute an app through the App Store, you must enable the App Sandbox.
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Entitlement | Description |
+===================================+======================================================================================================================================+
| Enabled | Enables App Sandbox. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Network Server | Enable to allow app to listen for incoming network connections. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Network Client | Enable to allow app to establish outgoing network connections. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Device USB | Enable to allow app to interact with USB devices. This entitlement is required to use wired controllers. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Device Bluetooth | Enable to allow app to interact with Bluetooth devices. This entitlement is required to use wireless controllers. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Files Downloads [6]_ | Allows read or write access to the user's "Downloads" folder. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Files Pictures [6]_ | Allows read or write access to the user's "Pictures" folder. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Files Music [6]_ | Allows read or write access to the user's "Music" folder. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Files Movies [6]_ | Allows read or write access to the user's "Movies" folder. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Files User Selected [6]_ | Allows read or write access to arbitrary folder. To gain access, a folder must be selected from the native file dialog by the user. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Helper Executable | List of helper executables to embedded to the app bundle. Sandboxed app are limited to execute only these executable. |
+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
.. [6] You can optionally provide usage messages for various folders in the `privacy/*_folder_usage_description` options. | Entitlement | Description |
|-----------------------------------|-----------------------------------------------------------------------------|
| Enabled | Enables App Sandbox. |
| Network Server | Enable to allow app to listen for incoming network connections. |
| Network Client | Enable to allow app to establish outgoing network connections. |
| Device USB | Enable to allow app to interact with USB devices. This |
| | entitlement is required to use wired controllers. |
| Device Bluetooth | Enable to allow app to interact with Bluetooth devices. |
| | This entitlement is required to use wireless controllers. |
| Files Downloads [6]_ | Allows read or write access to the user's "Downloads" folder. |
| Files Pictures [6]_ | Allows read or write access to the user's "Pictures" folder. |
| Files Music [6]_ | Allows read or write access to the user's "Music" folder. |
| Files Movies [6]_ | Allows read or write access to the user's "Movies" folder. |
| Files User Selected [6]_ | Allows read or write access to arbitrary folder. To gain |
| | access, a folder must be selected from the native file dialog by the user. |
| Helper Executable | List of helper executables to embedded to the app bundle. |
| | Sandboxed app are limited to execute only these executable. |
[6] You can optionally provide usage messages for various folders in the `privacy/*_folder_usage_description` options.
You can override default entitlements by selecting custom entitlements file, in this case all other entitlement are ignored. You can override default entitlements by selecting custom entitlements file, in this case all other entitlement are ignored.

View File

@ -1,11 +1,8 @@
# Running Pandemonium apps on macOS
Running Pandemonium apps on macOS
===========================
See also: See also:
This page covers running Pandemonium projects on macOS. This page covers running Pandemonium projects on macOS.
If you haven't exported your project yet, read `doc_exporting_for_macos` first. If you haven't exported your project yet, read `doc_exporting_for_macos` first.
@ -13,22 +10,18 @@ By default, macOS will run only applications that are signed and notarized.
Depending on the way a macOS app is signed and distributed, the following scenarios are possible: Depending on the way a macOS app is signed and distributed, the following scenarios are possible:
App is signed, notarized and distributed via App Store ## App is signed, notarized and distributed via App Store
------------------------------------------------------
Note: Note:
App developers need to join the Apple Developer Program, and configure signing and notarization options during export, then upload the app to the App Store. App developers need to join the Apple Developer Program, and configure signing and notarization options during export, then upload the app to the App Store.
The app should run out of the box, without extra user interaction required. The app should run out of the box, without extra user interaction required.
App is signed, notarized and distributed outside App Store ## App is signed, notarized and distributed outside App Store
----------------------------------------------------------
Note: Note:
App developers need to join the Apple Developer Program, and configure signing and notarization options during export, then distribute the app as ".DMG" or ".ZIP" archive. App developers need to join the Apple Developer Program, and configure signing and notarization options during export, then distribute the app as ".DMG" or ".ZIP" archive.
When you run the app for the first time, the following dialog is displayed: When you run the app for the first time, the following dialog is displayed:
@ -45,12 +38,10 @@ To allow third-party apps, open `System Preferences`, click `Security & Privacy`
![](img/sys_pref_0.png) ![](img/sys_pref_0.png)
App is signed (including ad-hoc signatures) but not notarized ## App is signed (including ad-hoc signatures) but not notarized
-------------------------------------------------------------
Note: Note:
App developer used self-signed certificate or ad-hoc signing (default Pandemonium behavior for exported project). App developer used self-signed certificate or ad-hoc signing (default Pandemonium behavior for exported project).
When you run the app for the first time, the following dialog is displayed: When you run the app for the first time, the following dialog is displayed:
@ -73,12 +64,10 @@ To run this app, you can temporarily override Gatekeeper:
* Enter your password if you're prompted. * Enter your password if you're prompted.
App is not-signed, executable is linker-signed ## App is not-signed, executable is linker-signed
----------------------------------------------
Note: Note:
App is built using official export templates, but it is not signed. App is built using official export templates, but it is not signed.
When you run the app for the first time, the following dialog is displayed: When you run the app for the first time, the following dialog is displayed:
@ -95,12 +84,10 @@ To run this app, you should remove the quarantine extended file attribute manual
* Run the command `xattr -dr com.apple.quarantine "Unsigned Game.app"` (including quotation marks and `.app` extension). * Run the command `xattr -dr com.apple.quarantine "Unsigned Game.app"` (including quotation marks and `.app` extension).
Neither app nor executable is signed (relevant for Apple Silicon macs only) ## Neither app nor executable is signed (relevant for Apple Silicon macs only)
---------------------------------------------------------------------------
Note: Note:
App is built using custom export templates, compiled using OSXCross, and it is not signed at all. App is built using custom export templates, compiled using OSXCross, and it is not signed at all.
When you run the app for the first time, the following dialog is displayed: When you run the app for the first time, the following dialog is displayed:

View File

@ -1,11 +1,8 @@
# Exporting for Windows
Exporting for Windows
=====================
See also: See also:
This page describes how to export a Pandemonium project to Windows. This page describes how to export a Pandemonium project to Windows.
If you're looking to compile editor or export template binaries from source instead, If you're looking to compile editor or export template binaries from source instead,
read `doc_compiling_for_windows`. read `doc_compiling_for_windows`.
@ -19,15 +16,13 @@ system. When exporting for Windows, the exporter takes all the project files and
creates a `data.pck` file. This file is bundled with a specially optimized creates a `data.pck` file. This file is bundled with a specially optimized
binary that is smaller, faster and does not contain the editor and debugger. binary that is smaller, faster and does not contain the editor and debugger.
Requirements ## Requirements
------------
- To enable code signing, you must have the `Windows 10 SDK` (on Windows) or `osslsigncode ( https://github.com/mtrojnar/osslsigncode )` (on any other OS) installed. - To enable code signing, you must have the `Windows 10 SDK` (on Windows) or `osslsigncode ( https://github.com/mtrojnar/osslsigncode )` (on any other OS) installed.
- Download the Pandemonium export templates. Use the Pandemonium menu: `Editor > Manage Export Templates`. - Download the Pandemonium export templates. Use the Pandemonium menu: `Editor > Manage Export Templates`.
Warning: Warning:
If you export for Windows with embedded PCK files, you will not be able to If you export for Windows with embedded PCK files, you will not be able to
sign the program as it will break. sign the program as it will break.

View File

@ -1,14 +1,11 @@
# Changing application icon for Windows
Changing application icon for Windows
=====================================
By default, the exported project's icon will be the Pandemonium icon. By default, the exported project's icon will be the Pandemonium icon.
You will most likely want to change that for your project. There are two types You will most likely want to change that for your project. There are two types
of icons that can be changed on Windows: the file icon and the taskbar icon. of icons that can be changed on Windows: the file icon and the taskbar icon.
Creating an ICO file ## Creating an ICO file
--------------------
Windows does not use formats such as png or jpg for application icons. Instead, Windows does not use formats such as png or jpg for application icons. Instead,
it uses a Windows-only format called ICO. You can create your application icon it uses a Windows-only format called ICO. You can create your application icon
@ -22,18 +19,17 @@ It is also possible to convert a PNG image to an hiDPI-friendly ICO file
using this `ImageMagick ( https://www.imagemagick.org/ )` command: using this `ImageMagick ( https://www.imagemagick.org/ )` command:
``` ```
magick convert icon.png) -define icon:auto-resize=256,128,64,48,32,16 icon.ico magick convert icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico
``` ```
Depending on which version of ImageMagick you installed, you might need to leave out the `magick` and run this command instead: Depending on which version of ImageMagick you installed, you might need to leave out the `magick` and run this command instead:
``` ```
convert icon.png) -define icon:auto-resize=256,128,64,48,32,16 icon.ico convert icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico
``` ```
Warning: Warning:
For the ICO file to effectively replace the default Pandemonium icon, it must For the ICO file to effectively replace the default Pandemonium icon, it must
contain *all* the sizes included in the default Pandemonium icon: 16×16, 32×32, contain *all* the sizes included in the default Pandemonium icon: 16×16, 32×32,
48×48, 64×64, 128×128, 256×256. If the ICO file does not contain all the sizes, 48×48, 64×64, 128×128, 256×256. If the ICO file does not contain all the sizes,
@ -41,8 +37,7 @@ Warning:
The above ImageMagick command takes this into account. The above ImageMagick command takes this into account.
Changing the taskbar icon ## Changing the taskbar icon
-------------------------
The taskbar icon is the icon that shows up on the taskbar when your project The taskbar icon is the icon that shows up on the taskbar when your project
is running. is running.
@ -59,8 +54,7 @@ This setting only changes the icon for your exported game on Windows.
To set the icon for macOS, use `Macos Native Icon`. And for any other platform, To set the icon for macOS, use `Macos Native Icon`. And for any other platform,
use the `Icon` setting. use the `Icon` setting.
Changing the file icon ## Changing the file icon
----------------------
In Pandemonium 3.5 and later, you can change the file icon without In Pandemonium 3.5 and later, you can change the file icon without
external tools using `pandemoniumicon ( https://github.com/pkowal1982/pandemoniumicon )`. external tools using `pandemoniumicon ( https://github.com/pkowal1982/pandemoniumicon )`.
@ -69,7 +63,6 @@ an embedded PCK.
Warning: Warning:
There are `known issues ( https://github.com/Relintai/pandemonium_engine/issues/33466 )` There are `known issues ( https://github.com/Relintai/pandemonium_engine/issues/33466 )`
when changing the application icon in executables that embed a PCK file. when changing the application icon in executables that embed a PCK file.
It's recommended to avoid using rcedit for now if you choose to enable the It's recommended to avoid using rcedit for now if you choose to enable the
@ -92,7 +85,6 @@ Navigate to and select the rcedit executable.
Note: Note:
Linux and macOS users will also need to install Linux and macOS users will also need to install
`WINE ( https://www.winehq.org/ )` to use rcedit. `WINE ( https://www.winehq.org/ )` to use rcedit.
@ -118,8 +110,7 @@ Note:
Once this is done, you can specify your export templates as custom export Once this is done, you can specify your export templates as custom export
templates in your project's Windows export preset. templates in your project's Windows export preset.
Testing the result ## Testing the result
------------------
You can now export the project. If it worked correctly, you should see this: You can now export the project. If it worked correctly, you should see this:
@ -127,7 +118,6 @@ You can now export the project. If it worked correctly, you should see this:
Note: Note:
If your icon isn't showing up properly, on Windows 10, try clearing the icon If your icon isn't showing up properly, on Windows 10, try clearing the icon
cache. To do so, open the **Run** dialog and enter `ie4uinit.exe cache. To do so, open the **Run** dialog and enter `ie4uinit.exe
-ClearIconCache` or `ie4uinit.exe -show`. -ClearIconCache` or `ie4uinit.exe -show`.

View File

@ -1,11 +1,8 @@
# Exporting for Universal Windows Platform
Exporting for Universal Windows Platform
========================================
See also: See also:
This page describes how to export a Pandemonium project to UWP. This page describes how to export a Pandemonium project to UWP.
If you're looking to compile export template binaries from source instead, If you're looking to compile export template binaries from source instead,
read `doc_compiling_for_uwp`. read `doc_compiling_for_uwp`.
@ -21,8 +18,7 @@ external tools.
Also, make sure the Publisher Name you set when exporting the package matches Also, make sure the Publisher Name you set when exporting the package matches
the name used on the certificate. the name used on the certificate.
Limitations on Xbox One ## Limitations on Xbox One
-----------------------
As described in the `UWP documentation ( https://docs.microsoft.com/en-us/windows/uwp/xbox-apps/system-resource-allocation )`: As described in the `UWP documentation ( https://docs.microsoft.com/en-us/windows/uwp/xbox-apps/system-resource-allocation )`:
@ -38,8 +34,7 @@ As described in the `UWP documentation ( https://docs.microsoft.com/en-us/window
- Exceeding these memory limitations will cause allocation failures and the application will crash. - Exceeding these memory limitations will cause allocation failures and the application will crash.
Creating a signing certificate ## Creating a signing certificate
------------------------------
This requires the `MakeCert.exe` and `Pvk2Pfx.exe` tools, which come with This requires the `MakeCert.exe` and `Pvk2Pfx.exe` tools, which come with
the Windows SDK. If you use Visual Studio, you can open one of its Developer the Windows SDK. If you use Visual Studio, you can open one of its Developer
@ -73,8 +68,7 @@ app. Open the Command Prompt as Administrator and run the following command:
Certutil -addStore TrustedPeople MyKey.cer Certutil -addStore TrustedPeople MyKey.cer
``` ```
Setting up automatic signing ## Setting up automatic signing
----------------------------
To setup automatic signing on export you need to go to Editor Settings > Export > Uwp. To setup automatic signing on export you need to go to Editor Settings > Export > Uwp.
From there you need to click on the folder for `Signtool`, and navigate to From there you need to click on the folder for `Signtool`, and navigate to
@ -96,8 +90,7 @@ following command.
SignTool sign /fd SHA256 /a /f MyKey.pfx /p pfxPassword package.appx SignTool sign /fd SHA256 /a /f MyKey.pfx /p pfxPassword package.appx
Installing the package ## Installing the package
----------------------
As of the Windows 10 Anniversary Update, you are able to install packages simply by As of the Windows 10 Anniversary Update, you are able to install packages simply by
double clicking the `.appx` file from Windows Explorer. double clicking the `.appx` file from Windows Explorer.

View File

@ -1,11 +1,8 @@
# Exporting for iOS
Exporting for iOS
=================
See also: See also:
This page describes how to export a Pandemonium project to iOS. This page describes how to export a Pandemonium project to iOS.
If you're looking to compile export template binaries from source instead, If you're looking to compile export template binaries from source instead,
read `doc_compiling_for_ios`. read `doc_compiling_for_ios`.
@ -14,14 +11,12 @@ These are the steps to load a Pandemonium project in Xcode. This allows you to
build and deploy to an iOS device, build a release for the App Store, and build and deploy to an iOS device, build a release for the App Store, and
do everything else you can normally do with Xcode. do everything else you can normally do with Xcode.
Requirements ## Requirements
------------
- You must export for iOS from a computer running macOS with Xcode installed. - You must export for iOS from a computer running macOS with Xcode installed.
- Download the Pandemonium export templates. Use the Pandemonium menu: Editor > Manage Export Templates - Download the Pandemonium export templates. Use the Pandemonium menu: Editor > Manage Export Templates
Export a Pandemonium project to Xcode ## Export a Pandemonium project to Xcode
-------------------------------
In the Pandemonium editor, open the **Export** window from the **Project** menu. When the In the Pandemonium editor, open the **Export** window from the **Project** menu. When the
Export window opens, click **Add..** and select **iOS**. Export window opens, click **Add..** and select **iOS**.
@ -52,8 +47,7 @@ When the export completes, the output folder should look like this:
Opening **exported_xcode_project_name.xcodeproj** lets you build and deploy Opening **exported_xcode_project_name.xcodeproj** lets you build and deploy
like any other iOS app. like any other iOS app.
Active development considerations ## Active development considerations
---------------------------------
The above method creates an exported project that you can build for The above method creates an exported project that you can build for
release, but you have to re-export every time you make a change in Pandemonium. release, but you have to re-export every time you make a change in Pandemonium.
@ -70,8 +64,7 @@ Note:
**pandemonium_project_to_export** must not be the same as **exported_xcode_project_name** **pandemonium_project_to_export** must not be the same as **exported_xcode_project_name**
to prevent signing issues in Xcode. to prevent signing issues in Xcode.
Steps to link a Pandemonium project folder to Xcode ### Steps to link a Pandemonium project folder to Xcode
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Start from an exported iOS project (follow the steps above). 1. Start from an exported iOS project (follow the steps above).
2. In Finder, drag the Pandemonium project folder into the Xcode file browser. 2. In Finder, drag the Pandemonium project folder into the Xcode file browser.
@ -97,14 +90,12 @@ you will be able to continue to edit your Pandemonium project in its current loc
That's it! You can now edit your project in the Pandemonium editor and build it That's it! You can now edit your project in the Pandemonium editor and build it
in Xcode when you want to run it on a device. in Xcode when you want to run it on a device.
Plugins for iOS ## Plugins for iOS
---------------
Special iOS plugins can be used in Pandemonium. Check out the Special iOS plugins can be used in Pandemonium. Check out the
`doc_plugins_for_ios` page. `doc_plugins_for_ios` page.
Troubleshooting rendering issues ## Troubleshooting rendering issues
--------------------------------
To improve out-of-the-box performance on mobile devices, Pandemonium automatically To improve out-of-the-box performance on mobile devices, Pandemonium automatically
uses low-end-friendly settings by default on both Android and iOS. uses low-end-friendly settings by default on both Android and iOS.

View File

@ -1,12 +1,8 @@
# Exporting for Android
Exporting for Android
=====================
See also: See also:
This page describes how to export a Pandemonium project to Android. This page describes how to export a Pandemonium project to Android.
If you're looking to compile export template binaries from source instead, If you're looking to compile export template binaries from source instead,
read `doc_compiling_for_android`. read `doc_compiling_for_android`.
@ -14,13 +10,11 @@ See also:
Exporting for Android has fewer requirements than compiling Pandemonium for Android. Exporting for Android has fewer requirements than compiling Pandemonium for Android.
The following steps detail what is needed to set up the Android SDK and the engine. The following steps detail what is needed to set up the Android SDK and the engine.
Install OpenJDK 11 ## Install OpenJDK 11
------------------
Download and install `OpenJDK 11 ( https://adoptium.net/?variant=openjdk11 )`. Download and install `OpenJDK 11 ( https://adoptium.net/?variant=openjdk11 )`.
Download the Android SDK ## Download the Android SDK
------------------------
Download and install the Android SDK. Download and install the Android SDK.
@ -51,8 +45,7 @@ Note:
**do not use an Android SDK provided by your distribution's repositories as it will often be outdated**. **do not use an Android SDK provided by your distribution's repositories as it will often be outdated**.
Create a debug.keystore ## Create a debug.keystore
-----------------------
Android needs a debug keystore file to install to devices and distribute Android needs a debug keystore file to install to devices and distribute
non-release APKs. If you have used the SDK before and have built non-release APKs. If you have used the SDK before and have built
@ -68,8 +61,7 @@ the JDK can be used for this purpose:
This will create a `debug.keystore` file in your current directory. You should move it to a memorable location such as `%USERPROFILE%\.android\`, because you will need its location in a later step. For more information on `keytool` usage, see `this Q&A article ( https://pandemoniumengine.org/qa/21349/jdk-android-file-missing )`. This will create a `debug.keystore` file in your current directory. You should move it to a memorable location such as `%USERPROFILE%\.android\`, because you will need its location in a later step. For more information on `keytool` usage, see `this Q&A article ( https://pandemoniumengine.org/qa/21349/jdk-android-file-missing )`.
Setting it up in Pandemonium ## Setting it up in Pandemonium
----------------------
Enter the Editor Settings screen. This screen contains the editor Enter the Editor Settings screen. This screen contains the editor
settings for the user account in the computer (it's independent of the settings for the user account in the computer (it's independent of the
@ -93,7 +85,6 @@ Once that is configured, everything is ready to export to Android!
Note: Note:
If you get an error saying *"Could not install to device."*, make sure If you get an error saying *"Could not install to device."*, make sure
you do not have an application with the same Android package name already you do not have an application with the same Android package name already
installed on the device (but signed with a different key). installed on the device (but signed with a different key).
@ -103,8 +94,7 @@ Note:
the application in question from the Android device before exporting to the application in question from the Android device before exporting to
Android again. Android again.
Providing launcher icons ## Providing launcher icons
------------------------
Launcher icons are used by Android launcher apps to represent your application to users. Pandemonium only requires high-resolution icons (for `xxxhdpi` density screens) and will automatically generate lower-resolution variants. Launcher icons are used by Android launcher apps to represent your application to users. Pandemonium only requires high-resolution icons (for `xxxhdpi` density screens) and will automatically generate lower-resolution variants.
@ -127,8 +117,7 @@ If you don't provide some of the requested icons, Pandemonium will replace them
It's highly recommended to provide all the requested icons with their specified resolutions. It's highly recommended to provide all the requested icons with their specified resolutions.
This way, your application will look great on all Android devices and versions. This way, your application will look great on all Android devices and versions.
Exporting for Google Play Store ## Exporting for Google Play Store
-------------------------------
Uploading an APK to Google's Play Store requires you to sign using a non-debug Uploading an APK to Google's Play Store requires you to sign using a non-debug
keystore file; such file can be generated like this: keystore file; such file can be generated like this:
@ -156,8 +145,7 @@ Don't forget to uncheck the **Export With Debug** checkbox while exporting.
![](img/export-with-debug-button.png) ![](img/export-with-debug-button.png)
Optimizing the APK size ## Optimizing the APK size
-----------------------
By default, the APK will contain native libraries for both ARMv7 and ARMv8 By default, the APK will contain native libraries for both ARMv7 and ARMv8
architectures. This increases its size significantly. To create a smaller APK, architectures. This increases its size significantly. To create a smaller APK,
@ -177,8 +165,7 @@ You can optimize the size further by compiling an Android export template with
only the features you need. See `doc_optimizing_for_size` for more only the features you need. See `doc_optimizing_for_size` for more
information. information.
Troubleshooting rendering issues ## Troubleshooting rendering issues
--------------------------------
To improve out-of-the-box performance on mobile devices, Pandemonium automatically To improve out-of-the-box performance on mobile devices, Pandemonium automatically
uses low-end-friendly settings by default on both Android and iOS. uses low-end-friendly settings by default on both Android and iOS.

View File

@ -1,7 +1,6 @@
Custom builds for Android # Custom builds for Android
=========================
Pandemonium provides the option to use custom build Android templates. Instead of Pandemonium provides the option to use custom build Android templates. Instead of
using the already pre-built template that ships with Pandemonium, an actual Android using the already pre-built template that ships with Pandemonium, an actual Android
@ -17,8 +16,7 @@ Configuring the custom build is a fairly straightforward process. But first
you need to follow the steps in `exporting for android( doc_exporting_for_android )` you need to follow the steps in `exporting for android( doc_exporting_for_android )`
up to **Setting it up in Pandemonium**. After doing that, follow the steps below. up to **Setting it up in Pandemonium**. After doing that, follow the steps below.
Set up the custom build environment ## Set up the custom build environment
-----------------------------------
Go to the Project menu, and install the *Custom Build* template: Go to the Project menu, and install the *Custom Build* template:
@ -32,8 +30,7 @@ Editing these files is not needed unless you want to `create
your own add-ons( doc_android_plugin )`, or you really need to modify the project. your own add-ons( doc_android_plugin )`, or you really need to modify the project.
Enabling the custom build and exporting ## Enabling the custom build and exporting
---------------------------------------
When setting up the Android project in the **Project > Export** dialog, When setting up the Android project in the **Project > Export** dialog,
**Custom Build** needs to be enabled: **Custom Build** needs to be enabled:

View File

@ -1,11 +1,9 @@
Exporting for the Web # Exporting for the Web
=====================
See also: See also:
This page describes how to export a Pandemonium project to HTML5. This page describes how to export a Pandemonium project to HTML5.
If you're looking to compile editor or export template binaries from source instead, If you're looking to compile editor or export template binaries from source instead,
read `doc_compiling_for_web`. read `doc_compiling_for_web`.
@ -15,18 +13,21 @@ This requires support for `WebAssembly
( https://webassembly.org/ )` and `WebGL ( https://www.khronos.org/webgl/ )` ( https://webassembly.org/ )` and `WebGL ( https://www.khronos.org/webgl/ )`
in the user's browser. in the user's browser.
.. important:: Use the browser-integrated developer console, usually opened Important:
Use the browser-integrated developer console, usually opened
with :kbd:`F12`, to view **debug information** like JavaScript, with :kbd:`F12`, to view **debug information** like JavaScript,
engine, and WebGL errors. engine, and WebGL errors.
.. attention:: `There are significant bugs when running HTML5 projects on iOS Attention:
`There are significant bugs when running HTML5 projects on iOS
( https://github.com/Relintai/pandemonium_engine/issues?q=is:issue+is:open+label:platform:html5+ios )` ( https://github.com/Relintai/pandemonium_engine/issues?q=is:issue+is:open+label:platform:html5+ios )`
(regardless of the browser). We recommend using (regardless of the browser). We recommend using
`iOS' native export functionality ( doc_exporting_for_ios )` `iOS' native export functionality ( doc_exporting_for_ios )`
instead, as it will also result in better performance. instead, as it will also result in better performance.
WebGL version ## WebGL version
-------------
Depending on your choice of renderer, Pandemonium can target WebGL 1.0 (*GLES2*) or Depending on your choice of renderer, Pandemonium can target WebGL 1.0 (*GLES2*) or
WebGL 2.0 (*GLES3*). WebGL 2.0 (*GLES3*).
@ -43,10 +44,7 @@ for **Safari**. WebGL 2.0 support is coming in Safari 15 for macOS, and is not
available yet for any **iOS** browser (all WebKit-based like Safari). available yet for any **iOS** browser (all WebKit-based like Safari).
See `Can I use WebGL 2.0 ( https://caniuse.com/webgl2 )` for details. See `Can I use WebGL 2.0 ( https://caniuse.com/webgl2 )` for details.
## Export options
Export options
--------------
If a runnable web export template is available, a button appears between the If a runnable web export template is available, a button appears between the
*Stop scene* and *Play edited Scene* buttons in the editor to quickly open the *Stop scene* and *Play edited Scene* buttons in the editor to quickly open the
@ -75,7 +73,9 @@ the default HTML page. See `doc_customizing_html5_shell`.
HTML page. This allows to, for example, load webfonts and third-party HTML page. This allows to, for example, load webfonts and third-party
JavaScript APIs, include CSS, or run JavaScript code. JavaScript APIs, include CSS, or run JavaScript code.
.. important:: Each project must generate their own HTML file. On export, Important:
Each project must generate their own HTML file. On export,
several text placeholders are replaced in the generated HTML several text placeholders are replaced in the generated HTML
file specifically for the given export options. Any direct file specifically for the given export options. Any direct
modifications to that HTML file will be lost in future exports. modifications to that HTML file will be lost in future exports.
@ -86,16 +86,15 @@ Warning:
**Export types** other then *Regular* are not yet supported by the **Export types** other then *Regular* are not yet supported by the
C# version. C# version.
Limitations ## Limitations
-----------
For security and privacy reasons, many features that work effortlessly on For security and privacy reasons, many features that work effortlessly on
native platforms are more complicated on the web platform. Following is a list native platforms are more complicated on the web platform. Following is a list
of limitations you should be aware of when porting a Pandemonium game to the web. of limitations you should be aware of when porting a Pandemonium game to the web.
Important:
Browser vendors are making more and more functionalities only
.. important:: Browser vendors are making more and more functionalities only
available in `secure contexts ( https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts )`, available in `secure contexts ( https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts )`,
this means that such features are only be available if the web this means that such features are only be available if the web
page is served via a secure HTTPS connection (localhost is page is served via a secure HTTPS connection (localhost is
@ -107,8 +106,7 @@ Tip:
to see if the functionality you're interested in has an issue yet. If to see if the functionality you're interested in has an issue yet. If
not, open one to communicate your interest. not, open one to communicate your interest.
Using cookies for data persistence ### Using cookies for data persistence
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Users must **allow cookies** (specifically IndexedDB) if persistence of the Users must **allow cookies** (specifically IndexedDB) if persistence of the
`user://` file system is desired. When playing a game presented in an `user://` file system is desired. When playing a game presented in an
@ -119,8 +117,7 @@ The method `OS.is_userfs_persistent()` can be used to check if the
`user://` file system is persistent, but can give false positives in some `user://` file system is persistent, but can give false positives in some
cases. cases.
Background processing ### Background processing
~~~~~~~~~~~~~~~~~~~~~
The project will be paused by the browser when the tab is no longer the active The project will be paused by the browser when the tab is no longer the active
tab in the user's browser. This means functions such as `process()` and tab in the user's browser. This means functions such as `process()` and
@ -132,8 +129,7 @@ This limitation does not apply to unfocused browser *windows*. Therefore, on the
user's side, this can be worked around by running the project in a separate user's side, this can be worked around by running the project in a separate
*window* instead of a separate tab. *window* instead of a separate tab.
Threads ### Threads
~~~~~~~
As mentioned `above ( doc_javascript_export_options )` multi-threading is As mentioned `above ( doc_javascript_export_options )` multi-threading is
only available if the appropriate **Export Type** is set and support for it only available if the appropriate **Export Type** is set and support for it
@ -144,8 +140,7 @@ Warning:
Browsers also require that the web page is served with specific Browsers also require that the web page is served with specific
`cross-origin isolation headers ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy )`. `cross-origin isolation headers ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy )`.
GDNative ### GDNative
~~~~~~~~
As mentioned `above ( doc_javascript_export_options )` GDNative is only As mentioned `above ( doc_javascript_export_options )` GDNative is only
available if the appropriate **Export Type** is set. available if the appropriate **Export Type** is set.
@ -153,8 +148,7 @@ available if the appropriate **Export Type** is set.
The export will also copy the required GDNative `.wasm` files to the output The export will also copy the required GDNative `.wasm` files to the output
folder (and must be uploaded to your server along with your game). folder (and must be uploaded to your server along with your game).
Full screen and mouse capture ### Full screen and mouse capture
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Browsers do not allow arbitrarily **entering full screen**. The same goes for Browsers do not allow arbitrarily **entering full screen**. The same goes for
**capturing the cursor**. Instead, these actions have to occur as a response to **capturing the cursor**. Instead, these actions have to occur as a response to
@ -167,8 +161,7 @@ For the same reason, the full screen project setting doesn't work unless the
engine is started from within a valid input event handler. This requires engine is started from within a valid input event handler. This requires
`customization of the HTML page ( doc_customizing_html5_shell )`. `customization of the HTML page ( doc_customizing_html5_shell )`.
Audio ### Audio
~~~~~
Chrome restricts how websites may play audio. It may be necessary for the Chrome restricts how websites may play audio. It may be necessary for the
player to click or tap or press a key to enable audio. player to click or tap or press a key to enable audio.
@ -181,8 +174,7 @@ Warning:
Access to microphone requires a Access to microphone requires a
`secure context ( doc_javascript_secure_contexts )`. `secure context ( doc_javascript_secure_contexts )`.
Networking ### Networking
~~~~~~~~~~
Low level networking is not implemented due to lacking support in browsers. Low level networking is not implemented due to lacking support in browsers.
@ -200,8 +192,7 @@ The HTTP classes also have several restrictions on the HTML5 platform:
- Host verification cannot be disabled - Host verification cannot be disabled
- Subject to `same-origin policy ( https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy )` - Subject to `same-origin policy ( https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy )`
Clipboard ### Clipboard
~~~~~~~~~
Clipboard synchronization between engine and the operating system requires a Clipboard synchronization between engine and the operating system requires a
browser supporting the `Clipboard API ( https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API )`, browser supporting the `Clipboard API ( https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API )`,
@ -211,8 +202,7 @@ accessed from GDScript.
Warning: Warning:
Requires a `secure context ( doc_javascript_secure_contexts )`. Requires a `secure context ( doc_javascript_secure_contexts )`.
Gamepads ### Gamepads
~~~~~~~~
Gamepads will not be detected until one of their button is pressed. Gamepads Gamepads will not be detected until one of their button is pressed. Gamepads
might have the wrong mapping depending on the browser/OS/gamepad combination, might have the wrong mapping depending on the browser/OS/gamepad combination,
@ -223,21 +213,18 @@ to remap them based on model/vendor/OS due to privacy considerations.
Warning: Warning:
Requires a `secure context ( doc_javascript_secure_contexts )`. Requires a `secure context ( doc_javascript_secure_contexts )`.
Boot splash is not displayed ### Boot splash is not displayed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The default HTML page does not display the boot splash while loading. However, The default HTML page does not display the boot splash while loading. However,
the image is exported as a PNG file, so `custom HTML pages ( doc_customizing_html5_shell )` the image is exported as a PNG file, so `custom HTML pages ( doc_customizing_html5_shell )`
can display it. can display it.
Shader language limitations ### Shader language limitations
~~~~~~~~~~~~~~~~~~~~~~~~~~~
When exporting a GLES2 project to HTML5, WebGL 1.0 will be used. WebGL 1.0 When exporting a GLES2 project to HTML5, WebGL 1.0 will be used. WebGL 1.0
doesn't support dynamic loops, so shaders using those won't work there. doesn't support dynamic loops, so shaders using those won't work there.
Serving the files ## Serving the files
-----------------
Exporting for the web generates several files to be served from a web server, Exporting for the web generates several files to be served from a web server,
including a default HTML page for presentation. A custom HTML file can be including a default HTML page for presentation. A custom HTML file can be
@ -263,7 +250,9 @@ The `.pck` file is binary, usually delivered with the MIME-type
:mimetype:`application/octet-stream`. The `.wasm` file is delivered as :mimetype:`application/octet-stream`. The `.wasm` file is delivered as
:mimetype:`application/wasm`. :mimetype:`application/wasm`.
.. caution:: Delivering the WebAssembly module (`.wasm`) with a MIME-type Caution:
Delivering the WebAssembly module (`.wasm`) with a MIME-type
other than :mimetype:`application/wasm` can prevent some start-up other than :mimetype:`application/wasm` can prevent some start-up
optimizations. optimizations.
@ -277,10 +266,7 @@ of its original size with gzip compression.
**Hosts that don't provide on-the-fly compression:** itch.io, GitLab Pages **Hosts that don't provide on-the-fly compression:** itch.io, GitLab Pages
(`supports manual gzip precompression ( https://webd97.de/post/gitlab-pages-compression/ )`) (`supports manual gzip precompression ( https://webd97.de/post/gitlab-pages-compression/ )`)
## Calling JavaScript from script
Calling JavaScript from script
------------------------------
In web builds, the `JavaScript` singleton is implemented. It offers a single In web builds, the `JavaScript` singleton is implemented. It offers a single
method called `eval` that works similarly to the JavaScript function of the method called `eval` that works similarly to the JavaScript function of the

View File

@ -1,13 +1,10 @@
# Exporting for dedicated servers
Exporting for dedicated servers
===============================
If you want to run a dedicated server for your project on a machine that doesn't If you want to run a dedicated server for your project on a machine that doesn't
have a GPU or display server available, you'll need to use a server build of Pandemonium. have a GPU or display server available, you'll need to use a server build of Pandemonium.
Platform support ## Platform support
----------------
- **Linux:** `Download an official Linux server binary ( https://pandemoniumengine.org/download/server )`. - **Linux:** `Download an official Linux server binary ( https://pandemoniumengine.org/download/server )`.
To compile a server binary from source, follow instructions in To compile a server binary from source, follow instructions in
@ -20,8 +17,7 @@ Platform support
If your project uses C#, you'll have to use a Mono-enabled server binary. If your project uses C#, you'll have to use a Mono-enabled server binary.
"Headless" versus "server" binaries ## "Headless" versus "server" binaries
-----------------------------------
The `server download page ( https://pandemoniumengine.org/download/server )` The `server download page ( https://pandemoniumengine.org/download/server )`
offers two kinds of binaries with several differences. offers two kinds of binaries with several differences.
@ -33,8 +29,7 @@ offers two kinds of binaries with several differences.
used for exporting projects. This binary *can* be used to run dedicated used for exporting projects. This binary *can* be used to run dedicated
servers, but it's not recommended as it's larger and less optimized. servers, but it's not recommended as it's larger and less optimized.
Exporting a PCK file ## Exporting a PCK file
--------------------
There are two ways to export a project for a server: There are two ways to export a project for a server:
@ -72,8 +67,7 @@ Note:
client and dedicated server build. This can be useful if you want to ship a client and dedicated server build. This can be useful if you want to ship a
single archive that can be used both as a client and dedicated server. single archive that can be used both as a client and dedicated server.
Preparing the server distribution ## Preparing the server distribution
---------------------------------
After downloading or compiling a server binary, you should now place it in the After downloading or compiling a server binary, you should now place it in the
same folder as the PCK file you've exported. The server binary should have the same folder as the PCK file you've exported. The server binary should have the
@ -86,8 +80,7 @@ different name, you can specify the path to the PCK file using the
./pandemonium-server --main-pack my_project.pck ./pandemonium-server --main-pack my_project.pck
``` ```
Starting the dedicated server ## Starting the dedicated server
-----------------------------
If both your client and server are part of the same Pandemonium project, you will have If both your client and server are part of the same Pandemonium project, you will have
to add a way to start the server directly using a command-line argument. This to add a way to start the server directly using a command-line argument. This
@ -118,8 +111,7 @@ If your client and server are separate Pandemonium projects, your server should
likely be configured in a way where running the main scene starts a server likely be configured in a way where running the main scene starts a server
automatically. automatically.
Next steps ## Next steps
----------
On Linux, to make your dedicated server restart after a crash or system reboot, On Linux, to make your dedicated server restart after a crash or system reboot,
you can you can

View File

@ -1,10 +1,7 @@
# One-click deploy
One-click deploy ## What is one-click deploy?
================
What is one-click deploy?
-------------------------
One-click deploy is a feature that is available once a platform is properly One-click deploy is a feature that is available once a platform is properly
configured and a supported device is connected to the computer. Since things can configured and a supported device is connected to the computer. Since things can
@ -26,8 +23,7 @@ Note:
runnable. If you mark a second preset in a given platform as runnable, the runnable. If you mark a second preset in a given platform as runnable, the
other preset will no longer be marked as runnable. other preset will no longer be marked as runnable.
Supported platforms ## Supported platforms
-------------------
- **Android:** Exports the project with debugging enabled and runs it on the - **Android:** Exports the project with debugging enabled and runs it on the
connected device. connected device.
@ -43,8 +39,7 @@ Supported platforms
Support for more platforms such as iOS is planned. Support for more platforms such as iOS is planned.
Using one-click deploy ## Using one-click deploy
----------------------
- If deploying to Android, enable developer mode on your mobile device - If deploying to Android, enable developer mode on your mobile device
then enable USB debugging in the device's settings. then enable USB debugging in the device's settings.
@ -60,11 +55,9 @@ Using one-click deploy
![](img/oneclick.png) ![](img/oneclick.png)
Troubleshooting ## Troubleshooting
---------------
Android ### Android
^^^^^^^
If you can't see the device in the list of devices when running the If you can't see the device in the list of devices when running the
`adb devices` command in a terminal, it will not be visible by Pandemonium either. `adb devices` command in a terminal, it will not be visible by Pandemonium either.