Enemy Duplication Tutorial (WIP)

From Pikmin Technical Knowledge Base
Revision as of 00:17, 14 January 2024 by Portable Productions 2 (talk | contribs) (added enemy dupe method page for p4)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Basic summary of how to duplicate enemies using hard references in blueprint files, methods are not full proof and currently need more research to get working for all enemies.

Method Contributors

Requirements

Setting Up Your Blueprint File

  • Every enemy comes with a blueprint file corresponding to their enemy ID
  • Every blueprint file is located within Placeables/Teki/Enemy_ID

Step 1: Grab your enemy file of choice, for this example we will be using /Placeables/Teki/GDodoro.uasset.

Inside of the blueprint file you need to change various strings to get the enemy to work and be registered as it's own entity

  • 0x2155 = ENEMY_C ID
  • 0x16A5 = Default_C ID
  • 0x1813 = Teki Parameter ID
  • 0x180B = Actor Name ID
  • 0x638 = Soft Reference Path

Here I have documented the offsets you need to go to, for this example, we will be changing the string GDodoro to GDadoro

  • GDodoro_C = GDadoro_C
  • Default__GDodoro_C = Default__GDadoro_C
  • DODORO = DADORO
  • Dodoro = Dadoro
  • %/Game/Carrot4/Placeables/Teki/GDodoro = %/Game/Carrot4/Placeables/Teki/GDadoro

DT_TekiParameter Entry

After setting up your blueprint, navigate to the file labeled TekiParameter located in.

  • Core\GActor\DT_TekiParameter.uasset

Decompile this file using the *P4UassetEditor

Inside of the JSON, navigate to the bottom of the Teki Parameter file and create a new entry for your duplicated enemy.

[Example Screenshot]

Inside of this entry, we can see two particular references to the original blueprint we modified

those entries being the following.

  • 0x1813 = Teki Parameter ID
  • 0x180B = Actor Name ID

change the entries to match the modified blueprint's strings

Teki Parameter ID = DADORO Actor Name ID = GDadoro

after making a new entry, save and compile your new DT_TekiParameter file.

Manifest.json + Dependencies

For this example we will be using the original Manifest.json that comes with *UToc Packer

Open the Manifest.json in Visual Studio or any editing software

Inside of the manifest.json, we will be looking at GDodoro.uasset's entry

   {
     "Path": "/Carrot4/Content/Carrot4/Placeables/Teki/GDodoro.uasset",
     "ChunkId": "fa68a55fd087426200000002"
   },

Above, we have the entry in the manifest.json for GDodoro's blueprint file

  • "Path" = self explanatory, it is the file path of the compiled item
  • "ChunkId" = the id used to dedicate the existing data to the dependencies section

For this example, we will be sacrificing an unused file to give our new entity a slot.


Basic Problems + Dilemma + Soft References

Currently, the major problem with enemy duplication is getting enemies to spawn using soft references

  • Examples of soft references are strings used in tandem with existing blueprints to spawn enemies
  • EX: "/Game/Carrot4/Placeables/Teki/GChappy.GChappy_C"
  • EX: "/Game/Carrot4/Placeables/Teki/GFireTank.GFireTank_C"
  • EX: "/Game/Carrot4/Placeables/Teki/GYukiFutakuchi.GYukiFutakuchi_C"

Using these strings which are referenced in the blueprint files of duplicate enemies will not automatically help new enemies to spawn in via the soft reference method (generator files, zukan bp, ECT), It is currently unknown how to get additional soft references to work, feel free to add onto this article should you put time into researching the issue.