Jump to content
Blackheart_Six

Reforger Task System

Recommended Posts

I have started creating my new mission. Long Range Reconnaissance Patrol. I have my base created. 

 

I now want to start creating my tasks. 

Trying to poke and plod my way through. 

 

Any resources about the task system? Post them here please. I'll update as I go as well. 

 

And one more thing.... WE HAVE FORUMS! YEA!!!!!

 

Share this post


Link to post
Share on other sites

I'm working on a tutorial for tasks right now, in the mean time, here are sample projects with (somewhat) working tasks:

 

Some notes:

  • apparently, TaskManager should be above tasks in the hierarchy (not parent, just higher up)
  • replication happens in the TaskManager. Neither GameMode nor Tasks need to do anything special, it seems.
  • don't give Tasks the RplComponent, the TaskManager does Replication
  • don't give the TaskManger a script, if you want to change it, override its class. (at least I get VM exceptions with scripts)
  • TaskManager needs to have Supported Tasks setup properly.
  • do not give your Tasks a script, it will change their class and then they cannot be find in the SupportedTasks in the TaskManager
  • you need to set a faction for a task in order for it to show up in the UI
    SetTaskFaction(task, targetFaction);  // within TaskManager

     

  • Like 2

Share this post


Link to post
Share on other sites
51 minutes ago, captncaps said:

I'm working on a tutorial for tasks right now, in the mean time, here are sample projects with (somewhat) working tasks:

 

Some notes:

  • apparently, TaskManager should be above tasks in the hierarchy (not parent, just higher up)
  • replication happens in the TaskManager. Neither GameMode nor Tasks need to do anything special, it seems.
  • don't give Tasks the RplComponent, the TaskManager does Replication
  • don't give the TaskManger a script, if you want to change it, override its class. (at least I get VM exceptions with scripts)
  • TaskManager needs to have Supported Tasks setup properly.
  • do not give your Tasks a script, it will change their class and then they cannot be find in the SupportedTasks in the TaskManager
  • you need to set a faction for a task in order for it to show up in the UI
    
    SetTaskFaction(task, targetFaction);  // within TaskManager

     

 

Awesome! Great information. I'll check it out. 

Share this post


Link to post
Share on other sites

Great, I've been watching the conversations on discord. You guys are blazing a trail with this stuff! 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

So after a year of messing about, and several updates to the software, I've been creating some custom tasks using the scenario framework. I know it's very basic stuff right now, but you can create some different missions from the combat operations tasks. Just have to have a little imagination.

 

The first item when using the framework is to make sure you establish a solid naming convention for all the entities you are going to use. 

The reason you want to put some thought into this is to speed development when you copy and paste areas, layers, and slots over and over.

You don't want to have to retype the information every time you do that. So make sure the first set of tasks is named correctly, and all the entities end in a number. The system will add 1 to every paste.

 

It helps to name your entities so you can recognize what they relate to. 

 

First area creation

Area_ClearTask_1

        Layer_enemyAI_1

                  SlotAI_1

        Layer_enemyVehicles_1

                  Slot_1

        LayerClearArea_1

 

Copied area from above

Area_2

        Layer_enemyAI_2

                  SlotAI_2

        Layer_enemyVehicles_2

                  Slot_2

        LayerClearArea_2

 

Notice the 2nd area doesn't retain the title of the first area, and will rename itself "Area_2". I don't know why it does this. But all the sub-layers below area will retain their name and +1 number. Just rename the Area and continue on.

 

I started using the map coordinates of the area in the title. This give each Area and sub-layers a unique identifier. Additionally there is a bug where the slot number will be duplicated, and cause errors in the mission. For example, you create a slot. Then later after copying some Area, you drag and drop a slot into the world. The slot sometimes have the same name as the previous slot. 

 

I.E.

Area_TaskDefend12345678

                 opforTD12345678(layer)

                                   slotAI_1 (slot)

 

Once you create your first set of entities, and before you copy a bunch, look at what it is, what it does, and how replicating it will look. A little planning upfront will save lots of time on the back end. Trust me I know. 😁

  • Like 1

Share this post


Link to post
Share on other sites

The Scenario Framework Task System

In the Prefabs folder is the ScenarioFramework folder. Inside this folder you will see 4 sub folders. Components, Sets, Tasks and Triggers. In this post we are looking at Components and Tasks. There is another "Tasks" folder that is in the "Prefabs" folder. These tasks are related to campaign tasks, and are not used in my work.

 

In the components folder are the "Layer" tasks. In the Tasks folder are the non-layered tasks. I have not used the non-layered tasks yet so I don't know a lot about them. They are limited in scope. The differences between the 2 are the sub-components.

 

There are 7 layered tasks, and 9 non-layered tasks. There is one task manager located in the "tasks" folder.

 

When planning your project, you have start at the 50,000 foot level, or the big picture, and work in. What is your mission about? Who is playing your mission? How is it going to played? What's the story line going to be?  I will use my latest project I am current working on as an example of how I am doing things. I will also use "Combat Ops" mission for reference as well.

 

There are many ways to use the task system. In combat ops arland, BI created 7 Areas, and in each area are several tasks. The system picks 3 random tasks, you complete the 3 tasks. Once you complete the tasks you are sent to exfil area, and the mission ends. For my project, "Patrol Operations I - Arland" I needed more flexibility in task selection, and more randomization.

 

The premise (50k view) of PO I - Arland, is a true realistic patrol operation. You are an US Army Soldier conducting dismounted patrols across the island of Arland. This requires the player walking across the map, along the roads as a real infantry patrol would do. Sounds boring. It is. The first thing I needed was a route system. One that would be random. Each time you play, the mission will take you down a different path. And then I needed mission tasks assigned as you go along your patrol. 

 

Next I'll discuss the 40K foot view. Layer organization.

  • Like 1

Share this post


Link to post
Share on other sites

In Enfusion Workbench you use World Editor to create mission projects. How to set your project up is covered in numerous other places, and not part of this discussion. Once you decide on a world to use, and place the managers needed, you can then start working on your mission.

 

This post is going to deal with "Layer" organization. In the hierarchy of mission building, you have the world then your layers. Layers are containers that hold all your entities. Each layer is also a file that is editable. I recommend you get a good code editor like VS Code or Notepad ++. Don't use word, it may insert formatting characters into your file, and ruin it. Also create a copy of any file you edit for back up. Editing layer files is handy if you need to for example, batch rename an entity. I.E. Entity1 to Entity_1.

 

World

         |_ Layer

         |_ Layer

 

For Combat Ops Arland, BI just put everything in one layer. Which is fine. I prefer to organize my work a little more.

 

The first thing I do is create a managers layers. All the manager entities go in this layer along with AIWorld.

 

World

         |_ Managers

 

Next layer would be my base or ingress point to the world. Might be an FOB, or random spawn point. I also create testing, import, and holding layers. I use a "Z" in the name so they all go to the bottom of the hierarchy. 

 

World

         |_ Base

         |_ Managers

         |_ zHold

         |_ zImport

         |_ zTest

 

I don't know if there is a limitation to how many layers you can have. Use and create as many layers as you need, and what works best for you.

 

You can select and drag entities between layers. You cannot nest layers within layers.

 

PROTIP: If you are working in one layer, make it "Active" so any entities go to that layer. Double click the layer, or right click and select "Set as Active"

 

Next Up 30k View.... Task organization. Area, Layers, Slots...

  • Like 1

Share this post


Link to post
Share on other sites

BI has a great wiki on the scenarioframework(SFW). It is located here. On par with many BI wiki articles it is incomplete, and missing information.

 

There are 3 basic components to SFW. Area, Layer, Slot. Layer is not to be confused with the layer discuss above. This is a SFW entity called "layer.et".

 

So for the 30k foot view, this is a critical part of organizing your work. Areas are the topmost component. Layers and Slots must be in an area to be seen by the SFW. But how you use the area to organize you work is mission dependent. If you look at Combat Ops Arland, BI uses several areas, and places duplicate tasks in each area. I think of these as "Geographical" Areas. They are all over the map, and denote the area of operation for the tasks. 

 

For my Patrol Operations I - Arland, I used area entities as geographical areas, but also as containers. Each road intersection is a GEO area. I also have areas holding all my tasks. Container Areas. To be seen by the SFW the entities must be in an area. The logic was 1 Area with many tasks inside the area, versus many tasks inside many areas. Additionally, the choice to use an area as geo, or container will be dictated by how you want to trigger something. For example, do I want an event to be trigger when the player or character walks into the area? Then I use a GEO area. Or do I just need to call the item with a slottrigger or logicCounter?

 

Things to think about at 30,000 feet.

 

With using the area as a container, I place the area.et at one spot on the map, I.E. a remote island and I place the task at the point of interest (POI) on map, and when the player enters the road intersection area it triggers the task, which is away from the road intersection. I don't have to have a 1000 meter radius set on the area, just 15 meters, since I am using a slottrigger to activate the task.

 

At this point my hierarchy looks like this....

 

World

         |_ Base (Layer)

         |_ Managers (Layer)

         |_ RouteBlue (Layer)

                             |_ IntersectionB_1 (area.et)

                                                         |_taskMoveBlue_1 (LayerTaskMove.et)

                             |_ IntersectionB_2 (area.et)

                             |_ IntersectionB_3 (area.et)

         |_ RouteRed (Layer)

                             |_ IntersectionR_1 (area.et)

                                                         |_taskMoveRed_1 (LayerTaskMove.et)

                             |_ IntersectionR_2 (area.et)

                             |_ IntersectionR_3 (area.et)

         |_ Task_ClearArea (Layer)

                                        |_Area_TasksClear (area.et)

                                                                        |_TaskClearArea_1 (LayerTaskClearArea.et)

                                                                        |_TaskClearArea_2 (LayerTaskClearArea.et)

         |_ zHold (Layer)

         |_zImport (Layer)

         |_zTest (Layer)

 

So as you can see, I have many GEO areas for each intersection. And one container area holding all the "Clear Area" tasks. The main thing to understand is an area.et doesn't have to be used to define an operations area. It can be used as a container, and reduce the number of entities on the map.

 

  • Like 1

Share this post


Link to post
Share on other sites

Hi @Blackheart_Six,

 

thanks for your great to work to bring different sources together and also share your experience.

I am starting to build my first COOP Mission at the Moment and this tips are helpful for building a own knowledge and understand the things.

 

At first I thought the NightOps Framework would perfectly work for me but this is outdated and by loading in workbench it brings World Failures.

Perfectly because in its Object Properties by its own written Editor Task there was a Succesor Area. And so you could make a chain of Tasks what I am searching for, now.

 

Means: One Task is finished will make the new Task open and send to player. So Players do not have all Tasks visible at mission start, more they will be guided through the Tasks to the Mission.

For example:

 

1. Task: Build Convoy (Move)

2. Go to Area xy (Move)

3. Clear all in this area (Area Trigger)

4. Search Intel (Area Trigger)

5. Move to xy (Move)

 

Maybe you also collected some experience with such Task - Chains.

 

Share this post


Link to post
Share on other sites
7 hours ago, SirBassi said:

Hi @Blackheart_Six,

 

thanks for your great to work to bring different sources together and also share your experience.

I am starting to build my first COOP Mission at the Moment and this tips are helpful for building a own knowledge and understand the things.

 

At first I thought the NightOps Framework would perfectly work for me but this is outdated and by loading in workbench it brings World Failures.

Perfectly because in its Object Properties by its own written Editor Task there was a Succesor Area. And so you could make a chain of Tasks what I am searching for, now.

 

Means: One Task is finished will make the new Task open and send to player. So Players do not have all Tasks visible at mission start, more they will be guided through the Tasks to the Mission.

For example:

 

1. Task: Build Convoy (Move)

2. Go to Area xy (Move)

3. Clear all in this area (Area Trigger)

4. Search Intel (Area Trigger)

5. Move to xy (Move)

 

Maybe you also collected some experience with such Task - Chains.

 

 

The NightOps Framework was fantastic. Unfortunately, like many mods, they are out of date and not working.

Hoping these guys get the band back together and cut another album. 


For task chaining already done in the scenario framework examples in world editor.
In world editor.... Load World  then drill down to Arma Reforger>worlds>ScenarioFramework>Samples>SF-Sample-FinishTaskToCreateTask.ent

 

  • Like 1

Share this post


Link to post
Share on other sites

Your my hero. Exactly what I searched for. Even the sample for an Exfil.

I will try to generate a simple chain with this and finally look then where and how to spawn defined enemies when reached a trigger for saving perfomance on the server.

 

But this examples are gold for making the first steps. Thanks.

Share this post


Link to post
Share on other sites

The new Dynamic Despawn/Spawn is great to saving resources. Takes a little bit to figure out the hierarchy of it.

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×