Jump to content
Sign in to follow this  
Korneel

Make Arma Not War - Alternative Submission Method

Recommended Posts

Hi everyone,

We would like to let you know that certain entries in the Multiplayer and Addon categories may now also be submitted to the Make Arma Not War Dropbox.

What’s changed?

Over the past few weeks, we received several e-mails from contestants in the Multiplayer and Addon categories who - for technical reasons - were not able to submit their work to the Arma 3 Steam Workshop. As a result, we've decided to allow for certain exceptions in the Multiplayer and Addon categories. If contestants are not able to submit their work to the Steam Workshop (whether it's because of file size, complications with servers, or otherwise), they will now have the possibility to submit their work to the Make Arma Not War Dropbox.

How does it work?

If you are competing in the Multiplayer or Addon category, and cannot submit your work the Arma 3 Steam Workshop, please send an e-mail to support@makearmanotwar.com. In the e-mail, you should clearly state why you’re not able to submit your work to the Arma 3 Steam Workshop. Make sure to also include the link to your entry on the Make Arma Not War website (if you have it), so we know which entry is yours. If your request is accepted, we will set you up with a shared drive on our Make Arma Not War Dropbox. You can then use this to share your files with us, and a Steam Workshop submission will no longer be required for your entry.

I still have questions.

As always, if you have any further questions, please do not hesitate to contact us via support@makearmanotwar.com.

Good luck in the contest!

Note

The Singleplayer category will still need to be submitted to the Steam Workshop. This is because, in this category, public voting will select the finalists - and we want to keep it as easy for people to install, play, and vote for these entries.

(Existing contestants in the Multiplayer and Addon categories will also be contacted via e-mail. The application process on www.makearmanotwar.com has been updated to inform new contestants about this alternative possibility.)

Share this post


Link to post
Share on other sites

How does it work for campaign in SP category, as we can't submit it in the workshop?

Share this post


Link to post
Share on other sites
How does it work for campaign in SP category, as we can't submit it in the workshop?

Hi Wiki, I've checked up on this with my colleagues:

If you want to submit a campaign in the Singleplayer Game Mode category, please upload it as an addon to the Steam Workshop. Unlike the "old style" campaigns, the campaign addon has to have a normal addon config containing campaign's definition. It should be a relatively easy thing to do, but we will also post some basic instructions soon.

Share this post


Link to post
Share on other sites
Hi Wiki, I've checked up on this with my colleagues:

If you want to submit a campaign in the Singleplayer Game Mode category, please upload it as an addon to the Steam Workshop. Unlike the "old style" campaigns, the campaign addon has to have a normal addon config containing campaign's definition. It should be a relatively easy thing to do, but we will also post some basic instructions soon.

Hey, thanks for (finally) clearing that up, Korneel! But I've heard from others that hardcoded file paths refering to the "Campaigns" dir are different in the addon version. Is that correct? If so I'd have to do quite a lot of rework / finding and replacing filepaths etc. I use custom textures, images and stuff in combination with a shared image/texture directory in my Campaigns folder (respectively campaign.pbo) so hardcoded paths are scattered around my whole project. And will the campaign environment in the addon version behave exactly like the one in the "old-style" pbo?

Share this post


Link to post
Share on other sites
I've heard from others that hardcoded file paths refering to the "Campaigns" dir are different in the addon version. Is that correct?

That is, unfortunately, correct. I imagine you're currently using "\Campaigns\<your campaign>\" to refer to your campaign's directory? This will no longer be usable when you convert it to the addon format. However, fixing it should be very simple, by way of Notepad++ and Replace All.

I took the liberty of checking your MERCS campaign, as I presume that's where your worry is. You're using "\Campaigns\IP_CMP_MERCS\" every time you refer to your campaign's directory. This helps a lot, as that means no variation, which means it's very simple to use Notepad++'s Replace All function.

When moving your campaign to the addon format, you'll have to define a class called CfgPatches within your addon's config (config.cpp, to be precise). This will tell the game how you want your addon to merge with all the other content. Inside CfgPatches, you define a class that refers to the addon's directory. Just like "\Campaigns\<your campaign>\" refers to the campaign's directory, "<your addon directory>\" will refer to the addon's directory. You might be able to see where I'm going with this already.

So I'd recommend you define the addon directory in CfgPatches as IP_CMP_MERCS. It's nice and unique, so it's very unlikely conflicts will ever arise from it. Then you'll just want to launch Notepadd++, hit Search > Find in Files... and define the search criteria as such:

  1. Find what: \Campaigns\IP_CMP_MERCS\
  2. Replace with: IP_CMP_MERCS\IP_CMP_MERCS\
  3. Directory: <path to the root folder of your campaign>

In theory, that should replace every instance as required. The replacement path might seem a bit weird, but this is because this is the easiest method. You'll just have move your entire campaign folder as it exists into the root of the new addon folder, in the same location as the config file. As such, if you keep the same file structure as your current campaign, everything should then work as desired.

We actually intend to release an example campaign in the addon format sometime soon. If you find this a bit too confusing right now, I'd recommend you take a look at the example campaign when it's available. It should hopefully make things clearer.

Share this post


Link to post
Share on other sites

Wow, thanks for this both fast and detailed answer! While you were taking apart my project I had a glimpse at someone else's and saw it is quite easy to set up. Plus my conclusion was the same - I'd just have to turn around / change the Campaigns\IP_CMP_MERCS path and could keep the lower file structure. Even though I use Notepad++ I didn't know about the search-in-files-thing, thanks! The only files left should be the missionFlow.fsms (due to the need for re-compiling?) but I'm not sure if I have a filepath in one of them anyway. Will double-check nontheless. I'll do some working and testing, thanks again!

Share this post


Link to post
Share on other sites

Okay, I've tried my best but I must be doing something wrong as it's not working. I've checked the CfgMissions documentation and the example from Undeceived's MANW entry I've mentioned. So far no luck, I'm always getting:

No entry: 'IP_CMP_MERCS\IP_CMP_MERCS\description.ext.Campaign'.

Here's my setup.

PBO Path (game started with custom mod launcher): "D:\Program Files (x86)\Steam\SteamApps\common\Arma 3\@MERCS\AddOns\IP_CMP_MERCS.pbo"

Inside the "IP_CMP_MERCS.pbo":

unbenannt1udj2o.jpg

Inside the subfolder "IP_CMP_MERCS":

unbenannt2yok9c.jpg

The config.cpp:

class CfgPatches
{
class IP_CMP_MERCS
{
	units[] = {};
	weapons[] = {};
	requiredVersion = 1.0;
	requiredAddons[] = {"a3_map_stratis", "a3_map_altis"};
};
};

class CfgMissions
{
class Campaigns
{
	class IP_CMP_MERCS
	{
		directory = "IP_CMP_MERCS\IP_CMP_MERCS";
		//#include "\IP_CMP_MERCS\IP_CMP_MERCS\description.ext" // Taken from Biki example - If not commented out it says he can't find it at the game won't start.
	};
};
};

The campaign description.ext:

class Campaign
{
name = "IP_CMP_MERCS";
firstBattle = Missions;
disableMP = 1;
enableHub = 1;

briefingName = "M.E.R.C.S.";
author = "IndeedPete";
overviewPicture = "\IP_CMP_MERCS\IP_CMP_MERCS\img\cmp_overview.jpg";
overviewText = "Born in Karthoum, Sudan, Raif Salih became an orphan at the early age of two. Growing up as one of the poorest people in one of the poorest countries on this planet he basically had no other option than to join the military - the Sudanese Armed Forces (SAF).<br/><br/>After years of internecine conflict in East Africa, Ethiopian forces led a major offensive against their neighbours. Raif’s friends fell before the onslaught and the SAF were deadlocked in a war they could not win, despite their successful defence of Khartoum at the centre of the country.<br/><br/>Raif understood that even if the Ethiopians relented, there would be nothing left of what he had once called home. Taking what little he had, he deserted the SAF, slipped through enemy lines, and travelled for weeks on foot through the East Sahara desert. Eventually, Raif reached Alexandria in Egypt and secured safe passage to Greece, where he believed he could begin again. Now, his only hope is that ‘Nikos’, the man that brokered his European dream, is as trustworthy as he appears...";

class MissionDefault
{
	lives = -1;

	Hub01 = Hub01;
	Hub01Fail1 = Hub01;
	Hub01Fail2 = Hub01;
	Hub01Fail3 = Hub01;
	MOut_Renegade = MOut_Renegade;

	Hub02 = Hub02;
	Hub02Fail1 = Hub02;
	Hub02Fail2 = Hub02;
	Hub02Fail3 = Hub02;

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

class Missions
{
	name = "The Beginning";
	cutScene = ;
	firstMission = MIn;
	end1 = ;
	end2 = ;
	end3 = ;
	end4 = ;
	end5 = ;
	end6 = ;
	lost = ;

	#define _CAMPAIGN 1

	class Hub01: MissionDefault
	{
		M01a = M01a;
		M01b = M01b;
		M01c = M01c;
		M02a = M02a;
		M02b = M02b;
		M02c = M02c;
		M03 = M03;
		M04a = M04a;
		M04b = M04b;
		M04c = M04c;
		M05 = M05;
		MOut_Quit = MOut_Quit;
		MTrans01 = MTrans01;
		template = MERCS_Hub01.Stratis;
	};

	class Hub02: MissionDefault
	{
		M06 = M06;
		M07a = M07a;
		M07b = M07b;
		M07c = M07c;
		MMain01 = MMain01;
		MMain02 = MMain02;
		MMain03 = MMain03;
		MMain04 = MMain04;
		template = MERCS_Hub02.Altis;
	};

	class MIn: MissionDefault
	{
		template = MERCS_MIn.Stratis;
	};	

	class M01a: MissionDefault
	{
		template = MERCS_M01a.Altis;
	};	

	class M01b: MissionDefault
	{
		template = MERCS_M01b.Altis;
	};	

	class M01c: MissionDefault
	{
		template = MERCS_M01c.Altis;
	};	

	class M02a: MissionDefault
	{
		template = MERCS_M02a.Altis;
	};

	class M02b: MissionDefault
	{
		template = MERCS_M02b.Altis;
	};

	class M02c: MissionDefault
	{
		template = MERCS_M02c.Altis;
	};

	class M03: MissionDefault
	{
		template = MERCS_M03.Altis;
	};

	class M04a: MissionDefault
	{
		template = MERCS_M04a.Altis;
	};

	class M04b: MissionDefault
	{
		template = MERCS_M04b.Altis;
	};

	class M04c: MissionDefault
	{
		template = MERCS_M04c.Altis;
	};

	class M05: MissionDefault
	{
		template = MERCS_M05.Altis;
	};

	class M06: MissionDefault
	{
		template = MERCS_M06.Altis;
	};

	class M07a: MissionDefault
	{
		template = MERCS_M07a.Altis;
	};

	class M07b: MissionDefault
	{
		template = MERCS_M07b.Altis;
	};

	class M07c: MissionDefault
	{
		template = MERCS_M07c.Altis;
	};

	class MMain01: MissionDefault
	{
		template = MERCS_MMain01.Altis;
	};

	class MMain02: MissionDefault
	{
		template = MERCS_MMain02.Altis;
	};

	class MMain03: MissionDefault
	{
		template = MERCS_MMain03.Altis;
	};

	class MMain04: MissionDefault
	{
		template = MERCS_MMain04.Altis;
	};

	class MOut_Renegade: MissionDefault
	{
		template = MERCS_MOut_Renegade.Altis;
	};	

	class MOut_Quit: MissionDefault
	{
		template = MERCS_MOut_Quit.Altis;
	};	

	class MTrans01: MissionDefault
	{
		template = MERCS_MTrans01.Altis;
	};	

	// #include "description.fsm"
};
};

Thanks in advance for any help!

Share this post


Link to post
Share on other sites

Thanks for the update, but I don't really understand everything.

To configure it as an addon, is it just packing it in PBO file and uploading it in addon category?

In addition, why only using SW, instead of using dropbox to release the campaign file so that we CAN put the file in the ArmA\Campaigns folder? Would be simplier, wouldn't it?

Share this post


Link to post
Share on other sites

For addons the structure is this:

(folder) "@Modname" ---> (folder) "AddOns" ---> any pbos for your mod in here (goes in Addons folder <-- , which is within the @modname folder)

In the @modname folder you also can put some config.cpp I think and a paa for modimage

Share this post


Link to post
Share on other sites

Sorry I don't know what config.cpp does exactly, I only edited it once, but I don't believe all mods need it since I don't think i have seen it in every mod.

You can probably search "config.cpp" on google and find info about it, im sure it likely hasn't changed since one of the older arma games or ofp (assuming it was around then)

Share this post


Link to post
Share on other sites

Well, I guess the best strategy is to wait until BIS releases this example campaign they've mentioned a page back. But don't expect an answer before monday, they're probably enjoying their Arma free weekend.^^ Though I still hope Zipper throws in a few words on my problem on the first page.

Share this post


Link to post
Share on other sites
what's the config.cpp for?

The config.cpp file tells the game to treat the folder as an addon. This alternate method of missions and campaigns is also referred to as "the addon format" for this very reason.

Though I still hope Zipper throws in a few words on my problem on the first page.

I made a test campaign using your config.cpp and description.ext and it worked fine on my end, so I believe your problem is not in either of those files. It could be something going wrong when you pack the folder. May I ask what tool you're using?

Personally, for you guys, I'd recommend that you use what I call "The Editor Trick" for packing files. It works as follows:

  1. Take your addon folder and add a world name to the end, as if it were a mission. e.g. IP_CMP_MERCS.Altis
  2. Move the folder to your Editor missions folder, typically found at C:\Users\<your user>\Documents\Arma 3 Other Profiles\<your profile>\missions
  3. Load the "mission" in the Editor. You will get a warning about the file being read-only, but that's because there's no mission.sqm. You can ignore this
  4. Select Save As. In the drop-down menu, select Export to single missions and hit OK
  5. Now navigate to your Arma 3 Missions folder, typically located at C:\Program Files (x86)\Steam\SteamApps\common\Arma 3\Missions
  6. You should see your packed addon sitting there waiting for you. In this case, it'll be IP_CMP_MERCS.Altis.pbo
  7. Remove the world name from the PBO's name, e.g. IP_CMP_MERCS.pbo

Essentially, you trick the game into thinking it's packing a mission, and it packs it for you. I've been using it since OFP. :) Try packing it this way and see if that fixes your problem.

Share this post


Link to post
Share on other sites

Huge thanks Zipper, it's working! I've been using Mikero's Dos Tools, or Eliteness to be more precise, for packing and unpacking PBOs. Strange, it used to work just fine when I packed the old style campaign PBO. Your trick worked like a charm!

But all this addon PBO stuff got me thinking. How do you do a proper development? From what I understand the game only recognises addons packed as PBOs, means you can't mess around with the sources once it's running. If you took apart my project you probably saw that I have a couple of shared dirs for functions, configs, images etc. I tend to develop in both the current mission as well as the shared directories at the same time (changing a function here, a config value there and so on). So, every time I integrate a mission into the campaign folder (respectively addon folder now) or change a function I need to do all that repacking again, restart the game, test, see that something is not working and do the process all over again. This seems kind of annoying and somewhat inefficient to me so I guess you guys do it differently. Good thing about the "old way" is that you can just keep the raw folder in your Campaigns dir and mess around with the sources while developing but the game still recognises it like it was a Campaign.PBO... Keen to share another totally secret inside dev tip? ;)

Offtopic: Oh, and nice appearance on the livestream last Friday, really liked the commentaries on editing and the East Wind development. I hope you guys also take on Adapt and Win.

Share this post


Link to post
Share on other sites

Is the config.cpp absolutely necessary? I see a lot of addons that don't have it.

Share this post


Link to post
Share on other sites
Offtopic: Oh, and nice appearance on the livestream last Friday, really liked the commentaries on editing and the East Wind development. I hope you guys also take on Adapt and Win.[/Quote]

I'd love to see this! Is there a link somewhere? :)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×