Git Product home page Git Product logo

pragma's Introduction

Build Windows Build Linux License CodeFactor

Pragma Logo

What is this?

This is the repository for the Pragma Game Engine. For more information, visit the official website: https://pragma-engine.com/

Download

All versions include the core Engine, as well as the Pragma Filmmaker (PFM).

Stable

Download

You can find older releases in the releases section of this repository. No installation is required, simply extract the archive somewhere and launch the pragma or pfm executable.

Supported languages: English, Deutsch, Français, Español, Italiano, Polski, 日本語, 中文 (Zhōngwén),

Nightly

In addition, there is also an automated nightly release with all of the latest features which you can find here, but it is not guaranteed to be stable or functional.

Updating

PFM automatically checks for updates when you launch it, and can automatically install them as well, so you don't have to download new releases manually.

Media

What platforms and hardware does it work on?

  • Windows 10 (or newer) / Ubuntu 24.04 (or newer)
  • Graphics card: GTX 1050 Ti or newer

Contributions

PFM

If you would like to contribute to the development of the Pragma Filmmaker, please go to the PFM repository for more information.

Pragma

The recommended way to work with Pragma is through the Lua API. If this is not enough, and you need more control, you will have to build Pragma manually. You can find the build instructions below.

Please consider creating a binary module if you're planning on adding new features that don't require any changes to the existing code files. This way the module can simply be installed into existing releases of Pragma. (You will still have to set up a build of Pragma before creating a binary module.)

Build Requirements

  • ~60 GiB of disk space
  • CMake 3.28.3 or newer
  • Python 3.9.5 or newer, with NumPy
Windows
  • Visual Studio 2022 or newer
  • Windows SDK 10.0.22000.0 or newer
Linux
  • Ubuntu 24.04 or newer
  • clang-18 or newer (Pragma is not compatible with gcc!)

Build Instructions

To build Pragma, all you have to do is run the following command from a command-line interface:

git clone https://github.com/Silverlan/pragma.git && cd pragma && python build_scripts/build.py --with-pfm --with-all-pfm-modules --with-vr

This will clone Pragma and run the build-script, which will automatically download all dependencies, configure CMake, and build and install the project (this will take several hours). If you don't need the filmmaker, you can omit the --with-pfm --with-all-pfm-modules arguments, which will reduce the build time and the required amount of disk space.

⚠️ Linux
Do not run the script as superuser.
The script will automatically install all required system packages. Since this requires admin priviliges, you may be prompted for your password several times.
You can disable confirmation prompts (e.g. for automated builds) by adding the --no-confirm argument, however entering your password may still be required.


Once the build script has been completed, you can find the build files in pragma/build, and the install files in pragma/build/install. The install directory contains everything you need to run Pragma.

Update

To update Pragma to a newer version (assuming the command above has completed successfully at least once), you can use the following command:

python build_scripts/build.py --update

This will pull all of the latest changes for the Pragma repository and the modules. The --update option will re-use all of the arguments used in the last execution of the build script, so you don't have to specify them again.

If you just wish to re-run the build script without updating to the latest commit, you can use the --rerun option instead. Like the --update option, this will also re-use the arguments used in the last execution of the build script.

Code Changes

If you make any code changes to the core engine code, you can build the pragma-install target to build them. This will also re-install the binaries.

If you make any code changes to a module, you will have to build the module build target first, and then build pragma-install afterwards.

Build Customization

Running the build-script with the arguments above will build and install Pragma and the Pragma Filmmaker with all dependencies. Alternatively you can also configure the build to your liking with the following parameters:

Parameter Description Default
--help Display this help
--generator <generator> The generator to use. Windows: Visual Studio 17 2022
Linux: Ninja Multi-Config
--c-compiler [Linux only] The C-compiler to use. clang-18
--cxx-compiler [Linux only] The C++-compiler to use. clang++-18
--no-sudo [Linux only] Will not run sudo commands. System packages will have to be installed manually. 0
--no-confirm [Linux only] Disable any interaction with user (suitable for automated run). 0
--with-essential-client-modules <1/0> Include essential modules required to run Pragma. 1
--with-common-modules <1/0> Include non-essential but commonly used modules (e.g. audio and physics modules). 1
--with-pfm <1/0> Include the Pragma Filmmaker. 0
--with-core-pfm-modules <1/0> Include essential PFM modules. 1
--with-all-pfm-modules <1/0> Include non-essential PFM modules (e.g. chromium and cycles). 0
--with-vr <1/0> Include Virtual Reality support. 0
--with-networking <1/0> Include networking module(s) for multiplayer support. 0
--with-lua-debugger <1/0> Include Lua-debugger support. 0
--with-swiftshader <1/0> Include SwiftShader support for CPU-only rendering. 0
--build-swiftshader <1/0> Builds SwiftShader from source instead of downloading prebuilt binaries. 0
--build-cycles <1/0> Build the Cycles library (otherwise uses pre-built binaries). Requires --with-all-pfm-modules 0
--build <1/0> Build Pragma after configurating and generating build files. 1
--build-all <1/0> Build all dependencies instead of downloading prebuilt binaries where available. 0
--build-config <config> The build configuration to use. RelWithDebInfo
--build-directory <path> Directory to write the build files to. Can be relative or absolute. build
--deps-directory <path> Directory to write the dependency files to. Can be relative or absolute. deps
--install-directory <path> Installation directory. Can be relative (to build directory) or absolute. install
--verbose <1/0> Print additional debug information. 0
--update <1/0> Update Pragma and all submodules and modules to the latest versions. 0
--rerun <1/0> Re-run the build script with the previous arguments. 0
--module <moduleName>:<gitUrl> Custom modules to install. Use this parameter multiple times to use multiple modules.
--cmake-arg <arg> Custom CMake configuration option. Use this parameter multiple times for multiple options.
--vtune-include-path <path> Path to VTune include folder. Required for CPU profiling with Intel VTune Profiler.
--vtune-library-path <libPath> Path to "libittnotify" VTune library. Required for CPU profiling with Intel VTune Profiler.

Example for using the --module parameter:

--module pr_physx:"https://github.com/Silverlan/pr_physx.git"

Alternatively you can also add custom modules by editing pragma/build_scripts/user_modules.py. (This is the recommended method.)

PFM

To build Pragma with PFM, add the --with-pfm --with-all-pfm-modules options. Due to licensing issues, this will only include a pre-built version of the Cycles renderer without OptiX support. If you want to have full CUDA and OptiX support when rendering with Cycles, you will have to add the --build-cycles option as well. You will also have to install the following before you do so:

Please note that newer versions of CUDA or OptiX will likely not work.

Modules

If you want to add functionality to Pragma without changing the core source code, you can do so by creating a custom binary module. The setup for this is very simple and only takes a few minutes. For more information, please check out the wiki article.

There are also various pre-made binary modules available for Pragma, some of which are already included with this repository, and some of which can be found online:

⚠️ Some of these modules have not been maintained and may no longer be compatible with the latest version of Pragma.

To build a module, simply run the build-script with the following parameter:

--module <moduleName>:<gitUrl>

The build script will clone, build and install the module automatically. Alternatively you can also download the module manually to pragma/modules and omit the :<gitUrl> portion of the parameter.

If you only want to install a module without building it, you can also run the following console command from within Pragma to download and install the module automatically:

install_module <githubModuleName> [<version>]

The githubModuleName consists of the GitHub username and the repository name. If no version is specified, the latest release binaries will be used.

Example:

install_module Silverlan/pr_curl

Addons

In addition to binary modules, Pragma also uses Lua as scripting language, with thousands of available function, class and library bindings. To get more information about the Lua API, check out the official wiki. An example for a Lua-addon is the Pragma Filmmaker.

Special Thanks

pragma's People

Contributors

arashpartow avatar ceifa avatar silverlan avatar slaweknowy avatar slawekwaga avatar valina354 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pragma's Issues

[BUG] "Error in configuration process, project files may be invalid" message keep popping up when i try to configure it

Screenshot (36)

any way to fix this ?

Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
Processing core libraries...
Processing core library 'shared'...
Using precompiled header src/stdafx_shared.h for project shared
Processing core library 'server'...
Using precompiled header src/stdafx_server.h for project server
Processing core library 'client'...
Using precompiled header src/stdafx_client.h for project client
Processing core library 'pragma'...
Processing core library 'pragma_server'...
Processing core library 'wms_shared'...
Processing external libraries...
Processing external library 'sharedutils-static'...
CMake Error at external_libs/CMakeLists.txt:28 (set_target_properties):
set_target_properties Can not find target to add properties to:
networkmanager

CMake Error at external_libs/CMakeLists.txt:29 (set_target_properties):
set_target_properties Can not find target to add properties to:
clientmanager

CMake Error at external_libs/CMakeLists.txt:30 (set_target_properties):
set_target_properties Can not find target to add properties to:
servermanager

CMake Error at external_libs/CMakeLists.txt:32 (set_target_properties):
set_target_properties Can not find target to add properties to:
materialsystem

CMake Error at external_libs/CMakeLists.txt:33 (set_target_properties):
set_target_properties Can not find target to add properties to:
cmaterialsystem

CMake Error at CMakeLists.txt:605 (target_include_directories):
Cannot specify include directories for target "util_image" which is not
built by this project.

CMake Error at CMakeLists.txt:606 (target_include_directories):
Cannot specify include directories for target "cmaterialsystem" which is
not built by this project.

Processing modules...
Processing tools...
Processing tool 'pfm_executable'...
Processing tool 'updater'...
Processing third-party libaries...
CMake Error at CMakeLists.txt:619 (target_include_directories):
Cannot specify include directories for target "libcurl_shared" which is not
built by this project.

Processing third-party library 'luabind'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/luabind" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:736 (register_third_party_library)

CMake Error at CMakeLists.txt:738 (target_include_directories):
Cannot specify include directories for target "luabind" which is not built
by this project.

Processing third-party library 'mpaheader'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/mpaheader" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:742 (register_third_party_library)

Processing third-party library 'cppbepuik'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/cppbepuik" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:747 (register_third_party_library)

Processing third-party library 'cppbezierfit'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/cppbezierfit" which is not
an existing directory.
Call Stack (most recent call first):
CMakeLists.txt:752 (register_third_party_library)

Processing third-party library 'spdlog'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/spdlog" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:766 (register_third_party_library)

Processing third-party library 'fmt'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/fmt" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:775 (register_third_party_library)

Processing third-party library '7zpp'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/7zpp" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:782 (register_third_party_library)

Processing third-party library 'muparserx'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/muparserx" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:789 (register_third_party_library)

Processing third-party library 'clip2tri'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/clip2tri" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:803 (register_third_party_library)

Processing third-party library 'glfw'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/glfw" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:824 (register_third_party_library)

Processing third-party library 'ogg'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/ogg" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:829 (register_third_party_library)

Processing third-party library 'vorbis'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/vorbis" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:834 (register_third_party_library)

CMake Error at CMakeLists.txt:838 (target_include_directories):
Cannot specify include directories for target "vorbis" which is not built
by this project.

Processing third-party library 'zlib'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/zlib" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:842 (register_third_party_library)

CMake Error at CMakeLists.txt:843 (target_include_directories):
Cannot specify include directories for target "zlib" which is not built by
this project.

CMake Error at CMakeLists.txt:844 (target_include_directories):
Cannot specify include directories for target "zlibstatic" which is not
built by this project.

CMake Error at CMakeLists.txt:850 (target_include_directories):
Cannot specify include directories for target "materialsystem" which is not
built by this project.

Processing third-party library 'libzip'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/libzip" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:857 (register_third_party_library)

CMake Error at CMakeLists.txt:858 (target_include_directories):
Cannot specify include directories for target "zip" which is not built by
this project.

Processing third-party library 'bzip2'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/bzip2" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:887 (register_third_party_library)

Processing third-party library 'libnoise'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/libnoise" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:897 (register_third_party_library)

CMake Error at CMakeLists.txt:904 (target_include_directories):
Cannot specify include directories for target "noiseutils-static" which is
not built by this project.

Processing third-party library 'libpng'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/libpng" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:908 (register_third_party_library)

CMake Error at CMakeLists.txt:920 (target_include_directories):
Cannot specify include directories for target "png" which is not built by
this project.

Processing third-party library 'libsamplerate'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/libsamplerate" which is not
an existing directory.
Call Stack (most recent call first):
CMakeLists.txt:925 (register_third_party_library)

Processing third-party library 'vtflib'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/vtflib" which is not an
existing directory.
Call Stack (most recent call first):
CMakeLists.txt:950 (register_third_party_library)

CMake Error at CMakeLists.txt:952 (target_include_directories):
Cannot specify include directories for target "VTFLib13" which is not built
by this project.

Processing third-party library 'recastnavigation'...
CMake Error at CMakeLists.txt:563 (add_subdirectory):
add_subdirectory given source "third_party_libs/recastnavigation" which is
not an existing directory.
Call Stack (most recent call first):
CMakeLists.txt:960 (register_third_party_library)

Processing third-party library 'rectangle_bin_pack_cmake'...
CMake Error at CMakeLists.txt:1021 (add_dependencies):
Cannot add target-level dependencies to non-existent target "png".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1023 (add_dependencies):
Cannot add target-level dependencies to non-existent target "zip".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1024 (add_dependencies):
Cannot add target-level dependencies to non-existent target "vorbis".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1025 (add_dependencies):
Cannot add target-level dependencies to non-existent target "util_pad".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1028 (add_dependencies):
Cannot add target-level dependencies to non-existent target "util_image".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1029 (add_dependencies):
Cannot add target-level dependencies to non-existent target
"materialsystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1030 (add_dependencies):
Cannot add target-level dependencies to non-existent target "mathutil".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1031 (add_dependencies):
Cannot add target-level dependencies to non-existent target "sharedutils".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1032 (add_dependencies):
Cannot add target-level dependencies to non-existent target "vfilesystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1033 (add_dependencies):
Cannot add target-level dependencies to non-existent target "datasystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1034 (add_dependencies):
Cannot add target-level dependencies to non-existent target "luasystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1035 (add_dependencies):
Cannot add target-level dependencies to non-existent target
"materialsystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1036 (add_dependencies):
Cannot add target-level dependencies to non-existent target "iglfw".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1037 (add_dependencies):
Cannot add target-level dependencies to non-existent target "iglfw".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1038 (add_dependencies):
Cannot add target-level dependencies to non-existent target "prosper".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1040 (add_dependencies):
Cannot add target-level dependencies to non-existent target
"cmaterialsystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1041 (add_dependencies):
Cannot add target-level dependencies to non-existent target "wgui".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1043 (add_dependencies):
Cannot add target-level dependencies to non-existent target "util_sound".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1044 (add_dependencies):
Cannot add target-level dependencies to non-existent target
"alsoundsystem".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1046 (add_dependencies):
Cannot add target-level dependencies to non-existent target
"servermanager".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1047 (add_dependencies):
Cannot add target-level dependencies to non-existent target
"clientmanager".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1048 (add_dependencies):
Cannot add target-level dependencies to non-existent target "util_pad".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1051 (add_dependencies):
Cannot add target-level dependencies to non-existent target "util_zip".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1055 (add_dependencies):
Cannot add target-level dependencies to non-existent target "ishared".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1056 (add_dependencies):
Cannot add target-level dependencies to non-existent target "iclient".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

CMake Error at CMakeLists.txt:1057 (add_dependencies):
Cannot add target-level dependencies to non-existent target "iserver".

The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.

Adding install rule for target "pragma" to "."...
Adding install rule for target "pragma_server" to "."...
Adding install rule for target "alsoundsystem" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "alsoundsystem" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1117 (pragma_install)

Adding install rule for target "client" to "bin"...
Adding install rule for target "cmaterialsystem" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "cmaterialsystem" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1120 (pragma_install)

Adding install rule for target "datasystem" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "datasystem" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1121 (pragma_install)

Adding install rule for target "glfw" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "glfw" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1123 (pragma_install)

Adding install rule for target "iclient" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "iclient" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1124 (pragma_install)

Adding install rule for target "iglfw" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "iglfw" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1125 (pragma_install)

Adding install rule for target "iserver" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "iserver" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1126 (pragma_install)

Adding install rule for target "ishared" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "ishared" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1127 (pragma_install)

Adding install rule for target "luabind" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "luabind" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1128 (pragma_install)

Adding install rule for target "luasystem" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "luasystem" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1129 (pragma_install)

Adding install rule for target "materialsystem" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "materialsystem" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1130 (pragma_install)

Adding install rule for target "mathutil" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "mathutil" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1131 (pragma_install)

Adding install rule for target "prosper" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "prosper" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1132 (pragma_install)

Adding install rule for target "server" to "bin"...
Adding install rule for target "servermanager" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "servermanager" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1134 (pragma_install)

Adding install rule for target "shared" to "bin"...
Adding install rule for target "sharedutils" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "sharedutils" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1136 (pragma_install)

Adding install rule for target "util_image" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "util_image" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1137 (pragma_install)

Adding install rule for target "util_sound" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "util_sound" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1138 (pragma_install)

Adding install rule for target "vfilesystem" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "vfilesystem" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1139 (pragma_install)

Adding install rule for target "wgui" to "bin"...
CMake Error at CMakeLists.txt:1108 (install):
install TARGETS given target "wgui" which does not exist.
Call Stack (most recent call first):
CMakeLists.txt:1140 (pragma_install)

Custom install targets:
Adding install rule for "DEPENDENCY_BOOST_DATE_TIME_LIBRARY-NOTFOUND.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "DEPENDENCY_BOOST_SYSTEM_LIBRARY-NOTFOUND.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/bzip2/RelWithDebInfo/bz2.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma-1.2.2/third_party_libs/luajit/src/luajit.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/bin/RelWithDebInfo/luabind.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/libnoise/src/RelWithDebInfo/noise.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/ogg/RelWithDebInfo/ogg.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/vorbis/lib/RelWithDebInfo/vorbis.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/vorbis/lib/RelWithDebInfo/vorbisfile.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/vtflib/src/RelWithDebInfo/VTFLib13.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/libzip/lib/RelWithDebInfo/zip.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/libpng/RelWithDebInfo/libpng16.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/spdlog/RelWithDebInfo/spdlog.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/mpaheader/RelWithDebInfo/mpaheader.dll" to "C:/Program Files (x86)/pragma/bin"...
Adding install rule for "E:/pragma/third_party_libs/zlib/RelWithDebInfo/zlib1.dll" to "C:/Program Files (x86)/pragma/bin"...
Running install script for tool 'E:/pragma-1.2.2/tools/pfm_executable'...
Adding install rule for "E:/pragma/tools/pfm_executable/RelWithDebInfo/pfm.exe" to "./"...
Running install script for tool 'E:/pragma-1.2.2/tools/updater'...
Adding install rule for "E:/pragma/tools/updater/RelWithDebInfo/updater.exe" to "./bin/"...
Configuring incomplete, errors occurred!

No public access to modules on github

Change logger to use std::format once clang supports it

std::format is currently not properly supported by the clang compiler. Once it is supported, the logging system should be switched to it.
Steps:

pragma/third_party_libs/spdlog/include/spdlog/tweakme.h:
Change

#ifdef _WIN32
#define SPDLOG_USE_STD_FORMAT
#endif

to

#define SPDLOG_USE_STD_FORMAT

pragma/CMakeLists.txt:
Change

if(WIN32)
	set(SPDLOG_USE_STD_FORMAT ON CACHE BOOL ON FORCE)
else()
	set(SPDLOG_USE_STD_FORMAT OFF CACHE BOOL OFF FORCE)
endif()

to

set(SPDLOG_USE_STD_FORMAT ON CACHE BOOL ON FORCE)

pragma/core/shared/include/pragma/entities/baseentity.h
pragma/core/server/include/pragma/entities/s_baseentity.h
pragma/core/client/include/pragma/entities/c_baseentity.h
Remove #ifdef _WIN32 around the std::formatter code blocks and #include <format>.

pragma/core/shared/src/logging.cpp
Remove #ifdef _WIN32 around the pragma::logging::client_type and pragma::logging::server_type definitions and remove the #else case.

For all instances where an entity is printed using Con::cout<<ent.print() (or cwar,...), change it to Con::cout<<ent.

cmake error: configuring incomplete when building pr_unirender from the main build script

python 3.9.7 (active)
cmake 3.25.1

seems like the pr_unirender modules' setup.py script at line 25 doesn't catch the double backslashes when it's called by subprocess in the main build.py script at line 202, which raises an error before it can be corrected like at line 625

-- Compiling OpenSubdiv version v3_4_3
-- Using cmake version 3.25.1
-- Could NOT find GLFW (missing: GLFW_INCLUDE_DIR GLFW_LIBRARIES) (Required is at least version "3.0.0")
CMake Error at cmake/FindDXSDK.cmake:84 (message):
  Could not find required library d3d11
Call Stack (most recent call first):
  CMakeLists.txt:377 (find_package)


-- Configuring incomplete, errors occurred!
See also "C:/pragma/pragma/deps/OpenSubdiv/build/CMakeFiles/CMakeOutput.log".
Traceback (most recent call last):
  File "c:\pragma\pragma\build_scripts\build.py", line 651, in <module>
    execbuildscript(scriptPath)
  File "c:\pragma\pragma\build_scripts\build.py", line 603, in execbuildscript
    execfile(filepath,g,l)
  File "c:\pragma\pragma\build_scripts\build.py", line 525, in execfile
    exec(compile(file.read(), filepath, 'exec'), globals, locals)
  File "c:\pragma\pragma\modules/pr_unirender/build_scripts/setup.py", line 129, in <module>
    cmake_configure("..",generator,["-DTBB_ROOT=" +one_tbb_root,"-DTBB_INCLUDE_DIR=" +one_tbb_root +"/include","-D NO_PTEX=1","-D NO_DOC=1","-D NO_OMP=1","-D NO_TBB=1","-D NO_CUDA=1","-D NO_OPENCL=1","-D NO_CLEW=1","-D NO_EXAMPLES=1"])
  File "c:\pragma\pragma\build_scripts\build.py", line 202, in cmake_configure
    subprocess.run(args,check=True)
  File "C:\ProgramData\Anaconda3\lib\subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['cmake', '..', '-G', 'Visual Studio 17 2022', '-DTBB_ROOT=c:\\pragma\\pragma/deps/tbb2019_20190605oss', '-DTBB_INCLUDE_DIR=c:\\pragma\\pragma/deps/tbb2019_20190605oss/include', '-D NO_PTEX=1', '-D NO_DOC=1', '-D NO_OMP=1', '-D NO_TBB=1', '-D NO_CUDA=1', '-D NO_OPENCL=1', '-D NO_CLEW=1', '-D NO_EXAMPLES=1']' returned non-zero exit status 1.

Also I don't know if running the script inside an empty folder named pragma would cause any problems, I assume not.

Attached: the 'see also' warning log below the error message
CMakeOutput.log

Some external libs private yet

Move all hardcoded GUI classes to Lua-scripts

There's no real reason to have most of them hardcoded, with the exception of the base elements defined in the wgui-library itself.
All of the GUI elements defined in the engine should be moved to Lua scripts.

Assertion failed

Hi, I'm on a machine running Windows 11 and when I try to open Pragma.exe or Pragma Filmmaker I get this error message:
pragma

Embed color intensity and transparency ratios into animated sprite sheet data

The Pragma Filmmaker requires the average color intensity of a texture for particles to determine the color of the light emitted by particles which are using that texture. The color intensity is computed using the "cs_calc_image_luminance" and written into the material file.
Since this computes the average color intensity for the entire texture, it's not ideal for animated, spritesheet-based textures. For spritesheet based textures, the color intensity should be calculated per frame instead, and then written into the spritesheet data file.

Additionally, the transparency of the texture could be used to change the intensity of the light emitted by the particles, i.e. a very transparent texture (on average) should produce less light than a very opaque one. This should also take spritesheets into account. This could also be integrated into the "cs_calc_image_luminance" shader.

Allow user to change game and addon mount order

  • Allow enabling/disabling mounted games/addons
  • Allow adding custom mounted games (e.g. source mods)
  • Allow changing mount order
    Use popular mod managers as reference (e.g. nexus mod manager?)

Use console command internally to mount or dismount addons/games (e.g. "mount_addon ")

Resolve circular core dependencies

The core libraries (engine, shared, server, client, cengine) have several circular dependencies to each other that need to be resolved.
It should be:
engine: No dependencies to the others
shared: Dependent on engine
server: Dependent on shared and engine
cengine: Dependent on engine
client: Dependent on cengine, engine and shared

At the moment shared is also dependent on server, engine is dependent on shared and cengine is dependent on client. These need to be resolved!

Improve parallelization of loading processes

  • Make sure FileManager is thread-safe
  • Make material/texture system thread-safe and parallelize
  • Make model system thread-safe and parallelize
  • Make asset import system (e.g. Source Engine assets) thread-safe and parallelize
  • Make PBR conversion thread-safe and parallelize
  • Make texture conversion (vtf -> dds) thread-safe and parallelize

(pfm) crashing when clicking add prop/dynamic prop button

linux x64
kernel 5.15
stable github download

[LUA] [string "addons\tool_model_editor\lua\gui\editors\model_editor\editor_skeleton.lua"]:123: attempt to call method 'CreateBuffers' (a nil value):
        local ent = self:GetEntity()
        if(util.is_valid(ent) == false or self.m_shader == nil) then return end
  >     local bufVerts,bufBoneIndices,offsets = self.m_shader:CreateBuffers(ent)
        if(bufVerts == nil) then return end
        self.m_bufVerts = bufVerts

    Callstack:
    1: UpdateSkeleton[120:128] [Lua:method] : [string "addons\tool_model_editor\lua\gui\editors\model_editor\editor_skeleton.lua"]:123
        2: SetModel[129:141] [Lua:method] : [string "addons\tool_model_editor\lua\gui\editors\model_editor\editor_skeleton.lua"]:139
            3: SetModel[609:626] [Lua:method] : [string "addons\tool_model_editor\lua\gui\editors\model_editor\wimodelviewer.lua"]:623
                4: Clear[597:599] [Lua:method] : [string "addons\tool_model_editor\lua\gui\editors\model_editor\wimodelviewer.lua"]:598
                    5: ?[63:482] [Lua:] : [string "addons\tool_model_editor\lua\gui\editors\model_editor\wimodelviewer.lua"]:481
                        6: create[-1:-1] [C:field] : [string "=[C]"]:-1
                            7: ?[11:112] [Lua:] : [string "addons\tool_model_editor\lua\gui\wimodeldialog.lua"]:90
                                8: create[-1:-1] [C:field] : [string "=[C]"]:-1
                                    9: fCreateElement[242:246] [Lua:local] : [string "addons\tool_model_editor\lua\gui\wimodeldialog.lua"]:243                                        ...
[LUA] addons\tool_model_editor\lua\gui\wimodeldialog.lua:90: OnInitialize:
        gui.create("WIResizer",contents)
    

  >     local mdlViewer = gui.create("WIModelViewer",contents)
        self.m_mdlViewer = mdlViewer
    


    Callstack:
    1: ?[11:112] [Lua:] : addons\tool_model_editor\lua\gui\wimodeldialog.lua:90
        2: create[-1:-1] [C:field] : =[C]:-1
            3: fCreateElement[242:246] [Lua:local] : addons\tool_model_editor\lua\gui\wimodeldialog.lua:243
                4: open_model_dialog[10:52] [Lua:field] : lua\gui\dialog.lua:38
                    5: fcOnClick[74:80] [Lua:upvalue] : addons\filmmaker\lua\gui\pfm\actoreditor.lua:75
                        6: m_fcAction[185:190] [Lua:field] : lua\gui\wicontextmenu.lua:187
                            7: ?[81:90] [Lua:] : lua\gui\wimenuitem.lua:86
You can use the console command 'lua_help <name>' to get more information about a specific function/library/etc.

No file index table found for 'models'! Generating...
Creating new icon generator (Resolution: 128x128; Char resolution: 256x512)...
Generating next icon for model empty...
File index table for 'models' has been generated!
Saving icon as model_icons/370180285156928338
Generating next icon for model error...
Illegal instruction

i get this error. the add prop menu opens for a second and the whole thing crashes

build.py Exception: CalledProcessError

For some reason os.getcwd sets the terminal directory to the root directory+/pragma instead of getting the current directory (would os.curdir work instead?)
image
where I would expect c:/pragma/pragma/pragma (the same directory the terminal was run from)
And yea it is a little silly, iv'e gained another pragma subfolder, an oopsy of mine and probably the cause. Problem is I can't move it with git attached to the dependencies folder.

Run without debugging using --update:
C:\pragma\pragma\pragma\build\external_libs\util_formatted_text\RelWithDebInfo\util_formatted_text.lib wgui.vcxproj -> C:\pragma\pragma\pragma\build\external_libs\wgui\RelWithDebInfo\wgui.dll servermanager.vcxproj -> C:\pragma\pragma\pragma\build\external_libs\networkmanager\RelWithDebInfo\servermanager.lib Traceback (most recent call last): File "C:\pragma\pragma\pragma\build_scripts\build.py", line 813, in <module> cmake_build(build_config,targets) File "C:\pragma\pragma\pragma\build_scripts\build.py", line 209, in cmake_build subprocess.run(args,check=True) File "C:\Users\petes beast\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 524, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['cmake', '--build', '.', '--config', 'RelWithDebInfo', '--target', 'pragma-install-full', 'pr_prosper_vulkan', 'pr_bullet', 'pr_audio_soloud', 'pr_curl', 'pr_dmx', 'pr_chromium', 'pr_unirender', 'pr_curl', 'pr_dmx', 'pr_xatlas', 'pr_openvr', 'pr_prosper_vulkan', 'pr_bullet', 'pr_audio_soloud', 'pr_curl', 'pr_dmx', 'pr_chromium', 'pr_unirender', 'pr_curl', 'pr_dmx', 'pr_xatlas', 'pr_openvr', 'pfm', 'render_raytracing', 'render_raytracing', 'pragma-install']' returned non-zero exit status 1.

Run with debugging:
Exception has occurred: CalledProcessError (note: full exception trace is shown but execution is paused at: <module>) Command '['cmake', 'C:/pragma/third_party_libs/luajit', '-G', 'Visual Studio 17 2022']' returned non-zero exit status 1. File "C:\pragma\pragma\pragma\build_scripts\build.py", line 202, in cmake_configure subprocess.run(args,check=True) File "C:\pragma\pragma\pragma\build_scripts\build.py", line 421, in <module> (Current frame) cmake_configure(root +"/third_party_libs/luajit",generator) subprocess.CalledProcessError: Command '['cmake', 'C:/pragma/third_party_libs/luajit', '-G', 'Visual Studio 17 2022']' returned non-zero exit status 1.

[BUG] Crash when opening and closing console

General

  • Pragma Version Latest main, Compiled relwithdebinfo

Describe the bug
Crash while in main menu close console then reopen, only happens first start of game it seems like

To Reproduce
Steps to reproduce the behavior:

  1. Open game
  2. Within few sec close the console and then open back again
  3. You should get a crash

Expected behavior
The game will crash with a Unhandled exception error

Screenshots
If applicable, add screenshots to help explain your problem.
Screenshot 2024-08-20 225313

Hardware (please complete the following information):

  • OS: Windows 11
  • GPU: RTX 4060
  • GPU Driver version: 556.12

Log
If a log.txt file exists in the root directory of Pragma, please attach it to this issue.
If the problem is reproducible, please launch Pragma with the launch parameter -log 1 and re-create the problem before uploading the log. This will add significantly more information to the log-file, which will help the developers find the cause much more easily
log.txt

FileNotFoundError: [...] '/home/rasp/pragma/build/build_config.json'

I have this script that runs the build script with the parameters of --update 1 --with-pfm --with-all-pfm-modules --with-vr --no-sudo 1 --module pr_chromium:"https://github.com/Silverlan/pr_chromium". But, whenever I run it, it crashes with this error:

Traceback (most recent call last):
File "/home/rasp/pragma/build_scripts/build.py", line 85, in <module>
cfg = json.load(open(build_dir +"/build_config.json"))
FileNotFoundError: [Errno 2] No such file or directory: '/home/rasp/pragma/build/build_config.json'

I'm using Garuda Linux. I've also tried re-cloning the repository.

Standardize path separators

Currently path separators are wildly random, sometimes "/" is used and sometimes "".
This should be standardized to always use forward slashes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.