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

Messing around with unit intel and whats possible

Scheduled Pinned Locked Moved Modding & Tools
11 Posts 3 Posters 634 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.
  • R
    Resin_Smoker
    last edited by Resin_Smoker 7 Dec 2024, 19:21 12 Jul 2024, 15:54

    Here is a unit with a series of entities that are attached / offset from the parent unit. Each entity has its own intel range that displays for the player at a roughly 45 degree angle from the point of origin. Stopping at what is exactly the units max weapon range.

    11b89425-62cd-4bb3-9bc7-7e3cc9a49b37-image.png

    As the unit moves so do the attached entities. Effectively i can apply this to any intel type that's needed. Creating a cone of intel rather than a circle. (Which is more realistic)

    Script snippet (or it didn't happen)

    CreateIntelEntity = function(self, bone, intel, radius)
        if not self.IntelEntity then
            self.IntelEntity = {}
        end
        if not self:BeenDestroyed() and radius > 0 then
            local counter = 1
            while counter <= radius do
                local angle = math.ceil(counter / 3.14)
                if counter + angle < radius then
                    ent = import('/lua/sim/Entity.lua').Entity({Owner = self,})
                    table.insert(self.IntelEntity, ent)
                    self.Trash:Add(ent)					
                    ent:AttachBoneTo( -1, self, bone or 0 )
                    local pos = self:CalculateWorldPositionFromRelative({0, 0, counter})
                    ent:SetParentOffset(Vector(0,0, counter))
                    ent:SetVizToFocusPlayer('Always')
                    ent:SetVizToAllies('Always')
                    ent:SetVizToNeutrals('Never')
                    ent:SetVizToEnemies('Never')
                    ent:InitIntel(self.MyArmy, intel, angle)
                    ent:EnableIntel(intel)
                end
                counter = counter + 1
            end	
        end
    end,	
    
    

    Currently I'm calling this from the units OnCreate to facilitate easier testing.

    OnStopBeingBuilt = function(self,builder,layer)
        TAirUnit.OnStopBeingBuilt(self,builder,layer)
    
        --Start advanced radar
        self:ForkThread(self.CreateIntelEntity,'MuzzleFront', 'Vision', 45)
    end,
    

    This could be applied to every "radar" unit in the game including units that have rotating radar antenna.s Thus allowing the intel entities to sweep an area just like a real radar! Eventually, once i unravel the mystery that is the FAF intel system, I will make a mod using this ability as well as something similar for sonar as well.

    Enjoy!

    Resin

    Kykhu Oss https://youtu.be/JUgyGTgeZb8
    Unit Thrower https://youtu.be/iV8YBXVxxeI
    Beam Tentacle https://youtu.be/le5SNwHvC4c
    Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
    Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

    1 Reply Last reply Reply Quote 5
    • R
      Resin_Smoker
      last edited by 12 Jul 2024, 16:04

      Video: https://youtu.be/w7jjCrehtMI

      Kykhu Oss https://youtu.be/JUgyGTgeZb8
      Unit Thrower https://youtu.be/iV8YBXVxxeI
      Beam Tentacle https://youtu.be/le5SNwHvC4c
      Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
      Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

      1 Reply Last reply Reply Quote 1
      • R
        Resin_Smoker
        last edited by Resin_Smoker 13 Jul 2024, 14:05

        Made a bit more progress getting the intel cone to rotate around a moving aircraft.
        Video: https://youtu.be/xKb76OkqCnU

        Unfortunately I've been unable to attack one intel entity to another, as apparently a real unit has to be involved at some point for it to work.

        Updated script...

        	CreateIntelCone = function(self, bone, intel, radius, spin)
        		--Creates a 45 degree cone of intel, originating out from the parent units chosen bone
        		if not self.IntelEntity then
        			self.IntelEntity = {}
        		end
        		if not self:BeenDestroyed() and radius > 0 then
        			local counter = 1
        			while counter <= radius do
        				local angle = math.ceil(counter / 3.14)
        				if counter + angle < radius then
        					-- Create the entity and attach it to parent
        					local ent = import('/lua/sim/Entity.lua').Entity({Owner = self,})
        					ent:AttachBoneTo( -1, self, bone or 0 )					
        					table.insert(self.IntelEntity, ent)
        					self.Trash:Add(ent)					
        					ent:SetParentOffset(Vector(0,0, counter))
        					--	Short wait to ensure the entity is in play
        					WaitTicks(1)
        					if ent and not self:BeenDestroyed() then
        						-- Set who can view the entities intel
        						ent:SetVizToFocusPlayer('Always')
        						ent:SetVizToAllies('Always')
        						ent:SetVizToNeutrals('Never')
        						ent:SetVizToEnemies('Never')					
        						--	Initialize and enable intel
        			            ent:InitIntel(self.MyArmy, intel, angle)
        			            ent:EnableIntel(intel)				
        		            end
        	            end
        				counter = counter + 1	            
                    end
                    if bone and spin then
                    	self.Trash:Add(CreateRotator(self, bone, 'y', nil, 0, 36, 36))
                    end		
        		end
        	end,
        

        Kykhu Oss https://youtu.be/JUgyGTgeZb8
        Unit Thrower https://youtu.be/iV8YBXVxxeI
        Beam Tentacle https://youtu.be/le5SNwHvC4c
        Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
        Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

        1 Reply Last reply Reply Quote 0
        • C
          CDRMV
          last edited by 13 Jul 2024, 15:02

          Really good Work. Next to of using it as an new Radar System it could be used for to give Land Units an Spotlight Mechanic. Unfortunately the Game doesn't has an automatic Day and Night Cycle System on its Maps but I See some Potential on Night Maps. Imagine an Toggle Button to Turn On or Off the Spotlights which Increase thier Visible Range with these Characteristics. Looking forward for future Updates.

          R 1 Reply Last reply 13 Jul 2024, 17:58 Reply Quote 1
          • E
            Evildrew
            last edited by 13 Jul 2024, 17:52

            If you find something to alter sonar so that sonar emits a pulse, that would be really cool.

            R 1 Reply Last reply 13 Jul 2024, 18:06 Reply Quote 0
            • R
              Resin_Smoker @CDRMV
              last edited by Resin_Smoker 13 Jul 2024, 17:58

              @cdrmv Yeah, that would be cool if not for the micro involved. AI would really have a difficult time with dsrkness features like this, making AI kinda handicapped.

              Would like to make an overall mod to replace both radar and sonar with directional systems instead of the circular intel. This would make intel less reliable, enabling stealth based play to be somewhat viable.

              I've been also kicking around the idea of emissions control. This means that if your radar / sonar is active, you're broadcasting your location to the entire map. Would force players to manage their use of intel to limit unit detection.

              Kykhu Oss https://youtu.be/JUgyGTgeZb8
              Unit Thrower https://youtu.be/iV8YBXVxxeI
              Beam Tentacle https://youtu.be/le5SNwHvC4c
              Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
              Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

              1 Reply Last reply Reply Quote 1
              • R
                Resin_Smoker @Evildrew
                last edited by 13 Jul 2024, 18:06

                @evildrew already have.. I can use dummy projectiles with a sonar intel that gets bigger the further away it travels from the emitting unit / sub.

                Subs would only ping every so often, allowing them to see what they were facing at the time the ping (dummy proj) was created. If the projectile impacts land, it stops / is destroyed. (Sonar can not see past a land obstacle) Otherwise, the projectile would travel a fixed distance and then disappear on its own. After a short cooldown, the sub would again ping, repeating the process on its current heading.

                Structures would be able to ping in multiple directions at once, but as they've not mobile, poor placement would limit its view. (Placed too close to land)

                Kykhu Oss https://youtu.be/JUgyGTgeZb8
                Unit Thrower https://youtu.be/iV8YBXVxxeI
                Beam Tentacle https://youtu.be/le5SNwHvC4c
                Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
                Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

                1 Reply Last reply Reply Quote 0
                • E
                  Evildrew
                  last edited by 13 Jul 2024, 18:44

                  @resin_smoker said in Messing around with unit intel and whats possible:

                  @evildrew already have.. I can use dummy projectiles with a sonar intel that gets bigger the further away it travels from the emitting unit / sub.

                  Subs would only ping every so often, allowing them to see what they were facing at the time the ping (dummy proj) was created. If the projectile impacts land, it stops / is destroyed. (Sonar can not see past a land obstacle) Otherwise, the projectile would travel a fixed distance and then disappear on its own. After a short cooldown, the sub would again ping, repeating the process on its current heading.

                  Structures would be able to ping in multiple directions at once, but as they've not mobile, poor placement would limit its view. (Placed too close to land)

                  Is there a youtube video of this or where can I see this?

                  R 1 Reply Last reply 13 Jul 2024, 20:22 Reply Quote 0
                  • R
                    Resin_Smoker @Evildrew
                    last edited by Resin_Smoker 13 Jul 2024, 20:22

                    @evildrew I made the initial scripts for this 10 years ago, but never finished it. Now, I'm attempting to recreate it with a few new tricks I've learned ad I'm figuring out how FAF handles intel. If you didn't know, FAF rewrote a fair bit of the intel script. Though I've still yet to pull it apart to know just how I can hook-on my changes.

                    Anyways... The concept is very simple. Just adding an intel type to a custom projectile. Then, making it so the projectile wouldn't hit anything but land. The parent unit of the projectile, and it's army (team) own the viewing rights to the intel discovered.

                    Kykhu Oss https://youtu.be/JUgyGTgeZb8
                    Unit Thrower https://youtu.be/iV8YBXVxxeI
                    Beam Tentacle https://youtu.be/le5SNwHvC4c
                    Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
                    Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

                    E 1 Reply Last reply 13 Jul 2024, 20:48 Reply Quote 0
                    • E
                      Evildrew @Resin_Smoker
                      last edited by 13 Jul 2024, 20:48

                      @resin_smoker So you would fire say 360 projectiles out in all directions with a sonar radius of say 5-10 to do this?
                      So if the water is very deep, the sonar radius would have to be wide enough (at least vertically) like a 0 to detect ACUs on the seabed which I believe you have demonstrated is possible.
                      I really like that you are thinking about projectiles not going through land, that way maps with many smaller islands or channels make subs less easily visible to T3 sonar adding depth to the game.

                      R 1 Reply Last reply 14 Jul 2024, 08:10 Reply Quote 0
                      • R
                        Resin_Smoker @Evildrew
                        last edited by Resin_Smoker 14 Jul 2024, 08:10

                        @evildrew don't need that many projects as each projectile would have a piece of the intel pie.

                        So for 360 coverage, the cheap and easy way would be to 8 projectiles, each taking a 45 degree swath. (8×45=360) Keep in mind that as the projectiles travel away from the parent unit, you'd see large gaps within the sonar coverage if the intel radius was not being increased as the projectile traveled outwards.

                        I've been using the following formula to spread out the radar entities, to make the nice cone...

                        local angle = math.ceil(counter / 3.14)

                        But for the sonar, it would be more like this...

                        local intRadius = math.ceil(distanceTraveled/ 3.14)

                        The intRadius would then be used to change th projectiles sonar radius. The whole thing would update every couple of game ticks, by first checking the distance traveled from the point of origin, then doing the simple formula above, before updating the sonar range.

                        Easy as 3.14

                        Resin

                        Kykhu Oss https://youtu.be/JUgyGTgeZb8
                        Unit Thrower https://youtu.be/iV8YBXVxxeI
                        Beam Tentacle https://youtu.be/le5SNwHvC4c
                        Blackhole https://www.youtube.com/watch?v=D9NGQC5rr0c
                        Resurection https://www.youtube.com/watch?v=WdbIQ4vHkMs

                        1 Reply Last reply Reply Quote 1
                        1 out of 11
                        • First post
                          1/11
                          Last post