My Medieval Minifigures Mod for Ultimate Epic Battle Simulator

I made four medieval minifigures and modded them into Ultimate Epic Battle Simulator. They are the Lion Crusader, the Black Falcon Archer, the Castle blue knight (placeholder name), and the Landsknecht. They are based on the Classic Castle theme. The landsknecht was inspired by various custom minifigures. Since there is no arquebus part for minifigures, I used the musket in place of it for the landsknecht. All in all, I am happy with how this turned out in spite of some issues related to textures and LODs. This passion project took a total of two days to make. I uploaded the mod to the Steam Workshop so you can have fun too!

Download the mod on Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=2879376580



Fig 1. My Medieval Minfigures mod for Ultimate Epic Battle Simulator



I've always wanted a LEGO Total War game and LEGO Mount and Blade game. Making this mod got me close to this dream of mine.

Current stats:

  1. Landsknecht - Type: Ranged (arquebus), Health: 100, Damage: 100, Accuracy: 80%, Range: 80 m
  2. Lion Crusader - Type: Melee (halberd), Health: 150, Damage: 35
  3. Castle blue knight (placeholder name) - Type: Melee (short sword), Health: 180, Damage: 30
  4. Black Falcon Archer - Type: Ranged (bow), Health: 100, Damage: 33, Range: 110 m
The following units are based on/inspired by the following minifigures:
  1. Castle blue knight: https://www.bricklink.com/v2/catalog/catalogitem.page?M=cas182#T=S&O={%22iconly%22:0}
  2. Black Falcon Archer: https://www.bricklink.com/v2/catalog/catalogitem.page?M=cas301#T=S&O={%22iconly%22:0}
  3. Lion Crusader: https://www.bricklink.com/v2/catalog/catalogitem.page?M=cas542&#T=I
  4. Landsknecht: https://www.flickr.com/photos/41418670@N08/6866335929

I did the following things to mod the minifigures into UEBS (process of the Landsknecht):

  1. I created the Landsknecht minifigure in Mecabricks.
  2. I exported the Landsknecht minifigure as a .obj file.
  3. I imported the Landsknecht into blender. I selected all parts, right-clicked, and then I enabled smooth shading.
  4. I adjusted the arms so that they are in a T-Pose position. I selected each arm and hand and moved them. Since the pivot point was close to the torso of the model, the arms and hands were not rotating correctly. To solve this, in edit mode I clicked on a vertex near the shoulder of the arm and used shift + s to set cursor to selected.
  5. I then set the pivot point to be the location of the 3D cursor. 
  6. I exported the Landsknecht as an .fbx file.
  7. I imported the Landsknecht into Mixamo and created the rig.
  8. I exported the rigged Landsknecht as an .fbx file optimized for Unity in the T-pose position.
  9. I created a project in Unity specifically for the Landsknecht.
  10. I imported the modding tools package for UEBS created by Brilliant Games Studio into the assets folder of the project.
  11. I saved the current scene and named it "Landsknecht scene" The scene was saved to the assets folder.
  12. I imported the rigged Landsknect .fbx file into the assets folder. 
  13. In the inspector I disabled import animations. I set the rig to humanoid instead of legacy because I planned on using the in-game animations.
  14. I dragged the scene object from the modding tools package into the scene. I set its location to be 0, 0, 0 (x, y, z).
  15. I dragged the Landsknecht rigged model (skinned mesh) into the scene. I set its location to be 0, 0, 0 (x, y, z). Since the model was large, I set its size to be 0.4, 0.4, 0.4 (x, y, z).
  16. The landsknecht model had no face texture; it only had colors/materials when I imported it into Unity. To solve this, I imported the face texture found in the folder of the .obj file I exported from Mecabricks. I then assigned this texture to the material assigned to the face. I did this by clicking on "albedo" in the inspector after clicking on the material and selecting the imported face texture.
  17. I dragged the Landsknecht part in the hierarchy into the setup part. This made it a child of the setup part.
  18. I adjusted height of the setup boundaries to be 1.7. I adjusted the width of the setup boundaries to be 0.8.
  19. I assigned the character animator to the Landsknecht in the inspector after clicking on the setup
  20. part in the hierarchy.
  21. Since the Landsknecht model has 12 skinned meshes (parts of the rigged minifigure), 
  22. I created 12 LOD elements for it and assigned each of the skinned
  23. meshes to each element.
  24. I assigned the average color of each element to match the skinned mesh assigned to it except for the first element and the skinned mesh with the face texture. I clicked render to distant LOD for all elements. I only clicked "Use distance LOD color" for all elements except for the first element and the one with the face texture.
  25. I set the animation set to Archer Humanoid. I set the voice to be "Englishman." I checked the "ranged" unit stat. 
  26. I set ranged projectile to "bullet." I set accuracy percent to 80%. I set health and damage to be 100. I set attack range to 80. I set attack speed time to 2. I set attack break time to 2.
  27. In Bricklink Studio I exported the musket minifigure part with a reddish brown color as an .ldr file. I imported it into Blender using ImportLdraw with a size of 0.4 and as a low quality mesh. I exported the model as an .fbx file.
  28. I imported the musket into Unity. I renamed it "arquebus." I dragged it into the scene. I set its scale to be 4, 4, 4 (x, y, z).
  29. I dragged to the right hand of the Landsknecht. In the hierarchy window, I dragged the arquebus part into the mixamo rig of the Landsknecht specifically to the mixamorig:RightHand part. This made it a child of the aforementioned part.
  30. I clicked on the setup part in the hierarchy again. In the inspector I renamed the unit name and mod name to "Landsknecht final."
  31. I clicked the gear icon. I clicked on "export all." In the project folder, I copy-pasted the .unity3D file that was created into the the streamingassets>CharacterMods folder where my copy of UEBS is installed in Steam.
  32. I tested the mod in-game. 
  33. I created a content folder in the same directory. I used a screenshot from the game as the icon.png which I resized to 512x512 using MS Paint. I dragged the .unity3D file into the Content folder.
  34. I clicked on the Steam Manager tool found in the modding tools folder created by Brilliant Games Studios.
  35. I copy-pasted the directory of where my content folder was located. I uploaded the mod to Steam workshop.
  36. I repeated all the steps above for the rest of the minifigures. I adjusted various character stats and changed the animation set of the minifigures using melee weapons to be "Sword Fighter Humanoid."
  37. I put all of the .unity3D files into the Content folder and repeated steps 31 to 37 to upload the mod to Steam Workshop.

The following are the problems I encountered while working on this mod:

  1. I got the infinite loading screen error in UEBS when testing the mod. It turns out I simply needed to switch from the latest version of Unity to Unity 5.6.0f3. According to the character modding documentation for UEBS (https://forum.unity.com/threads/ultimate-epic-battle-simulator-character-modding-documentation.488230/ ), Unity versions beyond 2018 will not work when creating a mod for UEBS. I first encountered this issue when working on my first mod for UEBS, "Smol" Ame Bee.
  2. I got confliction errors when testing each of the .unity3d files of my mods together. To solve this, I just changed the names of the scenes of each of my Unity projects. Prior to this, all of the scenes were just named "scene."
  3. I tried implementing custom animations for the Landsknecht. I was successful in doing it but I was not happy with the result. I followed the tutorial created by Animation NK on Youtube to do this (https://www.youtube.com/watch?v=saMKRvLyM2I). Since Mixamo cannot export animations as a group, I exported each animation as a separate .fbx file. I imported each .fbx file into Blender. I duplicated each animation from each armature into one armature into the dope sheet>action editor. I then deleted all of the armatures save for the one which now contains all of the animations. I exported it as an .fbx file. In Unity I enabled "import custom animations" for the Landsknecht. Since the first armature contains all the animations, I cropped it so it just included the first animation prior to copy-pasting everything into the animation in Blender (the rifle walk animation). In the inspector of the setup part in the hierarchy, I enabled "use custom animations" and assigned each of the animations (walk, idle, attack1, etc.) to the Landsknecht's animations. I tested both 30 FPS animations and 60 FPS animations exported from Mixamo. At 30 FPS, the firing animation was slow. At 60 FPS the firing animation was normal. The idle animation for both 30 FPS and 60 FPS was the same: too fast. The transitions between animations were also abrupt. It is because I did not use the graph editor to adjust the transitions between animations. Frustrated, I decided to just use the built-in "Archer humanoid" animations by setting the rig to "humanoid" and disabling "import animations." I will have to try this again in the future.
  4. Creating separate .unity3D files from separate projects was a manageable workflow for me. It is possible to have all of the minifigures in one scene since "export all" exports all skinned meshes and solid meshes even if they are assigned to separate copies of "setup."
  5. I encountered issues related to textures and LODs. I was not able to fully solve these issues. Enabling "render to distant LOD" and "use distance LOD colors" for all skinned meshes except the first one after assigning colors using the dropper tool and clicking on the colors of each of the skinned meshes was what worked for me. For example, clicking on the material assigned to the Lion Crusader's arm which is red made it visible even from afar in-game. However, this did not work for materials with textures; the average color overrides the textures. Aside from this, assigning the texture to a material does not show parts of the textures. For example, the Castle blue knight's torso texture has a white suit of armor. The color blue replaced it save for the outline of the armor. It is possible that after exporting from Mecabricks that the texture needs to be modified.
  6. Import LDraw does not work for skinned meshes. For example, I tried using Import LDraw to quickly import the Lion Crusader. After rigging it with Mixamo and creating the mod in Unity, all parts of the Lion Crusader were invisible except for the halberd, a solid mesh. 


Fig 2. Black Falcon Archer in Mecabricks


Fig 3. Black Falcon .obj file imported into Blender and arms adjusted to create T-Pose position


Fig 4. "Shade smooth" applied to Castle blue knight .obj model


Fig 5. Preparing model for T-Pose. Setting cursor to selected vertex.


Fig 6. Setting pivot point to 3D cursor


Fig 7. Rigging Castle blue knight using Mixamo


Fig. 8 Rigged Black Falcon Archer ready to be exported as an .fbx file for Unity


Fig. 9 Skinned meshes for Castle Blue knight with "render to distant LOD" and "use distant LOD color" enabled


Fig. 10 Halberd solid mesh parented to mixamorig:RightHand. Setting element 1 of the solid meshes list in the setup's inspector to be the halberd. Note: the scene name has not been renamed yet here.


Fig 11. Applying texture to face material by clicking on Albedo and replacing the color with the standard grin texture.


Fig 12. Adjusting the brightness of the material assigned to the minifigure's torso.


Fig 13. Minifigures in the same scene. Exporting minifigures as one .unity3d file is possible. However, I decided to just put separate .unity3d files into one Content folder. Note: the scene names have not been renamed yet here.


Fig 14. Arquebus parented to the Landsknecht's right hand. Face texture assigned to material connected to the Landsknecht's face.


Fig 15. Attempt at importing custom animations into Unity. You assign them in the custom animations tab of the inspector after clicking on the setup part in the hierarchy. Note: the face texture has not yet been assigned here yet.


Fig 16. Lion crusader skinned meshes


Fig 17. Combining Landsknecht animations in the action editor before export. Note: I haven't deleted the other armatures yet.


Fig 18. Black Falcon archer stats


Fig 19. Chosen walk cycle animation for Landsknecht custom animations attempt


Fig 20. Combined Landsknecht animations


Fig 21. Landsknecht stats


Fig 22. Uploading the mod to Steam Workshop using Brilliant Game Studios' Steam Manager. You can set the content folder to be anywhere before uploading.


Fig 23. Result of importing .unity3d file into UEBS created from rigged model in Mixamo after using ImportLDraw for Blender. It does not work for skinned meshes (the Lion Crusader minifigure). It works for solid meshes though (the halberd).


Fig 24. Result of only assigning one skinned mesh element to "render to distant LOD" and "use distance LOD color." Only one part of the minifigure is visible: the torso.


Fig 25. Result of enabling "render to distant LOD" and "use distance LOD color" for all skinned meshes except element 1. The average color overrides the textures of the torso and the face.


Fig 26. "Render to distant LOD" and "Use distance LOD color" applied to most elements including the first element. The average color of the first element (color gray) replaces most of the materials.


Fig 27. "Render to distant LOD" enabled, "Use distance LOD color" disabled. Notice that the minifigures further away from the camera have one solid color.


Fig 28. Custom idle animation in-game. The idle animation works fine. However, it is too fast in game whether the animation exported from Mixamo is 30 FPS or 60 FPS. 


Fig 29. Custom firing animation in-game. Since the arquebus can only be parented to one object (the right hand) the Landsknecht's left hand ignores it. I think a two-handed pistol firing animation or one-handed firing animation would have worked here.

Comments