Skip to content

Unreal Engine Plugin #1

@charneykaye

Description

@charneykaye
  • Plugin function inside a user's Unreal Engine game project
    • Read the exported files from the game resources folder
    • Instantiate the Engine to load the XJ project file
    • Start the work-- this will refresh the content from inside the build folder of the XJ project
    • Start the XJ music engine work with a specific template-- dropdown can read all available templates from the Engine after it loads the project
    • Periodically call the XJ music engine to find out what audio needs to be scheduled or any updates to the audio that is currently playing
      • Schedule playback of an audio file
      • Change volume of an audio file currently playing - Pay attention to the audio schedule event getFromVolume() and getToVolume() and use these to set the volume of the sound. Ideally, we will automate the volume movement so it changes from->to from the beginning of playback of this sound to the end
      • Stop playback of an audio file
      • Consume the new AudioScheduleEvent object to Create/Update/Delete audios playing (instead of repeatedly consuming the entire list)
    • resolve Unreal engine playback termination and/or thread usage problems
    • Unreal Engine loads and prepares all XJ music project audio files during the Unreal project cooking process
    • Enable the Unreal Engine game to send signals to the XJ music engine when there need to be changes in the music
      • Set intensity (float)
      • Set memes (set of strings)
    • XJ mixer output functions as a node inside of the Sound Cue
    • Compatibility with UE5
  • How to build & ship plugin
    • Plugin code committed to repository should not duplicate the xjmusic engine code- not the headers nor the .lib, not for the engine nor its dependencies, i.e. spdlog and nlohmann
    • Use a build script to prepare the plugin dependencies
      • build the xjmusic engine .lib
      • copy the xjmusic engine headers into place
      • copy nlohmann where when it's already downloaded
  • Unreal Engine interoperates with the XJ music workstation
    • Use clicks the toolbar button in Unreal Engine to open the current Unreal project settings XJ project file in the XJ music workstation - requires Workstation opens a file provided in the first command-line argument xjmusic#463
    • XJ music settings, only necessary to provide path to project file (no project folder setting) and we will compute the path to the project folder, see Engine.cpp:165 and then Engine.getPathToBuildDirectory()
    • XJ music workstation has a feature to "Build" the project (e.g. compiling a Blueprint inside Unreal before using it) which updates the production template files inside the Unreal project - Workstation has Build functionality to prepare assets for Engine xjmusic#421
    • While running the workstation, use the Build feature to export the production template format (one .json file and flat set of converted audio files) to the build folder inside the XJ music project folder
    • Configure the XJ music Unreal Plugin inside your game with the location of the XJ music project file in your Unreal project
    • Plugin shows toolbar in Unreal Engine with an option to launch the XJ music workstation
    • How does the plugin/workstation understand the connection between the original working .xj project (with subfolders for library/program/instrument .json files and their audio files) and the production template that lives in the Unreal Project
  • Engine work in C++ Engine work in C++ xjmusic#401 the last mile of being able to run XJ music production from inside the C++ engine code
  • Engine plays any project in the given file path xjmusic#377
  • Create folder in main repository containing Unreal Engine plugin files - .uplugin file and sub-folders
  • Asset manager extension
    • All audios loaded to the content browser and used by the plugin from there
    • Custom asset type that reference or impersonate xj project
  • Set Copyright on all XJ files Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
  • Update repository structure so the root contains the .uplugin file
    • put the example project in an Examples folder
    • Update README instructions / Setup scripts to show user how to setup the example project locally by copying the example project somewhere and then putting the plugin into it

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions