Thursday, November 29, 2012

Risen 2 Mods

After several months of not playing Risen 2, I just got back to modding again.

[Risen 2] Food/Plant Inventory Mod

All food and plant items have individual stats now. None of them will be subsumed under provisions anymore. It is also possible to roast meat and fishes at campfires (requires toughness level 2). Besides I've created new Icons for all additional food items.


Extract the .zip file and copy Food_Inventory_Mod_v1.1 to the following directory:
%localappdata%\Risen2\Config\ , f.e. C:\User\MyName\AppData\Local\Risen2\Config\

[Risen 2] Player Interact Mod

The Hero can now use additional interacts which had been reserved for NPCs only before.

New interacts:
- bongo
- cooker
- grindstone
- nailing crates
- water barrel


Extract .zip file and copy PlayerInteractMod to the following directory:
%localappdata%\Risen2\Config\ , f.e. C:\User\MyName\AppData\Local\Risen2\Config\


Here's a list of my previous R2 mods:

LoD Distance Mod

Dynamic Torch Light Shadows

Crosshair Mod

Small Fonts

No POM Mod

Specular Lookup Texture

No Dynamic Point Lights Mod

(Risen 2 Tuning (german))

Tuesday, October 16, 2012

UDK Benchmark WiP #3

This cave scene is for testing multiple dynamic (shadow casting) lights. There are 5 torches + one camp fire in total and 2 dynamic lights (1 non shadow casting) per each of those objects.

Sunday, September 30, 2012

Blender Procedural Stones

modeled in Blender
Normal + AO map baked in Blender
Cavity Map generated in xNormal
Texturing done in Photoshop

~200-300 tris each
~20-30 tris collision model
Diffuse Map, Specular Map (Diffuse Alpha Channel), Normal Map
1 UV Channel (lightmap ready)

UDK Screenshots (prebaked Lighting, 128px² lightmap)

Saturday, September 8, 2012

[How-To] create Self-Shadowing Materials (UDK/UE3)

An esay approach on implementing self shadowing for UE3 to increase the quality of normal and bump offset/parallax mapped materials even further. It does require a heightmap and is useful for bumpy surfaces like bricks and cobblestones.


The idea is quite simple. Offsetting the height map along the light direction and comparing it's value with the actual height determines which areas are shadowed. Scale and darkness/hardness of shadows can be controlled by adjusting the offset and contrast value.

The technique is not very expensive - adding an extra of 5-10 point light shader instructions (depending on the contrast value). It's possible to save some instructions by adding a constant clamp (0-1) before the contrast adjustment and by replacing the power node with a series of multiply nodes (e.g. 3x multiply by itself = power of eight).


Tuesday, August 21, 2012

Tileable Walkway Model

359 tris / 198 vertices
2048x1024 texture maps (diffuse, normal, alpha channel specular)
high poly + low poly modeled in blender
maps baked in blender and xnormal
textured in photoshop


Low Poly


Monday, July 30, 2012

[UDK/UE3] Blinn vs. Phong Specular Video

Just a short video to compare Phong and Blinn specular. The scene setup is similar to a wet street at night with light from lanterns and neon signs.

Sunday, July 15, 2012

Texture Mask vs. Vertex Colors vs. Material IDs

This is an addition to yesterdays post:

Since the vertex color solution is so expensive I've made a masking texture with the same colors this time, using the second (lightmap) UV channel. The material is identically.

The result is exactly the same as with vertex color blending. Next to the material complexity it's probably the blending of textures itself that is causing a performance impact, no matter if the blending is based on vertex colors or texture masks.
So as long as you don't need smooth texture transitions you should stick with multiple materials or split up the mesh into multiple pieces. However this is for PCs only, if it comes to PS3/XBOX you have to keep an close eye on the total draw call count, according to Epic.

Comparing vertex colors and texture masks, they both have their dis/advantages. Texture masks causes the VRAM usuage to be higher. Vertex colors on the other hand will increase the static mesh mb size, so this might be a bad idea for meshes with a very high triangle count.

Friday, July 13, 2012

UE3 Performance Analysis: Material IDs vs. Vertex Blending

I was always wondering how much multiple materials on a mesh will affect the performance. Theory says that each mesh/material combination will cause an extra draw call and due to common opinion you should always keep the amount of material as low as possible.
So as an alternative I thought of using vertex colors to blend between multiple textures on a single mesh with just a single material.

For the test I'm using a timber frame house model (4448 tris) with 6 materials in total. This model is beeing placed 37 times in a simple level. The lighting is prebaked. To blend 6 textures by vertex colors in a single material this method is being used:
Here's the performance stats:

 Multiple Materials

Vertex Color Blending

Those screens show a clear result. Though multiple materials causes the draw call count to be 3.75 times higher (750 / 200), FPS are still better. The vertex color material complexity is probably killing the advantage of less draw calls. Also the Unreal Engine seems to handle many objects (and therefore draw calls) quite well.

Wednesday, June 6, 2012

Distance Based Texture Blending (UE3/UDK)

Repetitive patterns of tileable textures can be a real pain, espacially when working on terrains. Common ways to fight this effect is the use of detail textures or a multiplication of the texture by itself at a different scale. However these methods have some drawbacks and won't give you completely satisfying results in some situations.

This led me to another approach: blending the diffuse map with another texture at a certain distance. That can be (for example) the same texture with a different (=less) tiling, an overall landscape texture or a multiple tiled version of the same texture just without noticeable repetitiveness.


For a material editor implementation you start off with calculating the distance between the World Position and Camera World Position. This is usually a quite large value but by dividing it by a large number (I suggest values between 4096-32768) you can bring it close to the 0-1 range. Afterwards you plug that on into a power node to control the transition falloff. A minimum value of 2 is highly recommended to prevent the near diffuse texture to get blurry. All you have to do now is clamping the result between 0 and 1 to use it as the alpha input of a Lerp node.

In older UE3 builds (like in UT3) there won't be neither a WorldPosition node nor a Distance node. But you can recreate those node functions by setting up your material like this:


Here you can see typical repetitive patterns of a tileable texture on a large landscape:

For the distance blending I did create a 16 times tiled version of the same
texture in Photoshop and removed recognizable repeatings:

 Finally, a screenshot with just the Lerp nodes alpha input:

Wednesday, May 30, 2012

[Risen 2] Dynamic Torch Light Shadows

This mod enables shadow casting for the torch item light.

Version 1
- enables shadow casting

Version 2
- enables shadow casting
- increases light range (+50%)
- changes light color (more yellow than orange) / less flickering


Extract the .zip file and copy either DynamicTorchLight_v1 or DynamicTorchLight_v2 to the following directory:
%localappdata%\Risen2\Config\ , f.e. C:\User\MyName\AppData\Local\Risen2\Config\
You can only use version 1 or 2 but not both at once.

Keep in mind that the additional dynamic shadow casting light causes a performance impact of ~10-20%.

Credits: NicoDE

Monday, May 14, 2012

[Risen 2] LoD Distance Mod

This mod does increase the LoD distances of all objects and prefabs (=grouping of single objects) in the game. Except speedtrees that are already covered by Baltrams AntiWarp Mod.

I tried to find suitable LoD values to keep the performance impact quite low. This means that I didn't just crank up the distances as much as possible. Besides I took the size (small/mid/big) and occurrence (outdor/interior) of all objects into account.
According to my testings the FPS loss is less than 5%.


Packed Version
Use this one with the latest patch.

Download the .zip and extract the file templates.p01 into the common folder of your Risen 2 installation.
This is by default C:\Program Files (x86)\Steam\SteamApps\common\risen 2\data\common

Unpacked version
Use this one if your game is not (yet) patched.

Download the .zip file and extract all including files to the following directory:
%userprofile%\AppData\Local\Risen2\Config\ , f.e. C:\User\MyName\AppData\Local\Risen2\Config\ (Windows Vista/7)
C:\Documents and Settings\*User Name*\Local Settings\Application Data\Risen2 (Windows XP)


 Performance stats

Puerto Isabella, 45sec. run Average Minimum Maximum
no mods, ini tuning 40.7 32 56.7
LoD Distance Mod 40.1 (-1.6%) 32 55.3
Average FPS of 3 runs

Antigua, 45sec. run Average Minimum Maximum
no mods, ini tuning 44.7 31 61.7
LoD Distance Mod 43.4 (-3%) 30.3 60
Average FPS of 3 runs

Sunday, May 13, 2012

[Risen 2] No POM Mod *Update*

A new version of this mod is available now. It's based on modified parent materials and does provide a slightly better performance as the previous version.


Download the .zip file and extract the materials.p00 file to the common folder of your Risen 2 installation.
This is by default C:\Program Files (x86)\Steam\SteamApps\common\risen 2\data\common\

I recommend to delete the ximg files of the previous version from your AppData\Risen 2\Config folder. Though this is not mandatory since both versions are compatible.

Performance stats:

Average Minimum Maximum
original 36.9 29.5 48.5
No POM Mod (previous version) 39.6 31.5 51.5
No POM Mod (new version) 40.3 33 52.5
60 sec. run at Takarigua that covers both, forest and town areas. Average FPS of 2 runs. 

[Risen 2] Crosshair Mod v1

This mod does change the crosshair size, color and shape of both the musket and shotgun.


Instruction: Download the .zip file and extract the included file to the following directory:
C:\User\*UserName*\AppData\Local\Risen2\Config\ (Windows Vista/7)
C:\Documents and Settings\*User Name*\Local Settings\Application Data\Risen2\ (Windows XP)


Video (musket):

Thursday, May 3, 2012

[Risen 2] No POM Mod (FPS improvement)

 New version available!

This modification will remove Parallax Occlusion Mapping (POM) from all terrain materials. POM is a quite expensive technique (though Risen 2 uses a simple implementation with only a few samples and no self shadowing) which won't be disabled even with lowest graphic details settings. I highly recommend using this mod on slow machines that can hardly run Risen 2 at smooth frame rates. The FPS improvement is between 5-20%.


Download the .zip file and extract all including files to the following directory:
C:\User\*UserName*\AppData\Local\Risen2\Config\  (Windows Vista/7)
C:\Documents and Settings\*User Name*\Local Settings\Application Data\Risen2\ (Windows XP)

Many thanks to Baltram for the r2ximg conversion tool.

screenshots with POM enabled (left) and disabled (right).

Friday, April 27, 2012

Risen 2 Tuning (german)

Den heutigen Release von Risen 2 habe ich mal zum Anlass genommen diverse Optimierungsmöglichkeiten aufzuzeigen und zu erläutern.

Viele Einstellungen lassen sich wie schon bei Risen oder Gothic 3 direkt in der Config Datei ändern. Die Datei ConfigDefault.xml befindet sich bei einer Standardinstallation von Steam unter folgendem Pfad: C:\Programme(x86)\Steam\SteamApps\common\risen2\data\ini
und lässt sich mit dem Windows Editor öffnen, bearbeiten und speichern (Rechtsklick -> Öffnen mit... oder Rechtklick -> Bearbeiten). Vorher sollte aber auf jeden Fall eine Kopie der Originaldatei erstellt werden.



In Risen 2 werden alle Objekte entsprechend ihrer Größe in klein, mittel und groß unterteilt. Die Sichtweite lässt sich für jede der drei Gruppen getrennt einstellen. Insbesondere kleine Objekte wie Flaschen oder Teller werden erst auf sehr kurze Distanz eingeblendet, aber auch Steine und andere größere Objekte ploppen zum Teil sichtbar störend auf.
Ähnlich funktioniert es bei den Speedtrees, die entweder direkt ausgeblendet oder durch eine Billboard-Textur ersetzt werden. Zu den Speedtreemodellen zählen sowohl sämtliche Bäume als auch die wachsenden Büsche.



Analog dazu können im selben Abschnitt die Sichtweit von Items, NPCs oder Lichtern (z.B. Fackeln) angepasst werden.

Die Option ViewRange im Abschnitt Vegetation regelt die Sichtweite von Gräsern und kleinen Büschen. Ich habe den Wert bei mir glatt verdoppelt, der Unterschied wird aber nur in sehr weitläufigen Arealen sichtbar.


Die absolute Sichtweite wird über den Parameter zFarHigh/Medium/Low geregelt. Dieser Wert ist bereits ausreichend groß und bringt beim Erhöhen praktisch keine optische Verbesserung. Zum Vergleich: bei Risen lag das Maximum bei nur 60000.

zNear ist die Entfernung zur Kamera ab der Objekte ausgeblendet werden. Senkt man diesen Wert, ist es nicht möglich in einigen Fällen hinter Wänder oder unter den Boden zu gucken.

Risen 2 setzt wie auch schon der Vorgänger auf Cascaded Shadow Maps (kurz CSM). Dabei werden die dynamischen Schatten stufenweise unterteilt und jeweils unterschiedlich gut aufgelöst. In der Praxis äußert sich dies durch eine Arte Trennlinie die der Spieler vor sich her schiebt.


- DetailShadowMapCount = Anzahl der Shadow Map Unterteilungen. Erhöht man diesen Wert, werden die Übergänge zwischen den einzelnen Stufen weniger offensichtlich. Bei einem Wert von 5 sanken die FPS bei mir nur erstaunlich wenig von 38 auf 36.
- DetailShadowMapSize = Schattenauflösung. Eine Verdoppelung auf 4096 kostet sehr viel Leistung, bei mir ca. 26% (38fps -> 28FPS)
- DetailShadowMapViewRange = Reichweite der ersten CSM Stufe, also der scharfen Schatten im Vordergrund
- DetailShadowMapSplitFactor =  Dieser Faktor beschreibt das Verhältnis zwischen Schattenauflösung und Reichweite der ersten CSM Stufe. Niedrigere Werte führen dazu, dass Schatten im Vordergrund schärfer werden, die Grenze zur zweiten CSM Stufe jedoch gleichzeitig näher an den Spieler rückt. Dem Effekt kann man entgegen wirken, indem man die DetailShadowMapViewRange erhöht.
Dieser Screenshot verdeutlicht es ganz gut:

ScreenSpaceAmbientOcclison - aktiviert/deaktiviert SSAO. Die Implementierung in Risen 2 ist nicht sehr gut und erfasst keine kleinen Objekte.
SoftShadows - aktiviert/deaktiviert die Schattenfilterung für weiche Schattenkanten.


Autosaves abschalten

Wer sich mit den automatischen angelegten Spielständen von Risen 2 nicht anfreunden kann oder möchte muss nur den entsprechenden Eintrag in der Config Datei von "true" auf "false" ändern.


Speicherplatz sparen

Risen 2 belegt bei einer Standardinstallation 7,6 GB auf der Festplatte. Dabei werden unnötigerweise die Sprachpakete für englisch, russisch und polnisch mitinstalliert. Wer sowieso nur die deutsche Spachausgabe benötigt kann die Dateien dialogue_english/polish/russian.pak aus dem Ordner \risen2\data\compiled löschen. Diese machen zusammen ganze 3,5 GB aus.


Um die Introvideos beim Start von Risen 2 zu überspringen reicht es aus die Dateien logo_ds.vid und logo_pb.vid beliebig umzubennen. Diese sind im Ordner \risen2\data\extern\videos zu finden.


Risen 2 hat standardgemäß auf der X- und Y-Achse eine deutlich unterschiedliche Maussensibilität, was dazu führt, dass eine Drehung nach rechts oder links wesentlich schneller erfolgt als ein Blick nach oben oder unten. Der zugehörige Eintrag in der Config Datei sollte von 1.0 auf einen Wert zwischen 0.25 und 0.5 gesenkt werden um die Mausbewegung einigermaßen ausgeglichen umzusetzen, bei mir sind es derzeit 0.33.


Tageslänge beeinflussen

Über den Sonnen- und Mond-Winkel im Abschnitt Weather ist es möglich deren Verlauf zu verändern. Höhe Werte (z.B. 45) bedeuten hier, dass die Sonne sowohl früher auf- als auch später untergeht. Ideal für Nichtschläfer die nicht so lange im dunkeln herumlaufen wollen.

Multi-Monitor Betrieb

Werden mehrere Monitore benutzt wird Risen 2 normalerweise auf dem Ersten laufen. Um einen Monitor anzusteuern muss die AdapterNumber erhöht werden. Die Zählung beginnt bei 0 (= Monitor Nr. 1). 


Es ist möglich, dass die Änderung der Config Datei keine Änderung bewirkt. In dem Fall sind die entsprechenden Einträge auch in der Datei ConfigUser.xml (C:\Benutzer\Name\AppData\Local\Risen2\Config\) zu finden, welche eine höhere Priorität besitzt als die ConfigDefault.xml

Abschließend gibt es noch ein paar Vergleichsbilder mit den maximalen in-game Grafikeinstellungen (links) und mit per Config Datei erhöhten Details (rechts), inklusive FPS Anzeige.