Home   Help Search Login Register  

Author Topic: Creating a campaign  (Read 6403 times)

0 Members and 1 Guest are viewing this topic.

Offline bronx187

  • Members
  • *
Creating a campaign
« on: 30 Jun 2009, 15:13:31 »
ok i think i speak for most people who ended up hooked on the mission making that its much more fun to make a campaign right?  :P

i would really like to know/Learn how to do it

thank you anyways  :)





Offline Goos

  • Members
  • *
Re: Creating a campaign
« Reply #1 on: 30 Jun 2009, 20:01:08 »
I recall managing to get a self created mission to show up in the first ArmA campaign list but then the first ArmA had a "campaigns" folder in the game directory. ArmA 2 seems to lack this folder. There is however the single player campaign in a campaign folder in the missions.pbo in the addons folder so how to add your own I have no idea or if it is even possible at all.
Same $#!t different day.

Offline Wolfrug

  • Addons Depot
  • Former Staff
  • ****
  • Official OFPEC Old Timer
Re: Creating a campaign
« Reply #2 on: 30 Jun 2009, 22:38:06 »
Hi bronx,

You PMd me, but I figured it'd be best if everyone got an eye on this.

I do not know how to make campaigns in A2, since I haven't got it yet and haven't had a chance to look at the description.ext's etc., but if it works anything like ArmA then it should be easy peasy.

How to make a campaign (easy mode)

1) Create a folder, name it whatever you want (say, TestCampaign). Put it inside your ArmA\Campaigns folder (if it doesn't exist, I guess you can just make it!)
2) Create a file (using notepad is fine) named description.ext : be sure it's not accidentally description.ext.txt (enable file extensions in explorer)! Put that file inside your campaign folder (e.g. ArmA\Campaigns\TestCampaign\description.ext)
3) Copy-paste this text into the description.ext:

Code: [Select]
class MissionDefault
{
     lives = -1;

    lost = ;
    end1 = ;
    end2 = ;
    end3 = ;
    end4 = ;
    end5 = ;
    end6 = ;
};

class Campaign
{
    name =  "TestCampaign";
    firstBattle = Part1;



    class Part1
    {
        name = "TestMis1_Start";

        cutscene = ;

        firstMission = TestMis1;
        lost = ;
        end1 = ;
        end2 = ;
        end3 = ;
        end4 = ;
        end5 = ;
        end6 = ;

class TestMis2: MissionDefault
        {
            end1 = TestMis3;
            end2 = TestMis3;
            end3 = TestMis3;
            end4 = TestMis3;
            end5 = TestMis3;
            end6 = TestMis3;
            lost = TestMis3;
            template = TestMis2.intro;
        };

        class TestMis3: MissionDefault
        {
            end1 = TestMis4;
            end2 = TestMis4;
            end3 = TestMis4;
            end4 = TestMis4;
            end5 = TestMis4;
            end6 = TestMis4;
            lost = TestMis3;
            template = TestMis3.intro;
        };

class TestMis4: MissionDefault
        {
            end1 = TestMis1;
            end2 = TestMis1;
            end3 = TestMis1;
            end4 = TestMis1;
            end5 = TestMis1;
            end6 = TestMis1;
            lost = TestMis1;
            template = TestMis4.intro;
        };
    };

};

class CfgSounds
{
    sounds[] = { };
};

class CfgRadio
{
    sounds[] = { };
};

Next:

3) Inside that folder, create a folder named Missions. Stuff this folder full with all the missions you want in your campaign, NOT PBO'd! E.g., copy-paste them, folders and all (folder name should have a little ending, like testmis1.intro). The missions are found in Your documents\ArmA (other) Profiles\Your ArmA Profile Name\missions (in A1, no idea where they are in A2).

4) Change the description.ext to match your mission names and the order you want them. You can make as many missions as you want, just add another "mission whole" underneath the last one (mind the {}'s).

Attached picture-examples from a random campaign in my folder, in this case PMC's First Fight, which also suggest an alternative way of making your missions (in other words, you don't HAVE to have all the possible endings, you can have just the one that leads somewhere etc.). There you should see what the whole shebang should sort of look like. :)

Note: you CAN also pbo your campaign once it's finished (easier to distribute etc.) using for instance cpbo (find it in the ED) or Mikeros' Eliteness - however it works just as well as a folder, and it's generally easier to edit then too :)

Please note: this is really just how to string a bunch of missions together. Proper campaigns have complicated scripting involving carrying variables over from mission to mission, multiple endings, weapon pools that are also carried over, and they can use common data such as music and sounds  that are stored in a different manner from your regular sound/music folders in the missions themselves (e.g., you don't have to have the same song in all your missions, you can have it in just the main campaign folder and access it from there). But, it should get you started!

Now, if I had the time and inclination, I could put together a real demo campaign from all of this so you good folks could just copy that one up, but this should put you pretty far on the way!

Wolfrug out.
"When 900 years YOU reach, look as good you will not!"

Offline bronx187

  • Members
  • *
Re: Creating a campaign
« Reply #3 on: 01 Jul 2009, 10:34:21 »


Thanks Wolfrug

i will try this out as soon as i get out of work :D
and yes indeed ARMA 2 does not have a folder named campaign
so can i try put the campaign in my main ARMA2/Mission folder
or do i need to do this in my "Mission.pbo/Campaign folder

thanks again!

Offline nominesine

  • Former Staff
  • ****
  • I'm NOT back!
    • The IKB Forum
Re: Creating a campaign
« Reply #4 on: 01 Jul 2009, 12:42:24 »
The ArmA2 campaign can be found in the addons folder. So I don't know where you you should place a custom campaign, once you pieced it together. The good news is that ArmA2 and Armed Assault has identical campaign structures. So anything that worked in Armed Assault/OFP is bound to work in ArmA2. Therefore I also suspect that you can just create a Campaign folder and place it within your ArmA2 folder, once you have competed the first mission. I intend to do some testing myself  during next month, since I also want to create a campaign.
OFPEC | Intel Depot
RETARDED Ooops... Retired!

Offline bronx187

  • Members
  • *
Re: Creating a campaign
« Reply #5 on: 01 Jul 2009, 16:10:12 »
ok guys thanks

this really worked for me

i made a folder named "campaigns" in my main  Arma 2 directory (C:\programfiles\bohemia inter....\arma2
in that folder i created the campaign called "Testcampaign.chernarus"
in that folder i created the "description.ext" and the "Mission" folder
in the "Mission" folder i inserted my 3 mission folders called (i created these in the editor then copy/paste from my "my documents/user/ arma2(other)profile/missions/....)

testmis1.chernarus
testmis2.chernarus
testmis3.chernarus

now in my description.ext i had to adjust some little things this is what it contained

-----------------------
class MissionDefault
{
     lives = -1;

    lost = ;
    end1 = ;
    end2 = ;
    end3 = ;
    end4 = ;
    end5 = ;
    end6 = ;
};

class Campaign
{
    name =  "TestCampaign";
    firstBattle = Beginning;



    class Beginning
    {
        name = "Beginning";

        cutscene = ;

        firstMission = TestMis1;
        lost = ;
        end1 = ;
        end2 = ;
        end3 = ;
        end4 = ;
        end5 = ;
        end6 = ;

   class TestMis1: MissionDefault
        {
            end1 = TestMis2;
            end2 = TestMis2;
            end3 = TestMis2;
            end4 = TestMis2;
            end5 = TestMis2;
            end6 = TestMis2;
            lost = TestMis2;
            template = TestMis1.chernarus;
        };

        class TestMis2: MissionDefault
        {
            end1 = TestMis3;
            end2 = TestMis3;
            end3 = TestMis3;
            end4 = TestMis3;
            end5 = TestMis3;
            end6 = TestMis3;
            lost = TestMis3;
            template = TestMis2.chernarus;
        };

   class TestMis3: MissionDefault
        {
            end1 = TestMis1;
            end2 = TestMis1;
            end3 = TestMis1;
            end4 = TestMis1;
            end5 = TestMis1;
            end6 = TestMis1;
            lost = TestMis1;
            template = TestMis3.chernarus;
        };
    };

};

class CfgSounds
{
    sounds[] = { };
};

class CfgRadio
{
    sounds[] = { };
};

---------------------------------

so it worked out fine, i am gonna go for the rela thing now and make a nice campaign
if nessecary i wil compress this testcampaign to pbo for others to use as a template but then afcourse
they have to pm me
thanks alot for the help and i hope that this will work out for many others as well as it did for me

greetz! :D

 

« Last Edit: 01 Jul 2009, 20:37:47 by bronx187 »

Offline Snake Man

  • CWR
  • **
  • PMC since 1984
    • PMC Tactical
Re: Creating a campaign
« Reply #6 on: 03 Jul 2009, 23:45:15 »
The campaign dir name doesn't need to be <name>.Chernarus, just <name> is enough. But I guess it doesn't matter either if it is, as it seems to work :)

Just wanted to let you know.
PMC Tactical. ArmA, ArmA 2, ArmA 3, Falcon 4 and OFP.
http://www.pmctactical.org and http://pmc.editing.wiki
Snake Man, PMC.

Offline froggyluv

  • Members
  • *
Re: Creating a campaign
« Reply #7 on: 04 Jul 2009, 00:09:37 »
Oh boy do I need your guys help over here. I've been having major problems getting my campaign Description.ext to work properly after hours of studying them at the wiki and ripping open other peoples campaigns.

 So I have the proper setup: Campaign folder with the Description.ext and 'Missions' folder which contain 2 missions named
                                     muck.chernarus
                                     outromuck.chernarus

 My description.ext reads as:

  
Code: [Select]
class MissionDefault
{
  lives = -1;

lost = ;
end1 = ;
end2 = ;
end3 = ;
end4 = ;
end5 = ;
end6 = ;
};



class Campaign
{
   name = "Mucks Revenge";
   firstBattle = muck;  
  
              
      
class muck: MissionDefault
{
                        firstMission = muck;
end1 = muckoutro;
end2 = ;
end3 = ;
end4 = ;
end5 = ;
end6 = ;
lost = ;
template = muck.chernarus;
};

class muckoutro: MissionDefault
{
end1 = ;
end2 = ;
end3 = ;
end4 = ;
end5 = ;
end6 = ;
lost = ;
template = muckoutro.chernarus;
 };
  
   };

     };


Sorry for that abrupt ending.For some reason when I tried to continue typing here the cursor kept getting screwy so I'm writing in notepad now.

 Anyways, the campaign is pbo'ed and shows up but when I try to start it I get a CTD. The individual missions worked fine before I tried this Campaign format so is there anything incorrect in my description or am I missing another tie-in somewhere?

 ...Ok so here is the newer code which I have based off of the many Decription.ext:

Code: [Select]
class MissionDefault
{
      lives = -1;
 lost = ;
 end1 = ;
 end2 = ;
 end3 = ;
 end4 = ;
 end5 = ;
 end6 = ;
};


class Campaign
{
      name = "Mucks Revenge";
 firstbattle = muck;
 
 class muck
      {
   name = "Muck's Revenge";
firstMission = muck;


  class muck: MissionDefault
            {
end1 = muckoutro;
end2 = ;
end3 = ;
end4 = ;
end5 = ;
end6 = ;
lost = ;
template = muck.chernarus;
                               };

            class muckoutro: missionDefault
     {
                 end1 = ;
 end2 = ;
 end3 = ;
 end4 = ;
 end5 = ;
 end6 = ;
 lost = ;
 template = muckoutro.chernarus;
};
 };
   };
..but now I'm getting the error message:

     Error line 10:tc1:undefined base class 'MissionDefault'

 Please somebody help with out with this, I haven't been able to work on the actual missions for over 2 days.

Wow, chalk one up to stupidity and sloppy coding :(

 That tc1 error should have given it away as that is one of the chapters from a campaign's description whom I was using as a template. The reason I didn't see it was because it was in one of the 'mission's' description, not the Campaign description.

 What a relief after mindless hours of 'change this semicolon -ctd, repeat,repeat...'
« Last Edit: 04 Jul 2009, 20:57:51 by froggyluv »

Offline bronx187

  • Members
  • *
Re: Creating a campaign
« Reply #8 on: 05 Jul 2009, 11:48:04 »
ok froggyluv

what i noticed is that you forgot to add a beginning class which is needed to tell where to begin the campaign

read close i will highlight it in bold style
--------------------------------------
class MissionDefault
{
    lives = -1;

   lost = ;
   end1 = ;
   end2 = ;
   end3 = ;
   end4 = ;
   end5 = ;
   end6 = ;
};



class Campaign
{
   name = "Mucks Revenge";
   firstBattle = Beginning;   
   
             
       
class Beginning
      {     
                        name = "Beginning";
                       
                        cutscene = ;

                        firstMission = muck;
         lost = ;
                        end1 = ;
         end2 = ;
         end3 = ;
         end4 = ;
         end5 = ;
         end6 = ;
         

};

class muck: MissionDefault
      {
         end1 = muckoutro;
         end2 = ;
         end3 = ;
         end4 = ;
         end5 = ;
         end6 = ;
         lost = muck;
         template = muck.chernarus;
 };
 
class muckoutro: MissionDefault
      {
         end1 = muck;
         end2 = ;
         end3 = ;
         end4 = ;
         end5 = ;
         end6 = ;
         lost = muckoutro;
         template = muckoutro.chernarus;
 };
   };

     };
-------------------------------------

so as you can see you need a beginning class telling what mission to start first.
after that can make your missionclasses

class muck: MissionDefault
      {
         end1 = muckoutro;
         end2 = ;
         end3 = ;
         end4 = ;
         end5 = ;
         end6 = ;
         lost = muck;
         template = muck.chernarus;
 };

and the

class muckoutro: MissionDefault
      {
         end1 = muck;
         end2 = ;
         end3 = ;
         end4 = ;
         end5 = ;
         end6 = ;
         lost = muckoutro;
         template = muckoutro.chernarus;
 };

i made your description file how it should work you can download it and try let me know ok

good luck! :)

Offline froggyluv

  • Members
  • *
Re: Creating a campaign
« Reply #9 on: 05 Jul 2009, 22:44:42 »
 Thanks bronx 187 for checking this out for me. Actually, I don't know if you read the bottom of my post but the error was actually in a description file in one of the Mission folders, not the campaign Description file. So the last Desciption file I posted actually works ok, Where you have ' Class Beginning' I have Class 'muck' but the results seem the same. I thought the names were totally arbitrary but still your way is better  even if just to keep things clear ie. too many classes named 'muck' -mucks things up  :D

 Again thanks for going thru all of that ramble though, I'm certainly learning alot thru frustartion and countless trial and error but surprsingly, things are actually shaping up for this mission  :good:

 Edit- Another question: Is there a way to make the second mission "muckoutro" which is really just a scripted camera sequence blend into the end of the first mission a little more seamlessly? I know I should have just made it the mission's standard 'Outro' from the beginning but now it seems to late to include it and it won't let me merge that mission with the 1st mission's outro. Basically, I just don't want that mission ending screen to load after the 1st mission is complete, rather have the second blend in as the proper ending.
« Last Edit: 06 Jul 2009, 00:01:41 by froggyluv »

Offline mathias_eichinger

  • Missions Depot
  • Administrator
  • *****
  • I'm a llama!
Re: Creating a campaign
« Reply #10 on: 30 Jun 2011, 22:24:11 »
Hey, I am trying to create a campaign too, and ArmA2 throws up the following error:

Quote
File Campaigns\Task Force Budweiser\description.ext, line 35: /campaign/Part1/: 'E' encountered instead of '{'

 
I cannot find the E in that description.ext, so I post it here:

Quote
// Description file for Armed Assault
// Created by: TODO: Author Name
//////////////////////////////////////////////////////////////////

class MissionDefault
{
     lives = -1;

    lost = ;
    end1 = ;
    end2 = ;
    end3 = ;
    end4 = ;
    end5 = ;
    end6 = ;
};

class Campaign
{
    name =  "Task Force Budweiser";
    firstBattle = Part1;



    class Part1
    {
        name = "Helping Hands_Start";

        cutscene = ;

        firstMission = Helping Hands;
        lost = ;
        end1 = ;
        end2 = ;
        end3 = ;
        end4 = ;
        end5 = ;
        end6 = ;

   class Rumbling Earth: MissionDefault
        {
            end1 = Pandoras Box;
            end2 = Pandoras Box;
            end3 = Pandoras Box;
            end4 = Pandoras Box;
            end5 = Pandoras Box;
            end6 = Pandoras Box;
            lost = Pandoras Box;
            template = Rumbling%20Earth.Takistan;
        };

        class Pandora's Box: MissionDefault
        {
            end1 = Helping Hands;
            end2 = Helping Hands;
            end3 = Helping Hands;
            end4 = Helping Hands;
            end5 = Helping Hands;
            end6 = Helping Hands;
            lost = Helping Hands;
            template = Pandora's%20Box.Takistan;
        };

        };
    };

};

class CfgSounds
{
    sounds[] = { };
};

class CfgRadio
{
    sounds[] = { };
};

Help would be greatly appreciated.

Offline SaOk

  • Missions Depot Staff
  • *****
    • My youtube profile
Re: Creating a campaign
« Reply #11 on: 30 Jun 2011, 23:08:27 »
Code: [Select]
       firstMission = Helping Hands;
        lost = ;
        end1 = Rumbling Earth;
        end2 = Rumbling Earth;
        end3 = Rumbling Earth;
        end4 = Rumbling Earth;
        end5 = Rumbling Earth;
        end6 = Rumbling Earth;

Also change:
Code: [Select]
class Pandora's Box: MissionDefault -> class Pandoras Box: MissionDefault
These are unneeded (if you add voices, those could be in mission description):
Code: [Select]
class CfgSounds
{
    sounds[] = { };
};

class CfgRadio
{
    sounds[] = { };
};

Edit: And there is one too many "};" at the end.
« Last Edit: 30 Jun 2011, 23:11:27 by SaOk »

Offline mathias_eichinger

  • Missions Depot
  • Administrator
  • *****
  • I'm a llama!
Re: Creating a campaign
« Reply #12 on: 01 Jul 2011, 15:22:29 »
Thank you for the feedback, but the original error still persists - I get exactly the same error message.

This is my new description.ext:

Quote
//////////////////////////////////////////////////////////////////
// Description file for Armed Assault
// Created by: TODO: Author Name
//////////////////////////////////////////////////////////////////

class MissionDefault
{
     lives = -1;

    lost = Rumbling Earth;
    end1 = Rumbling Earth;
    end2 = Rumbling Earth;
    end3 = Rumbling Earth;
    end4 = Rumbling Earth;
    end5 = Rumbling Earth;
    end6 = Rumbling Earth;
};

class Campaign
{
    name =  "Task Force Budweiser";
    firstBattle = Part1;



    class Part1
    {
        name = "Helping Hands_Start";

        cutscene = ;

        firstMission = Helping Hands;
        lost = ;
        end1 = ;
        end2 = ;
        end3 = ;
        end4 = ;
        end5 = ;
        end6 = ;

   class Rumbling Earth: MissionDefault
        {
            end1 = Pandoras Box;
            end2 = Pandoras Box;
            end3 = Pandoras Box;
            end4 = Pandoras Box;
            end5 = Pandoras Box;
            end6 = Pandoras Box;
            lost = Pandoras Box;
            template = Rumbling%20Earth.Takistan;
        };

        class Pandoras Box: MissionDefault
        {
            end1 = Helping Hands;
            end2 = Helping Hands;
            end3 = Helping Hands;
            end4 = Helping Hands;
            end5 = Helping Hands;
            end6 = Helping Hands;
            lost = Helping Hands;
            template = Pandora's%20Box.Takistan;
        };

       
    };

};

Offline SaOk

  • Missions Depot Staff
  • *****
    • My youtube profile
Re: Creating a campaign
« Reply #13 on: 01 Jul 2011, 17:14:04 »
Hi, you changed the wrong part. It should be:

Code: [Select]
class MissionDefault
{
    lives = -1;
    lost = ;
    end1 = ;
    end2 = ;
    end3 = ;
    end4 = ;
    end5 = ;
    end6 = ;
};
class Campaign
{
    name =  "Task Force Budweiser";
    firstBattle = Part1;
    class Part1
    {
        name = "Helping Hands_Start";
        cutscene = ;
        firstMission = Helping Hands;
        lost = ;
        end1 = Rumbling Earth;
        end2 = Rumbling Earth;
        end3 = Rumbling Earth;
        end4 = Rumbling Earth;
        end5 = Rumbling Earth;
        end6 = Rumbling Earth;
        class Rumbling Earth: MissionDefault
        {
            end1 = Pandoras Box;
            end2 = Pandoras Box;
            end3 = Pandoras Box;
            end4 = Pandoras Box;
            end5 = Pandoras Box;
            end6 = Pandoras Box;
            lost = Pandoras Box;
            template = Rumbling%20Earth.Takistan;
        };
        class Pandoras Box: MissionDefault
        {
            end1 = Helping Hands;
            end2 = Helping Hands;
            end3 = Helping Hands;
            end4 = Helping Hands;
            end5 = Helping Hands;
            end6 = Helping Hands;
            lost = Helping Hands;
            template = Pandora's%20Box.Takistan;
        };   
    };
};