Search the Community
Searched results for '/tags/forums/xdata/' or tags 'forums/xdata/q=/tags/forums/xdata/&'.
-
Hi folks, and thanks so much to the devs & mappers for such a great game. After playing a bunch over Christmas week after many years gap, I got curious about how it all went together, and decided to learn by picking a challenge - specifically, when I looked at scripting, I wondered how hard it would be to add library calls, for functionality that would never be in core, in a not-completely-hacky-way. Attached is an example of a few rough scripts - one which runs a pluggable webserver, one which logs anything you pick up to a webpage, one which does text-to-speech and has a Phi2 LLM chatbot ("Borland, the angry archery instructor"). The last is gimmicky, and takes 20-90s to generate responses on my i7 CPU while TDM runs, but if you really wanted something like this, you could host it and just do API calls from the process. The Piper text-to-speech is much more potentially useful IMO. Thanks to snatcher whose Forward Lantern and Smart Objects mods helped me pull example scripts together. I had a few other ideas in mind, like custom AI path-finding algorithms that could not be fitted into scripts, math/data algorithms, statistical models, or video generation/processing, etc. but really interested if anyone has ideas for use-cases. TL;DR: the upshot was a proof-of-concept, where PK4s can load new DLLs at runtime, scripts can call them within and across PK4 using "header files", and TDM scripting was patched with some syntax to support discovery and making matching calls, with proper script-compile-time checking. Why? Mostly curiosity, but also because I wanted to see what would happen if scripts could use text-to-speech and dynamically-defined sound shaders. I also could see that simply hard-coding it into a fork would not be very constructive or enlightening, so tried to pick a paradigm that fits (mostly) with what is there. In short, I added a Library idClass (that definitely needs work) that will instantiate a child Library for each PK4-defined external lib, each holding an eventCallbacks function table of callbacks defined in the .so file. This almost follows the idClass::ProcessEventArgsPtr flow normally. As such, the so/DLL extensions mostly behave as sys event calls in scripting. Critically, while I have tried to limit function reference jumps and var copies to almost the same count as the comparable sys event calls, this is not intended for performance critical code - more things like text-to-speech that use third-party libraries and are slow enough to need their own (OS) thread. Why Rust? While I have coded for many years, I am not a gamedev or modder, so I am learning as I go on the subject in general - my assumption was that this is not already a supported approach due to stability and security. It seems clear that you could mod TDM in C++ by loading a DLL alongside and reaching into the vtable, and pulling strings, or do something like https://github.com/dhewm/dhewm3-sdk/ . However, while you can certainly kill a game with a script, it seems harder to compile something that will do bad things with pointers or accidentally shove a gigabyte of data into a string, corrupt disks, run bitcoin miners, etc. and if you want to do this in a modular way to load a bunch of such mods then that doesn't seem so great. So, I thought "what provides a lot of flexibility, but some protection against subtle memory bugs", and decided that a very basic Rust SDK would make it easy to define a library extension as something like: #[therustymod_lib(daemon=true)] mod mod_web_browser { use crate::http::launch; async fn __run() { print!("Launching rocket...\n"); launch().await } fn init_mod_web_browser() -> bool { log::add_to_log("init".to_string(), MODULE_NAME.to_string()).is_ok() } fn register_module(name: *const c_char, author: *const c_char, tags: *const c_char, link: *const c_char, description: *const c_char) -> c_int { ... and then Rust macros can handle mapping return types to ReturnFloat(...) calls, etc. at compile-time rather than having to add layers of function call indirection. Ironically, I did not take it as far as building in the unsafe wrapping/unwrapping of C/C++ types via the macro, so the addon-writer person then has to do write unsafe calls to take *const c_char to string and v.v.. However, once that's done, the events can then call out to methods on a singleton and do actual work in safe Rust. While these functions correspond to dynamically-generated TDM events, I do not let the idClass get explicitly leaked to Rust to avoid overexposing the C++ side, so they are class methods in the vtable only to fool the compiler and not break Callback.cpp. For the examples in Rust, I was moving fast to do a PoC, so they are not idiomatic Rust and there is little error handling, but like a script, when it fails, it fails explicitly, rather than (normally) in subtle user-defined C++ buffer overflow ways. Having an always-running async executor (tokio) lets actual computation get shipped off fast to a real system thread, and the TDM event calls return immediately, with the caller able to poll for results by calling a second Rust TDM event from an idThread. As an example of a (synchronous) Rust call in a script: extern mod_web_browser { void init_mod_web_browser(); boolean do_log_to_web_browser(int module_num, string log_line); int register_module(string name, string author, string tags, string link, string description); void register_page(int module_num, bytes page); void update_status(int module_num, string status_data); } void mod_grab_log_init() { boolean grabbed_check = false; entity grabbed_entity = $null_entity; float web_module_id = mod_web_browser::register_module( "mod_grab_log", "philtweir based on snatcher's work", "Event,Grab", "https://github.com/philtweir/therustymod/", "Logs to web every time the player grabs something." ); On the verifiability point, both as there are transpiled TDM headers and to mandate source code checkability, the SDK is AGPL. What state is it in? The code goes from early-stage but kinda (hopefully) logical - e.g. what's in my TDM fork - through to basic, what's in the SDK - through to rough - what's in the first couple examples - through to hacky - what's in the fun stretch-goal example, with an AI chatbot talking on a dynamically-loaded sound shader. (see below) The important bit is the first, the TDM approach, but I did not see much point in refining it too far without feedback or a proper demonstration of what this could enable. Note that the TDM approach does not assume Rust, I wanted that as a baseline neutral thing - it passes out a short set of allowed callbacks according to a .h file, so language than can produce dynamically-linkable objects should be able to hook in. What functionality would be essential but is missing? support for anything other than Linux x86 (but I use TDM's dlsym wrappers so should not be a huge issue, if the type sizes, etc. match up) ability to conditionally call an external library function (the dependencies can be loaded out of order and used from any script, but now every referenced callback needs to be in place with matching signatures by the time the main load sequence finishes or it will complain) packaging a .so+DLL into the PK4, with verification of source and checksum tidying up the Rust SDK to be less brittle and (optionally) transparently manage pre-Rustified input/output types some way of semantic-versioning the headers and (easily) maintaining backwards compatibility in the external libraries right now, a dedicated .script file has to be written to define the interface for each .so/DLL - this could be dynamic via an autogenerated SDK callback to avoid mistakes maintaining any non-disposable state in the library seems like an inherently bad idea, but perhaps Rust-side Save/Restore hooks any way to pass entities from a script, although I'm skeptical that this is desirable at all One of the most obvious architectural issues is that I added a bytes type (for uncopied char* pointers) in the scripting to be useful - not for the script to interact with directly but so, for instance, a lib can pass back a Decl definition (for example) that can be held in a variable until the script calls a subsequent (sys) event call to parse it straight from memory. That breaks a bunch of assumptions about event arguments, I think, and likely save/restore. Keen for suggestions - making indexed entries in a global event arg pointer lookup table, say, that the script can safely pass about? Adding CreateNewDeclFromMemory to the exposed ABI instead? While I know that there is no network play at the moment, I also saw somebody had experimented and did not want to make that harder, so also conscious that would need thought about. One maybe interesting idea for a two-player stealth mode could be a player-capturable companion to take across the map, like a capture-the-AI-flag, and pluggable libs might help with adding statistical models for logic and behaviour more easily than scripts, so I can see ways dynamic libraries and multiplayer would be complementary if the technical friction could be resolved. Why am I telling anybody? I know this would not remotely be mergeable, and everyone has bigger priorities, but I did wonder if the general direction was sensible. Then I thought, "hey, maybe I can get feedback from the core team if this concept is even desirable and, if so, see how long that journey would be". And here I am. [EDITED: for some reason I said "speech-to-text" instead of "text-to-speech" everywhere the first time, although tbh I thought both would be interesting]
- 25 replies
-
- 3
-
-
Question: Is it possible to create a gui and in it display different sections of an xdata file but in different places? I can't really directly find this info in the wiki.
-
Is there something wrong with the forums lately, or is it my browser? I've been having trouble formatting posts, and just now I couldn't format anything at all.
I'm using Vivaldi.
Usually I have to: select text, click bold, nothing happens, select again, click bold, then it works.
Same for other stuff, like creating spoilers, bullet points, links. Nothing works the first time.
-
I have no problem. I use Firefox. @Zerg Rush also uses Vivaldi. Have you tried without extensions, or in another browser?
(btw. bold, italic and underline have shortcut keys: Ctrl B, Ctrl I and Ctrl U, you could try that)
-
-
Author note: It's hard to believe it's already been a year since Act 1 came out! Well during this mission the player will be following Corbin into the Grimwood district to followup on a lead from last night (Act 1) .. the mysterious tablet! This mission is my first time including full EFX support as well as a HD briefing video file, additionally a new script has been added crafted by the talented Obsttorte which has loot flying towards the player when you pick it up. On a level design front I have tried to change things up a bit by really catering towards a number of play styles, this mission can be completely ghosted or you can use the tools at your disposal to wreak havoc on the citizens of Northdale. For the first time I have tried to create more sandbox environments which don't offer clear answers handed directly to you, so if you're having trouble figuring something out try a different method. This mission takes between 1 - 2 hours to finish depending on the difficulty you play on and how thoroughly you explore. I hope you enjoy your night in Northdale! - Goldwell Voice actors Fen Phoenix Goldwell Random_taffer Yandros Beta testers Amadeus Boiler's Hiss Cambridge Spy Chakkman Crowind Epifire Kingsal SquadaFroinx Custom Assets Andreas Rocha DrK Epifire Grayman Kingsal MalachiAD Obsttorte Sotha Springheel SquadaFroinx Purgator With special thanks to Epifire for creating a large collection of custom models, Grayman for helping out with coding, Kingsal for drawing the ingame map and Moonbo for his script revision on the briefing video. Available via in-game downloader MIRROR File Size: 417 mb EDIT: If you are having performance issues please consult this post by Nbohr1more which may address your issue http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/page-2?do=findComment&comment=436271
-
Currently readme's are txt files, but when they're longer, they can't be displayed correctly in the Notes section of a mission listing. If they would be xData files, scroll-buttons can be added so that the whole file can be properly read. This is under the asumption that it cannot be done with unformatted txt files. My idea (if possible) is to support both formats, so readme's of current missions still work correctly. Otherwise I don't see it happening soon, because all the txt based readme's have to be converted, so a program has to be written to do that job in a non-painful way. I orinally posted this idea here:
-
The Dark Mod 2.13 has been released! A new era in accurate AI Vision! When id Software released the Doom 3 modding SDK, The Dark Mod team saw the potential for something more than a multi-player cops vs robbers game like Thievery UT. The sheer amount of access to essential game-play systems meant that a true Thief style experience could potentially be created. One of the first things the team did was to investigate how a light-gem system could be implemented. Having a good way for both the player and AI to know when the player is visible to others is a crucial part of the Thief experience so if we couldn’t build it then the dream of a Thief style experience was over. Fortunately, there were enough parts of the AI visual logic and more than a few stub pieces of the Render code that gave us the ability to build a robust system. The downside of the light-gem system was performance. Even though we did our best to limit the viewport and resolution of the light-gem image captures, often the light-gem would cut FPS in half ( or less ). This was pretty painful, especially since most computers could just barely run vanilla Doom 3 at acceptable FPS. After this system was fully functional, other aspects of AI vision were investigated. Obviously, we could not afford to run the light-gem render for every object or body the AI might see so it was decided that the AI would do a more simplified light-gem calculation for things other than the player. This meant that ( to the AI visual scan ) all light volumes would be either cubes or pyramids with perfect exponential falloff. We would run a line-of-sight check to the objects then ( if it hit ) calculate the pixel brightness by the location of the spot in relation to the center of the light(s). This was far cheaper than rendering the whole scene but heavily impacted accuracy. Many solutions were proposed to improve things but a solution evaded us for years. 2.13 changes things! Now we have a "stochastic sampler" model that does regular measurements of the actual light volume pixels and builds a "running average" of how illuminated different entities are. The days of seeing knocked-out AI in the middle of a bright spotlight get ignored are over. Now all AI and loot entities (etc) essentially have their own light-gem and it performs excellently! Magnificent Mission Management! Daft Mugi has drastically improved the GUI menus for mission management. The Dark Mod mission list and in-game downloader now have a search filter window that follows modern conventions of reducing the listed items as each new letter eliminates a possible matching mission name. Both lists can be sorted by actual name ( The Rats Triumphant ) or Chicago Style ( Rats Triumphant, The ). Additional mission details ( readme data ) can now be scrolled so players can see more information about the mission without having to navigate to the darkmod/fms folders. The menus have also been tuned with smaller font sizes for more practical mission listing and have been hardened against buggy order of operations issues so that you will be far less likely to encounter strange issues or crashes when downloading and installing missions. Parallax Occlusion Mapping! Stgatilov has added the oft requested POM feature to the latest Dark Mod release! WellingtonCrab has coordinated with him to provide examples and check the functionality and quality. Now The Dark Mod is ready to offer a quantum leap in perceived geometric detail with all sorts of surfaces realistically showing 3D parallax rather than the flatter looking normal maps we usually offer. WellingtonCrab also created many texture variants that are tuned to look better with POM enabled. Other Graphics Goodies! Now cubemaps \ environment maps respect more stage keywords. This means that faked reflections on water shaders can now move in relation to the water texture movement offering a more convincing illusion! Subviews ( cameras, portals, mirrors, xray, etc ) can now be nested. You can now have a skybox render in a camera view, etc. Volumetric lights and particles now render in mirrors! Alpha-tested surfaces get alpha shadows in Shadow Maps mode. Tone-mapping now supports range compression to prevent unwanted overbright areas. Arcturus has introduced some new metal materials that use improved cubemaps as well as skyboxes with clouds that use POM! Stability and Performance! The console variable system ( CVAR ) has been improved to be thread safe. This should resolve some rare crashes that involve weapon scripts that rely on CVAR values. We now automatically detect the number of CPU cores and allocate Jobs based on the detected specifications. Level loading has been given more parallel execution optimizations including optimizations for loading audio samples in parallel. Uncapped FPS is enabled by default so Linux players will not have a poor first time experience and many audio and video playback timing bugs that occur only in classic capped mode are avoided. Finally, Linux vsync support has been greatly improved. Improved Training Mission! The Training Mission is supposed to help players understand the basics of Dark Mod game-play and controls. It was created to coincide with The Dark Mod v1.0 and was not significantly altered until TDM v1.08 ( when Bikerdude did some texture replacement for 2.0 standalone and improved the overall visuals ). As such, many new game-play features that were added since 1.0 were never included in the mission. Now the mission has been upgraded to include more game-play features such as the Vine Arrow as well as getting further visual upgrades and EFX Reverb! Drunken AI! Now that the AI have better visual accuracy, Amadeus decided to balance things out by fixing many of the broken behaviors of Drunken AI so that they are more reliable and consistent for use in missions by default ( no need to extensively customize the defs or use scripting to improve them ). Potions! Dragofer and Amadeus have completed the work on the Slowfall potion originally prototyped by VanishedOne. They also incorporated the invisibility potion by Kingsal ! These now have pre-defined slots in the gameplay menu as well as the default shop menu design. Assets Galore! Along with new POM textures, we now have: A new modular pipe set A new Lampion entity Some new Factory Machine entities Ornate wood and stone relief textures A new AI praying animation A new AI smoking animation And many fixes or improvements to existing assets EFX Reverb Location Preset! Frost_Salamander took some time away from his continued work on the excellent “The Lieutenant” series missions to make EFX reverb setup easier for himself and other mission authors. You can now add EFX preset spawnargs to location entities rather than having to use the EFX def file. Translation Packs! Between TDM 1.06 and 2.0 Tels and the translating community started translating many missions but these translations required that the original mission be altered in a way that made it harder for the mission authors to revise. That meant that translation packs were in limbo being hosted by 3rd party sites \ forums along with their orphaned old missions. The translators over at the Darkfate forums came up with an solution by including not only the translation strings in the translation pack but also the altered map files, GUI defs, etc that had translation work done to them. This would leave the original mission untouched but allow translation packs to override some parts. We have gone through the old archives of these translations and have reworked them to work with the latest version of TDM (and the associated missions). Most of the translations are Russian ( due to the continued work of the Darkfate people ) but many of the early TDM missions also have German, Italian, French, etc translations too. Also Nolok contributed a brand new Catalan menu translation! Subtitles! Datiswous has been creating story subtitles for many of the existing missions in the TDM mission database. Most authors have incorporated these into their official releases, otherwise players can still add them to the FM folder. A detailed list of changes can be seen here: https://wiki.thedarkmod.com/index.php?title=What's_new_in_TDM_2.13 To UPDATE, simply run the tdm_installer.exe file in your darkmod folder. Note that tdm_update.exe is no longer supported, but you can download the new installer from the Downloads page if you don’t have it yet. Please be aware that old saved games will not be compatible with 2.13, so finish any missions you might be in the middle of first! Also, some missions created prior to 2.13 may need to be updated so they will be playable in 2.13. Before upgrading, set TDM to use one of the built-in missions ( Training Mission, A New Job, Tears of St Lucia ) then use the in-game mission downloader to check for updates
-
- 33
-
-
-
FM Packer - a helper python script for packing TDM missions
Skaruts replied to Skaruts's topic in TDM Editors Guild
During this week I managed to bring this up to version 0.7.2, and it's probably gonna remain where it is while I work on the gui tool (and other stuff), unless I or someone else finds any severe problems. https://github.com/Skaruts/tdm_fm_packer/releases I added a command --check [materials, skins, xdata, entities, etc] for checking for files that have no definitions in use, or optionally (-d) for individual unused definitions. There's still stuff missing, but I think it's already a good start. The same command with a different parameter can also check the mission's files for problems, like uppercase characters on the mission's folder name, and usage of spaces or special characters on file paths. It may take a couple seconds to parse large maps and retrieve information. My mission takes 0.8 secs, but parsing Iris takes about 3.8 seconds. My pc is old and slow, though. I'm considering maybe adding a cache to it, so the map doesn't have to be parsed every single time. -
I think you get this when you add a readable and don't reload the xdata if you have the game running. If you type the console command 'reloadxdata' that should fix it.
-
Never mind, I figured it out. I even worked out how to assign the xdata to it. Added a section to the Wiki. Comments, corrections, and readability improvements very welcome.
-
How can I make a readable for sale in the shop? It seems like it should be fairly similar to the purchasable in-game map, but the following isn't working: entityDef atdm:hot_tip { "inherit" "atdm:readable_mobile_scroll01_rolledup" "editor_usage" "hot tip" // THIS ONLY SHOWS IN ENTITY INSPECTOR "inv_name" "Hot Tip" // SHOWS IN PLAYER'S INVENTORY. "inv_icon" "guis/assets/hud/inventory_icons/scroll_icon.tga" "gui" "guis/scroll_everett_hand.gui" } entityDef ShopItem_hot_tip { "inherit" "atdm:shopitem_base" "itemClassname" "atdm:hot_tip" "displayName" "Hot Tip" "displayDesc" "An acquaintance has some useful information... for a price." "image" "guis/assets/hud/inventory_icons/scroll_icon.tga" } Nothing shows up in the shop. Clearly I'm missing some crucial point. Also, how would I assign the xdata to the scroll once I have the purchasing part working?
-
I did a bit of digging through the forum settings and I could not find any configuration for this. Looking at the underlying code, the comment count per page is hardcoded to 3. I could update the code, but I'm reluctant to do so as this would need to be re-applied after each update. That being said, it looks like we should start to brace for status updates being removed as Invision Forums v5 no longer supports status updates (we're still on v4.x): https://invisioncommunity.com/deprecation-tracker/status-updates-r19/ https://invisioncommunity.com/forums/topic/480551-status-updates-have-been-removed-in-v5/
-
And some info can be found on this forum topics and wiki. Wiki article: https://wiki.thedarkmod.com/index.php?title=Parallax_mapping Topic: https://forums.thedarkmod.com/index.php?/topic/22574-experimental-support-of-parallax-mapping-in-213/
-
Oohhhh, the day has come! This old lurker releases another creation of his deranged mind...! What has he in store? Does it involve sunlight and pollen and hayfever? Will it involve strange towers and priests with bad breath? Naah, just some mediocre airship type of mission, aimed at the Anniversary mapping contest! I have a lengthy/humourly rant/lore for some of the building process for anyone interrested, in spoiler tags. According to DarkRadiant I have worked 570 hours on this, and that doesn't take into account all hours of coding and scripting. This feels like an insanely huge amount of mapping time for this small mission but I try not to judge myself. DarkRadiant says 570 so...I say thanks to all calm hours at the night shift at work where I could sit and script and write readables. And I also humbly bow myself to the scripting genuses that are on the forums. A special thanks to my girlfriend who (almost) always lets me talk about my projects. She has also written some of the readables and voiced some recordings in the mission. Thanks to Dragofer, Mirceakitsune and Melchior for much needed scripting help. Thanks to YouTube channels BGM President and Sound Effects where I've borrowed some music and sound effects. Thanks to my betatesters; nbohr1more, Bergante, datiswous, Wesp5, nightmare, Jaxa and Cambridge Spy. And a big thank you to the mod in general for still being alive and supportive! ########################################## MISSION RELATED STUFF ########################################## On an airship, heading for Flowerdale a lot of strange things can happen. As some people guzzle down liquor in the bar, some others skulk around in the shadows. Certain people cannot be trusted and there are even those that kill for a living. Somebody may or may not work for foreign powers. But everyone yearns for those shiny pennies. There are some strange things in the cargo, huge coffers that can hold bodies, alive and dead. This story may unfold in several different ways; Three characters can be chosen; Zacharias the thief, Oliver Mortimer, the assassin or Rupert Peabody, youngling of the Wizlas woodfolk. DOWNLOAD LINK https://drive.google.com/file/d/10w_SJSBAxxVFYTwPjJhIo48fEzvuTo1M/view?usp=sharing
- 80 replies
-
- 17
-
-
-
Hello taffers, the people over at TTLG forums have started a speedbuild game jam. 1st Thief Speedbuild Jam It's not a contest, and you have a tentative submission date of Dec 1, to get a mission built for T1-3 or TDM. Looks fun, and I'm going to participate too.
-
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.
-
What about reading the text string from xdata? Quote from wiki tdm script reference: scriptEvent float loadExternalData(string declFile, string prefix); Load an external xdata declaration.
-
This might be frowned onto by tdm mappers/veterans, but I find it strange that it's considered ok to use text inside entities, which can then be found inside map files. That in general seems badly organised. Like for example with text decals: https://wiki.thedarkmod.com/index.php?title=Text_Decals_for_Signs_etc.#The_Decal Personally I think xdata could/should be used for all instances of text (except maybe darkmod.txt and subtitles), including readme files and GUI files. Or at least some kind of external text file. Could be something else, but the xdata format seems good and supported. So the sign text prefab could have a default xdata_contents spawnarg instead of gui_parm1 . Edit: Objective description text is also inside an entity inside the map file, but it could just as well be a reference to an xdata file. I posted about this before, here:
-
Complaint From Players The player must pick up candles before extinguishing them, and then the player must remember to drop the candle. The player must drag a body before shouldering it (picking it up), and the player must remember to frob again to stop dragging the body. The player finds this annoying or easy to make mistakes. For players who ghost, some of them have the goal of returning objects back to their original positions. With the current "pick up, use item, and drop" system, the item might not return easily or at all to its original position. For example, a candlestick might bounce off its holder. (See player quotes at the bottom.) Bug Tracker https://bugs.thedarkmod.com/view.php?id=6316 Problems to Solve How can the "pick up" step be eliminated so that the player can directly use or interact with the item where it is in the game world? How can so much key pressing and mouse clicking be eliminated when the player wants to directly use an item? How can candles be extinguished and lanterns toggled off/on without first picking them up? How can bodies be shouldered without first dragging them? Solution Design Goals Make TDM easier for new players while also improving it for longtime players. Reduce tedious steps for common frob interactions. Make it intuitive so that menu settings are unnecessary. Do not introduce bugs or break the game. Terms frob -- the frob button action happens instantly. hold frob -- the frob button is held for 200ms before the action happens. (This can be changed via cvar: 200ms by default.) Proposed Solution Note: Some issues have been struckthrough to show changes since the patch has been updated. Change how frobbing works for bodies, candles, and lanterns. For bodies: Frob to shoulder (pick up) a body. Second frob to drop shouldered body, while allowing frob on doors, switches, etc. Hold frob (key down) to start drag, continue to hold frob (key down) to drag body, and then release frob (key up) to stop dragging body. Also, a body can be dragged immediately by holding frob and moving the mouse. For candles/lanterns: Frob to extinguish candles and toggle off/on lanterns. Hold frob to pick it up, and then frob again to drop. Frob to pick it up, and then frob again to drop. Hold frob to extinguish candles and toggle off/on lanterns. For food: Frob to pick it up, and then frob again to drop. Hold frob to eat food. For other items: No change. New cvar "tdm_frobhold_delay", default:"200" The frob hold delay (in ms) before drag or extinguish. Set to 0 for TDM v2.11 (and prior) behavior. Solution Benefits Bodies: New players will have less to learn to get started moving knocked out guards. With TDM v2.11 and earlier, some players have played several missions before realizing that they could shoulder a body instead of dragging it long distances. Frob to shoulder body matches Thief, so longtime Thief players will find it familiar. Second frob drops a shouldered body. Players still have the ability to both shoulder and drag bodies. Compatible with the new auto-search bodies feature. Dragging feels more natural -- just grab, hold, and drop with a single button press. There is no longer the need to press the button twice. Also, it's no longer possible to walk away from a body while unintentionally dragging it. Set "tdm_frobhold_delay" cvar to delay of 0 to restore TDM v2.11 (and prior) behavior. Candles: New players will have less to learn to get started extinguishing candles. With TDM v2.11 and earlier, some players didn't know they could extinguish candles by picking them up and using them. Instead, they resorted to throwing them to extinguish them or hiding them. Hold frob to extinguish a candle feels like "pinching" it out. Once a candle is picked up, players still have the ability to manipulate and use them the same way they are used to in TDM v2.11 and earlier. For players who ghost and have the goal of putting objects back to their original positions, they'll have an easier time and not have to deal with candles popping off their holders when trying to place them back carefully. Set "tdm_frobhold_delay" cvar to delay of 0 to restore TDM v2.11 (and prior) behavior. Solution Issues Bodies: Frob does not drop a shouldered body, so that might be unexpected for new players. This is also different than Thief where a second frob will drop a body. "Use Inv. Item" or "Drop Inv. Item" drops the body. This is the same as TDM v2.11 and earlier. This is the price to pay for being able to frob (open/close) doors while shouldering a body. Patch was updated to drop body on second frob, while allowing frob on doors, switches, etc. Candles: Picking up a candle or lantern requires a slight delay, because the player must hold the frob button. The player might unintentionally extinguish a candle while moving it if they hold down frob. The player will need to learn that holding frob will extinguish the candle. The player can change the delay period via the "tdm_frobhold_delay" cvar. Also, when the cvar is set to a delay of 0, the behavior matches TDM v2.11 and earlier, meaning the player would have to first "Frob/Interact" to pick up the candle and then press "Use Inv. Item" to extinguish it. Some players might unintentionally extinguish a candle when they are trying to move it or pick it up. They need to make sure to hold frob to initiate moving the candle. When a candle is unlit, it will highlight but do nothing on frob. That might confuse players. However, the player will likely learn after extinguishing several candles that an unlit candle still highlights. It makes sense that an already-extinguished candle cannot be extinguished on frob. The official "Training Mission" might need to have its instructions updated to correctly guide the player through candle manipulation training. Updating the training mission to include the hold frob to extinguish would probably be helpful. Similar Solutions In Fallout 4, frob uses an item and long-press frob picks it up. Goldwell's mission, "Accountant 2: New In Town", has candles that extinguish on frob without the need of picking them up first. Snatcher's TDM Modpack includes a "Blow / Ignite" item that allows the player to blow out candles Wesp5's Unofficial Patch provides a way to directly extinguish movable candles by frobbing. Demonstration Videos Note: The last two videos don't quite demonstrate the latest patch anymore. But the gist is the same. This feature proposal is best experienced in game, but some demonstration videos are better than nothing. The following videos show either a clear improvement or that the player is not slowed down with the change in controls. For example, "long-press" sounds long, but it really isn't. Video: Body Shouldering and Dragging The purpose of this video is to show that frob to shoulder a body is fast and long-press frob to drag a body is fast enough and accurate. Video: Long-Press Frob to Pick Up Candle The purpose of this video is to show how the long-press frob to pick up a candle isn't really much slower than regular frob. Video: Frob to Extinguish The purpose of this video -- if a bit contrived -- is to show the efficiency and precision of this proposed feature. The task in the video was for the player to as quickly and accurately as possible extinguish candles and put them back in their original positions. On the left, TDM v2.11 is shown. The player has to highlight each candle, press "Frob/Interact" to pick up, press "Use Inv. Item" to extinguish, make sure the candle is back in place, and finally press "Frob/Interact" to drop the candle. The result shows mistakes and candles getting misplaced. On the right, the proposed feature is shown. The player frobs to extinguish the candles. The result shows no mistakes and candles are kept in their original positions. Special Thanks @Wellingtoncrab was instrumental in improving this feature during its early stages. We had many discussions covering varying scenarios, pros, and cons, and how it would affect the gameplay and player experience. Originally, I had a completely different solution that added a special "use modifier" keybinding. He suggested the frob to use and long-press frob to pick up mechanics. I coded it up, gave it a try, and found it to be too good. Without his feedback and patience, this feature wouldn't be as good as it is. Thank you, @Wellingtoncrab! And, of note, @Wellingtoncrab hasn't been able to try it in game yet, because I'm using Linux and can't compile a Windows build for him. So, if this feature isn't good, that's my fault. Code Patch I'll post the code patch in another post below this one so that folks who compile TDM themselves can give this proposal a try in game. And, if you do, I look forward to your feedback! Player Complaints TTLG (2023-01-10) Player 1: TDM Forums (2021-03-13) Player 2: Player 3: TDM Forums (2023-06-17) Player 4: TDM Discord (2021-05-18) Player 5: TDM Discord (2023-02-14) Player 6: Player 7: Player 8:
- 336 replies
-
- 12
-
-
-
Author Note: This is a brand new mission and a new entry into the accountant series. There are some different than usual puzzles in this FM, so if you find yourself stuck try to think about your pathway forward in a logical manner. And if you're still having troubles then pop by this thread and ask (preferably with spoiler tags). This FM is brand new and serves as the first installment in The Accountant series, a few years back there was a small prologue style mission released however I felt that it did not represent The Accountant series so I decided to go back to the drawing board and do a whole new mission that's larger, has a better level design and has a story that lines up closer to what I plan to do with the accountant series. The mission is medium sized and you can expect between 30-90 minutes to complete it depending on your playstyle. Beta Testers Captain Cleveland Crowind Kingsal PukeyBee Skacky SquadaFroinx Voice Actors AndrosTheOxen Epifire Goldwell Stevenpfortune Yandros Custom assets Airship Ballet Bentraxx Bob Necro Dragofer DrKubiac Epifire Kingsal MalachiAD Sotha Springheel SquadaFroinx Available via in-game downloader File Size: 233 MB - Updated to v 1.1 (01.06.2018)
- 116 replies
-
- 21
-
-
@nbohr1more, I just recently noticed that back in Oct you reported in https://www.ttlg.com/forums/showthread.php?t=152771 I didn't see anything about this in the current "What's New in 2.13". Will this new functionality actually happen for 2.13, and if so what FMs can now be re-downloaded to get the enhanced translation packs? Particularly "early TDM missions [that] also have German, Italian, French, etc translations". Pointer to any new bugtracker/forum/wiki info about this appreciated.
-
I think it's good to make sure it's only happening in 2.13 and not also in 2.12. If it also happens in 2.12 it's probably just an (lod related) mission bug that the missionmaker (bikerdude) has to fix. I already send your post info to him (he's not on the forums)
-
How about AI voice generation using the already existing voices?
STRUNK replied to STRUNK's topic in TDM Editors Guild
I have installed F5-TTS with pinokio: https://pinokio.computer/ It's remarkable how fast this model is and how easy to use. Just find some longer voice clip and use it as reference audio. Under Multi-Speech you can upload more voice clips and give them tags/Speech Type Names, of use this for different voices alltogether, then simply start the scentence with {your tag}. {your tag2} etc. I took 4 clips from the moor tagging them soft, normal, angry and shout, then making them say the same line: YourCamel.mp3 It works very fast and the quality is very much the same as I got out of tortoise-TTS, but seems not as good in keeping the character of the voice. -
Happy 15th Anniversary to The Dark Mod! As of October 17th. 2024, 15 years have passed since the TDM 1.0 release! In that time, we evolved to most or all of the features that players were asking for since the concept of TDM was first mooted in the TTLG forums in late 2004. Campaign Support, Soft Shadows, EFX Reverb, Multi-Core Rendering, Uncapped FPS, Ambient Occlusion, Subtitles, are among the roster of perennial requested things that have been brought to life by the development team in addition to the core Thief 1 \ 2 game-play items like the Lightgem, Rope Arrows, Swim-able water, lock-picking and ( of course ) advanced AI enemies. To commemorate this occasion, please join us in celebrating the Release of 5 missions for our 15th Anniversary Contest! . The Imperial Sword Bikerdude was encouraged to reclaim an abandoned version of his older mission and rework it into a new one. Now the formerly lost work is a glorious new experience with scripted dialog, special events, and a decayed imperial cityscape! . The Wizard’s Treasure Thebigh has made yet another bite-sized mission with a focus on quality game-play and challenge. The mission is extra impressive for the scope and visuals achieved since his decision to join the contest was fairly late compared to other entrants. . You Only Fly Thrice DeTeEff has continued his progression of high quality and complex releases. Another relative late comer to the contest, this mission is a tour-de-force of excellent game-play ideas and is quite handsome with excellent volumetric lighting and modular asset usage. . Volta 3: Gemcutter Kingsal has decided to release his long awaited Volta Series sequel to be included in the contest. DO NOT MISS THIS MISSION! . Pinnacle: A Test of Talents UncertainTitle and TwilitWitch decided to risk their first mission release to be included in the contest roster. The use of both modular assets and many custom models give this mission a familiar yet refreshing visual appeal. . Please join the celebration and vote in the forum threads for each respective mission based on their contest criteria ( Game-play, Story, Visuals ). . . The Dark Mod 2.13 “Developer Build” The Dark Mod 2.13 is still a few months away from release but we wanted to highlight the fact that a few more of the long requested changes have been added in the upcoming release! . Parallax Occlusion Mapping! In the above video, you can see a that TDM has finally incorporated the long requested effect. This wont be applied to all textures since there may be some problems with visual anomalies and performance but we are already preparing for a future where lots of textures use this new and more three dimensional surface effect. Better AI sight! While the AI have always been good at seeing the player due to the lightgem ( sometimes “too good” so we had to nerf their sight ), AI have had various challenges seeing things like bodies, missing objects, opened doors, weapons, blood, etc. This is because it is not practical to give all entities \ objects their own lightgem. Instead we have used very simple math to represent lights which don’t match shadow and light textures. In 2.13 a new sampling approach aims to improve this so that AI can better see ( or not see ) items and bodies in a way that better matches the actual lighting in the mission. Mission Search! There is now a search window where you can specify the mission author or title to help you find your preferred mission rather than scrolling through over 170 missions. You can also change how mission titles are rendered with either the original title or the title with prefix words like “A, The” moved to the end. Improved Training Mission! The Training Mission has been upgraded to include a Vine Arrow tutorial, a Slow Match tutorial, EFX Reverb, Volumetric Lights, and some performance optimizations! Translation Packs! Between TDM 1.06 and 2.0 Tels and the translating community started translating many missions but these translations required that the original mission be altered in a way that made it harder for the mission authors to revise. The meant that translation packs were in limbo being hosted by 3rd party sites \ forums along with their orphaned old missions. The translators over at the Darkfate forums came up with an solution by including not only the translation strings in the translation pack but also the altered map files, GUI defs, etc that had translation work done to them. This would leave the original mission untouched but allow translation packs to override some parts. We have gone through the old archive of these translations and have reworked them to work with the latest version of TDM (and the associated missions). Most of the translations are Russian ( due to the continued work of the Darkfate people ) but many of the early TDM missions also have German, Italian, French, etc translations too. Subtitles! Datiswous has been creating story subtitles for many of the existing missions in the TDM mission database. Most authors have incorporated these into their official releases, otherwise players can still add them to the FM folder. . Hidden Hands: Blood and Metal Campaign Just before the 15th anniversary entries were starting to arrive, JackFarmer released an enormous 5 mission campaign that continues his well regarded “Hidden Hands” series!
-
- 25
-
-
Since Aluminum directed me here ( https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/page/437/#comment-475263 ) can we have unlimited renderer effects? Well, maybe not unlimited, by maybe 3-5? Thanks.
- Show previous comments 1 more
-
-
There already is a kind of sorting, sort nearest, sort decal, sort <n>. For things like windows and such, sort nearest should probably have the desirable affect, though looking through multiple translucent shaders might kill performance.
-
Is having multiple render effects really killing performance that badly? I don't understand. You're saying that if I have two transparent objects side-by-side, then they'll just count as two render effects, but when combined, they somehow become something much more difficult to render?
Never-the-less, unless we're talking some kind of infinite portal problem, why not let the mapper choose how much he wants to kill performance? Just warn him against putting too many effects close together.
-
I would like the development team to consider applying the GPL3 licence to the following Text file which was created by @Tels, @Greebo and @Dragofer. tdm_internal_engine.mtr (darkmod>materials) The reason for this request is that it is a critical core file and without it the engine (when built from source) cannot launch at all. I would also like to query whether the following script files created by @Obsttorte and @Dragofer: tdm_audiograph.script tdm_camgoyle.script tdm_grandfather_clock.script tdm_safe_lock.script tdm_safe.script tdm_turret.script were intentionally released under the CC-BY_NC_SA_3 licence or if this was an oversight? I ask since all other .script files included with TDM (and which are all called by the engine source) all contain GPL3 headers while these files have no licence information at all so naturally fall under the CC-BY_NC_SA_3 licence. Additionally in investigating which text files are required by the engine depending on scenario (and while I understand that the number of developers who are no longer on the development team may affect how many of these files can be licenced) I wondered if these too may be open for consideration as to their licence? tdm_base.def tdm_soundprop.def cursor.gui mainmenu_background_custom.gui mainmenu_background.gui mainmenu_briefing_video.gui mainmenu_briefing.gui mainmenu_credits_background.gui mainmenu_credits.gui mainmenu_custom_defaults.gui mainmenu_custom_defs.gui mainmenu_debriefing_video.gui mainmenu_defs.gui mainmenu_download.gui mainmenu_failure.gui mainmenu_loadsave.gui mainmenu_main_ingame.gui mainmenu_main.gui mainmenu_message.gui mainmenu_music.gui mainmenu_newgame.gui mainmenu_objectives.gui mainmenu_quit.gui mainmenu_settings_audio.gui mainmenu_settings_controls.gui mainmenu_settings_gameplay.gui mainmenu_settings_gamma.gui mainmenu_settings_guisize.gui mainmenu_settings_language.gui mainmenu_settings_video.gui mainmenu_settings.gui mainmenu_shop.gui mainmenu_success.gui mainmenu_utils.gui mainmenu.gui msg.gui tdm_objectives_core.gui tdm_subtitles_common.gui tdm_subtitles_message.gui tdm_gui.mtr tdm_tables.mtr tdm_guis.sndshd all.lang english.lang These provide the foundation of a working base main menu. TDM's main menu also includes several undocumented commands (that neither show in listcmds nor listcvars) which are useful to know for anyone wishing to use the base source code. I have listed the .lang files solely because of the #StringNum associations, I appreciate that they are not truly required for the above to be a foundation. While looking into how far I could break TDM in removal of files, I came across this thread by @Fiver suggesting a Libre version of TDM: https://forums.thedarkmod.com/index.php?/topic/22346-libre-version-of-tdm/ I believe that in that instance all text based files would need to be GPL3 licenced, leaving only videos, sounds, textures, models and the like as still being under the CC_BY_NC_SA_3 licence since remaking the files would likely result in most cases with near-identical looking files to the original. Thankyou for your consideration.