Zodiac Modding

A refuge for those migrating from the fallen DXEditing.com and a place for general discussion relating to Deus Ex editing (coding, mapping, etc).
Post Reply
Mirrorman95
Thug
Posts: 12
Joined: Tue Sep 03, 2013 10:00 am

Zodiac Modding

Post by Mirrorman95 »

I'm running HDTP Beta, and when I started playing Zodiac, the player model was HDTP JC with Paul's original texture over his face and hands. It does not look pretty. So, I used WOTgrealDeveloper to export the textures, classes, and audio of the Zodiac mod and DEEDgui to export the meshes. After renaming a whole bunch of folders and images and wavs, and making a few adjustments to PaulDentonPlayer.uc, I finally managed to recompile Zodiac.u in its entirety with UCC.exe. Now if JC Denton HDTP is on, the player model is HDTP JC with Paul's HDTP textures. Unfortunately, the recompiling process has screwed up Zodiac's ability to manifest its original characters and objects. I had to make the SecurityGuard.uc extend Cop just to make the guards show up on the first mission, and Amanda Shays won't show up at all. If I make Amanda Shays extend TiffanySavage, the game ignores Amanda's default properties and spawns a Tiffany Savage that can't even talk to the player. How do I recompile Zodiac so that the game spawns all the NPCs properly?

By the way, the new lines of code I added to PaulDentonPlayer.uc read as such:

Code: Select all

function bool Facelift(bool bOn)
{
	local int i;

	if(!Super.Facelift(bOn))
		return false;

	if(bOn)
		Mesh = Mesh(DynamicLoadObject("HDTPCharacters.HDTPGM_Trench", class'Mesh', True));

	if(Mesh == None || !bOn)
	{
		Mesh = Default.Mesh;

		for(i = 0; i < 8; ++i)
			MultiSkins[i] = Default.MultiSkins[i];

		for(i = 0; i < 5; ++i)
		{
			JCTex[i] = Default.JCTex[i];
			JCHandTex[i] = None;
		}
	}
	else
	{
		MultiSkins[1] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex1", class'Texture'));
		MultiSkins[2] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPJCDentonTex2", class'Texture'));
		MultiSkins[4] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPJCDentonTex4", class'Texture'));
		MultiSkins[5] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPJCDentonTex5", class'Texture'));
		MultiSkins[6] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPJCDentonTex6", class'Texture'));
		MultiSkins[7] = Texture'BlackMaskTex';

		for(i = 0; i < 5; ++i)
		{
			JCTex[i] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex"$ (i+1), class'Texture'));
			JCHandTex[i] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPJCHandsTex"$ i, class'Texture'));
		}
	}

	SetSkin();

	return true;
}
// ----------------------------------------------------------------------
// TravelPostAccept()
// ----------------------------------------------------------------------

event TravelPostAccept()
{
    local DeusExLevelInfo info;

    local Skill aSkill;
    local int i;

    Super.TravelPostAccept();

if(Super.Facelift(true))
{
switch(PlayerSkin)
	{
		case 0:	MultiSkins[0] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex0", class'Texture'));
			MultiSkins[3] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex0", class'Texture'));
			break;
		case 1:	MultiSkins[0] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex2", class'Texture'));
			MultiSkins[3] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex2", class'Texture'));
			break;
		case 2:	MultiSkins[0] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex3", class'Texture'));
			MultiSkins[3] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex3", class'Texture'));
			break;
		case 3:	MultiSkins[0] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex4", class'Texture'));
			MultiSkins[3] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex4", class'Texture'));
			break;
		case 4:	MultiSkins[0] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex5", class'Texture'));
			MultiSkins[3] = Texture(DynamicLoadObject("HDTPCharacters.Skins.HDTPPaulDentonTex5", class'Texture'));
			break;
	}
}
else
{
	switch(PlayerSkin)
	{
		case 0:	MultiSkins[0] = Texture'PaulDentonTex0';
			MultiSkins[3] = Texture'PaulDentonTex0';
			break;
		case 1:	MultiSkins[0] = Texture'PaulDentonTex4';
			MultiSkins[3] = Texture'PaulDentonTex4';
			break;
		case 2:	MultiSkins[0] = Texture'PaulDentonTex5';
			MultiSkins[3] = Texture'PaulDentonTex5';
			break;
		case 3:	MultiSkins[0] = Texture'PaulDentonTex6';
			MultiSkins[3] = Texture'PaulDentonTex6';
			break;
		case 4:	MultiSkins[0] = Texture'PaulDentonTex7';
			MultiSkins[3] = Texture'PaulDentonTex7';
			break;
	}
}

}
DDL
Traditional Evil Scientist
Traditional Evil Scientist
Posts: 3791
Joined: Mon Oct 17, 2005 10:03 am

Re: Zodiac Modding

Post by DDL »

I..uh.

Hmm.

Ok.

It's difficult to guess what you might've done, since while I can think of some reasons why stuff wouldn't be showing up, I'm hard-pressed to think of ways you could manage it without making the levels actually unloadable. The fact you're managing to get the levels booting up but without actors is...impressive, really. Are you sure they're not just 'there, but with no skins' or something?

I'll see if I can think of a way to make HDTP compatible with downstream mods (though the easiest fix would of course be to simply disable JC/Paul HDTPification, which you can do from the settings menu).
Mirrorman95
Thug
Posts: 12
Joined: Tue Sep 03, 2013 10:00 am

Re: Zodiac Modding

Post by Mirrorman95 »

NPCs from the original Deus Ex like Smuggler, Alex, Tong, and Luminous Path members load just fine in the levels. The NPCs who don't show up at all are the ones whose meshes are only defined in the defaultproperties of new Zodiac classes, like Amanda. The same goes for CIA computer terminals; Zodiac contains some new computer classes. Would it help if I submitted a zip folder containing the decompiled Zodiac contents I'm recompiling? They total up to about 10 MB.

By the way, the main DeusEx.u file I run the mod with is a variant of Shifter 1.9 RC1; the version of Shifter with HDTP Beta support. It achieves this support through a series of Facelift functions in each of the classes whose meshes can be substituted by HDTP. Because of the way Yuki coded them, if you activate HDTP for one character, you activate HDTP for all characters that HDTP supports, except MJ12 troops because Yuki knows their HDTP model is buggy. The only way to disable HDTP for a single character in Shifter 1.9 is to disable HDTP for all characters, unless you recompile Shifter's DeusEx.u with that character's Facelift function commented out. I had to do this with Anna because her HDTP model can't move its lips, but I'd rather not do this to JC. I've never really played Deus Ex without HDTP JC and I'm used to his newer model, so I'd really rather find a work-around for HDTP or Zodiac than try to play it without HDTP Beta.
DDL
Traditional Evil Scientist
Traditional Evil Scientist
Posts: 3791
Joined: Mon Oct 17, 2005 10:03 am

Re: Zodiac Modding

Post by DDL »

Sounds like your problems are much more likely to be stemming from shifter-incompatibility, then.

Zodiac was designed to work with vanilla DX, and HDTP was designed to affect downstream mods as little as humanly possible.

If you're using shifter, you've got a custom shifter version of deusex.u, not the HDTP version of deusex.u, so classes like amanda will be extending from the shifter versions of their superclasses, and may be expecting different defprops to be present.
Mirrorman95
Thug
Posts: 12
Joined: Tue Sep 03, 2013 10:00 am

Re: Zodiac Modding

Post by Mirrorman95 »

Loading the unaltered Zodiac file works just fine with my Shifter 1.9 build, all the new NPCs spawn normally; it's just that HDTP JC/Paul's face is mistextured.
It's only when I decompile Zodiac with WOTgreal and recompile it with UCC using Shifter's DeusEx.u that I get a Zodiac file with errors.
User avatar
kocmo
Thug
Posts: 45
Joined: Mon Mar 17, 2014 11:51 am

Re: Zodiac Modding

Post by kocmo »

I have given up on trying to recompile Zodiac.u with UCC.exe, and updated it using UnrealEd. Posted my solution under downloads of unifiedDeusEx at ModDB. Full list of my changes:

Bugfixes:
- no more huge light bulb showing instead of blue glowing sphere in MJ12 mainframe and Egypt reactor
- proper display of computer camera views on security console (that was broken due to upscaled UI)

Loading high-definition meshes from HDTP for the Zodiac-specific object analogues:
- Paul Denton
- grays and their carcasses
- personal computer
- phone

The following Zodiac belt and inventory icons were rendered from scratch in 24-bit color:
- C4
- Joshua rifle
- Energy Clip ammo

High-quality upscaling of:
- remaining belt & inventory icons (Zap soda, biomatter sample)
- data vault images
- computer logos
- InfoLink portraits

You'll also get the features of unifiedDeusEx for free :-), like high-resolution UI with belt and inventory icons rendered from scratch in 24-bit color, loading HDTP Release 2 meshes when available, BioMod, enabling/disabling Shifter features one-by-one, a bunch of bugfixes, etc.
Last edited by kocmo on Fri Apr 04, 2014 3:31 am, edited 2 times in total.
Mirrorman95
Thug
Posts: 12
Joined: Tue Sep 03, 2013 10:00 am

Re: Zodiac Modding

Post by Mirrorman95 »

I can't wait to play this mod. I'm glad you got all these features working, and I'm especially surprised you managed to use UnrealEd to fix Zodiac where UCC failed. However, if I had my hands on the source code of this new DeusEx.u mod, I'm confident further changes can be made to give this mod all the best features of Smoke's mod and compatibility with Smoke's mod saves.
User avatar
kocmo
Thug
Posts: 45
Joined: Mon Mar 17, 2014 11:51 am

Re: Zodiac Modding

Post by kocmo »

Mirrorman95 wrote:I can't wait to play this mod. I'm glad you got all these features working, and I'm especially surprised you managed to use UnrealEd to fix Zodiac where UCC failed. However, if I had my hands on the source code of this new DeusEx.u mod, I'm confident further changes can be made to give this mod all the best features of Smoke's mod and compatibility with Smoke's mod saves.
Sounds great! DeusEx.u (and other UnrealScript packages) include source, so just install new DeusEx.u and Zodiac.u, click "Export All" in UnrealEd, and you'll have all the source code with all the comments :-) Be aware that "Export All" will overwrite your earlier class exports. That is all until I set up a source repository for unifiedDeusEx; already people have asked me about it, I just need to find time for it. Also, posting patches showing my changes specifically related to fixing Zodiac, so that you don't drown in the sea of code changes from dxEnhanced :-) DeusEx.u fixes for Zodiac, Zodiac.u fixes for Zodiac.

Changing Zodiac scripts in UnrealEd is not very difficult: you should go to Class view, edit the script in question, click F7 to recompile all changed scripts, press "Save" button, choose Zodiac package to save, and voila, you have a new Zodiac.u. Updating textures embedded into Zodiac.u is a bit more involved, though; I can provide more info, if you're interested.

I absolutely love the idea of porting over Smoke features! I was going to merge Smoke and GMDX functionality myself, but looks like I'm overextending myself, trying to pursue all the different directions for unifiedDeusEx at once. Let's join forces and work on a unified DeusEx.u, what do you say? Just to make sure we're talking of the same thing, let me clarify what I have in mind:
  • Including Smoke gameplay for Deus Ex and all campaign mods, not just for Zodiac
  • Being able to load non-Smoke savegames
  • Importing Smoke code wrapped into if-blocks, so that people will be able to enable or disable Smoke functionality by setting something like "bEnableSmokeFeatures=False" in [DeusEx.DeusExGameInfo] section of DeusEx.ini. It's not very difficult, see ScriptedPawn.uc lines 3176-3181 in unifiedDeusEx for an example of disabling random loot feature in Shifter.


The last point is important, because different people desire different things, some want to play with all the latest & greatest gameplay features, others just want a pure, back-to-the-roots Deus Ex experience, and some (like myself) like to mix-and-match individual gameplay changes, enabling some, disabling some. I feel that offering a general solution, which anyone can configure to their taste, would be the right thing to do. Eventually I'll offer a way to configure gameplay features via a graphical menu in unifiedDeusEx.

-kocmo

P.S.: I have just posted updated releases of unifiedDeusEx and its Zodiac adaptation last night, version 0.2 for both. They include uncompressed icon textures with full alpha, and look about twice as good as previous release :-) If you've downloaded version(s) earlier than 0.2, I suggest you upgrade ;-) No code changes in this update, only eye candy.
Last edited by kocmo on Tue Mar 18, 2014 6:44 pm, edited 1 time in total.
User avatar
kocmo
Thug
Posts: 45
Joined: Mon Mar 17, 2014 11:51 am

Re: Zodiac Modding

Post by kocmo »

Mirrorman95, I am also interested in your partially-working build system for Zodiac.u. Being able to completely rebuild a package in 30 seconds from command line is valuable. Perhaps we could fix the build system together?

P.S.: Thanks for advice about binoculars inventory icon being too small, I'm expanding it.
Mirrorman95
Thug
Posts: 12
Joined: Tue Sep 03, 2013 10:00 am

Re: Zodiac Modding

Post by Mirrorman95 »

kocmo wrote:Mirrorman95, I am also interested in your partially-working build system for Zodiac.u. Being able to completely rebuild a package in 30 seconds from command line is valuable. Perhaps we could fix the build system together?
Firstly, it always took me at least a few minutes to build a new Zodiac.u, but that might have been because I usually compiled a hefty DeusEx.u at the same time. Second, my system wasn't anything special, but I can explain it to you:
1. Used WOTgreal to extract the Audio, Textures, Classes, and Models from Zodiac.u to the folder Zodiac
2. Rename all the Textures and Sounds so they matched their respective filenames as in ImportAudio.uc, ImportTextures.uc, & ImportTextures2.uc
3. Used a different Unreal extractor (I think DEED) to replace a few of the models WOTgreal screwed up extracting
4. Edited DeusEx.ini with the line EditPackages=Zodiac so Zodiac.u would compile with the others
5. Modified or added classes in the Zodiac/Classes folder to effect some change in the Zodiac Mod
6. Removed Zodiac.u from the System folder
7. Ran the command "J:/DeusEx/System/UCC.exe" make n
8. Repeat steps 5-7 whenever you need to update Zodiac.u
And then I had a new Zodiac.u file that would run, but compiling it this way screwed up all the classes introduced in Zodiac.u. None of the mod-specific NPCs would talk to you, and I had to get the Security Guards to inherit from the Cop class just to get them to behave correctly. I couldn't get Amanda to talk to me at all. I don't know how you could fix a system with such a messed up result. It was either UCC and/or WOTgreal that caused the problem, but I wouldn't know which. I can upload the Zodiac build and source files I generated from this process if you think it will be useful.
And as for Smoke's mod, I have already compiled a DeusEx.u file that incorporates numerous features of Shifter 1.9 RC1, ShifterPlus, dxEnhanced 2.0.0, Biomod, Smoke's mod, Human Renovation, GMDX, and a few others. I don't have any of it in specific if-blocks, but now that you mention it, it would probably be a good idea to do so. Especially since the main complaint I've been getting is that many users don't have systems that can handle DX10 at full speeds. However, I'm not sure I would have the time or expertise to work on such a modular project. I could try to work on it when I have time, and can certainly upload what I have if you'd like. To get an idea of the work I've done on my version of the mod, I've already released a page for it at http://www.moddb.com/games/deus-ex/down ... anced-v200 . The current download was my first release, the described features up to removing the idle bobbing are features I've already more or less incorporated into the current version of the mod which I haven't yet released, and the features on the list after that are the ones I have yet to implement.

Update:
I've uploaded the source code and files of my mod. It can be found at https://www.mediafire.com/?ad26pjkfz0f217x
It's mainly just a bunch of other mods I pieced together using TextWrangler, Onyx, and DiffChecker. It may help you fix issues like the Menu Scaling problem.
User avatar
bjorn98009_91
Silhouette
Posts: 688
Joined: Thu May 08, 2008 8:17 am
Location: Hufvudstaden, Sweden
Contact:

Re: Zodiac Modding

Post by bjorn98009_91 »

Just so you know, extracting classes with WOTGreal isn't all that good. Classes that have Enums in their default properties will get the integer value in the extracted script, instead of the string. Say Physics=PHYS_None. With WOTGreal it would be Physics=0. The compile might succeed but you'll get undesired results, or the compile will fail/give you warnings. That's why I'm always extracting source from the editor via export all.
Producer and Quality Assurance Manager for Deus Ex: Revision.
User avatar
kocmo
Thug
Posts: 45
Joined: Mon Mar 17, 2014 11:51 am

Re: Zodiac Modding

Post by kocmo »

Mirrorman95 wrote:... To get an idea of the work I've done on my version of the mod, I've already released a page for it at http://www.moddb.com/games/deus-ex/down ... anced-v200 ...
I'll be god-damned!!... Check the credits section of unifiedDeusEx readme. Sending you more information by PM.
Post Reply