julianxhokaxhiu / FFNx

Next generation modding platform for Final Fantasy VII and Final Fantasy VIII ( with native Steam 2013 release support! )
GNU General Public License v3.0
371 stars 49 forks source link
directx11 directx12 final-fantasy modding modding-framework modding-games modding-library opengl vulkan

License Overall Downloads Latest Stable Downloads Latest Canary Downloads GitHub Actions Workflow Status


Kudos to Cinzia Cancedda (aryaaiedail)

FFNx

Next generation modding platform for Final Fantasy VII and Final Fantasy VIII (with native Steam 2013 release support)

Introduction

FFNx is a continuing evolution of the FF7_OpenGL driver, made by Aali.

FFNx today in a nutshell:

The Team

FFNx is developed by a core team, currently composed of:

We are always open for contributions via PRs, and in case you want to join the core team, feel free to approach us on Discord and we will evaluate on a case-by-case basis.

Features

As a user

FF7/FF8

FF7

FF8

As a modder

Documentation

For a more in-depth documentation feel free to visit the docs/ folder.

Screenshots

Vanilla/Steam
Final Fantasy VII running on Vulkan
Final Fantasy VIII running on Vulkan
Final Fantasy VIII Worldmap graphical patches

Tech Stack

If you're curious to know, FFNx makes use of:

How to build

Available build profiles:

Once the project is built you can find the output in this path: .build/bin

Preparation

Please note:

FFNx uses vcpkg as a package manager to resolve dependencies. Failing to follow these steps will result in build errors.

  1. Clone the vcpkg project in the root folder of your C: drive (git clone https://github.com/Microsoft/vcpkg.git)
  2. Go inside the C:\vcpkg folder and double click bootstrap-vcpkg.bat
  3. Open a cmd window in C:\vcpkg and run the following command: vcpkg integrate install

NuGet

Please note:

This step will speed up your compilation times by avoiding the vcpkg dependencies rebuild.

  1. Make sure you have NuGet CLI installed.
  2. Create a Personal Access token ( classic ) with the write:packages permission.
  3. Open a cmd window and run the following commands ( replace YOUR_GITHUB_USERNAME and YOUR_GITHUB_PAT accordingly ):
    $ nuget sources add -Name github -Source "https://nuget.pkg.github.com/julianxhokaxhiu/index.json" -Username YOUR_GITHUB_USERNAME -Password YOUR_GITHUB_PAT -StorePasswordInClearText
    $ nuget setApiKey YOUR_GITHUB_PAT -Source "https://nuget.pkg.github.com/julianxhokaxhiu/index.json"

Visual Studio

Please note:

By default Visual Studio will pick the x86-Release build configuration, but you can choose any other profile available.

  1. Download the the latest Visual Studio Community installer
  2. Run the installer and import this .vsconfig file in the installer to pick the components required to build this project
  3. Make sure you select the English Language pack in the language list before clicking Install
  4. Once installed, open this repository as a folder in Visual Studio
  5. Choose as preset in the status bar the one you desire
  6. Click the Build button

Visual Studio Code

  1. REQUIRED! Follow up the steps to install Visual Studio, which will also install the MSVC toolchain
  2. Download and install the latest Visual Studio Code release
  3. Install the following extensions:
  4. Open this repository as a folder in Visual Studio Code
  5. Choose as preset in the status bar the one you desire
  6. Click the button on the status bar Build

Neovim with clangd (optional)

  1. REQUIRED! Follow up the steps to install Visual Studio, which will also install the MSVC toolchain
  2. REQUIRED! Have Neovim installed with clangd as LSP
  3. Install the extension Clang Power Tools in Visual Studio Community
  4. Open the solution FFNx.sln under the .build directory with Visual Studio Community (sln file is generated by the build process)
  5. Right-click on FFNx solution (under the Solution Explorer) then click on Clang Power Tools -> Export Compilation Database
  6. Copy the compile_commands.json generated file into the root of the repository
  7. Open Neovim and enjoy!

To build from the terminal (example with RelWithDebInfo):

NOTICE: For the dependency step, make sure that PATH variable does not contain any UNIX command tools since vcpkg build process is based on UNIX tools. Also on terminal it might not auto detect the kernel32_lib, so pass it with -DCMAKE_LIBRARY_PATH=%kernel32_lib% (e.g. cmake --preset RelWithDebInfo -DCMAKE_LIBRARY_PATH="C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x86")

Auto-Formatting

CMake Files

  1. REQUIRED! Install Python
  2. Install cmake-format and make sure the binary is available in your PATH environment variable
  3. OPTIONAL! Integrate it in your own IDE (eg. for Visual Studio Code use the relative extension)

Support

FFNx offers multiple support channels, pick the one you prefer

Forums

Discord

Github

Credits

This project could have not been a reality if those people would have not worked on FF7 and FF8 with their deep passion and knowledge. FFNx makes use also of their work, and I will never be enough grateful to those people. The order is purely Alphabetical.

These people are:

I'm sure I forgot many others. In case you feel you're missing here, feel free to open a PR! I'll be happy to include you because you deserve this.

License

FFNx is released under GPLv3 license. You can get a copy of the license here: COPYING.txt

If you paid for FFNx, remember to ask for a refund from the person who sold you a copy. Also make sure you get a copy of the source code (if it was provided as binary only).

If the person who gave you this copy refuses to give you the source code, report it here: https://www.gnu.org/licenses/gpl-violation.html

All rights belong to their respective owners.