OpenPF2 / Plugin

Core C++ Game Logic for OpenPF2 (Status: Pre-alpha)
https://www.openpf2.org/
Other
23 stars 6 forks source link
cpp game-development plugins ue5 ue5-plugin unreal unreal-engine unreal-engine-5

# OpenPF2 for Unreal Engine

Tabletop made of four arrows pointing toward the center of the table, with the tagline 'Just add story.'

A plug-in for Unreal Engine that provides logic and content for building an RPG with mechanics similar to Pathfinder™ 2nd Edition by Paizo Publishing.

All abilities and stats are implemented using the Gameplay Ability System (GAS) plug-in that ships with Unreal Engine.

Why OpenPF2?

OpenPF2 is a labor of love from experienced developers who believe in the power of UE and want to bring that power to role-playing game development. We’re here to give independent game developers the structure, starting content, and support to experiment and implement Action RPGs or turn-based RPGs quickly, with as little or as much C++ code as they feel comfortable with.

Unlike other RPG frameworks on the Unreal Marketplace, OpenPF2 is:

Compatibility

This plug-in is compatible with Unreal Engine 5.3.

Current Status

This plug-in is in pre-alpha status. It is not yet expected to be useful for production-grade projects, but it may be a useful reference for you even in its current state.

We are attempting to model as much of the PF2 Core Rulebook as possible. But, before we can do that, the base framework and a proof-of-concept set of MVP scope needs to be completed. You can can track our progress so far using the issue tracker. At a high level, the MVP scope includes:

Note on Units

Pathfinder 2E materials—including the Core Rulebook—use imperial units (feet), but Unreal Engine uses metric units, so OpenPF2 does as well. In the real world, 1 foot is equal to 0.3048 meters; but, to avoid having to deal with decimal values, OpenPF2 uses a simple conversion of 1.5 meters per 5 feet that slightly rounds values (1.5 meters equals ~4.92 feet in the real world).

To convert units provided by Pathfinder 2E materials into those used in OpenPF2, simply multiply the provided value (in feet) by a ratio of 1.5/5. For example, if a weapon has a range of 60 feet, then its range in OpenPF2 is 60 feet * 1.5 meters/5 feet = 18 meters.

Installation

  1. Check out the project into the Plugins/ folder of your larger UE5 project. Ensure that the folder into which you check out the project is named OpenPF2.
  2. Check out the https://github.com/OpenPF2/EnhancedUnrealSpecs project into Plugins/EnhancedAutomationSpecs.
  3. Modify the *.uproject file of your larger UE5 project to ensure that both the OpenPF2 and GameplayAbilities plug-ins are enabled, like so:
    "Plugins": [
     {
       "Name": "GameplayAbilities",
       "Enabled": true
     },
     {
       "Name": "OpenPF2",
       "Enabled": true
     }
    ]
  4. (Optionally) If you would like to write tests that use the Enhanced Automation Spec framework, you can make your project depend directly on the EnhancedAutomationSpecs plugin by adding this to the *.uproject file of your larger UE5 project:
    "Plugins": [
     {
       "Name": "EnhancedAutomationSpecs",
       "Enabled": true
     }
    ]
  5. Re-generate Visual Studio/Rider project files.
  6. Edit the *.Build.cs file and add "OpenPF2" to the PrivateDependencyModuleNames section:
    PrivateDependencyModuleNames.AddRange(new string[]
    {
       "OpenPF2GameFramework",
    });
  7. Compile your project.
  8. Copy the Config/Tags/ folder from the plug-in into your project's Config folder. Even in UE 5.1+, this is still required. The engine does not automatically scan or package config files provided by plugins.

Licensing

Open-source Licenses

Since this plug-in incorporates content and elements that were originally created by Paizo Publishing, the code in this repository is licensed under a mix of the Open Game License (OGL) version 1.0a and the Mozilla Public License version 2.0. See LICENSE.txt for details on what portions of the code base are covered by each license.

All code in this project is licensed in a way that is compatible with the Unreal Engine End User License Agreement For Publishing. However, if you are attempting to use this code with other game engines (e.g., Unity) or projects that are not based on Unreal Engine, be aware that rare, select portions of the code are licensed from Epic Games only for use with Unreal Engine and will need to be removed from your copy of the project.

For information about precisely which license applies to a source file, consult its file header. If you encounter a file that lacks a license in its header, please file an issue.

Alternate, Commercial Licensing (for Proprietary Projects)

If you are developing a commercial, proprietary, or closed-source game or project that is otherwise incompatible with the open-source OGL and MPL licensing of this plug-in, the author is willing to discuss alternate, custom licensing.

The license will be among the following parties:

If you are interested in a custom license, please reach out to us (see "Reach Out" below).

Reach Out

Interested in joining the project? Having trouble getting started with the code? Want to explore a custom license? Here are a few ways to get in touch with us:


Paizo and Pathfinder are trademarks of Paizo Inc. Nothing in this project is officially sanctioned or endorsed by Paizo Publishing.