A small utility that makes sure EA C&C mods do not conflict any more with one another.
Introduction
Reason behind the app: I was sick and tired of having to remove and re add C&C mods every time we wanted to play a different one with my son, due to incompatibilities between various mods. A huge thank you at this point to all those people that enable us to have so much fun by investing their personal time.
Getting Started
Installation process
- Place the executable anywhere on your computer.
- Run it and choose the folder with your C&C Generals installations. i.e D:\Program Files\EA Games\The First Decade
- Run the games by double clicking on the mod names
- Or by right clicking on the taskbar icon near the clock.
Enjoy!!!
The utility has been tested on windows 10 x86/x64 with the latest version of Zero Hour (1.04) and various mods.
Project source can be found here: Github.com
I have uploaded a video demonstrating how it works here: Youtu.be
Apologies in advance for the bad audio :(
A few questions:
1. Where would you place the mod files? Do you just install everything in your ZH folder?
2. How exactly does this go about activating each mod? Does it work like other launchers (renaming big files and disabling the default scripts folder)?
3. Can this launcher be used with any mod, or does it only work with certain mods?
Hi Zeke_Dlyoung!
1) All mods have to be installed under one directory in order to be discovered. In my case as I had the first decade installed it was convenient to have everything else in there as well. The important part is that all mods are installed in the same parent folder that hosts your Z.H installation. In my case everything is installed in "D:\Program Files\EA Games\The First Decade".
2) What it does essentially is when you run a mod, moves every other mod except the one you want to run and your Z.H one to the bin. That way it makes sure there are no conflicts between the mods. Once it detects that you have stopped playing your mod and exited it restores everything as it was before.
3) Please feel free to give it a go and let me know if you discover that it does not work with certain mods, as I have only tested it with the mods you can see on the attached screenshot.
How does it know which files belong to which mod, and can it tell whether it needs to disable the ZH scripts or not?
Hi Zeke_Dlyoung,
Let me explain based on what i am used to doing.
Prior to installing a mod I create a copy of the Zero Hour folder, i rename it based on the mod name and then this is where i install the mod.
So what this little utility does then is scan for mods in the parent directory and then deletes them at folder level. That way you don't have to worry about the ini files as you will only have the ini file of the mod that you run loaded.
I will prepare a youtube video demonstrating functionality so whilst this being prepared please bear with me...
I have now uploaded a small video depicting the functionality of the Launcher. Feel free to view it here: Youtu.be
Apologies in advance for the terrible audio quality.
Uh, I don't know how to break this to you, but if a mod is in a copy of your ZH folder, it has no way of interfering with other mods. Mods can only interfere with each other if they are installed in the same ZH folder. Your mods may all be in the EA Games folder, but since they are in seperate ZH folder copies, you don't have to delete the others, you can just run the generals.exe program that is in the folder to run the mod you want.
I use this system, in fact I made a tutorial on how to do it before: Docs.google.com
The problem with this method though, is that it uses a lot of space. So if I may make a suggestion, what you could do is make a launcher that looks for mod files saved in a folder inside your ZH folder, and move them to the game folder to run the mod, then after it's done it moves the files back into the mod folder to keep your ZH folder clean. You could also include a feature, that disables the ZH scripts folder, for mods that use their own AI, and maybe the ability to set custom screen resolutions, and run the mod in quickstart and/or window mode.
Use jdupes to replace duplicate files with hardlinks; this way instead of having 'Zero Hour\generals.exe' and 'Zero Hour Shockwave\generals.exe' and 'Zero Hour Contra\generals.exe' pointing to different parts of the hard drive and taking up a total of 18.5mb, all three will point at the same spot and take up the same 6.5mb of space. This will save you the space the base install takes up for all but one base install. Instead of taking up ~5.24gb, ZH, Contra, and Shw will take up ~2.88gb (folder properties will not reflect this as windows explorer doesn't recognize hardlinks, but disk properties will--right click the drive in 'this pc' or 'my computer' and go to properties to view total disk usage before and after linking files)
The command you want for jdupes is `c:\path\to\jdupes.exe -Lr "c:\path\to\Zero Hour" "c:\path\to\shockwave" "c:\path\to\contra" "c:\paths\to\other\mods"`.
For example, all my mods are installed in 'J:\games\c&c\mods\ZH' and ZH is installed via both origin and TFD, so I use `c:\programs\jdupes.exe -Lr "J:\Games\C&C\Mods\ZH" "J:\Program Files (x86)\Origin Games\Command and Conquer Generals Zero Hour\Command and Conquer Generals\" "J:\Program Files (x86)\EA Games\Command & Conquer The First Decade\Command & Conquer(tm) Generals\generals.exe"`
You can get to the command prompt by running cmd.exe from the start menu (or run menu).
You can append as many paths as you want to this command; just make sure to include the double-quotes around them if you have spaces or other special characters in them.
Tip: you can actually drag entire files and folders into the command prompt from windows explorer. This will add the full path to that file (including the name of the file itself and any necessary quotes) to the end of the current command line. So you can drag jdupes into the command prompt, type -Lr, and then drag each folder in--just make sure to add spaces in between paths.
You can usually get jdupes here: Github.com but at time of writing, you'll need this link, as the latest version has no downloads: Github.com
tomstefanou you may want to build this functionality into your application. It should be extremely simple to download and run jdupes.exe on the path the application uses.
Hi Zeke_Dlyoung!,
I can reassure you that we had quite a lot of issues with the mods even when they are in their own folders. Especially with Shockwave.
Also with one of the Contra mods we were getting quite a few disconnections during multiplayer and all these issues are now gone for us. There are always better ways to do things and that's for sure, I just wanted to share this little tool with you guys because ever since we started using it we haven;t faced any issues again. Thank you for the suggestion though I will look into it :).
Regarding adding code that enables custom screen resolutions etc, although it would be nice, I would not like to interfere more with files that are already being modified. Maybe when I know a bit more about how the whole thing works internally.
Regards,
Tom
@Zeke_Dlyoung: I had a look at the document and to be frank this is how I had organized my mods as well, a separate installation for each mod based on a clean copy of the Z.H folder. Still had conflicts though. What I think of doing is add support for the command parameters contained in the linked document. Probably during the weekend :)
To anyone interested :)
I got a youtube comment from Chappeh55 asking why don't I copy paste the files somewhere else instead of deleting them. I haven't benchmarked but will give that a go as well and in case of any significant speed increase will adopt.
hi this my ideas good work
but on .net framework 4 only
How can I make it Start my own Mod
@TheAVenger3: You shouldn't have to do anything really,
as long as the mod you want to play is on the same folder level as the rest of your mods, then its executable should be discovered by the launcher and displayed in the list of mods.
Okay, thanks tomstefanou