Jump to content
The Dark Mod Forums

Recommended Posts

Posted
On 10/17/2024 at 11:34 AM, MirceaKitsune said:

 

TzsglvK.jpeg

 

This shot is by far my favorite out of all your FM screenshots so far. It's just so comfy looking and it invites me into explore this world.

  • Like 1
Posted

Thank you! Shall definitely continue that project too, though it's a very large one so don't expect much soon unfortunately.

From what can be expected soon, here's a few shots for something I'm aiming to get out for Halloween. Minor visual spoilers of upcoming FM. Very happy with the results and atmosphere I got! And yes, there is a reason for everything you see being the way it is, I'm not spoiling more beyond those shots.

Spoiler

l7BzXHn.jpeg

uXNDN8X.jpeg

pBBQBqq.jpeg

cbYfoiD.jpeg

8dlOMNB.jpeg

K3EQ7SC.jpeg

  • Like 4
  • 2 weeks later...
Posted (edited)

Happy Halloween! Before the release of my latest FM I was testing whether making an AI invincible works. I was left with a set of images I thought would be fitting for this event, given how terrifying my test character ended up looking. No custom skins or mods, just the blood effect of cutting and shooting an invincible guy with arrows to make sure he doesn't die anytime soon if health is set to 1000000: The dynamic blood overlays created a character straight out of the horror films especially in the particular environment of my map :D

Spoiler

cmraI0n.jpeg

3nJPnRT.jpeg

RKLFibM.jpeg

kN3IAJW.jpeg

BR1DvXM.jpeg

P55UHgW.jpeg

rVKkcaq.jpeg

C4V45cV.jpeg

as6Pvhz.jpeg

3aO2wfv.jpeg

i6x1OQ1.jpeg

A few cinematic shots of a more positive character design I put together at that time.

Spoiler

9PAj1A8.jpeg

gnwAYDT.jpeg

Edited by MirceaKitsune
  • Like 1
Posted
On 10/23/2024 at 3:47 PM, Goldwell said:

 

This shot is by far my favorite out of all your FM screenshots so far. It's just so comfy looking and it invites me into explore this world.

I am with Goldwell @MirceaKitsuneYour world building has improved dramatically - I hope you got it portalled in a fitting way.

  • Thanks 1
Posted
43 minutes ago, JackFarmer said:

I am with Goldwell @MirceaKitsuneYour world building has improved dramatically - I hope you got it portalled in a fitting way.

Thank you, I'm doing my best! I understand portals better too and designing geometry around them: Sometimes I have to use a lot of them as I prefer having some open areas, thankfully there doesn't seem to be any penalty in the engine. My guide is making sure I never drop under 80 of 144 FPS on my particular machine, judging those things can be a bit tricky as every computer is different.

Posted

Based on feedback after my above post, I decided to turn this FM into a festive map where the action takes place during a holiday. It was a good chance to experiment with a fun concept: Having banners and lights attached to horses. One horse carries a large banner that sways in the wind, the other a lantern that sings and blinks with the music (default music box audio). Must say it's quite fun to watch them parading the streets this way!

Jiyxw8k.jpeg

xHfbc2L.jpeg

tcwLHDV.jpeg

4F4j7e5.jpeg

Xrws1uc.jpeg

ED4Bdkp.jpeg

  • Like 2
Posted

@MirceaKitsune Can you try pasting this code from the tone mapping thread into \glprogs\stages\tonemap\tonemap.frag.glsl file?

v02:

Spoiler

/*****************************************************************************
The Dark Mod GPL Source Code

This file is part of the The Dark Mod Source Code, originally based
on the Doom 3 GPL Source Code as published in 2011.

The Dark Mod Source Code is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version. For details, see LICENSE.TXT.

Project: The Dark Mod (http://www.thedarkmod.com/)

******************************************************************************/
#version 330
in vec2 var_TexCoord;
out vec4 draw_Color;
uniform sampler2D u_texture;
uniform float u_gamma;
uniform float u_brightness;
uniform float u_desaturation;
uniform float u_colorCurveBias;
uniform float u_colorCorrection, u_colorCorrectBias;
uniform int u_sharpen;
uniform float u_sharpness;
uniform float u_ditherInput;
uniform float u_ditherOutput;
uniform sampler2D u_noiseImage;

/**
 * Contrast-adaptive sharpening from AMD's FidelityFX.
 * Adapted from Marty McFly's port for Reshade:
 * https://gist.github.com/martymcmodding/30304c4bffa6e2bd2eb59ff8bb09d135
 * Note this is only the most basic form of CAS. The AMD original
 * can do more, including up- and downscaling. As that's harder to implement,
 * we're keeping it simple here.
 */
vec3 sharpen(vec2 texcoord) {
    vec3 a = textureOffset(u_texture, texcoord, ivec2(-1, -1)).rgb;
    vec3 b = textureOffset(u_texture, texcoord, ivec2(0, -1)).rgb;
    vec3 c = textureOffset(u_texture, texcoord, ivec2(1, -1)).rgb;
    vec3 d = textureOffset(u_texture, texcoord, ivec2(-1, 0)).rgb;
    vec3 e = textureOffset(u_texture, texcoord, ivec2(0, 0)).rgb;
    vec3 f = textureOffset(u_texture, texcoord, ivec2(1, 0)).rgb;
    vec3 g = textureOffset(u_texture, texcoord, ivec2(-1, 1)).rgb;
    vec3 h = textureOffset(u_texture, texcoord, ivec2(0, 1)).rgb;
    vec3 i = textureOffset(u_texture, texcoord, ivec2(1, 1)).rgb;

    vec3 mnRGB = min(min(min(d, e), min(f, b)), h);
    vec3 mnRGB2 = min(mnRGB, min(min(a, c), min(g, i)));
    mnRGB += mnRGB2;
    vec3 mxRGB = max(max(max(d, e), max(f, b)), h);
    vec3 mxRGB2 = max(mxRGB, max(max(a, c), max(g, i)));
    mxRGB += mxRGB2;

    vec3 rcpMRGB = vec3(1) / mxRGB;
    vec3 ampRGB = clamp(min(mnRGB, 2.0 - mxRGB) * rcpMRGB, 0, 1);
    ampRGB = inversesqrt(ampRGB);
    float peak = 8.0 - 3.0 * u_sharpness;
    vec3 wRGB = -vec3(1) / (ampRGB * peak);
    vec3 rcpWeightRGB = vec3(1) / (1.0 + 4.0 * wRGB);
    vec3 window = (b + d) + (f + h);
    vec3 outColor = clamp((window * wRGB + e) * rcpWeightRGB, 0, 1);

    return outColor;
}

float mapColorComponent(float value) {
    float color = max(value, 0.0);
    color = pow(color, 1.0 / (u_gamma * 0.75)); // Increase gamma correction to make the image brighter
    color *= (u_brightness * 8); // Increase brightness to make the image brighter

    if (u_colorCurveBias != 0.0) {
        float reduced1 = 1.0 - pow(2.718282, -3.0 * color * color);
        color = mix(color, reduced1, u_colorCurveBias);
    }
    if (u_colorCorrectBias != 0.0) {
        float reduced2 = 1.0 - pow(2.718282, -u_colorCorrection * color);
        color = mix(color, reduced2, u_colorCorrectBias);
    }
    return color;
}

vec3 ditherColor(vec3 value, float strength) {
    vec2 tc = gl_FragCoord.xy / textureSize(u_noiseImage, 0);
    vec3 noiseColor = textureLod(u_noiseImage, tc, 0).rgb;
    value += (noiseColor - vec3(0.5)) * strength;
    return value;
}

vec3 applyTonemapping(vec3 color) {
    float A = 0.15;
    float B = 0.4;
    float C = 0.2;
    float D = 0.45;
    float E = 0.;
    float F = 0.6;

    return ((color * (A * color + C * B) + D * E) / (color * (A * color + B) + D * F)) - E / F;
}

vec3 adjustHighlightsSaturation(vec3 color) {
    vec3 highlightBoost = vec3(1.2); // Adjust this value to control the highlight saturation
    vec3 midtones = vec3(1.0); // Adjust midtones saturation here
    vec3 shadows = vec3(0.8); // Adjust shadows saturation here

    vec3 adjusted = mix(color * shadows, color * midtones, smoothstep(0.2, 0.7, color));
    return mix(adjusted, color * highlightBoost, smoothstep(0.7, 1.0, color));
}

void main() {
    vec3 color;
    if (u_sharpen != 0) {
        color = sharpen(var_TexCoord);
    } else {
        color = texture(u_texture, var_TexCoord).rgb;
    }

    if (u_ditherInput > 0) {
        color = ditherColor(color, -u_ditherInput);
    }

    color.r = mapColorComponent(color.r);
    color.g = mapColorComponent(color.g);
    color.b = mapColorComponent(color.b);

    color = applyTonemapping(color);

    color = adjustHighlightsSaturation(color);

    if (u_desaturation != 0.0) {
        float luma = clamp(dot(vec3(0.2125, 0.7154, 0.0721), color.rgb), 0.0, 1.0);
        color = mix(color, vec3(luma), u_desaturation);
    }

    if (u_ditherOutput > 0) {
        color = ditherColor(color, u_ditherOutput);
    }

    draw_Color = vec4(color, 1);
}

v01:

Spoiler

/*****************************************************************************
The Dark Mod GPL Source Code

This file is part of the The Dark Mod Source Code, originally based
on the Doom 3 GPL Source Code as published in 2011.

The Dark Mod Source Code is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version. For details, see LICENSE.TXT.

Project: The Dark Mod (http://www.thedarkmod.com/)

******************************************************************************/
#version 330
in vec2 var_TexCoord;
out vec4 draw_Color;
uniform sampler2D u_texture;
uniform float u_gamma;
uniform float u_brightness;
uniform float u_desaturation;
uniform float u_colorCurveBias;
uniform float u_colorCorrection, u_colorCorrectBias;
uniform int u_sharpen;
uniform float u_sharpness;
uniform float u_ditherInput;
uniform float u_ditherOutput;
uniform sampler2D u_noiseImage;

/**
 * Contrast-adaptive sharpening from AMD's FidelityFX.
 * Adapted from Marty McFly's port for Reshade:
 * https://gist.github.com/martymcmodding/30304c4bffa6e2bd2eb59ff8bb09d135
 * Note this is only the most basic form of CAS. The AMD original
 * can do more, including up- and downscaling. As that's harder to implement,
 * we're keeping it simple here.
 */
vec3 sharpen(vec2 texcoord) {
    vec3 a = textureOffset(u_texture, texcoord, ivec2(-1, -1)).rgb;
    vec3 b = textureOffset(u_texture, texcoord, ivec2(0, -1)).rgb;
    vec3 c = textureOffset(u_texture, texcoord, ivec2(1, -1)).rgb;
    vec3 d = textureOffset(u_texture, texcoord, ivec2(-1, 0)).rgb;
    vec3 e = textureOffset(u_texture, texcoord, ivec2(0, 0)).rgb;
    vec3 f = textureOffset(u_texture, texcoord, ivec2(1, 0)).rgb;
    vec3 g = textureOffset(u_texture, texcoord, ivec2(-1, 1)).rgb;
    vec3 h = textureOffset(u_texture, texcoord, ivec2(0, 1)).rgb;
    vec3 i = textureOffset(u_texture, texcoord, ivec2(1, 1)).rgb;

    vec3 mnRGB = min(min(min(d, e), min(f, b)), h);
    vec3 mnRGB2 = min(mnRGB, min(min(a, c), min(g, i)));
    mnRGB += mnRGB2;
    vec3 mxRGB = max(max(max(d, e), max(f, b)), h);
    vec3 mxRGB2 = max(mxRGB, max(max(a, c), max(g, i)));
    mxRGB += mxRGB2;

    vec3 rcpMRGB = vec3(1) / mxRGB;
    vec3 ampRGB = clamp(min(mnRGB, 2.0 - mxRGB) * rcpMRGB, 0, 1);
    ampRGB = inversesqrt(ampRGB);
    float peak = 8.0 - 3.0 * u_sharpness;
    vec3 wRGB = -vec3(1) / (ampRGB * peak);
    vec3 rcpWeightRGB = vec3(1) / (1.0 + 4.0 * wRGB);
    vec3 window = (b + d) + (f + h);
    vec3 outColor = clamp((window * wRGB + e) * rcpWeightRGB, 0, 1);

    return outColor;
}

float mapColorComponent(float value) {
    float color = max(value, 0.0);
    color = pow(color, 1.0 / (u_gamma * 0.7)); // Increase gamma correction to make the image brighter
    color *= (u_brightness * 8); // Increase brightness to make the image brighter

    if (u_colorCurveBias != 0.0) {
        float reduced1 = 1.0 - pow(2.718282, -3.0 * color * color);
        color = mix(color, reduced1, u_colorCurveBias);
    }
    if (u_colorCorrectBias != 0.0) {
        float reduced2 = 1.0 - pow(2.718282, -u_colorCorrection * color);
        color = mix(color, reduced2, u_colorCorrectBias);
    }
    return color;
}

vec3 ditherColor(vec3 value, float strength) {
    vec2 tc = gl_FragCoord.xy / textureSize(u_noiseImage, 0);
    vec3 noiseColor = textureLod(u_noiseImage, tc, 0).rgb;
    value += (noiseColor - vec3(0.5)) * strength;
    return value;
}

vec3 applyTonemapping(vec3 color) {
    float A = 0.15;
    float B = 0.4;
    float C = 0.2;
    float D = 0.45;
    float E = 0.;
    float F = 0.6;

    return ((color * (A * color + C * B) + D * E) / (color * (A * color + B) + D * F)) - E / F;
}

void main() {
    vec3 color;
    if (u_sharpen != 0) {
        color = sharpen(var_TexCoord);
    } else {
        color = texture(u_texture, var_TexCoord).rgb;
    }

    if (u_ditherInput > 0) {
        color = ditherColor(color, -u_ditherInput);
    }

    color.r = mapColorComponent(color.r);
    color.g = mapColorComponent(color.g);
    color.b = mapColorComponent(color.b);

    color = applyTonemapping(color);

    if (u_desaturation != 0.0) {
        float luma = clamp(dot(vec3(0.2125, 0.7154, 0.0721), color.rgb), 0.0, 1.0);
        color = mix(color, vec3(luma), u_desaturation);
    }

    if (u_ditherOutput > 0) {
        color = ditherColor(color, u_ditherOutput);
    }

    draw_Color = vec4(color, 1);
}

And see how it changes those screenshots below? You can use reloadGLSLprograms command in game console to reload the .glsl file.

On 9/25/2024 at 4:45 AM, MirceaKitsune said:

4rJPW30.jpeg

uz1QBZE.jpeg

jlTvMGH.jpeg

On 9/27/2024 at 2:51 PM, MirceaKitsune said:

0JLF3Hk.jpeg

Y5a49GF.jpeg

F83r3eC.jpeg

cQMBtgs.jpeg

You can also try replacing the fire particle with the stronger version: tdm_particles.mtr

Spoiler

arcturus_fire
{
    qer_editorimage textures/particles/arcturus_fire.tga
    translucent
    noShadows
    nonsolid
    sort    10        // sort very late, so no translucent objects in the world draws over it

    {
        blend        diffusemap
        map            _white
        rgb 0
    }
    {
        blend        add
        map            textures/particles/arcturus_fire.tga
        vertexColor
    }
    {
        blend        gl_dst_color , gl_one
        map            textures/particles/arcturus_fire.tga
        rgb 0.7
    }
}

Turn bloom on and see how these look like (with the modified .glsl of course):

On 10/17/2024 at 3:34 AM, MirceaKitsune said:

Yx18qSF.jpeg

QgShz8T.jpeg

 

It's only a model...

Posted

Don't know if it's a dumb idea or not, but I for one kinda like my steampunk neon signs. I'll probably mention them in the shop keeper's book, how neon signs are all the rage and everyone's buying them. Wish I could reskin more of the default models to get even more designs, was lucky it happened to work out with this one, even if the chain shining is a little meh.

OH1CSfY.jpeg

78ReLHH.jpeg

yvKYZts.jpeg

BiXtjnh.jpeg

No custom assets needed, just the def and skin. If anyone else wants them here's the one for the sheep logo, easy to produce and customize the rest of them from there.

decorative/signs/sign_half_round_neon_sheep_lit
{
	model "models/darkmod/decorative/signs/sign_half_round_01.ase"

	"textures/darkmod/metal/flat/iron_rough_ns" "textures/darkmod/window/lamp_glass_lit_opaque_colorme"
	"sign_half_round_wine" "tdm_sign_shield_sheep"
}

decorative/signs/sign_half_round_neon_sheep_unlit
{
	model "models/darkmod/decorative/signs/sign_half_round_01.ase"

	"textures/darkmod/metal/flat/iron_rough_ns" "textures/darkmod/window/lamp_glass_unlit_opaque_shadowcasting"
	"sign_half_round_wine" "tdm_sign_shield_sheep"
}
atdm:sign_neon_sheep
{
	"inherit"				"atdm:static_electric_light_lit_base"
	"editor_displayFolder"	"Lights/Model Lights, Static/Switchable/Electric/Signs"
	"editor_usage"			"Neon sign, sheep."

	"model"					"models/darkmod/decorative/signs/sign_half_round_01.ase"
	"skin"					"decorative/signs/sign_half_round_neon_sheep_lit"
	"skin_lit"				"decorative/signs/sign_half_round_neon_sheep_lit"
	"skin_unlit"			"decorative/signs/sign_half_round_neon_sheep_unlit"

	"_color"				"0.5 0.5 0.5"
	"texture"				"lights/biground1_squarelamp_snd"
	"s_shader"				"light_flicker_104"
	"light_center"			"0 0 -24"
	"light_radius"			"128 128 128"
	"noshadows_lit"			"1"
}

 

  • Like 1
Posted

Neon Builder sign. Looks pretty good with the bright orange, kinda like molten iron which gets the point across.

dgAkvJC.jpeg

hoEPBOf.jpeg

decorative/signs/sign_hanging_builder_symbol_neon_lit
{
	model "models/darkmod/decorative/signs/hanging_builder_symbol.lwo"

	"tdm_hammer_small_bronze1" "textures/darkmod/window/lamp_glass_lit_opaque_colorme"
}

decorative/signs/sign_hanging_builder_symbol_neon_unlit
{
	model "models/darkmod/decorative/signs/hanging_builder_symbol.lwo"

	"tdm_hammer_small_bronze1" "textures/darkmod/window/lamp_glass_unlit_opaque_shadowcasting"
}
atdm:hanging_builder_symbol
{
	"inherit"				"atdm:static_electric_light_lit_base"
	"editor_displayFolder"	"Lights/Model Lights, Static/Switchable/Electric/Signs"
	"editor_usage"			"Neon sign, hanging builder symbol."

	"model"					"models/darkmod/decorative/signs/hanging_builder_symbol.lwo"
	"skin"					"decorative/signs/sign_hanging_builder_symbol_neon_lit"
	"skin_lit"				"decorative/signs/sign_hanging_builder_symbol_neon_lit"
	"skin_unlit"			"decorative/signs/sign_hanging_builder_symbol_neon_unlit"

	"_color"				"1 0.5 0"
	"texture"				"lights/biground1_squarelamp_snd"
	"s_shader"				"light_flicker_104"
	"light_center"			"12 0 -32"
	"light_radius"			"128 128 128"
	"noshadows_lit"			"1"
}
  • Like 2
Posted

Getting to try realtime reflective floors in practice. Took me well over an hour to figure it out but the setup for a complex shader is ridiculously simple, all you need to do is add a "mirrorRenderMap 256 256" with a "blend add" to any material. FPS is reduced a bit of course but no big deal in a closed space, I'll improve it from the lighting which I abused a bit in this scene.

ejbTseK.jpeg

QQdKcDq.jpeg

7LbIMW5.jpeg

8JED2Uz.jpeg

  • Like 2
Posted
1 hour ago, MirceaKitsune said:

Getting to try realtime reflective floors in practice. Took me well over an hour to figure it out but the setup for a complex shader is ridiculously simple, all you need to do is add a "mirrorRenderMap 256 256" with a "blend add" to any material. FPS is reduced a bit of course but no big deal in a closed space, I'll improve it from the lighting which I abused a bit in this scene.

ejbTseK.jpeg

QQdKcDq.jpeg

7LbIMW5.jpeg

8JED2Uz.jpeg

The 256 256 doesn't seem to do anything here, the reflection looks very sharp. Apparently rendering reflections at lower resolutions has been disabled:

If I remember correctly, rendering mirrorRenderMap at lower resolutions used to help with performance but also had added benefit of nice blurry reflections. Which would probably look better on a floor like this.

You can make it fainter by adding RGB 0.3 for example.

  • Like 2

It's only a model...

Posted (edited)

IIRC, the lower-resolution mirror was more pixelated than blurry, but I'm not 100% sure about that :)

Also just adding a mirrorRenderMap as blend add image stage looks super clean and artificial. You can create an image stage and use a texture with alpha, or make alpha from RGB channels of a texture (e.g. a specular map), so you can mask portions of a reflection. You can use it with diffuse and specular to create dirt, damage effects, etc.

[Edit] Example:

Also note that mirrorRenderMap ignores normalmaps, so it might be better to use cubemaps for that. That and performance reasons :)

Edited by peter_spy
Posted
9 hours ago, Arcturus said:

The 256 256 doesn't seem to do anything here, the reflection looks very sharp. Apparently rendering reflections at lower resolutions has been disabled:

If I remember correctly, rendering mirrorRenderMap at lower resolutions used to help with performance but also had added benefit of nice blurry reflections. Which would probably look better on a floor like this.

You can make it fainter by adding RGB 0.3 for example.

Aha: I was wondering why it still looked sharp but thought it's just me. I tried "16 16" and noticed it doesn't do anything.

Why disable a base shader feature though? I think it should be at the render resolution if you don't use any numbers, if you specify a custom render resolution that should work. If there's a good reason not to do it any more, the parameters should probably be removed as it makes no sense to have numbers that do nothing... though that would break existing materials, maybe have them optional?

Posted
8 hours ago, peter_spy said:

IIRC, the lower-resolution mirror was more pixelated than blurry, but I'm not 100% sure about that :)

Ok, maybe low res reflection itself didn't look so nice, but when paired with heathaze effect it looked nice.

This one uses the heatHazeWithMaskAndBlur.vfp (in this case the stronger version that I made). Unfortunately it doesn't react to light at all. It's also very buggy.
 

Spoiler

// Author: STiFU
textures/darkmod/stone/flat/marble_flower_mosaic_cracked
{
    surftype15
    description "tile"

    qer_editorimage textures/darkmod/stone/flat/marble_flower_mosaic_cracked_ed
    //specularmap     textures/darkmod/stone/flat/marble_flower_mosaic_cracked_s
    bumpmap        textures/darkmod/stone/flat/marble_flower_mosaic_cracked_local
    {
        fragmentProgram        heatHazeWithMaskAndDepth.vfp
        fragmentMap            0        _currentRender
        fragmentMap            1        textures/darkmod/stone/flat/marble_flower_mosaic_cracked_local  // the normal map for distortion
        fragmentMap            2        _white  // the distortion blend map
        fragmentMap         3       _currentDepth
    }
    {
    blend add
    mirrorrendermap
    rgb 0.1
    }
    {
        vertexProgram        heatHazeWithMaskAndStrongerBlur.vfp
        vertexParm            0        0    // texture scrolling
        vertexParm            1        10        // magnitude of the distortion
    }
    {
    blend    gl_one , gl_one
    map textures/darkmod/stone/flat/marble_flower_mosaic_cracked
    rgb 0.2
    }
}

 

 

 

  • Like 2
  • Thanks 1

It's only a model...

Posted (edited)

If blurry reflections didn't look nice in all cases, why not just remove the resolution in the material definitions instead of disabling it globally so those who want them could still use those parameters? Makes more sense to allow a resolution of "mirrorRenderMap 0 0" to specify you want to use the screen resolution.

I'd probably use it for those floors: Blurry resolution would look better, plus I gain a lot of FPS just for having it that way! Is there a good reason why it was disabled this way?

In the meantime I'll likely give your material a try as the result clearly looks better: Thanks for sharing that! I was wondering if I could bend the reflection with the texture's normal map but didn't hope for a way. I'll definitely want to put the specular map back on as I don't want to lose its effect either.

Edited by MirceaKitsune

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • nbohr1more

      Cool thing: Thanksgiving break means I don't have to get my son up before dawn

      Not cool thing: My son stays up all night on my PC so I don't get much TDM time...
      · 3 replies
    • datiswous

      Does anyone know if the mission/map in this video posted by @Springheel can still be found somewhere and played? Looks like fun.
       
      · 1 reply
    • taffernicus

      I'm curious about doom and thief multiplayer netcode 😂 or how these games handle networking for multiplayer in general
      a youtube channel called battle(non)sense sometimes posts about netcode analysis
      · 2 replies
    • The Black Arrow

      Hey @Ansome, are you still around? I think it's been about 3 months since you've had an issue with an SSD, right?
      · 4 replies
    • Sotha

      Brushes: ~1300
      Patches: ~990
      Entities: ~960
      Ambients: Done, EFX: Done, Objectives: Done, Briefing, Done, Location System: Done.
      Going to final polishings before beta.
      · 0 replies
×
×
  • Create New...