Jump to content
The Dark Mod Forums

Search the Community

Searched results for '/tags/forums/work thread/q=/tags/forums/work thread/' or tags 'forums/work thread/q=/tags/forums/work thread/&'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Discussion
    • News & Announcements
    • The Dark Mod
    • Fan Missions
    • Off-Topic
  • Feedback and Support
    • TDM Tech Support
    • DarkRadiant Feedback and Development
    • I want to Help
  • Editing and Design
    • TDM Editors Guild
    • Art Assets
    • Music & SFX

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. After playing various Dark Mod FM’s, I become hooked to the game, like I was with Thief (and its FM’s). So, like I do to all games I love, I tried to find ways to improve it. Since my first contact with DM and after playing T1 and T2 with the fantastic “HD Mod”, it became apparent that graphically, TDM struck me strange. Of course, it is clearly a BIG improvement over T3 and it’s not worse then Thief 2014 -- if you remove all those post processing effects, the textures are actually very bad for today standards – but it could be a little bit better. So I started to change a texture here, a texture there, whenever I found a texture that could be improved. Initially, I made this for my own amusement, while i was playing, but as the changes increased, I started to think I it would only be fair to share it with the community. As a note, I really appreciate the amount of work done by the contributors to TDM. It’s amazing how an open source project of a game whose genre is unfortunately condemned to target a niche player base could attract so many talented people to work together and create what essentially is the Thief 4 we never had. So this is in no way a mean to disrespect the contributors and their work. What changed and how Currently, around 530 files were changed. The changes end up in one of the following categories: NOTE: “texture quality” noted below is subjective and represents only my point of view. Again, It is in no way a mean of disrespect for the original author and its work. The texture is good but is in a low resolution – upscale it using AI image enhancement methods. The texture is poor and low res, with poor AI upscale results – try to replace it using various free PBR or raw Image sources (1) or create my own. If necessary, adjust the image using (colors, saturation, contrast, …) The texture has a good resolution and its not quite good but can be improved – improve using gimp (ex: on textures with bur, use sharpen, noise reduction or/and other features) (2) The texture depicts an horrible stew – change it to a decent and delicious stew, because my Portuguese roots forced me to do it. Additionally, specular and normal maps were added to some textures. (1) Free textures and PBR sites already discussed on this forum (texturehaven.com, 3dtextures.me, cc0textures.com and so on). (2) Finding the right texture is not always easy. I always tried to follow the same “feel” and appearance of the original image, but i confess that this is not always the case. Again, very subjective. New version 2021.01.08 * Around 170Mb of textures processed Some tree barks enhanced Stucco change more enhancements on doors, paint paper, fire places, ground textures, curtains .. and much more Screenshots and Comparisons It’s obviously undoable to show the comparison for all changed textures, so keep in mind that the following screenshots are just a very small example of the whole project. Also, very important, keep in mind that there is so much you can do with screenshots and in game the differences are much more clear than what is shown below. Sir Talbot's Collateral https://imgsli.com/MTI2NDE https://imgsli.com/MTI2MzY https://imgsli.com/MTI2Mzc https://imgsli.com/MTI2Mzg https://imgsli.com/MTI2Mzk https://imgsli.com/MTI2NDA WS3: Cleighmoor https://imgsli.com/MTI1OTE WS1: In the North https://imgsli.com/MTI2MTY https://imgsli.com/MTI2MTc WS2: Home Again https://imgsli.com/MTI2MjM https://imgsli.com/MTI2MjQ https://imgsli.com/MTI2Mjc https://imgsli.com/MTI2Mjg https://imgsli.com/MTI2Mjk https://imgsli.com/MTI2MzE https://imgsli.com/MTI2MzM New (version 2021.01.08) Briarwood Manor https://imgsli.com/MzUwNDY https://imgsli.com/MzUwNDg https://imgsli.com/MzUwNTE https://imgsli.com/MzUwNjc The Builder's Influence https://imgsli.com/MzUxNjM https://imgsli.com/MzUxNjQ No honor among thieves: forest https://imgsli.com/MzU0ODE https://imgsli.com/MzU1NTQ https://imgsli.com/MzU1NTk How to install 1) download the pk4 file from here 2) drop it on your TDM game folder (where all the other pk4 files are) 3) Play! Uninstall Just remove z_TDM_HD.pk4 file from your TDM install folder. Disclaimer If you are a purist, please don’t use this texture mod. Don’t bash it for not being “exactly the same as the original ones but hires”. If you find some texture that is copyrighted, please let me know and i will replace it. Fell free to suggest changes, but please don't make requests. Understand that i am doing this while playing and if i start feeling that i'm working instead, i will probably start to loose my interest. PS: I really don't know if this is the right thread to make this post. Let me know if i need to change it to another thread.
  2. The Blender export scripts have been updated to work with the new Blender 4.1 series. In this Blender version, they removed "Autosmooth" altogether, along with the corresponding parts of the Python API. This meant that the "Use Autosmooth settings" option had to be removed from the LWO exporter, where it was previously the default setting. The new default is "Full", which smooths the whole mesh, giving similar behaviour to ASE models, although "None" is still an option if you want a completely unsmoothed mesh.
  3. this user is impervious to holy water

    open to work, seeking for private supernatural guard job for rich noble house job , supernatural mercenary job, sacred place private security or something along that line

  4. to remember @STiFU 's progessive music thread. here´s something i love most out off so called german Prog-Rock a french group of the 70´s called " Atoll " their first two albums are incredible : the first shown is their second from 1975 : l´araignée-mal the second is their first from 1974 : Musiciens-magiciens
  5. Inn Business It's business, at an inn, over three nights. Development screenshots: Download: https://drive.google...dit?usp=sharing Update 1.48 uploaded March 8th, 2014, one change: patches key rarely not being frobable in one of its possible spots Big thanks to my beta testers: Airship Ballet, Kyyrma and AluminumHaste! Development supporters of note: Sotha, Springheel and Obsttorte. Also thanks Sotha, for urinating in my mission. ;-) And thanks Kyyrma for the title screen! My appreciation to all forum/wiki contributors, without whom, this wouldn't exist. Thanks to positive commenters on my previous mission too, extra motivation helps! :-) Note this uses campaign features, what you use the first night, impacts subsequent nights. And to quote a tester, "...the level is maybe best experienced in more than one sitting". If you do pause between nights, please be sure to save, you can't begin partway through effectively. (If you accidentally start a night you already completed, just fail the kill objective to switch to another night.) If your frame rates are too low facing the cemetery, please reduce your "Object Details LOD" setting. It was designed with "AI Vision" set to "Forgiving", to be able to sneak through with minimal reactions, if you want more/less, adjust your settings accordingly. There are several random, conditional aspects, and ways of going about things, so others might have slightly different experiences. Post here if you discover hidden objectives for extra points! My condolences to loot completionists, I made a bit on the third night hard, you've got your challenge cut out for you! Speaking of which, there's a TDM bug that mission complete totals too high, here are the real amounts per night: 2026/970/202. Oh, there is something that in the U.S. would be rated PG, in case you play with kids in earshot. I hope you enjoy playing it, feel free to let me know you did, and I'm glad to respond to inquiries (like how stuff was done, nothing was scripted). (Note which night you are referring to if it's something specific.) (Please remember spoiler tags to not expose things meant to be discovered by playing.) Like so: [spoiler]secrets[/spoiler] Developed for TDM 2.01. PS: Thiefette, good news, no spiders! Springheel, if you find an optional objective you can skip...you might find it immersion breaking. Others, no undead! There are a couple other interactive critters though. :-) Edit note: Some posts below were from users of an unreleased version of TDM 2.02 which broke several things, they do not reflect regular game-play.
  6. After some amount of work I'm happy to be able to share my Christmas gift for TDM! Or at least half of it, considering the other half is still only in design phase. I created an addon that implements detailed player functionality, inspired by the first DeusEx game (The Conspiracy). It's NOT a mission script but an addon, meaning you place the pk4 in your TDM directory to enable the system and it will automatically work in each and every FM. Note that due to using tdm_user_addons.script / user_addon_init() it may disable or get disabled by other addons you have installed... this is a design limitation which can hopefully be lifted at some point in the future. This plugin will be included in my cyberpunk total conversion The Dark Module and automatically active with it, but first I shall design it and make it available as a small independent addon for vanilla TDM. In the current initial release it implements just per-limb damage; The upcoming plan is to add a skill / augmentation system, allowing the player to use loot as skill points to enhance various body parts and gain new or improved abilities. Due to the scripting system being very limited in what it lets me modify, I'm still gathering documentation on how to implement those skills and which I can have. So until then detailed body damage with penalties remains the only part that's theoretically finished so far (further improvements are required here too)... including a HUD component above the lightgem showing the status of each body part: Green = full health, yellow = half health, red = (close to) no health, black = no health left. The individual limbs available: Head, Torso, Left Arm, Right Arm, Left Leg, Right Leg... arms and legs work in unity however. They each take damage with the player as well as healing together with them. The more damaged a group is, the more a respective penalty is applied to the player. Groups and penalties include: Head: When the head is damaged, the player begins to get dizzy and has their vision impaired. Currently the only effect replicates the flashbomb, causing white dots to appear around the player and disrupt their view until the head is healed. As the player can't live without a head, reaching 0 will cause instant death. More effects are possible and pending. Torso: Damage to the torso translates to damage to the cloak, increasing the player's lightgem and rendering them more visible even in dark spots. As the player can't live without a torso, reaching 0 will cause instant death. Given script limitations I'm unable to simulate lung damage and decrease / limit the amount of air the player has. Arms: Arm damage makes it difficult for the player to hold items: In-world objects being held will probabilistically get dropped, more often the worse your arms are hurt. When both arms reach 0 health, the player can no longer pick up anything in the world without instantly dropping it... you also become unable to use any weapons. Due to limitations in the scripting system, I'm unable to decrease the speed or accuracy of the blackjack / sword / bow as was desired. Legs: As expected leg damage will make the player walk more slowly. It was desired that when one leg is lost the player can no longer jump, whereas when both legs are gone you remain stuck in crouch mode until healed... due to limitations in the scripting system this part is also not possible at the moment. A crude limitation is the fact that limb damage is primarily based on the direction the player is walking toward... for example, increased likelihood of suffering damage to your right arm and leg if strafing right the moment you take the damage. The script system doesn't let you extract the vector direction of the last damage event, thus I can't use the real direction the hit came from when calculating which body part should absorb the most health loss. This means that even if an arrow comes from above and hits the player's head area, the player will only take damage to the legs if they're falling downward the moment they got hit... for the time being this provides a bare minimum amount of realism but is a very bitter implementation. For this reason it would be greatly appreciated if any of the code developers could join this discussion and verify if they can help with adding the necessary hooks to external scripts: With 2.09 getting periodic beta releases at this point in time, it would be a great opportunity to make changes to the builtin player script that allow an external function to modify more player variables. This includes the efficiency of weapons, if the player is allowed to jump or forced to always crouch, and I'd also really appreciate a hook to manipulate the breath so air can be lowered as if the player is underwater. I understand other priorities exist or if the work may be considered too much, however this would help in being able to finish this mod with the proper functionality and planned skill set. In the meantime let me know what you think of this idea and how I went about it! So far no new assets are included except the GUI graphics: Everything is done with less than 250 lines of script which I'd say is a good achievement I've attached the pk4 and since it's so lightweight I'll also add the main script straight in this post. player_damage_1.0.pk4 #define DAMAGE_WAIT 0.0166667 #define EXPOSURE_ARM_LEFT 2 #define EXPOSURE_ARM_RIGHT 2 #define EXPOSURE_LEG_LEFT 2 #define EXPOSURE_LEG_RIGHT 2 #define EXPOSURE_HEAD 3 #define EXPOSURE_TORSO 1 #define PENALTY_TORSO_LIGHTGEM 4 player self; float damage_gui; boolean dizzy; entity dizzy_particles; float bound(float val, float min, float max) { if(val < min) return min; if(val > max) return max; return val; } // Range based probability: Calculates a probability per frame independent of wait time (0 - 1 range at 1 chance per second) boolean prob(float x) { return sys.random(1) > x && sys.random(1) < DAMAGE_WAIT; } // Directional exposure calculator float dex(vector dir, float ex_front, float ex_back, float ex_right, float ex_left, float ex_up, float ex_down) { float maxvel = 100; float dir_front = bound(dir_x / maxvel, 0, 1) * ex_front; float dir_back = bound(-dir_x / maxvel, 0, 1) * ex_back; float dir_right = bound(dir_y / maxvel, 0, 1) * ex_right; float dir_left = bound(-dir_y / maxvel, 0, 1) * ex_left; float dir_up = bound(dir_z / maxvel, 0, 1) * ex_up; float dir_down = bound(-dir_z / maxvel, 0, 1) * ex_down; return dir_front + dir_back + dir_right + dir_left + dir_up + dir_down; } void player_damage_update_arm(float dmg_l, float dmg_r) { float hl_l = self.getFloatKey("health_arm_left"); float hl_r = self.getFloatKey("health_arm_right"); float hl = (hl_l + hl_r) / 2; if(dmg_l != 0 || dmg_r != 0) { hl_l = bound(hl_l - dmg_l, 0, 1); hl_r = bound(hl_r - dmg_r, 0, 1); hl = (hl_l + hl_r) / 2; self.setKey("health_arm_left", hl_l); self.setKey("health_arm_right", hl_r); self.setGuiFloat(damage_gui, "PlayerDamage_ItemArmLeft", hl_l); self.setGuiFloat(damage_gui, "PlayerDamage_ItemArmRight", hl_r); // Penalty #1: Disable the weapon once the arm are damaged to minimum health if(hl == 0) { self.selectWeapon(WEAPON_UNARMED); self.disableWeapon(); } else { self.enableWeapon(); } } // Penalty #2: Probabilistically drop held items based on arm damage if(hl == 0 || prob(hl)) if(self.heldEntity() != $null_entity) self.holdEntity($null_entity); } void player_damage_update_leg(float dmg_l, float dmg_r) { float hl_l = self.getFloatKey("health_leg_left"); float hl_r = self.getFloatKey("health_leg_right"); float hl = (hl_l + hl_r) / 2; if(dmg_l != 0 || dmg_r != 0) { hl_l = bound(hl_l - dmg_l, 0, 1); hl_r = bound(hl_r - dmg_r, 0, 1); hl = (hl_l + hl_r) / 2; self.setKey("health_leg_left", hl_l); self.setKey("health_leg_right", hl_r); self.setGuiFloat(damage_gui, "PlayerDamage_ItemLegLeft", hl_l); self.setGuiFloat(damage_gui, "PlayerDamage_ItemLegRight", hl_r); // #Penalty #1: Make movement slower self.setHinderance("health", 0.25 + hl * 0.75, 1); } } void player_damage_update_head(float dmg) { float hl = self.getFloatKey("health_head"); float time_current = sys.getTime(); if(dmg != 0) { hl = bound(hl - dmg, 0, 1); self.setKey("health_head", hl); self.setGuiFloat(damage_gui, "PlayerDamage_ItemHead", hl); // Penalty #1: Without a head the player dies if(hl == 0) self.damage(self, self, self.getOrigin(), "damage_suicide", 1); // Penalty #2: Simulate dizzyness starting at half health if(hl <= 0.5) { if(!dizzy) { dizzy_particles = sys.spawn("func_emitter"); dizzy_particles.setModel("flashbomb.prt"); dizzy_particles.setOrigin(self.getEyePos()); dizzy_particles.bind(self); dizzy = true; } } else { if(dizzy) { dizzy_particles.remove(); dizzy = false; } } } } void player_damage_update_torso(float dmg) { float hl = self.getFloatKey("health_torso"); if(dmg != 0) { hl = bound(hl - dmg, 0, 1); self.setKey("health_torso", hl); self.setGuiFloat(damage_gui, "PlayerDamage_ItemTorso", hl); // Penalty #1: Without a torso the player dies if(hl == 0) self.damage(self, self, self.getOrigin(), "damage_suicide", 1); // Penalty #2: Torso damage negatively affects the lightgem self.setLightgemModifier("damage", (1 - hl) * PENALTY_TORSO_LIGHTGEM); } } void player_damage() { sys.waitFrame(); self = $player1; damage_gui = self.createOverlay("guis/player_damage.gui", 1); float health_old = 100; // Init by sending a heal event filling the limbs to full health player_damage_update_arm(-1, -1); player_damage_update_leg(-1, -1); player_damage_update_head(-1); player_damage_update_torso(-1); while(1) { // sys.waitFrame(); sys.wait(DAMAGE_WAIT); float health_current = self.getHealth(); float dmg = (health_old - health_current) / 100; float dmg_arm_left = dmg * EXPOSURE_ARM_LEFT; float dmg_arm_right = dmg * EXPOSURE_ARM_RIGHT; float dmg_leg_left = dmg * EXPOSURE_LEG_LEFT; float dmg_leg_right = dmg * EXPOSURE_LEG_RIGHT; float dmg_head = dmg * EXPOSURE_HEAD; float dmg_torso = dmg * EXPOSURE_TORSO; // If this is damage and not healing, apply directional damage to each limb if(dmg > 0) { // Currently we estimate damage direction based on the player's velocity, we should fetch the real direction of a damage event when this becomes possible vector dir = self.getMove(); vector ang = self.getViewAngles(); // Protections based on the player's position and relation to the environment // protection_look: 1 when looking up, 0 when looking down // protection_low: Higher as the lower part of the body is exposed float protection_look = 1 - (90 + ang_x) / 180; float protection_low = 1; if(self.AI_CROUCH) protection_low = 0; else if(self.AI_ONGROUND) protection_low = 0.75; // Use the dex function to calculate directional exposure patterns, direction order: Front, back, right, left, up, down // Arms: Somewhat likely to be hit, no added protection // Legs: Somewhat likely to be hit, added protection when the player is crouching // Head: Unlikely to be hit, added protection when the player is looking down // Torso: Likely to be hit, no added protection float exposure_arm_left = bound(sys.random(0.375) + dex(dir, 0.5, 0.25, 0.0, 1.0, 0.0, 0.25), 0, 1); float exposure_arm_right = bound(sys.random(0.375) + dex(dir, 0.5, 0.25, 1.0, 0.0, 0.0, 0.25), 0, 1); float exposure_leg_left = bound(sys.random(0.375) + dex(dir, 0.75, 0.5, 0.0, 0.5, 0.0, 1.0) * protection_low, 0, 1); float exposure_leg_right = bound(sys.random(0.375) + dex(dir, 0.75, 0.5, 0.5, 0.0, 0.0, 1.0) * protection_low, 0, 1); float exposure_head = bound(sys.random(0.25) + dex(dir, 0.25, 0.75, 0.5, 0.5, 1.0, 0.0) * protection_look, 0, 1); float exposure_torso = bound(sys.random(0.5) + dex(dir, 0.75, 1.0, 0.0, 0.0, 0.0, 0.0), 0, 1); // Apply the exposure to damage, multiplied to simulate the sensitivity / resistance of each limb dmg_arm_left = exposure_arm_left * dmg * EXPOSURE_ARM_LEFT; dmg_arm_right = exposure_arm_right * dmg * EXPOSURE_ARM_RIGHT; dmg_leg_left = exposure_leg_left * dmg * EXPOSURE_LEG_LEFT; dmg_leg_right = exposure_leg_right * dmg * EXPOSURE_LEG_RIGHT; dmg_head = exposure_head * dmg * EXPOSURE_HEAD; dmg_torso = exposure_torso * dmg * EXPOSURE_TORSO; } player_damage_update_arm(dmg_arm_left, dmg_arm_right); player_damage_update_leg(dmg_leg_left, dmg_leg_right); player_damage_update_head(dmg_head); player_damage_update_torso(dmg_torso); health_old = health_current; } }
  7. Sorry, I didn't mean to step on your toes and to dictate the title change on you. I was merely raising concerns, as the title and beginning of this thread reads an awful lot like one of these here... Full disclosure: I haven't played your FM, yet, so maybe I didn't get the full picture. But then again, there are probably more people as clueless as me that don't get it at first either. Futhermore, you had some avatar come in and tell us about the loss of a beloved community member, wheras in myhouse.wad, it was the opposite, i.e., some random dude nobody in the community knew was gone.
  8. Ok, but you could also load all maps in your campaign, but in a different order. Or you could make a copy of the map and change some things. So it doesn't have to be an entirally different mission (which indeed might be too much work). So for example the first mission has an objective to place the plans to build a bridge over the river in a specific place. Then the next mission has that bridge (map1), or does not have that bridge (map2). Mapper only has to make a copy of the map and remove the bridge (and maybe a small amount of other things). I just think that having only one specific order is pretty restrictive. But if it's a lot of work to implement it might not be worth it.
  9. I usually share other people's photos of historical and industrial architecture in this thread, but I've decided to finally share some of my own photos that I've accumulated over the years. Over the years, especially the last twenty or so years, I've wandered many of the old town quarters in cities and towns all around my country, taking snapshots. Wereas many of the main streets and major landmarks have long since had nice and beautiful restoration work done, many of the more obscure side streets, back alleys and occassional overlooked corners had interesting sights to behold. I've particularly been fond of old townhouses that show elements from different eras of history, as well as all the wear accumulated over the years and decades. As much as I like that many of these eventually also receive decent restoration work and look nice again, the sight of a well-worn, dilapidated or even ruined house or ocassional public building can prove really stimulating for the imagination. They've got a lot of proverbial "texture" (not just in the surface sense) and "character" that can hike one's imagination, especially with regards to lived-in environments with long histories.
  10. Alright, new problem with making these skins (or should I make a new thread about this?) Why are my skinned models coming up black? Here is my updated code for a simple skin. And here is the model in the skin editor, changed to its creamy, plaster version. Yet for some reason, all of my skins are pure black. The wiki says this is caused by the editor not finding the skin definition, and that there are spelling errors somewhere. I am not sure what this means, though, since all of my directory paths are spelled right (otherwise, how would the skin editor display them perfectly fine?) Does the name of the file have to match the declared skin name?
  11. Do we have one of these? I know we kind of have one for upcoming TDM projects, but not a general game thread. I'll start. Elden Ring:
  12. The translation pack has the german string in the base pack rather than in the fm subfolder. I will fix it in the mission database. Edit: Fixed in the mission db Edit 2: Nope. Not exactly fixed. It seems that lang files in the mission string folder need to be "complete" because they fully override the core strings. If I am correct, this was broken in 2.11 when we permitted in-file overrides of core files in missions. Edit 3: Still broken in 2.10, rolling back to 2.07 Edit 4: Still broken in 2.07. Something has gotta be wrong with the translation specific to this mission. Edit 5: The core mission XD files don't use the strings so nothing happens if the lang files are in the strings/fm subfolder. Probably means that the translation packs "never worked" for many missions unless impacted players sought out special editions of the missions on Tels' server. What a mess. Fuzzy recollection time: I think Tels was trying to push the team to mass convert all missions to move XD data into strings/fm/english.lang but nobody wanted to broach it and even mission authors weren't happy about this way of handling things. If the translation pack takes precedence, the best way forward is to include the converted XD file into it. Testing... Edit 6: Couldn't get the XD update to work, so I decided to checkout Darkfate's version. It works flawlessly. I copied their pack into the standard translation pack and the added string files for the other languages worked as well. Darkfate's packs include map files so I'll need to study whether we can avoid that. Otherwise we are basically doubling our mission db or "damaging" our hosted versions to make them translatable. Since this mission is so small and probably will never be edited again we can probably use darkfate's version as-is.
  13. Oops, sorry, I forgot about those. I'll work on that soon.
  14. I am curious as to which distributions and tool version are known to work when compiling either the 2.10 source archive or svn trunk. Cmake errors out with both Archlinux and Mint 21 for me. For good measure I will include some information I gathered about these errors, but I just want to be able to successfully build tdm on something. (My end goal is to compile in either pulseaudio or pipewire support for openal if that's possible; even though this thread got my audio working (arch audio subsystem is pipewire{,-alsa,-audio,-pulse} & jack2 ) ) I've also tried compiling against the latest svn trunk, that fails too, although the point in which it fails is slightly different. What do the developers use to build the linux release? System information for the failed builds against the 2.10 archive: System #1: cmake 3.22.1 | gcc 11.3.0 | kernel 5.15.0-56-generic | distro Linux Mint 21 System #2: cmake 3.25.1 | gcc 12.2.0 | kernel 5.15.83-1-lts | distro Arch Linux src archive used: sha256sum thedarkmod.2.10.src.7z 73aa974635293e6ca07396be19901355f8224637bdf3ce73404b8eef74148a1c thedarkmod.2.10.src.7z Build command from root of extracted src: [ -d build ] && rm -rf build mkdir build && cd build && cmake --debug-output --loglevel=DEBUG -DCMAKE_BUILD_TYPE="Release" .. &> cmake.$distro.log && \ make -d --debug=a -j &> make.$distro.log ; cd .. make.mint.log.gz make.arch.log.gz cmake.mint.log.gz cmake.arch.log.gz
  15. I was wondering when you plan to include these subtitles + the ones I made for The Heart of Saint Mattis . It didn't work out that way, but still impressive. 5 missions in 6 years.
  16. There are a few ways to state the version number: Inside darkmod.txt, included in the .pk4. The version number in here is what should be shown ingame in the mission downloader. Mappers can write whatever they want inside the readme.txt included in the .pk4. This is the same as writing a version number into the release thread. There is also the internal version number, which always has to be a whole number. It's entered directly in the admin interface, and only team members can see it. The existence of the last, internal-only number has led to some confusion among mappers. I think I used to put whole version numbers into my darkmod.txt (i.e. v2 or v3), but declare a decimal update (i.e. v1.1 or v1.2) on the forum thread and in the readme.txt. It's also possible to have different version numbers in the darkmod.txt and readme.txt. This is something that should be caught during beta testing.
  17. The real St. Alban was a pagan who became a celebrated religious personality, this All Saints Day 2010 The Dark Mod places its own spin on this mythical figure. Screenshots: Intro: "'Business' has been slow lately, even more so after most of my gear got snatched during a Watch raid... I've since been forced to hit the streets and pick pockets for a living. But my luck was about to change, last night I was approached by a red hooded figure with a proposition... As we sat down in a dark corner of a nearby inn, he told to me that the Builders of St. Alban's Cathedral in the Old Quarter had recently unearthed a discovery that might lead to the final resting place of some saint." " But before I do anything, I need to get my tools and stash from the evidence room at the local watch station." "with the hawks, doves will congregate they will drop honey from the cliffs wine will surge over the earth the sheep will wander harmlessly with the wolf then the wicked will rise, but to retribution" - 'scripture of St Alban' There is a new version out now, see the following thread St Albans Cathedral version 1.6 Build Time: about 2-3 months. Thanks:- Huge respect to the Dark Mod team for such a great mod and for all the hard work they put into it and continue to put into it. Special thanks to Fidcal, Serpentine and others for their help on the forums and to Testing:Ugoliant, Baddcog, Grayman, Lost soul, Bjorn and Baal (for doing all the Vp work in the town. Readables: Ungoliant and Mortemdesino for all awesome work on the readables. Resource: Fids, Grayman, Ungoliant - guis, models & images. Misc: Loren Schmidt - the author of the map I based the cathedral on. Info: # Like Thief2, some things are climable, pipes, wall vines etc.. You can also drop some of the keys, some door that are frobbabe mean there is another way inside - explore u taffer! # Due to TDM being a lot more of a resource hog than T2 I have been forced to limit the number of Ai in the mission, but they have better placement than my last mission. # On all difficulty levels the player starts with vertualy no tools/weapons, there are weapons to be found - read, read, read! # For the love of all that is holy, read the briefing otherwise you will problems completing the mission. Known issues:- # This mission will have less than optimal fps at a few points on the map, mid range DX9 card(X1900/GF7800) or higher required. # On low end PCs I recommend, V-sync is off, AA is off, Aniso is 4x or lower and that any and all background apps are closed.
  18. The Adventures of Thomas: Lucy's Quest Author: gg 2022-06-20 Version: 1.1 Required TDM Version: 2.10 or higher EFX: Yes ============================================================== Cautionary note: This FM needs a strong CPU/GPU combination sufficient to play the more demanding TDM FMs. Just as for many or most of the new FMs being released with the new gfx possibilities opened up it does a world of good to tweak the advanced video settings for the best combination of settings for your PC. For example, on my weaker laptop I set shadows as stencil and soft shadows off. On my desktop I set shadows as maps and soft shadows medium. Bloom off. Ambient occlusion off. Since the FM was built and extensively tested at these settings I believe either should produce a satisfactory experience. ============================================================== Sound Credits: freemusicarchive.org music Aislinn04_-_Aislinn_-_Lovely_Maria freesound.org klankbeeld_horror_1 freesound.org/people/CarlosCarty/sounds/522687/ om_aum_mantra_male_chant_bb freesound.org/people/Still%20Frames/sounds/37720/ still_frames freemusicarchive.org music The_Mind_Orchestra_Bruwynn tecknic.bandcamp.com/album/the-dark-mod-ambience-and-atmospheres Zack Bower Ancient_2, _3, _5. Solemn_1 freesound.org/people/Jagadamba/sounds/256006/ group_chanting_om_aum ============================================================== Thanks to: The TDM/DR developers for producing such a beautiful machine. The keepers of the wiki pages which are looking very good these days. Sotha for his invaluable tutorial "The Bakery Job". This tutorial is a jewel. Springheel for creating an atmosphere. Bikerdude for... ideas how to do things and scale things. Playtesters and advisors Dragofer, wesp5, datiswous, shadow. datiswous pointed out some immersion breaking lighting faults, so I got the idea. wesp5 gave me some good advice on how to tell the story - so it's more understandable. Dragofer gave me some early advice on optimizing the mission, which gave me a couple of months work with results that are well worth it. Dragofer wrote a script which optimizes CPU calculations of AI interactions. Shadow helped by testing the script, as well as testing other attempts at optimization. With the script in action only the minimal of AI interactions in the player's vicinity are called to be calculated. The script provides a general benefit but the results vary from computer to computer. The script targets a CPU task. ============================================================== Gameplay: Notes attached to objectives contain essential information on gameplay, on who the good/bad guys are, on what the player must do, and why. Mandatory objectives are linear, directing the player along a route to the goal. Optional objectives can be completed anytime. ============================================================== CAUTION: spiders, rats, undead, necrophiles, cannibals, psychotic thugs, and some generally unsavory characters. No snakes, though. The spiders ate them. ==============================================================
  19. That is one reason. That is 2 more reasons. You'd like a script that, if you had to run it again, would "do the right thing". Unfortunately, that right thing is very hard to program, and needs IMHO to be both bidirectional and with a better method of string version control, to support both the FM author's updates and potentially multiple translators. Yes, another reason. Currently, it is my understanding that updating an FM (from the non-converted copy) and running the conversion script again causes mis-alignment of newly-generated #str values and previous .lang #str values. Another important cause of "nobody is making these language packs" is that Dark Radiant at best tolerates converted FMs. It offers no special translation support, as expressed in this code comment: "...we don't have any support for parsing the mod-specific translation data...." [from DR's DifficultySettingsManager.cpp]. That's where we are now. So officially give up on FM Western translations? Or improve the #str system to make it work for everyone? Or invent a new system? A new system. What would that look like to the FM author? To a non-author translator
  20. Yet another breaking change, I'm afraid: 6346 Sounds have a bunch of parameters: minDistance maxDistance volume shakes soundClass The base value for each parameter is set in sound shader. However, it can be overridden with a different value in spawnargs (e.g. "s_volume" "-10") or in C++ engine code with SetSoundVolume (used extensively for footsteps). Unfortunately, Doom 3 engine has a special case: setting some parameter to zero means it will not override the base value. So there is no way to override sound volume with 0, because setting zero would mean "use value from sound shader", while setting 0.1 or -0.1 would mean "use volume = 0.1 or -0.1". This behavior causes confusion. It is especially bad when volume is set programmatically, because e.g. volume of player footsteps is computed as a sum of many modifiers (run, crouch, creep, in water, etc.) and it is hard to be sure you don't get zero sum in the end. The idea is to fix this mess and add a "don't override" special value in the system. Speaking of spawnargs, it would work like this: "s_volume" "13.4" = override with value 13.4 "s_volume" "0" or "s_volume" "0.0" = override with zero "s_volume" "" (empty string) = don't override Right now there are tons of zero values set in these spawnargs. It is not clear where the author intended to override with zero, and where he wanted to drop inherited override and use base value. I guess for compatibility reasons I'll have to replace spawnargs "s_volume" "0" with "s_volume" "" in all missions.
  21. Introduction A project is underway, led by Geep, to eventually provide English language subtitles (or if you prefer, "closed captions") for all the non-story phrases (e.g., barks) of the stock AI characters. The non-story phrases are identified by the "verbosity speech" subtitle tag. The hope is that these subtitles would be distributed as part of the future TDM 2.12 core and so available to all FMs, both old and new. Since there are 5-10K such phrases in total, this project will take a while. Let me know if you'd like to help. This forum thread can be used for project coordination, and to provide info about - What subtitle sets (e.g., for particular AI) are underway and completed Emerging tools or methods for bulk testing Style guidance for TDM subtitle authors. To support this project, a style guide will be developed as experience accumulates. While motivated by providing some consistency to English speech-tagged subtitles, it may be of some interest to FMers creating story-tagged subtitles, and those subtitling in other TDM-supported languages. Potential improvements to TDM's subtitling system - particularly those that would involve engine/GUI changes - can be discussed in this companion thread: Subtitles - Possibilities Beyond 2.11 Current Status - Subtitles for Barks All TDM vocal sets planned for TDM 2.12 have been delivered. New: Fixup Needed to Run These Under 2.12 Beta 3 The Thug - Update May 6, 2023 released as testSubtitlesThug2 FM. This takes advantage of new 2.12dev features and changes to style guidelines. The Lord - Update May 4, 2023 released as testSubtitlesLord2 FM The Wench - Two postponed April versions - Nov 25, 2023 released as testSubtitlesWenchOriginal and testSubtitlesWenchPatched FMs. Two versions because of Bugtracker 6284. IMPORTANT: See final version at end of this list, released Jan. 14, 2024. The Young Builder (Builder 4) - Update May 30, 2023 released (again) as testSubtitlesYoungBuilder FM. (Corrects error in briefing syntax of original May 17 release.) Average Jack - June 8, 2023 released as testSubtitlesJack FM. The Pro - June 23, 2023 released as testSubtitlesPro FM. The Maiden - July 8, 2023 released as testSubtitlesMaiden FM The Grumbler - July 24, 2023 released as testSubtitlesGrumbler FM The Mature Builder (Builder 3) - August 15, 2023, released as testSubtitlesMatureBuilder FM The Lady (aka Noblewoman) - Sept 9, 2023, released as testSubtitlesLady FM The Moor - Sept 14, 2023, released as testSubtitlesMoor FM The Commander - Sept 30, 2023, released as testSubtitlesCommander FM The Simpleton - Oct. 21, 2023, released as testSubtitlesSimpleton FM Builder 1 & 2 (shared vocal set) - Nov. 8, 2023, released as testSubtitlesBuilder1and2 FM The Critic - Nov. 25, 2023, released as testSubtitlesCritic_FM Manbeast - Dec. 10, 2023, released as testSubtitlesManbeast FM NEW! Lady02 - Dec 21, 2023, released as testSubtitlesLady02 FM. Assisted by datiswous. NEW! The Drunk - Jan 6, 2024, released as testSubtitlesDrunk FM. Assisted by MirceaKitsune. NEW! The Cynic - Jan. 13, 2024, released as testSubtitlesCynic FM. Incorporates early demo subtitles by Dragofer. NEW! The Wench, Final Revision - Jan. 14, 2024, released as testSubtitlesWenchFinal FM . Assisted by Dragofer. See also original May version (released in November) in the list above. All TDM vocal sets planned for TDM 2.12 have been delivered. Thanks, @nbohr1more, for integrating these into the release. All AI vocal sets, including additional ones for future consideration - perhaps as "verbosity effects" - are listed here. Current Status - Utilities buildSubtitleShader.exe - Latest release of April 10, 2023. This program fabricates a TDM sound shader file specifically for the testSubtitles... series of FMs used here. It does so by wrapping each sound file name in a directory into a sound shader with uniform incremental naming. While limited to a single directory, the latest release simplifies merging runs from multiple directories. @datiswous reports that this Windows console program also works under Linux/wine, where it is used with similar "testSubtitle..."-derived FMs for verbosity "story" subtitling. checkDurationsInSRT - May 6, 2023 Update (bug fix) This Win/console program scans a directory for .srt files, examines the subtitles, and warns about those phrases/messages that are potentially too short or too long in time, or that seem to require too high a reading rate, expressed in characters per second. It also looks for within-file subtitle messages that overlap in time. soundDurationsCSV.exe - March 7, 2023 Release This Windows console program scans a directory of sound files, reporting their names and (using pre-installed ffprobe) durations with millisecond resolution. The resulting .csv file can then be imported into a custom Excel spreadsheet for subtitle editing. For more, see also Feb 20th comments . findTooLongSubtitles.exe - Minor update, June 23, 2023 Release This Win/console program scans a directory for .subs and .srt files, checks the length in characters of each subtitle line, and reports those that exceed a specified maximum. analyzeFieldWidth of April 27, 2023 (release not scheduled; too idiosyncratic). Used to determine, for 12pt Carleton font, and a representative sampling of bark subtitles, how many characters might reasonably fit within a given gui field width. Later, parts of this code were used to build calcStringWidth.exe discussed next. calcStringWidth.exe - Oct. 11, 2023 Release. Calculates the display width of an input string, for 4 candidate subtitle fonts Carleton and Stone, uncompressed or 16:9 compressed. statsForSubtitles - June 25, 2023 Release. Starting with The Pro vocal set, this Windows console program automates the gathering and reporting of the basic statistics included with the announcement of every vocal set release in this forum thread. Current Status - Spreadsheets and Related Explanatory Documents, including Workflow and Templates Work by Geep on each vocal set starts with instantiation of a pre-configured Excel spreadsheet. This is used for subtitle editing and to do automatic calculations to help manage constraints and decision making. The announcement of each AI subtitle release here includes a link to the corresponding spreadsheet. At first, the spreadsheet's columns, formats, calculations, and highlighting (and its distillation into template form) would change quite a bit between each AI. As of June, 2023 and AverageJack, it has largely stabilized, and is now documented: June 10 Documents Explaining Workflow and Excel Spreadsheet/Template (for AverageJack) The v5 template was used for vocal sets from June's Average Jack to November's The Critic. Further clarifications are now available: Dec 7 Update of the "Explained" Doc for Spreadsheet Template v5 Subsequent vocal sets, through to 2024's The Cynic, use template v6: NEW! Jan. 10, 2024 "Explained" Doc for Spreadsheet Template v6 Current Status - Style Guide for Barks As of Sept 2, Subtitle Style Guide - Part 1 is now available. NEW! As of Jan 16, 2024: Subtitle Style Guide - Part 2 with more discussion and references. Current Status - Third-Party Tools For editing of "story" SRT files, datsiwous found "kdenlive" particularly helpful [to do: link to how-to below]. Geep has been working with the simpler, audio-only "Cadet" for barks.
  22. Thanks for the feedback @Rio_Walker As mentioned in other comments in this thread, the optional objective was meant to be for players who enjoy exploring every inch of the map. If all you want to do is complete the mission via the primary objective it's pretty straightforward. It was also meant to be sort of 'open world' in that if you explore everywhere you pick up little hints and bits and pieces and put them together at the end to solve that objective with. It wasn't meant to spoon feed the player. But again maybe not everyone enjoyed that approach. It was also kind of a knee-jerk reaction to players not liking 'linear' missions. But it seems some people still do like that And yeah, some players don't like big maps. I get that. I don't like playing them myself a lot of the time The issue with the bow crash is a known issue (not just with this mission) which we haven't got to the bottom of unfortunately:
  23. @snatcher I understand that when you feel your work doesn't live up to your goals that you don't want it out in the wild advertising your own perceived shortcomings but that leads to a troubling dilemma of authors who are never satisfied with their work offering fleeting access to their in-progress designs then rescinding them or allowing them to be lost. When I was a member of Doom3world forums, I would often see members do interesting experiments and sometimes that work would languish until someone new would examine it and pickup the torch. This seemed like a perfectly viable system until Doom3world was killed by spambots and countless projects and conceptual works were lost. I guess what I am trying to say is that mods don't need to be perfect to be valuable. If they contain some grain of a useable feature they might be adapted by mission authors in custom scenarios. They might offer instructive details that others trying to achieve the same results can examine. It would be great if known compelling works were kept somewhere safe other than via forum attachments and temporary file sharing sites. I suppose we used to collect such things in our internal SVN for safe keeping but even that isn't always viable. If folks would rather not post beta or incomplete mods to TDM's Moddb page, perhaps they would consider creating their own Moddb page or allow them to be added to my page for safe keeping. Please don't look at this as some sort of pressure campaign or anything. I fully understand anyone not willing to put their name next to something they aren't fully happy with. As a general proviso, ( if possible \ permitted ) I just want to prevent the loss of some valuable investigations and formative works. The end of Doom3world was a digital apocalypse similar to the death of photobucket. It is one of my greatest fears that TDM will become a digital memory with only the skeletons of old forum threads at the wayback archive site.
  24. When talking about a possible libre version of TDM (https://forums.thedarkmod.com/index.php?/topic/22346-libre-version-of-tdm/) it seems we believe all media/gamedata included in TDM is licensed CC-BY-NC-SA. I am not familiar with how the process of adding new media/gamedata works today; I have seen files uploaded to the bugtracker which developers then commit to SVN, but I don't know if there are other ways. It may be a good idea to implement a process that when new components (media/gamedata included in TDM) are added, the contributor is asked to be explicit about the license (a choice which may defaults to their previous preference, for usability). It won't fix the past, but it may help in the future. This will make it easy for contributors to add future data under a more permissive license if they choose. Libre media can be added and its license can be tracked, rather than assumed to be CC-BY-NC-SA. I suggest looking at how Wikimedia Commons has implemented this: the contributor state the source and license at the time the data is uploaded. This can be done either by providing urls or by saying "It's my work and I choose this licsense". The first step could be to add a way to keep track of each filepath in SVN, author, license, sources. Start by setting the value for each file's license to "(default/legacy CC-BY-NC-SA)". Possible implementations for a user interface for new additions are: * Use our own wiki, which runs Mediawiki (same as Wikimedia Commons). I see several benefits of this, but we also need a way to accept uploads of batches, not just single files. * Look at how other open source projects have solved this. There may be more appropriate solutions available. ... but I'll leave the implementation open. Suggestions are very welcome! If the author of each file already in SVN can be tracked, then it may be possible that the author is willing to give a blanket permission for all their past files in one statement, and all their files in SVN can be updated in one commit. A productive contributor willing to release some of their work under a more permissive license could make a big change. If Dark Radiant would support letting mappers search media/gamedata by license (does it already?), it would make it easier for mappers to create a completely libre mission, which would help facilitate a TDM-libre release. If I understand things correctly. This post does not address all details and it may contain misunderstandings or assumptions, but it's a start. Also relevant: * Is there a compiled and maintained list of recommended or deprecated resources for mappers to use? * https://forums.thedarkmod.com/index.php?/topic/20311-external-art-assets-licensing/
  25. Reproduced with 3.9.0 on Ubuntu. This is the backtrace: ASSERT INFO: ../src/unix/threadpsx.cpp(1678): assert "This() == this" failed in TestDestroy(): wxThread::TestDestroy() can only be called in the context of the same thread BACKTRACE: [1] wxThread::TestDestroy() [2] wxutil::ThreadedResourceTreePopulator::ThrowIfCancellationRequested() [3] decl::DeclarationManager::renameDeclaration(decl::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [4] skins::Doom3SkinCache::renameSkin(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [5] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) [6] wxEvtHandler::SearchDynamicEventTable(wxEvent&) [7] wxEvtHandler::TryHereOnly(wxEvent&) [8] wxEvtHandler::ProcessEventLocally(wxEvent&) [9] wxEvtHandler::ProcessEvent(wxEvent&) [10] wxEvtHandler::SafelyProcessEvent(wxEvent&) [11] wxTextEntryBase::SendTextUpdatedEvent(wxWindow*) [12..34] <internal GTK stuff> [35] wxGUIEventLoop::DoRun() [36] wxEventLoopBase::Run() [37] wxDialog::ShowModal() [38] wxutil::DialogBase::ShowModal() [39] cmd::CommandSystem::executeCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<cmd::Argument, std::allocator<cmd::Argument> > const&) [40] cmd::CommandSystem::execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [41] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) [...] <Other GTK/wxWidgets stuff>
×
×
  • Create New...