Search the Community
Searched results for '/tags/forums/poor model texture alignment/' or tags 'forums/poor model texture alignment/q=/tags/forums/poor model texture alignment/&'.
-
Or, just get in contact with the owners of the IP and ask them since just because an IP lawyer in one jurisdiction says it would be okay, doesn't mean it would be okay globally. There are several packs out there of scripts/definition files which are licenced under free licences (CC0 and WTFPL mostly) and claim their freedom by recreating them using "clean-room way". In fact, I used them in getting TDM running with mostly free licenced files by selectively choosing which had clearly been written from scratch albeit with reference to the originals, and which were just direct copy and paste with claimed free licences (I didn't use them). Then it was a case of finding/replacing the core engine textures, sounds, etc. the engine required to launch with free alternatives (again checking the packs since some were just copied direct from the game files and claiming to be free). In the end, the only non-free licenced files that were still required were those from TDM itself. The result of this TDM version is the screenshot I posted some posts ago here: https://forums.thedarkmod.com/index.php?/topic/22346-libre-version-of-tdm/page/3/#findComment-500642 However, you will notice the giant cursor on the screen in the screenshot, why? because the only reference to hiding the cursor is within the UI files which come under the game eula, so I didn't add in the command to hide it in game. In the case of the script/def files, this "clean-room" approach has stood up in a court of law when I looked online, however you wouldn't really want to end up being in the position of ending up in court defending yourself in the first place. The flaw in the def/scripts that were recreated are that they all wrote their files using the originals as reference. So if the originals are under the game eula, and if the information contained is in some way protected, then all these "clean-room" files revert to the original game eula, as the authors didn't have the right to change the licence. I believe (with a pinch of salt )that if the core scripts/files were made GPL by idSoftware/Microsoft then as files based off of or using them as parents (basically all TDM scripts/defs as far as I can make out) then all of the TDM scripts and def files would automatically become GPL as their authors could also not claim their work was NC-BY since it was then based on GPL work.
-
Question about models for light entities
OrbWeaver replied to mr.Doom's topic in DarkRadiant Feedback and Development
Correct. And I agree that the D3 way was much more intuitive, and allows the light to remain easily editable even after it has had a model attached. I never really understood the idea behind the TDM approach of starting with the model then attaching the light entities at runtime. I suppose it makes it possible to have more than one light source for a given model, but that would be a pretty bad idea from a performance perspective. We do now have the ability to preview the light entities (in the 3D renderer), which is a big improvement over having them appear as completely unlit models. Actually editing them, unfortunately, still requires a very clunky manual "set light_color on <attached>" approach, which is probably close to unusable without dedicated UI support. -
Question about models for light entities
peter_spy replied to mr.Doom's topic in DarkRadiant Feedback and Development
It kinda depends on original D3 object/inheritance structure vs. what is in TDM. If I remember correctly, TDM got this structure kinda backwards. In other engines it was usually Light > Light type (e.g. spotlight) > light with model attached. I tried this in DR long time ago, and the light was visible and editable as any other light. In TDM it's Model > Model with light attached, with light being not editable. I remember there were some fixes planned to address that, and maybe that broke something? -
It seems that this isn't as much of the case as one would hope, unless I'm still doing something else wrong. I added the broken and hideModelOnBreak spawnargs to my current setup, but the model isn't hidden on destruction and the flinders still don't spawn. I then took a slightly different track and tried to rig the security camera to actually be a door. This approach seems like the correct-er one, although the sound effect when striking it with a sword seems a bit off. Like its repeating every frame that the sword is in contact with the model, maybe? Also, setting the clipmodel correctly is giving me trouble, so you have to swing at some air on the left side of the door to destroy it - I'd like TDM to derive the clip from whatever is set in the model arg, but setting a clipmodel to 0 or "" or some other obviously invalid value doesn't seem to trigger that behavior like the documentation strings claim it does - instead, it throws an error when I attempt to map (dmap completes just fine either way). In case it helps, I've attached a sample .map with a player start, an inventory full of smashing gear, a light, and my two breakable-ish doors. The one on the left is the doorified-camera, which sounds weird and clips weird (and crashes the game when I try to correct the latter by setting the clipmodel spawnarg to ""), and the one on the right is my model-turned-damageable and doesn't flinder or disappear. I'd be happy if I could get the left one to clip like its visual model (I would like to reuse this as a prefab, and swap out different models like half-broken crates or barrels - so just creating my own clipmodel isn't great (although it looks like a ~30s task based on https://wiki.thedarkmod.com/index.php?title=Moveables so maybe thats the way to go)), or the right one to flinderize and disappear. Is there something I'm still missing or misunderstanding about either setup? EDIT: Making sure I've uploaded the right version of the testmap I've made breakable_door_flinder.map
-
Hi all, so I've been playing around with doing daytime lighting in a global fashion (ie. not carefully placing/sizing new lights for each outdoor space). The ambient light will be unusually bright, so I figure I should be picky about it to make shadows look as nice as possible. However, the existing light textures look a bit off here and I have no idea if/how it can be improved. When I use the "ambientlightnfo" texture for my ambient_world light, my sunlight test map looks like this: The walls in the dark indoor room look perfect, they seem to be lit from above which gives the bricks depth. But the floor is way brighter than the other surfaces, and both the floor and ceiling have quite flat lighting. The long shadow in the center of the outdoor image looks oddly darker on the wall than on the floor, due to the brightness difference. Even in directly lit areas the floor is noticeably more blue than the wall (since the ambient light is bluish). The main other texture I found that worked independent of the light's position was "zol_nofalloff". This one doesn't have the floor/wall difference but it's totally flat and "fullbright" so it looks quite bad at this brightness: Would it be possible to tweak the ambient light to make most/all surfaces look nicely lit like the walls do when using the "ambientlightnfo" texture, with fewer inconsistencies between surface angles? Or perhaps this breaks the laws of physics and I should pursue other options? (Side note: I did find this great Doom 3 outdoor lighting article through a link on the TDM wiki. However, I want to see if I can get by with just the sun and an ambient_world light, for simpler setup and hopefully better framerate than that solution.)
-
oh it did indeed use it but only for the background, i guess to make the maps seem bigger than they actually were (idtech 4 was mostly geared towards corridor shooters and had some problems with big outdoor maps). yeah also wondered that myself about targa since targa2 had been out quite a while by then, we actually used targa2 in most quake ports. added benefit of the targa2 code was that it did not need the image flip bit and also supported more colormap formats as well as better compression. at the time of quake 4 a 200 gb's game would have gotten a lot of flak, large drives were expensive back then . i think the biggest one i had at the time was 1tb and it cost me around 250 dollars. because i wanted a 10000 rpm model. the 5400 and to some extent 7200 rpm models were allready starting to be on the slow side when loading stuff hehe. from the wiki: Quake 4 was known for its attention to detail and realistic visuals, achieved through a combination of detailed models and textures rather than "solely relying on megatextures" for large-scale terrain representation. so yah it did use it to some degree but only for a few things
-
I don't understand why TDM would have a texture larger than a gigabyte in the first place. Wasn't it later versions of the iD Tech engine that introduced megatextures? What I was asking about was how much VRAM total does TDM need (wildly variable based on the map).
-
Not sure if this is a bug or my computer doesn't have enough memory. When I try to extinguish one of those blue fire elementals, the game ends and goes to main menu without showing anything. I checked the console and here is an error I found that might be related to this: Error:idafentity_base::setmodel: model imp_explosion_blue.prt is not modelDef
-
I tried this once years ago with a guard NPC. I noticed there have been ongoing discussions about PBR in Darkmod. So I put the builder priest on Sketchfab: https://skfb.ly/pqrrC I enabled model inspector, so you can take a look at all the texture maps. I haven't remade anything from scratch, mostly I brightened the metal parts of the diffusemaps and made metalness and roughness maps. And here's rendered in Cycles.
- 30 replies
-
- 6
-
-
- pbr
- physically based rendering
-
(and 4 more)
Tagged with:
-
Mandrasola is a small sized map in which aspiring thief Thomas Porter steals some herbal products from a smuggler. The mission was created by me, Sotha and I wish to thank Bikerdude, BrokenArts and Ocn for playtesting and voice acting. Thanks goes naturally to everyone contributing and making TDM possible. This mission occurs chronologically before the Knighton's Manor, making it the first mission in the Thomas Porter series. Events in chronological order are: Mandrasola, The Knighton's Manor, The Beleaguered Fence, The Glenham Tower and The Transaction. The winter came early and suddenly this year. Weeks of strong blizzards and extremely harsh cold weather hit Bridgeport hard. With the seas completely frozen, a rare occurence indeed, most of the City harbor commerce has stopped completely. Vessels are stuck in the ice and no ship can leave or enter the City, resulting in the availability imported goods declining and their prices skyrocketing. One of these imported items is Mandrasola, a rare herbal product, which is imported overseas from the far southern continents. Mandrasola has its uses in alchemical cures and poisons, but mostly this substance is used for its narcotic qualities by commoners and even the nobility. The problem with Mandrasola is that excessive use is extremely addicting and the withdrawal effects are most grievious. Many are utterly incapable of stopping using Mandrasola and are transformed into quivering human ruins if they do no get their daily dose. And now this expensive and rare substance is running out from the whole City. Me and my fence, Lark Butternose, would love to grab this monopoly to ourselves: selling the last few doses in the City would probably be worth a fortune. According to Lark's sources, there remains only one smuggling lord who still has Mandrasola in stock. The problem is that this individual maintains an exclusive clandestine operation and only supplies a few nobles. Despite our best information gathering efforts we couldn't learn who the smuggler is and where he or she operates. Luckily we have an alternate plan. While searching for Mandrasola related information, we learned that a noblewoman called Lady Ludmilla is addicted to the substance and has paid high prices for small amounts of it. We also know that she has visited frequently someone in the Tanner's Ward waterfront, and since she goes to the area personally we believe she is visiting the smuggler. The plan is simple: I must monitor Ludmilla's most likely entryway to the Waterfront and then follow her to the smugglers hideout. I'd better be very careful around Ludmilla. She must not realise I'm following her or she probably won't lead me to her dealer. Hurting her is also out of the question. After she leads me to the smuggler's hideout, I can take my time to break in carefully and steal all the Mandrasola I can find. While I'm there it wouldn't be a bad idea to grab some loose valuables as well. I've now waited in the blistering cold for a few hours already. Looks like there are a few city watch patrols in the area to complicate matters... I think I heard a womans voice beyond the north gate. That must be lady Ludmilla, I haven't seen many ladies in these parts. I'd better get ready.. Links: Use the ingame downloader to get it. WARNING! Someone always fails to use spoiler tags. I do not recommend reading any further until you've played the mission.
-
Question about models for light entities
OrbWeaver replied to mr.Doom's topic in DarkRadiant Feedback and Development
Yes, that's just a func_static with a "model" key set to the entity name, which means it's brushwork converted to a func_static (so DR just renders the brushes). My guess is that DoomEdit does something specific when you "connect" a model and a light, which we're not doing in the same way. I thought that all that "connect" did was set a target key to point to another entity. Maybe it's supposed to have special handling for models and lights. -
For the people eager to play with the latest state of development, two things are provided: regular dev builds source code SVN repository Development builds are created once per a few weeks from the current trunk. They can be obtained via tdm_installer. Just run the installer, check "Get Custom Version" on the first page, then select proper version in "dev" folder on the second page. Name of any dev version looks like devXXXXX-YYYY, where XXXXX and YYYY are SVN revision numbers from which the build was created. The topmost version in the list is usually the most recent one. Note: unless otherwise specified, savegames are incompatible between any two versions of TDM! Programmers can obtain source code from SVN repository. Trunk can be checked out from here: https://svn.thedarkmod.com/publicsvn/darkmod_src/trunk/ SVN root is: https://svn.thedarkmod.com/publicsvn/darkmod_src Build instructions are provided inside repository. Note that while you can build executable from the SVN repository, TDM installation of compatible version is required to run it. Official TDM releases are compatible with source code archives provided on the website, and also with corresponding release tags in SVN. A dev build is compatible with SVN trunk of revision YYYY, where YYYY is the second number in its version (as described above). If you only want to experiment with the latest trunk, using the latest dev build gives you the maximum chance of success. P.S. Needless to say, all of this comes with no support. Although we would be glad if you catch and report bugs before the next beta phase starts
- 2 replies
-
- 15
-
-
-
Thought it would be a good idea to collate a useful list for new and old mappers alike and this post will update as we go. Abandoned works: Any WIP projects that were abandoned by the original author - http://forums.thedarkmod.com/topic/12713-abandoned-works/ Darkradiant & Darkmod shortcut settings: Some example settings for new mappers - http://forums.thedarkmod.com/topic/15152-darkradiant-and-darkmod-shortcut-folder-settings/ Darkradiant howto, must knows, tips and faqs - http://forums.thedarkmod.com/topic/12558-usefull-important-editing-links/?do=findComment&comment=272581 Info for Beginners: Newbie DarkRadiant Questions - http://forums.thedar...iant-questions/ Dark Radient Must Know Basic Intro - http://wiki.thedarkm...now_Basic_Intro Editing Tips for Beginners - http://wiki.thedarkm...s_for_Beginners Editing FAQ (Troubleshooting & How-To) - http://wiki.thedarkmod.com/index.php?title=Editing_FAQ_-_Troubleshooting_%26_How-To Sotha's excellent Mapping Tutorial series: http://forums.thedarkmod.com/topic/18680-lets-map-tdm-with-sotha-the-bakery-job/ Springheel's New Mapper's Workshop: http://forums.thedarkmod.com/topic/18945-tdm-new-mappers-workshop/ Inspiration: Collection of screenshots and images people have found online - http://forums.thedarkmod.com/topic/11610-darkmod-inspiration-thread/ Mapping Resources: List of Voice actors available for voice recording - http://modetwo.net/d...6-voice-actors/ Lengthy collection of city reference pictures - http://modetwo.net/d...rence-pictures/ Collection of texture resource sites - http://modetwo.net/d...ture-resources/ Free Ambient Tracks - http://skeksisnetlabel.wordpress.com/2009/12/30/10-songs-for-free-download-vol-10-full-moon-over-noricum/ Mapping Tools: 3 useful tools for texture creation - http://forums.thedarkmod.com/topic/18581-must-have-tools-for-the-descerning-mapper/ Modular Building: What is Modular building - http://forums.thedarkmod.com/topic/14832-modular-building-techniques/ Working example tutorial on modular building - http://forums.thedarkmod.com/topic/18680-lets-map-tdm-with-sotha-the-bakery-job/ Springheels new modular models - http://forums.thedarkmod.com/topic/18683-using-springheels-205-modules/ Some related mapper recipies - Easy Vaults - http://forums.thedarkmod.com/topic/14859-easy-vault-recipe/?hl=%2Beasy+%2Brecipe Easy Outdoors - http://forums.thedarkmod.com/topic/16159-easy-outdoors-recipe/?hl=%2Beasy+%2Brecipe Easy Caverns - http://forums.thedarkmod.com/topic/14469-quick-caverns-recipe/?hl=recipe Easy Alert Ai - http://forums.thedarkmod.com/topic/17157-easy-alert-ai-recipe/?hl=%2Beasy+%2Brecipe Easy Alert Ai Custom Behavour - http://forums.thedarkmod.com/topic/17160-easy-alert-ai-custom-behavior-recipe/?hl=recipe Tutorials: Collection of video tutorials for DR - http://modetwo.net/d...in-darkradiant/ Using Lighting and detail effectively: - http://forums.thedar...l-and-lighting/ Voice Actors list: List of available voice actors - http://forums.thedarkmod.com/topic/12556-list-of-available-voice-actors/ Usefull Console commands: A list of console commands for testing in-game - http://wiki.thedarkm...Useful_Controls
- 21 replies
-
- 3
-
-
- inspiration
- tools
-
(and 4 more)
Tagged with:
-
Story: "Sir Barrington, as he likes to be known, enjoys a prestigious reputation of having lavish yet intimate dinner parties. I've heard the tales about what goes on in the noble's dining room, but I believed none of them 'till now. Orbach, a local shop-keep who makes special deliveries to the people of 'high stature' heard Sir Henry Hughbellow raving about Sir Barrington's special 'Elixir', It cures your ails and gives you vigor... By the Hammer, it extends your very life! he exclaimed. Orbach begged Sir Henry for a small sample, and after one sip he was sure that the potion was nothing more than mineral water and spirit. He asked Sir Henry if other folks were as fond of the elixir as he was, and he found out that folks are paying handsomely for these small vials on a weekly basis. Some lords pay for exclusive treatments and bathe in the tonic. Lord Barrington even brings in an occult expert every month, where supposedly the power of the elixir is renewed by the full moon. Never one to pass up the opportunity for a good scam, Orbach has decided to take a cut of this 'elixir' business. He has made an elixir of his own, but needs to convince Sir Henry that it's really the same as the 'magical' tonic that Lord Barrington has been selling. And that's where I come in. Its rumered that Sir Barrington's prized possession is a painting of the revolutionary inventor 'Guillermo de Sohase' the day after he won the Battle of Billinsdune. If I can steal this painting, Orbach can use it to 'prove' that he also got the elixir from Sir Barrington. Once Sir Henry tells all his friends that Orbach's stolen elixir is healing his heart, soothing his pains, and igniting his libido, they'll be lining up at his shop. Its time to go." Build Time: Version 1.0 was speed build of sorts, to build upon Springheels video's with the new modules. Took roughly 20hrs to build but this ended up happening over the space of a few months.http://forums.thedarkmod.com/topic/18808-bikerdudes-speedish-build-using-the-new-modules/?hl=%2Bspeed+%2BbuildThanks: Co-auther: Obstortte for all his custom entities, scripting and showing me a thing or two about perfing.Resource: Springheel - new modulesReadables: nbhor1moreTesters: Bienie, Judith, Abusimplea, Cambridge Spy, Gerberox, MayheM, Amadeus, Goldwell, nbhor1more.Download: - mega Info: Repeat after me, "Read and explore, Read and explore"Known issues: This mission has been heavily tweaked and worked on to provide a playable experience for even low end machines.For very low end PC's please make use of the in-game LOD slider, as not only are details reduced, but the ambient_world fog is removed at the lowest setting.The medium difficulty is partially broken, the mission wont end when the player gets to the exit location. As this is the only issue with that difficulty level, I will fix this when I next update it to include the intro.
- 105 replies
-
- 20
-
-
Yes that is an issue - for the game to draw any material it must defined in a .def file. It is the material def which points at the texture maps, and then the model is pointed at the material def via the names of it's material. For yours it could be quite simple for the time being: textures/gobmdl/ksword_rusty { metal diffusemap textures/gobmdl/ksword_rusty }
-
Good news is that is appears to me to export fine (and seems like it will be a cool dishonored style model): Bad news would be what the heck is going wrong. Here is a picture of the modifier stack: And the ase export settings: What does your material def for the texture look like? Maybe there is an issue there.
-
I want to modify a decal to display as a different color. Example, dripping_grunge01 I'd like to clone the material definition and modify it so that the grunge is greenish. Here's the definition: textures/darkmod/decals/dirt/dripping_grunge01 { DECAL_MACRO noimpact { blend filter map textures/darkmod/decals/dirt/dripping_grunge01 } } I tried to figure the various options to the "blend" command, but my poor brain isn't capable. Using the color commands affects the transparent parts as well, which is not what I want. Is there a tutorial or some examples I can take a look at?
-
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.
-
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
-
-
At some point when i get my hands on the 9070 xt ill probably try modding vram on my old 2080 ti just for giggles. One funny thing i noticed with it was with crysis remastered where it runs quite fine in very high in 4k but in can it run crysis mode it tanks completely because of vram. I started getting texture popins and it actually crashed because it ran out of memory . So i used a lossless texture compression mod to get it below vram limits and it ran at 56 fps which is quite ok for such an old card. So my guess is that a 22gb mod might actually expand its lifetime somewhat.
-
I like Clair Obscur quite a bit, but it crashes fairly often for me. Also, in Act 2, some of the models look really broken, as if an LOD-model was loaded in rather than the high-poly model. It is weird, because I know that the game uses Nanite. Did they actually intentionally include such low-poly models or is this bugged?
-
ah well the 9070 xt is about twice the speed of my current card so i doubt the 9060 xt will beat it by a large margin. the extra ram will be nice though but to ice the cake it would have to be atleast 30% faster otherwise theres not much point other than being able to play titles like indiana jones with texture resolutions higher than minimum. my 2080 ti does ok in indiana jones speedwise but sucks a bit in alan wake 2, the 9070 xt really shines in that game though and is actually one of the few cards that can handle it with everything maxed in 4k. i can live with a little less so will be interresting to see the numbers.
-
New texture wiki article created: https://wiki.thedarkmod.com/index.php?title=Creating_textures_from_Ornate_Photos
-
-
2
-
2
-
- Report
- Show previous comments 8 more
-
I might not know what I'm talking about, but I share it anyway:
QuoteStability Matrix - One click portable install manager for Stable Diffusion WebUIs
including ComfyUI
For Windows, Linux (Appimage) and Macosx
Edit: no clue how this works..
-
Here's a website on Hugging Face that will generate normal maps using four different methods:
https://huggingface.co/spaces/Stable-X/normal-estimation-arena
And here are some that will generate depth maps:
-
-
1
-
- Report
-