Jump to content
The Dark Mod Forums

DDS Texture discussion


OrbWeaver

Recommended Posts

We're stuck with the proprietary format iD used for dds normal maps.

 

RxGB is not actually proprietary, it is just a swizzled version of the standard DXT5 compression. Essentially the red and alpha information is swapped on compression and then unswapped by the fragment shader during rendering (which is why DX9 is needed).

 

That's just given me an idea actually -- if you put the red data in the alpha slot, then presumably the red slot is left at 0. This would be why the normals look wrong, because the X component is zero and the normal is therefore pointed at a very sharp angle to one side. However, who is to say that you can't put the red data in BOTH the red slot and the alpha slot, rather than leaving one or the other at zero? This way, both swizzled and unswizzled decompression would work, the only difference being that one would give you slightly better colour depth.

Link to comment
Share on other sites

Ahh, ok. I just assumed that it was proprietary since ATI removed it from the later versions of compressonator and that it wasn't adopted as a standard form of compression.

 

Interesting idea you have there orb...I wonder if it would work? One way to find out I guess...open up a dds and make some adjustments.

Link to comment
Share on other sites

We're stuck with the proprietary format iD used for dds normal maps. The doom 3 world guys posted some screens on a DX8 card with the normals working. Their hunch is that it's an issue with some setting when our normal maps are being compressed. Another guy says that doom 3 requires dx9 minimum and someone else said dx8...my box clearly says dx 9.0b...so...I don't know. Basically, the only things affected by a card being dx8 should be some heat haze effects, as the dds normals should work normally, since they're dealt with by the game engine I guess.

Yep, with the Ti4600, I could see everything fine in D3 except heat haze. Now, with the 6800, I can see everything fine in D3, period. Except DDS normalmaps made by us for TDM.

 

I just tried a bunch of settings on the nvidia plugin, and none of them worked, all results were the same.

 

I'm just not sure if tearing our hair out is going to be worth it in the end. I would love to see this work on older cards, but is it worth it?

I'd say hells yeah, it's the majority of the audience. Definitely today, and probably still for years to come (especially with this Vista bullshit). So, we have the choice of delivering:

 

1. A product with a huge caveat of "you need a DX9 card" (when the base engine doesn't need it), and lose a huge chunk of audience, or

2. Maintaining the separate repository for normalmaps for pre-DX9 users. Those who don't need it, won't download it.

 

Seems like a small price to pay not to exclude a huge portion of the audience (myself included). And, it kinda sets precedent not to exclude those same users from FMs (I hope). I think this is something that not only needs supporting, but it also need clear spelling out in docs and among the community: "if you use such-and-such for normals, most people won't be able to play your map."

Link to comment
Share on other sites

Yep, with the Ti4600, I could see everything fine in D3 except heat haze. Now, with the 6800, I can see everything fine in D3, period. Except DDS normalmaps made by us for TDM.

 

I just tried a bunch of settings on the nvidia plugin, and none of them worked, all results were the same.

I'd say hells yeah, it's the majority of the audience. Definitely today, and probably still for years to come (especially with this Vista bullshit). So, we have the choice of delivering:

 

Nvidia plugin is not likely to work. Id used the compressonator vs 1.21. It's the only version that has the RxGB compression format.

 

http://www.quake3bits.com/htm/tutorials/cr...pressonator.htm

 

1. A product with a huge caveat of "you need a DX9 card" (when the base engine doesn't need it), and lose a huge chunk of audience, or

2. Maintaining the separate repository for normalmaps for pre-DX9 users. Those who don't need it, won't download it.

 

Seems like a small price to pay not to exclude a huge portion of the audience (myself included). And, it kinda sets precedent not to exclude those same users from FMs (I hope). I think this is something that not only needs supporting, but it also need clear spelling out in docs and among the community: "if you use such-and-such for normals, most people won't be able to play your map."

 

The D3 engine does specify that it requires a 100% DX9 card though...it just happens to work on the dx8 cards, but with some things broken. From what I'm told though, the dds normals should not be broken...they should work fine.

 

If D3 works on your current card, then our normal maps should too....as you're using the exact same card I'm using. lol However, our dds textures work just fine for me. :wacko: Which again leads me to believe it must be some type of setting on your computer or something. Just doesn't make sense.

 

Go into your darkmod directory and compare your doomconfig file against my settings here and post any differences you find.

 

 

unbindall

bind "TAB" "_impulse19"

bind "ENTER" "_button2"

bind "ESCAPE" "togglemenu"

bind "SPACE" "_moveUp"

bind "/" "_impulse14"

bind "0" "_impulse10"

bind "1" "_impulse0"

bind "2" "_impulse1"

bind "3" "_impulse2"

bind "4" "_impulse3"

bind "5" "_impulse4"

bind "6" "_impulse5"

bind "7" "_impulse6"

bind "8" "_impulse7"

bind "9" "_impulse8"

bind "[" "_impulse47"

bind "\" "_mlook"

bind "]" "_impulse48"

bind "a" "_moveleft"

bind "c" "_moveDown"

bind "d" "_moveright"

bind "e" "_impulse46"

bind "f" "inventory_use lantern"

bind "k" "g"

bind "l" "pm_showthirdperson"

bind "q" "_impulse45"

bind "r" "_impulse13"

bind "s" "_back"

bind "t" "clientMessageMode"

bind "w" "_forward"

bind "y" "clientMessageMode 1"

bind "z" "_zoom"

bind "BACKSPACE" "clientDropWeapon"

bind "PAUSE" "pause"

bind "UPARROW" "_forward"

bind "DOWNARROW" "_back"

bind "LEFTARROW" "_left"

bind "RIGHTARROW" "_right"

bind "ALT" "_impulse44"

bind "CTRL" "_button5"

bind "SHIFT" "_speed"

bind "DEL" "_lookdown"

bind "PGDN" "_lookup"

bind "END" "_impulse18"

bind "F1" "_impulse28"

bind "F2" "_impulse29"

bind "F3" "_impulse17"

bind "F5" "savegame quick"

bind "F6" "_impulse20"

bind "F7" "_impulse22"

bind "F9" "loadgame quick"

bind "F12" "screenshot"

bind "MOUSE1" "_attack"

bind "MOUSE2" "_impulse41"

bind "MOUSE3" "_zoom"

bind "MWHEELDOWN" "_impulse14"

bind "MWHEELUP" "_impulse15"

seta radiant_entityMode "0"

seta gui_mediumFontLimit "0.60"

seta gui_smallFontLimit "0.30"

seta net_socksPassword ""

seta net_socksUsername ""

seta net_socksPort "1080"

seta net_socksServer ""

seta net_socksEnabled "0"

seta win_ypos "0"

seta win_xpos "0"

seta sys_lang "english"

seta s_decompressionLimit "6"

seta s_useEAXReverb "1"

seta s_useOpenAL "1"

seta s_libOpenAL "openal32.dll"

seta s_numberOfSpeakers "6"

seta s_doorDistanceAdd "150"

seta s_globalFraction "0.8"

seta s_subFraction "0.75"

seta s_playDefaultSound "1"

seta s_volume_dB "-10.158731"

seta s_meterTopTime "2000"

seta s_reverse "0"

seta s_spatializationDecay "2"

seta s_maxSoundsPerShader "0"

seta r_debugArrowStep "120"

seta r_debugLineWidth "1"

seta r_debugLineDepthTest "0"

seta r_cgFragmentProfile "best"

seta r_cgVertexProfile "best"

seta r_forceLoadImages "0"

seta r_shadows "1"

seta r_skipBump "0"

seta r_skipSpecular "0"

seta r_skipNewAmbient "0"

seta r_renderer "best"

seta r_brightness "1"

seta r_gamma "1"

seta r_swapInterval "1"

seta r_useIndexBuffers "0"

seta r_customHeight "486"

seta r_customWidth "720"

seta r_fullscreen "1"

seta r_mode "5"

seta r_multiSamples "0"

seta image_downSizeLimit "256"

seta image_ignoreHighQuality "0"

seta image_downSizeBumpLimit "256"

seta image_downSizeSpecularLimit "64"

seta image_downSizeBump "0"

seta image_downSizeSpecular "0"

seta image_useCache "0"

seta image_cacheMegs "20"

seta image_cacheMinK "200"

seta image_usePrecompressedTextures "1"

seta image_useNormalCompression "1"

seta image_useAllFormats "1"

seta image_useCompression "1"

seta image_preload "1"

seta image_roundDown "1"

seta image_forceDownSize "0"

seta image_downSize "0"

seta image_lodbias "0"

seta image_anisotropy "1"

seta image_filter "GL_LINEAR_MIPMAP_LINEAR"

seta gui_filter_game "0"

seta gui_filter_idle "0"

seta gui_filter_gameType "0"

seta gui_filter_players "0"

seta gui_filter_password "0"

seta net_clientDownload "1"

seta net_master4 ""

seta net_master3 ""

seta net_master2 ""

seta net_master1 ""

seta net_clientMaxRate "16000"

seta net_serverMaxClientRate "16000"

seta m_strafeSmooth "4"

seta m_smooth "3"

seta m_strafeScale "6.25"

seta m_yaw "0.022"

seta m_pitch "0.022"

seta sensitivity "30"

seta in_toggleZoom "0"

seta in_toggleCrouch "0"

seta in_toggleRun "0"

seta in_alwaysRun "0"

seta in_freeLook "1"

seta in_anglespeedkey "1.5"

seta in_pitchspeed "140"

seta in_yawspeed "140"

seta gui_configServerRate "0"

seta com_guid "Q6PE53A3gQQ"

seta com_preloadDemos "0"

seta com_compressDemos "1"

seta com_product_lang_ext "1"

seta sv_punkbuster "0"

seta cl_punkbuster "0"

seta com_videoRam "128"

seta com_showFPS "0"

seta com_purgeAll "0"

seta com_machineSpec "1"

seta g_decals "1"

seta g_projectileLights "1"

seta g_doubleVision "1"

seta g_muzzleFlash "1"

seta net_serverDlTable ""

seta net_serverDlBaseURL ""

seta net_serverDownload "0"

seta mod_validSkins "skins/characters/player/marine_mp;skins/characters/player/marine_mp_green;skins/characters/player/marine_mp_blue;skins/characters/player/marine_mp_red;skins/characters/player/marine_mp_yellow"

seta g_mapCycle "mapcycle"

seta g_voteFlags "0"

seta g_gameReviewPause "10"

seta g_countDown "10"

seta g_password ""

seta g_showBrass "1"

seta g_showProjectilePct "0"

seta g_showHud "1"

seta g_showPlayerShadow "0"

seta g_showcamerainfo "0"

seta g_healthTakeLimit "25"

seta g_healthTakeAmt "5"

seta g_healthTakeTime "5"

seta g_useDynamicProtection "1"

seta g_armorProtectionMP "0.6"

seta g_armorProtection "0.3"

seta g_damageScale "1"

seta g_nightmare "0"

seta g_bloodEffects "1"

seta r_aspectRatio "0"

seta ui_showGun "1"

seta ui_autoReload "1"

seta ui_autoSwitch "1"

seta ui_team "Red"

seta ui_skin "skins/characters/player/marine_mp"

seta ui_name "Garrett"

seta si_serverURL ""

seta si_spectators "1"

seta si_usePass "0"

seta si_warmup "0"

seta si_teamDamage "0"

seta si_timeLimit "10"

seta si_fragLimit "10"

seta si_maxPlayers "4"

seta si_map "game/mp/d3dm1"

seta si_gameType "singleplayer"

seta si_name "DOOM Server"

seta g_spectatorChat "0"

seta net_clientLagOMeter "1"

seta pm_walkspeed "80"

seta tdm_lg_model "models/props/misc/lightgem.lwo"

seta tdm_lg_weak "0"

seta tdm_lg_interleave "1"

seta pm_stepvol_crouch_creep "-7"

seta pm_stepvol_crouch_run "4"

seta pm_stepvol_crouch_walk "-2"

seta pm_stepvol_creep "-5"

seta pm_stepvol_run "8"

seta tdm_throw_time "1700"

seta tdm_throw_max "40000.0"

seta tdm_throw_min "20000.0"

seta tdm_frob_fadetime "100"

seta tdm_frob_width "10.0"

seta pm_crouchmod "0.54"

seta pm_creepmod "0.44"

seta pm_runmod "2.12"

seta tdm_showko "0"

seta tdm_showsprop "0"

seta tdm_spr_debug "0"

seta tdm_ai_showko "0"

seta tdm_ai_showfov "0"

seta tdm_ai_debug "0"

seta tdm_ai_tact "20.0"

seta tdm_ai_sightmin "11.0"

seta tdm_ai_sightmax "60.0"

seta tdm_ai_sndvol "0.0"

seta tdm_lg_split "0"

seta tdm_inv_opacity "1"

seta tdm_lp_base_count "5"

seta pm_lean_stretch "2"

seta pm_lean_height "0.4"

seta pm_lean_time "400"

seta pm_lean_angle "15"

seta tdm_ai_showalert "0"

seta tdm_ai_showstate "0"

seta tdm_ai_sight_mag "1.0"

seta tdm_ai_sight_prob "0.7"

seta pm_pushmod "1.0"

seta tdm_ai_bumpobject_impulse "1500"

seta pm_stepvol_walk "0"

seta pm_lean_forward_stretch "15"

seta pm_lean_forward_height "0.4"

seta pm_lean_forward_time "400"

seta pm_lean_forward_angle "2"

seta pm_lean_door_bounds_exp "8.0"

seta pm_lean_door_max "40"

seta pm_lean_door_increments "10"

seta pm_lean_to_valid_increments "25"

seta tdm_inv_fade_out "0"

seta tdm_inv_fade_in "0"

seta tdm_inv_visibility "1"

seta tdm_inv_group_mode "0"

seta tdm_inv_loot_group "Loot"

seta tdm_inv_hud_file "guis/inv.gui"

seta tdm_inv_loot_sound "sound/sfx/world/frob_loot.ogg"

seta tdm_inv_loot_hud "guis/loot.gui"

  • Like 1
Link to comment
Share on other sites

Nvidia plugin is not likely to work. Id used the compressonator vs 1.21. It's the only version that has the RxGB compression format.

 

You can use the GIMP DDS plugin as well, I think. I just built and installed this under Linux, and it has an option to "Swap red and alpha" which is the same thing.

Link to comment
Share on other sites

You can use the GIMP DDS plugin as well, I think. I just built and installed this under Linux, and it has an option to "Swap red and alpha" which is the same thing.

 

Ahhh, ok...cool. There are a few other little details that have to be followed from the compressonator tutorial as well. The normal map can't be checked off as adaptive, nor can the default Chanel weights be used. Red must be 0, green 0.5 and blue 0.5.

 

If my 6800 shows them correctly, I doubt it's a problem with the textures. Angua posted how she was making them, and they were produced by following the tutorial to the letter.

 

So, I'm not sure if it's something as simple as swapping the red channel and the alpha, as the compressonator uses something called the Uber compressor.

Link to comment
Share on other sites

I went through the list and stopped on image_useNormalCompression. Of course, for my old card, it was set to 0. On this new 6800, a setting of 1 doesn't seem to help at all. A setting of 2 makes it almost look right. I do get normal maps differences in height, but still get artificial fading shadows on half of brushes. So, maybe then it comes down to the compression method, as you mentioned. Could you post (FTP I guess) a compressionator made version of blocks_009_local.tga? I'll give that a shot and see if the remaining issues are the fault of nvidia's plugin.

 

Regardless though, we'd still be cutting out pre-GF5 users. There's something to be said for keeping a copy around that they can use, even if it's not the default repository. Those could even be generated with a batch process after the fact.

Link to comment
Share on other sites

Red must be 0, green 0.5 and blue 0.5.

 

Oh, that might be important actually -- if "channel weight" refers to the way the bits are allocated, then the "red slot" may in fact not be zero, but divided between the green and blue channels in equal proportions (so the pixel format is R:0 G:8 B:8 rather than the usual R:5 G:6 R:5.)

 

This means that you can't use the GIMP after all (because it does not allow this modification), and my idea to keep both Red and Alpha won't work either. It also explains why I can't open the normalmap DDS files with the GIMP -- this really is a nonstandard format.

 

What is interesting is that many of the Doom 3 textures do not have precompressed normalmaps (although they do have precompressed specular and localmaps), and for the normal map DDS files that DO exist, some of them are ordinary some of them non-standard (and can't be opened with the GIMP). Perhaps Doom 3 is capable of detecting what format the DDS normal map is, and if it is the wrong one it generates the appropriate compressed version at runtime.

Link to comment
Share on other sites

I went through the list and stopped on image_useNormalCompression. Of course, for my old card, it was set to 0. On this new 6800, a setting of 1 doesn't seem to help at all. A setting of 2 makes it almost look right. I do get normal maps differences in height, but still get artificial fading shadows on half of brushes. So, maybe then it comes down to the compression method, as you mentioned. Could you post (FTP I guess) a compressionator made version of blocks_009_local.tga? I'll give that a shot and see if the remaining issues are the fault of nvidia's plugin.

 

image_useNormalCompression = 2 is the correct setting, I just had mine set to 1 for some tests. I'm uploading a compressonator version of the file, but I would also suggest downloading a copy of the compressonator here http://www.quake3bits.com/htm/tutorials/cr...pressonator.htm and running a few tests with the settings they provide.

 

Regardless though, we'd still be cutting out pre-GF5 users. There's something to be said for keeping a copy around that they can use, even if it's not the default repository. Those could even be generated with a batch process after the fact.

 

Jumpin' jiggawatts man! :P We have to draw the line somewhere, this is seriously stressing me out. :laugh: GAH. If there are still pre-GF5 users by the time we release...well, I feel for them...but I don't think we should be worried about that right now.

Link to comment
Share on other sites

Oh, that might be important actually -- if "channel weight" refers to the way the bits are allocated, then the "red slot" may in fact not be zero, but divided between the green and blue channels in equal proportions (so the pixel format is R:0 G:8 B:8 rather than the usual R:5 G:6 R:5.)

 

This means that you can't use the GIMP after all (because it does not allow this modification), and my idea to keep both Red and Alpha won't work either. It also explains why I can't open the normalmap DDS files with the GIMP -- this really is a nonstandard format.

 

What is interesting is that many of the Doom 3 textures do not have precompressed normalmaps (although they do have precompressed specular and localmaps), and for the normal map DDS files that DO exist, some of them are ordinary some of them non-standard (and can't be opened with the GIMP). Perhaps Doom 3 is capable of detecting what format the DDS normal map is, and if it is the wrong one it generates the appropriate compressed version at runtime.

 

 

:laugh: I've posted the link to all this info several times during the course of this issue with DDS textures...I'm surprised I have any hair left. ;) From what I've been told, the compressonator is the only way to create these normal maps...unless the nvidia plugin allows altering those settings. I thought I heard that someone did it, so perhaps this is so.

 

 

Sneaksie, the file is on the ftp under Darkmod/textures/sneaksiedave

Link to comment
Share on other sites

It's true that my issue may be fixable (may), but that doesn't include all the others on TTLG who have even less than what I have or had prior. Do we close them out because of HD space? What I'm saying is, even if we were to move to completely DDS for the default CVS repository (the one we all sync to - which I'd hope we won't do unless it works for me ^_^), there's no harm in having batch created versions of TGAs laying around for those who can't use DDS...

 

Edit: thx, I'll try the file

Link to comment
Share on other sites

It's true that my issue may be fixable (may), but that doesn't include all the others on TTLG who have even less than what I have or had prior. Do we close them out because of HD space? What I'm saying is, even if we were to move to completely DDS for the default CVS repository (the one we all sync to - which I'd hope we won't do unless it works for me ^_^), there's no harm in having batch created versions of TGAs laying around for those who can't use DDS...

 

Edit: thx, I'll try the file

 

We'll always keep the original TGA's around, but I don't think the majority of people on TTLG are going to have an issue with running this. A lot of people upgraded recently to play T3....I think in another two years, there will be even fewer unable to play. I think we need to focus on pushing forward a bit.

 

These textures should really be working for you, our cards are pretty much identical from what I gather.

Link to comment
Share on other sites

Okay, that image works for me. Whether that means all of them will, or those with alphas will, I don't know. Looks like it's about half size of the original TGA. I can't open it in photoshop6 though... that sucks.

 

So the way I see it at this point:

 

1. Who else has/had compressed normalmap texture probs? They must try this file and let us know!

2. If we swap to full DDS usage for TDM's default repository, then having TGAs for those who can't use them is something we don't really need to lose sleep over ^_^. They can be batch-generated periodically, or at the end. People who have no problem with DDS at all never have to touch or even see them.

3. More opinions are needed - this affects everyone, so we should get a pretty clear consensus; it's a big deal. If all of a sudden we find, "oh shit, um, guys? I can't see anything!" that's a big mess to clean up.

4. Or, to be really safe, we could just leave it alone. (hehe, *dodges rock thrown by NH*)

 

If no one on the team is having any issues, a full DDS switch is probably a good thing to do (although that PS6.0 thing really sucks...). At the end, should people need them, TGAs could be generated easily.

Link to comment
Share on other sites

:laugh: I've posted the link to all this info several times during the course of this issue with DDS textures...I'm surprised I have any hair left. ;) From what I've been told, the compressonator is the only way to create these normal maps...unless the nvidia plugin allows altering those settings.

 

I've read the tutorial several times, but don't see any explicit reference to the bit format. If we understand this, it should not be too difficult to write our own conversion tool if necessary.

 

At the end, should people need them, TGAs could be generated easily.

 

DDS -> TGA -> Re-compressed DDS? Ugh.

 

My understanding here is that the primary motivation is to reduce the size of the repository, correct? For final distribution, zip-compressed (or 7-zip compressed) TGA would probably be acceptable if the all-DDS route did not work out.

Link to comment
Share on other sites

These d3 normals can't be viewed outside of compressonator.

Doh. Well, I guess that's another (minor) reason to keep them around. Once they're compressed, there's no turning back.

DDS -> TGA -> Re-compressed DDS? Ugh.

Yep. Well, unless we just keep the originals as now, in which case, the only difference is which repository we upload to.

Link to comment
Share on other sites

Originals were always meant to be uploaded to the darkmod_hi-res repository. Maximum 1024 x 1024.

 

Then we had the downscaled TGA's in the Mod repository. Max 512 x 512

 

But DDS files in the Mod repository can be stored at full res 1024 x 1024 at half the file size.

 

I'm going to revise the sticky to make things more clear.

 

@Orb

There are several motivations really.

1. to reduce mod bloat.

2. to eliminate this texture redundancy, when dds is perfectly capable of giving us high quality graphics.

3. Improve performance. You definitely notice a performance gain when 4 meg TGA's are replaced with DDS textures of less than half that file size (1.3 megs for a 1024x1024).

 

Right now, our mod TGA's are low res, compared to what they could be. Of course, not all textures need to be 1024...but it's nice to have the option...without the performance impact...and having to download them from CVS. :)

 

Since Gil is taking a step back from things, I can fill in and coordinate what needs to be done.

Link to comment
Share on other sites

I've read the tutorial several times, but don't see any explicit reference to the bit format. If we understand this, it should not be too difficult to write our own conversion tool if necessary.

 

Since ATI is no longer supporting that particular compression technique, I wonder if they would be willing to spill the beans on it?

 

Edit:

 

Would this be of any use? Looks like it's the source code for their texture compression program.

 

http://ati.amd.com/developer/compress.html

Link to comment
Share on other sites

That source code is probably the one from newer versions of the Compressonator (not the "right" v1.21 one)? If that is the case, we won't have much use for it I think (I didn't read the License agreement as well, perhaps there are other things hidden there that would prevent the lib from, say, being incorporated into DarkRadiant, for example).

 

However, just to drop this in here as well: I've uploaded the correct Compressonator version to our FTP a few weeks ago in case the download link gets lost.

Link to comment
Share on other sites

The library is closed source and Windows-only (so no DR integration or anything), but looks like it does support swizzled formats so could be used as a fallback position if necessary. It does not seem to offer anything that cannot be achieved with the current Compressonator binary however.

 

If I recally correctly, there is an option in Doom 3 to make it write out the compressed textures to disk -- has anyone tried this?

Link to comment
Share on other sites

This is interesting. I just found out that the compressonator texture I tested with today (linked above) doesn't give me normalmaps in DarkRadiant. Is there a setting in DR to tell it to use the image compression of this type? I get flat walls in 0.8.1, and the creeping shadow of doom and 'shader not found' in latest snapshot.

 

Say the word if we need a defect entry. I'm getting so confused with everything this way and that that I'm wanting to just go to bed. :wacko:

Link to comment
Share on other sites

The library is closed source and Windows-only (so no DR integration or anything), but looks like it does support swizzled formats so could be used as a fallback position if necessary. It does not seem to offer anything that cannot be achieved with the current Compressonator binary however.

 

Does the library do operating system calls on it's own? Like file IO or such? If not, then it shouldn't be a problem to run it on Linux as well with a wrapper.

Gerhard

Link to comment
Share on other sites

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

    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 2 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
    • Petike the Taffer

      Maybe a bit of advice ? In the FM series I'm preparing, the two main characters have the given names Toby and Agnes (it's the protagonist and deuteragonist, respectively), I've been toying with the idea of giving them family names as well, since many of the FM series have named protagonists who have surnames. Toby's from a family who were usually farriers, though he eventually wound up working as a cobbler (this serves as a daylight "front" for his night time thieving). Would it make sense if the man's popularly accepted family name was Farrier ? It's an existing, though less common English surname, and it directly refers to the profession practiced by his relatives. Your suggestions ?
      · 9 replies
    • nbohr1more

      Looks like the "Reverse April Fools" releases were too well hidden. Darkfate still hasn't acknowledge all the new releases. Did you play any of the new April Fools missions?
      · 5 replies
×
×
  • Create New...