It is currently Mon Oct 14, 2019 6:22 pm




Post new topic Reply to topic  [ 121 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7, 8, 9  Next
Minor things worth mentioning 
Author Message
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
I added export for the ExtStrings used by the InformationDevices stored inside DeusExText.u to fullbatchexport (and noticed that i screwed up the preprocessor so the UExtStringExporterTXT was not build into the last HTK release).

Additionally I created a UExtStringFactoryTXT for importing the these ExtStrings. This has the big advantage that this bypasses all of IONs import code for them, and that way one can easily import 16 byte unicode files. Not sure if there was a way to do it before, but I neither had success using utf8, nor 16 byte unicode encoding in the text files with the #exec ALLDEUSEXTEXT IMPORT command.

I imported this font by using
Code:
#exec new TrueTypeFontFactory Name="RomanCyrillicStd16" FontName="RomanCyrillic Std" Height=16 AntiAlias=0 XPad=2 CharactersPerPage=128 Count=4096

Copied sth. russian and bulgarian out of wikipedia into some 16 bit unicode text file and used this for import:
Code:
#exec new ExtStringFactoryTXT Name="00_Book01" File="..\DeusExText\00_Book01.txt"


Afterwards -- though the font is not really great for ingame use and the license doesn't seem to permit that anyway -- the right characters showed up when frobbing the book in training. :)

I'll add support for it to build commandlet, but well.. I guess I'll have to write a bit of introduction for the build commandlet then...

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Tue Jun 21, 2016 3:00 am
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
I figured out a way to prepare "special" 2x UI scale fonts. Special in terms of, though they have the doubled resolution, you can just use them instead of the old 1x versions and they still consume the right amount of space (e.g. they will appear at the same size as the old 1x font in 2x scale). So for using them one just needs to check UI scaling multiplier and use that Font if the UI Scale is a multiple of 2.

The trick I use is to first load a 1x version of the Font to get the glyph coordinates, and afterwards I replace the FontPage texture with another texture which is double the size, has 0.5 as DrawScale and the same U/V Bits/Size/Clamp set as the original 1x version.

The only downside is that the glpyh size needs to be a multiple of two. So you you can't just make a glyph 1px smaller, just in 2px steps.

Samples:
Image

Image
(TitleFont only)


Another interessting feature to implement for build commandlet would be to be able to import a bitmap based font which can use more then 255 characters. E.g. so you could use one texture for the the Basic Latin, another one for Cyrillic and so on. Especially for the very tiny sized fonts, importing out of a TTF doesn't always work that great.

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Sat Jun 25, 2016 2:00 pm
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
Apparently if a TextWindow has no own font set, it uses the Font of the RootWindow (probably of the next parent window with font).

So the SetFont call in Extension.RootWindow.InitWindow sets implicit the Font used for the Version Window at the bottom of the MainMenu.
Code:
   SetFont(Font'TechMedium');

I'll try to figure out whether this happens at window creation or is dynamic.

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Sat Jun 25, 2016 4:34 pm
Profile
Illuminati

Joined: Thu Mar 08, 2012 3:21 am
Posts: 2284
Post Re: Minor things worth mentioning
Yeah, Font takes on the parent (or maybe root only) window's font by default, and in my experience font style can be changed at any time, not just on window init.

Here's an example: http://i68.tinypic.com/2rzcklh.jpg

The personaInfoWindow there has the textWindow as a child and that text window is using two different fonts. First it draws the first few lines of stats text in the default font style, then it draws the "pedometer" with a different font style. Even with Tick() enabled it updates every frame just fine (necessary so those stats can update in real time).

_________________
GMDX: Advancement Mod


Sun Jun 26, 2016 2:08 am
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
Thanks for the info.

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Mon Jun 27, 2016 9:26 am
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
I now know why Deus Ex looks like a pile of crap. The two main factors for limiting visuals are on one hand that Deus Ex uses a (compared to Unreal, Nerf, ...) extremely low light level which results in wasting a lot of the close to barely enough available precission of lightmaps for surfaces, so quantization hits very hard and probably becomes the dominant factor for lighting on bsp surfaces. On the other hand zone ambient lighting is usually not used or is at a too low level to become noticable.

That it could have been done times better proof my Unreal screenshots in the first post there: http://www.oldunreal.com/cgi-bin/yabb2/ ... 1459155406

A quick test (in linear rendering) by scaling light brightness by 2-4 yields significant better results in Deus Ex.

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Fri Aug 12, 2016 12:05 am
Profile
Off Topic Productions
Off Topic Productions
User avatar

Joined: Sat Apr 24, 2004 9:21 pm
Posts: 14219
Location: Hafnia
Post Re: Minor things worth mentioning
Got any screenshots?

_________________
Jonas Wæver
Chief Poking Manager of TNM

You can buy my games on Steam if you like 'em.
Expeditions: Viking
Expeditions: Conquistador
Clandestine


Fri Aug 12, 2016 9:22 am
Profile WWW
Illuminati

Joined: Thu Mar 08, 2012 3:21 am
Posts: 2284
Post Re: Minor things worth mentioning
A while back I found that Zone Ambient Lighting even with a value of 1 is too bright, which obviously isn't too good for stealth gameplay. I'm going to do more tests though as it may apply nicely on specific maps/zones.

Another thing is meshes are way too bright, regardless of the surrounding lighting, that they totally stand out and look ugly. I've fixed this and will be posting screenshots for comparison soon. Vanilla never had this problem though so I think it is a modern renderer issue.

_________________
GMDX: Advancement Mod


Fri Aug 12, 2016 5:19 pm
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
Cybernetic pig wrote:
A while back I found that Zone Ambient Lighting even with a value of 1 is too bright, which obviously isn't too good for stealth gameplay. I'm going to do more tests though as it may apply nicely on specific maps/zones.

The problem which all hardware render devices carried around was that they compared to SoftDrv didn't use the Brightness setting to multiply the lights, but instead modified the gamma ramp to get some sort of Brightness scaling. This was mostly a technical descission as back in the days you couldn't do much about it, but this skyrockets the ambient lighting and whites out everything. Another issue in the non linear rendering is that the ambient lighting will add the same amount of perceived brightness regardless of the other lights. In linear rendering and a low ambient brightness it will effectivly just affect the really dark areas wheras on the ligthed areas it has less to no perceivable effect how it is correct.

Quote:
Another thing is meshes are way too bright, regardless of the surrounding lighting, that they totally stand out and look ugly. I've fixed this and will be posting screenshots for comparison soon. Vanilla never had this problem though so I think it is a modern renderer issue.

Mesh lighting is one thing of it's own. First of all mesh lighting treats every light source as LE_None which already on it's own causes quite a missmatch. Whats even worse is that mesh lighting is kind of fucked up itsself. While not exactly implemented like that, the (phong) 'diffuse' term for mesh lighting is basically just a step function. Either full light or none, while the (phong) 'specular' term basically acts as some kind of smoothing overlay.

Jonas wrote:
Got any screenshots?

I haven't really any screenshots which would highlight the influence of the precission, it's more of a comparission whats different in Unreal/Nerf and messing around with it and knowing how my rendering now act different.

However for the ambient it is easy to screenshot:
No Ambient: http://coding.hanfling.de/subway_no_ambient.jpg
Small Ambient: http://coding.hanfling.de/subway_small_ambient.jpg

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Sat Aug 13, 2016 9:14 am
Profile
Illuminati

Joined: Thu Mar 08, 2012 3:21 am
Posts: 2284
Post Re: Minor things worth mentioning
Regarding mouse 3 & 4 support and HXMenuScreenCustomizeKeys

Code:
var localized S_KeyDisplayItem KeyDisplayNames[128];
var localized string                FunctionText[96];
var string                               MenuValues1[96];
var string                               MenuValues2[96];
var string                               AliasNames[96];
var string                               PendingCommands[100];


How come the arrays have 35+ more elements than vanilla (most are [61])?

You provided this code, I want it. If I just replace vanilla MenuScreenCustomizeKeys with this HX one then I'll have mouse 3 & 4 support?
Problem is I cannot test it (for now) as I don't have such a mouse, so I want to be sure on what to do.

Also is there an accurate way of telling the player is attached to a ladder? Something like bIsClimbing set when the player is on a ladder would be really handy. Current method I'm using to play ladder climbing sounds is sub-optimal, but all the vanilla ladder code is native so I have no better method of checking currently.
The ladder climbing works fine for most ladders as seen here, but it doesn't work too well on the few late game ladders the DX devs made out of multiple brushes with gaps between them (missed by GetWallTexture()).

_________________
GMDX: Advancement Mod


Sat Aug 13, 2016 4:26 pm
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
Cybernetic pig wrote:
Regarding mouse 3 & 4 support and HXMenuScreenCustomizeKeys
How come the arrays have 35+ more elements than vanilla (most are [61])?

IIRC I did this change, so we could use the code in Revision too. Biomod/Shifter has some extra commands, but they just increased the count of the array to exactly match how many commands are available as this was required with the old code. I change it, so it could work with an arbitrary number of commands up until the array is full, so it would just be adding another defprop instead of always matching the array to the number of commands. Afaik that was the main reason I posted it.

Quote:
If I just replace vanilla MenuScreenCustomizeKeys with this HX one then I'll have mouse 3 & 4 support?
Problem is I cannot test it (for now) as I don't have such a mouse, so I want to be sure on what to do.

No you need a ViewportManager or sth. so you actually receive events for these keys. For Revision I added it as part of adding RawInput to WinDrvLite, so grab that out of Revision steam dir if you can, otherwise I can upload it. However there are still certain issues in, like some scaling for UI mouse would be nice as the mouse speed in the UI otherwise depends heavily on the mouse one uses, so no hardcoded scaling value would help. For ingame mouse speed I added some sort of logarithmic mouse speed slider, so one can have low mouse scalings too (0.1 to 10).

Code:
//=============================================================================
// HXMenuChoice_MouseSensitivity
//
// Revision History:
//  * Added range of 0.1-0.9 values in 0.1 steps to selection.
//=============================================================================
class HXMenuChoice_MouseSensitivity extends HXMenuUIChoiceSlider;

// ----------------------------------------------------------------------
// LoadSetting()
// ----------------------------------------------------------------------

function LoadSetting()
{
   local float NewValue;

   SaveValue = Player.MouseSensitivity;

   if ( Player.MouseSensitivity<1.0 )
      NewValue = Player.MouseSensitivity*10.0-1.0;
   else
      NewValue = Player.MouseSensitivity+8.0;
      
   //Log( "LoadSetting() (MouseSensitivity="$Player.MouseSensitivity$",NewValue="$NewValue$")", Class.Name );

   BtnSlider.WinSlider.SetTickPosition( NewValue );
}

// ----------------------------------------------------------------------
// CancelSetting()
// ----------------------------------------------------------------------

function CancelSetting()
{
   //Log( "CancelSetting() (SaveValue=" $ SaveValue $ ")", Class.Name );

   Player.UpdateSensitivity( SaveValue );
}

// ----------------------------------------------------------------------
// ResetToDefault()
// ----------------------------------------------------------------------

function ResetToDefault()
{
   //Log( "CancelSetting() (SaveValue=" $ DefaultValue $ ")", Class.Name );

   Player.UpdateSensitivity( DefaultValue );
   SetValue( 9 );
}

// ----------------------------------------------------------------------
// SetEnumerators()
// ----------------------------------------------------------------------

function SetEnumerators()
{
   local int i;

   // 0.1 to 0.9 in 0.1 steps.
   for ( i=0; i<9; i++ )
      SetEnumeration( i, "0."$(i+1) );

   // 1 to 10 in 1 steps.
   for ( i=9; i<19; i++ )
      SetEnumeration( i, (i-8) );
}

// ----------------------------------------------------------------------
// ScalePositionChanged()
//
// Update the Mouse Sensitivity value.
// ----------------------------------------------------------------------

event bool ScalePositionChanged( Window Scale, int NewTickPosition, float NewValue, bool bFinal )
{
   local float Value;

   // Don't do anything while initializing as we get several
   // ScalePositionChanged() events before LoadSetting() is called.
   if ( bInitializing )
      return False;

   if ( NewTickPosition<9 )
      Value = (float(NewTickPosition)+1.0)/10.0;
   else
      Value = float(NewTickPosition)-8.0;

   //Log( "ScalePositionChanged() (NewTickPosition="$NewTickPosition$",Value="$Value$")", Class.Name );

   Player.UpdateSensitivity( Value );
   return False;
}

// ----------------------------------------------------------------------
// ----------------------------------------------------------------------

defaultproperties
{
   NumTicks=19
   StartValue=0.1
   EndValue=10.0
   DefaultValue=1.0
   HelpText="Modifies the mouse sensitivity"
   ActionText="Mouse |&Sensitivity"
}


Quote:
Also is there an accurate way of telling the player is attached to a ladder? Something like bIsClimbing set when the player is on a ladder would be really handy. Current method I'm using to play ladder climbing sounds is sub-optimal, but all the vanilla ladder code is native so I have no better method of checking currently.
The ladder climbing works fine for most ladders as seen here, but it doesn't work too well on the few late game ladders the DX devs made out of multiple brushes with gaps between them (missed by GetWallTexture()).

The texture trace in vanilla Deus Ex is flawed (as discussed somewhere early in this thread). Simply put, it often returns another coplanar surface instead of the correct one. There are quite a lot of noticable examples in Hong Kong. However I still haven't quite figured out if my texture trace works correctly with mover surfaces. Basically I stopped working on it after I needed some testmap with some movers in, where each surface has an unique textures, maybe some complanar faces on the same mover and in the world outside the mover.

As for everything else related to climbing, I have never touched it, but i'll try to figure out how it is done.

/edit:
event WalkTexture() is called. I guess dx is the only game outside WoT where this is actually hooked in.

This should do the trick, but there might be more direct solutions.
Code:
event WalkTexture( Texture Texture, vector StepLocation, vector StepNormal )
{
   Log( "(Texture="$Texture$")", 'WalkTexture' );

   if ( Texture.Outer!=None && Texture.Outer.Name=='Ladder' )
      bOnLadder = True;
   else
      bOnLadder = False;
}


/edit2:
There is most likely no direct solution or bool which you can query. It happens inside the physics code and no bools are set or anything.

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Sun Aug 14, 2016 12:20 am
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
To clarify things about. With missing precission of the lightmaps I was not refering to the spatial resolution of them, but to the color (depth).

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Mon Aug 15, 2016 2:50 am
Profile
Illuminati

Joined: Thu Mar 08, 2012 3:21 am
Posts: 2284
Post Re: Minor things worth mentioning
Hanf: thanks for the info and your ladder code works perfectly.

_________________
GMDX: Advancement Mod


Wed Aug 17, 2016 7:36 pm
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
X-Com: Enforcer unofficial PubSrc initial release: http://coding.hanfling.de/launch/ :)

Oh and, and as this was the thing I wanted to wrap up before I touch ActorX and add support for the Deus Ex James Mesh variance and a couple of other things. So no need to invest time into fixing the more than problematic 3ds2de codebase.

For the future and/or new mesh classes I should probably move towards a FBX workflow though.

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Sun Oct 02, 2016 6:35 pm
Profile
MJ12

Joined: Sun Oct 04, 2009 6:54 pm
Posts: 403
Post Re: Minor things worth mentioning
An idea I wanted to snag from Unreal 227 for some time now...

_________________
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.


Sat Oct 15, 2016 4:15 pm
Profile
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 121 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7, 8, 9  Next


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © phpBB Group.
Designed by Vjacheslav Trushkin for Free Forum/DivisionCore.