FAForever Forums
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Login

    Add a latest replay URL

    Scheduled Pinned Locked Moved Modding & Tools
    23 Posts 9 Posters 3.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N Offline
      Nooby
      last edited by Nooby

      I am trying to understand how to make a mod that captures information about units through the replay

      Looking at the LUA documentation:
      https://supcom.fandom.com/wiki/LUADOC_1.5.3599#User
      https://github.com/FAForever/fa/blob/develop/engine/User/UserUnit.lua

      does using User.UserUnit make it a UI only mod?

      For the dump to file script

      if unit is alive (using IsDead)

      if it is dump a line to log that contains

      GetGameTick
      GetArmy
      GetUnitId
      GetPosition
      GetOrientation
      GetVelocity
      GetMaxHealth
      GetHealth
      GetShieldRatio
      IsIdle
      UserUnit

      repeat every X seconds.

      Could dump some unit types info at a faster rate than others, depending on unit speed, or importance for instance.

      Do sim mods have access to any files that are not the game log?
      Could just add an identifier start charicter to each line of the game log however.
      Data could then be put into a better datasctructure and compressed using other external tools / scripting

      Is this much script to write? is anyone here able to do so? @maudlin27

      maudlin27M 1 Reply Last reply Reply Quote 0
      • maudlin27M Offline
        maudlin27 @Nooby
        last edited by maudlin27

        @nooby I’ve no experience with UI mods (only SIM mods), you could try in the FAF modding discord in terms of finding out what is possible: https://discord.com/channels/197033481883222026/832710161847287819
        You might need to set your roles to indicate an interest in modding to access the channel

        However if it was possible then most likely you’d need to write the code yourself (unless one of the modders was interested in doing the same thing)

        M27AI and M28AI developer; Devlogs and more general AI development guide:
        https://forum.faforever.com/topic/2373/ai-development-guide-and-m27ai-v71-devlog
        https://forum.faforever.com/topic/5331/m28ai-devlog-v130

        1 Reply Last reply Reply Quote 0
        • N Offline
          Nooby
          last edited by Nooby

          I have created the "Unit Logger" mod. It is in the mod vault. It is a UI mod.

          EDIT - V2 Released with reduced decimal places and unit masskilled added

          Logs information on every unit of of focus army every 10 game ticks, configureable in main.lua
          Information logged:
          "UL02","GameTick","EntityId","Army","UnitId","FractionComplete","Position.x","Position.y","Position.z","MaxHealth","Health","ShieldRatio","IsIdle","MassKilled"
          WARNING: If you have 1500 units and an hour game expect gigabyte size logs.
          It works in replays if you select the army of the player you require logging.
          It requires UMT / UI Mod Tools / ui-mod-tools-4z0t-v12
          Thanks for 4z0t for some of the code that makes this work

          This data is not in an eficcient format at all - that can be done after the game has ended.

          I need to look at logging all units from all armies at once when observer. i dont know if this is possible with a UI mod.

          Example data:

          info: UL02	GameTick	EntityId	Army	UnitId	FractionComplete	Position.x	Position.y	Position.z	MaxHealth	Health	ShieldRatio	IsIdle	MassKilled
          info: UL02	1350	321	1	uea0303	1	171.915	35.555	717.439	2300	1550	0	0	180
          info: UL02	1350	421	1	uea0303	1	231.838	34.695	652.384	2300	300	0	0	482
          info: UL02	1350	344	1	uea0303	1	109.883	35.376	720.888	2300	2050	0	0	45
          info: UL02	1350	369	1	uea0303	1	142.596	38.140	688.592	2300	1300	0	0	45
          info: UL02	1360	736	1	uea0303	1	111.701	36.286	717.892	2300	1550	0	0	270
          info: UL02	1360	0	1	ual0001	1	108.207	25.830	920.259	11000	11000	0	1	0
          info: UL02	1360	262	1	uea0303	1	98.083	37.232	730.919	2300	1550	0	0	450
          info: UL02	1360	280	1	uea0303	1	97.939	36.571	708.237	2300	1050	0	0	90
          info: UL02	1360	364	1	uea0303	1	145.077	37.485	686.651	2300	1800	0	0	225
          info: UL02	1360	318	1	uea0303	1	142.312	37.525	684.928	2300	1550	0	0	360
          info: UL02	1360	438	1	uea0303	1	196.809	37.850	668.522	2300	1550	0	0	433
          
          1 Reply Last reply Reply Quote 1
          • First post
            Last post