Jump to content
The Dark Mod Forums

Search the Community

Searched results for '/tags/forums/code' or tags 'forums/codeq=/tags/forums/code&'.

  • 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. im using a 4790k devils canyon haswell to drive my RX5700XT and it does ok though im only playing games without raytracing on it (does not support hardware raytracing at all so a bit moot). hzd runs flawlessly in 4k on this setup and forbidden west also runs good if you lower settings a bit. the cpu is a bit of a bottleneck at lower resolutions but not as bad as i feared. i would not call it a true retro setup since it runs win10 to me it is more of a media PC with some gaming ability . my real retro machine runs win 7 32 and 64 bit uses 2 geforce 560 ti in SLI has 16 gb ram and is driven by an old broadwell 6800k 6 core cpu. the 560 ti is from around the same time as the first core i 7 nehalem models so the broadwell means im in no way cpu bottlenecked. runs the old crysis 1 2 and 3 on max settings. my developer machine is driven by a 6950x broadwell 10 core and 32 gb ram. it has 1 nvme and one SSD as well as two large mecahnical harddrives i use for source code and my msys2 driven windows clang compilers (to big to fit on the main drive). it uses my rtx 3070 (sold the 2080 ti) and is pretty powerfull despite only having pcie 3 and no rebar (plays alan wake 2 with playable fps "45 -> 50" if you dont go nuts with the ray/path tracing effects). the cpu is only slightly slower than the fastest skylake. my main gamer recently got an RX 9070 XT as an upgrade for the 2080 ti (doubles the speed) but it is seriously hampered by my ryzen 3700x so im looking to upgrade the cpu with either a 5900x or 5700x3d (5800x3d if i can get one for a good price). my ram are also not the best for the setup as i can only get them to 3200 mhz in the xmp profile (3000 mhz standard). but with dram prices atm. that will have to wait unless i can find a used set of 3600 mhz blocks (2x16 or 4x8 for 32 mb). with that in place my gamer should be ready for many more years of service. and i still got 3 more mainboards left one micro atx with 16 gb ddr 3 and a haswell core i5 (xp compatible yes i tested it). a gigabyte board with a core2 quad 6600 and 8gb ddr2 ram. and an asrock board which is a bit of a curiosity. can be used with either or both a pcie and/or agp gfx card. cpu is a pentium but the board can take a core 2 as well (not a quad). this board can actually run win9x (depends on the gfx card if you can find a driver though). im giving these away for tinkerers, they all work .
  2. 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
  3. Okay, I've coded a solution that lets you update a readable with up to three substitution strings. I'll list the limitations up front, just so you don't get too excited: 1) It supports at most three substitution strings (although this is easy to change). Scripting doesn't support arrays, so I had to pick a fixed number. 2) As @kingsal mentioned, scripting has a problem with strings longer than 127 characters. So this doesn't work well with readables with long strings (see below). To use: Create your readable as you normally do. Presumably you'll edit it using the Readable Editor. In the text, use "%1" (no quotes) to indicate a string that you want to substitute (%2 for a second string, and %3 for a third). So for example, you might have a sheet that his a title of "Hey %1" and a body of "The new combo is %2. Regards, %3" From a script, you make a call like this: adjustReadable($testsheet, "Chris", "375", "Jeff"); Where "$testsheet" is the name of the readable entity. The next three strings are the substitutions for %1, %2, and %3. If you only have one or two substitution strings, just pass "" for the remaining args. In game, the sheet looks like this: Like I said, it's SMOP (simple matter of programming) to support more than 3 substitution strings. But the 127 character limitation is much more difficult. It's a problem/feature with the scripting code: strings are limited to 127 characters in length. The adjustReadable() call will truncate readable strings to 127 characters, so if you have a long page in a book with a substitution string, the page will be truncated. The code is smart enough to limit the damage - if a readable string doesn't have the substitution characters (i.e., "%1") then I won't process it at all, and the text isn't truncated. So with some planning you can get this to work - just make sure all of the pages that have substitutions are short (For example, page 1 is a wall of text, 100s of characters with no substitutions. Page 2 is brief, "And that's why I changed the combination to %1".). Dynamically creating readables with strings longer than 127 characters is possible, but ugly. That's another whole topic, I will discuss separately. Here's the code. Drop it into your <fm>.script file, and call it as in the example above. Suggestions for improvement are welcomed. string substitute(string str, string sub1, string sub2, string sub3) { if (sub1 != "") str = sys.strReplace(str, "%1", sub1); if (sub2 != "") str = sys.strReplace(str, "%2", sub2); if (sub3 != "") str = sys.strReplace(str, "%3", sub3); return str; } // Adjusts all of the contents of the specified readable. In any xdata content for this readable, this method will replace "%1", "%2", and "%3" // with sub1, sub2, sub3, respectively. void adjustReadable(entity readable, string sub1, string sub2, string sub3) { string xd = readable.getKey("xdata_contents"); readable.loadExternalData(xd, "xdx_"); string key = ""; while ((key = readable.getNextKey("xdx_", key)) != "") { string xdName = sys.strSkip(key, 4); string xdValue = readable.getKey(key); if (sys.strFind(xdName, "page", 1, 0, 4) == 0) { if (sys.strFind(xdValue, "%1", 0, 0, -1) >= 0 || sys.strFind(xdValue, "%2", 0, 0, -1) >= 0 || sys.strFind(xdValue, "%3", 0, 0, -1) >= 0) { string newXdValue = substitute(xdValue, sub1, sub2, sub3); readable.setKey(xdName, newXdValue); } } } }
  4. Hi team, I've come back to the FreeBSD native port that I was working on and have some patches that I would like to upstream. What is the best way to submit patches for consideration? Is there a public tracker/email list, or is it best to post patches somewhere here on the forums? Thanks!
  5. Here's some slightly better code. Rather than having to hard-code the origin and rotation of the note, you just put a readable into map at the location you want. In this example the note is named "comboNote1". setCombo now takes two args, the lock and the note. The code creates a new readable at the same location as $comboNote1, then deletes $comboNote1 void setCombo(entity safeLock, entity note) { // get a random combination string combo = getCombo(); sys.println("new combo is " + combo); // set it on the lock safeLock.setKey("combination", combo); // get the properties of the note and then delete it string inv_name = note.getKey("inv_name"); string origin = note.getKey("origin"); string rotation = note.getKey("rotation"); note.remove(); // create a new note at the same location of the old one, containing the combination sys.setSpawnArg("gui_page1", "guis/readables/sheets/sheet_paper_calig_mac_humaine.gui"); sys.setSpawnArg("page1_body", "The combination is " + combo); sys.setSpawnArg("num_pages", "1"); sys.setSpawnArg("inv_name", inv_name); sys.setSpawnArg("origin", origin); sys.setSpawnArg("rotation", rotation); entity comboNote = sys.spawn("atdm:readable_mobile_scroll01"); } void setTheCombo() { setCombo($atdm_safe_lock_2, $comboNote1); } This code could be parameterized even more, but it's a start. There are some limitations/provisos to this technique, which I will expand upon in the wiki (probably won't get to that until tomorrow).
  6. Hey Greebo Thought you might appreciate this -
      • 2
      • Like
  7. Jack has to have it transferred to the save code(s) at map start, and into the readables. Can you do that just as fast?
  8. // returns a random 3-digit safe combination. string getCombo() { float i; string combo; combo = ""; for (i = 0; i < 3; i++) { float digit = sys.floor(sys.random(10)); combo = combo + digit; } return combo; } // sets a random combo on the specified atdm:safe_lock or atdm:safe_lock_small void setCombo(entity safeLock) { string combo = getCombo(); safeLock.setKey("combination", combo); } // test void setTheCombo() { setCombo($atdm_safe_lock_2); } I'm a retired software programmer, so I get excited at the chance of writing a bit of code...
  9. okay 1 testbed is done , time to post to ttlg , here is the link : https://www.ttlg.com/forums/showthread.php?t=153456&page=2&p=2542791&viewfull=1#post2542791 originally windows 7 isnt recommended but i decided to go down the path i have no dx9 gpu left ( and the hwtl document itself doesnt recommend dx9 era gpu) The remaining test results from other PCs and laptops will follow
  10. How you can help depends a lot on what skills you have. I can Record Video Recording "Let's Play" videos or simple walkthroughs of existing missions and posting them to Youtube is great exposure for the mod (see example .) Be sure to let us know so we can link to them. If you have some editing ability, Video tutorials, where you explain how the mod works, or how to use specific tools, would also be great. Video trailers, showcasing interesting places and features, are also great for publicity. An example is . I can Write Writing reviews for missions are always nice, especially if they include good screenshots. Not only does it give us something to post on other forums, but it makes mappers feel good when their mission gets attention (especially if it's positive). We have a collective thread to post reviews in: http://forums.thedar...s-walkthroughs/ Writing reviews of the mod as a whole, targetted an an audience that doesn't know much about TDM, is also very useful. You could also try offering your services to mappers to create interesting readables, or to proofread for their mission. I can Act and Record Audio We are always on the lookout for good quality audio recordings for vocal sets. If interested, you can pick a few different lines from this script: http://wiki.thedarkm...t:_Average_Jack and send the recordings to Springheel, who then writes a script based on the type of voice you have. I can Translate We could always use translations of our menu/hud into more languages. Also, only a few FMs are aavailable in more than one language, so there is a lot of work there, see the I18N Translator's Guide in the Wiki. I can Model Great! Take a look at the model request thread:http://forums.thedar...-requests-here/ and pick something that interests you. Or just post a, "Hey, anybody want a model?" thread in this forum and I'm sure mappers will get back to you. I can Animate Fantastic. We can always use more good animations. Our current character rigs use a Maya skeleton. PM Springheel for more info. I know C++ Have a look at our coding section in the wiki, pick an issue or feature from the bugtracker of the mod or the leveleditor, download the recent sourcecode release (or better ask for an SVN checkout) and get cracking. Make sure nobody is already working on that specific issue and feel free to ask questions. I can Edit Images We can always use completely new textures and/or improved versions of older textures. How to get started and how to import them into the mod. I can Take Photos Good quality photos of useful textures (medieval-ish building facades, dirt, rocks, wood, etc) are always welcome. The fewer directional shadows and higher resolution, the better. I don't have any skills Even if you can't do any of the above, you can still help out. Talk about TDM in other forums; share your (preferably positive) experiences with other gamers you know. Last, but not least, compliment people when you like their work. Saying "thanks", to a developer or, "I really enjoyed your mission" to a mapper will make their day. -------------------- I'll update this further as more things occur to me.
  11. Oh my God, this is where I should pretend like I have never taken part in this conversation. I definitely don't want to implement anything like an editor. If we are talking on this level, then the only viable solution would be to take some common localization format which supports the subset that TDM uses and then use existing editors. For instance, it seems that GNU gettext can be used, it is based on full-text replacements. Then the whole pipeline should be like this: We need to maintain some code that runs through core/FM and finds all strings that are worth translating, then writes them to POT file. It was done in C++ at Doom 3 times, then that code was commented out and Perl code was written in its place. I suppose it is necessary to have something like this anyway if we want people to translate missions... Translators use available software which support gettext/PO format to generate per-language PO files in UTF-8. PO files are put into strings/ (core) or into mission strings/fm (mission). TDM engine parses PO files natively along with .utf8map files and fills its internal 8-bit database. If I'm not mistaken, gettext normally replaces complete English plaintext with local text. I suppose we can just put our #str_omg placeholders as "original English text" into it, and thus support both placeholder replacement as we have now and full-text replacement as I suggested for missions.
  12. I have committed my changes to SVN, now SVN works on the UTF-8 system. It reads all language strings from all.utf8lang file, and only reads old-style {language}.lang files for missions if the equivalent new-style files are not available. The core .lang / .map files are present yet, but will hopefully be deleted. In the end, I had to manually add some characters to utf8map to suppress warnings. They were not handled by the old engine: I simply remapped them all to the question mark. It seems that the majority of them come from language names, and I don't care if they look broken or have question marks. I have already stated my position about language names. At the current moment, .utf8lang uses the same format as .lang, but this is temporary. As I said before, this must be changed in order to not lock us into compatibility trap. The format should be a sequence of "commands", each command starting with a keyword saying which command it is. And global state should be kept to minimum (e.g. current language seems acceptable). In addition to the current "#str_{name}" placeholders, I'd like to add two more types of replacements for missions. 1) Plain-text replacements, i.e. replace "Not enough drive space to save the game." with "Não há espaço para salvar o jogo.", as I suggested before. This approach provides zero inconvenience for the mapper, but it rather unreliable. It becomes especially bad for short strings. This kind of replacements is not cheap to perform, but I think I know how to do it efficiently. The first version will do it with bruteforce algorithm, we don't have any plain-text replacements yet anyway. 2) Full-text + ID replacements, i.e. replace "Not enough drive space to save the game.#id_nospacesave#" with "Não há espaço para salvar o jogo.#id_nospacesave#". The #id_...# placeholders are stripped from the text by the engine even if translation does not exist. If translation exists, then the engine verifies the context around the placeholder and does not apply it in case of mismatch. This approach gives mild inconvenience to the mapper, since he can clearly see the original text but has to tolerance this annoying tag at the end. The mapper can even edit the text without touching the placeholder: the obsolete translations will stop working automatically. I have a feeling that plain-text replacements won't be enough for the missions, and hope that such extra "tags" can be used here and there to make it more reliable.
  13. I'm surprised I could find any thread here for chat-GPT. Version 4 is outstanding from all reports I saw and I can't wait to get my hands on. It's not just a chat-bot (though it can discuss anything with you in great depth.) It can grasp the MEANING of sentences and write its own. In future games, you'll be able to talk to NPC's like you would any human. Search for video: Unbelievable AI Breakthrough Interactive AI Characters in a Videogame for the First Time! This demo is outstanding. GPT will be WRITING games! It can write meaningful stories. It can fill in your tax form, prepare your business/wedding speech and discuss its merits with you, and organise your professional work rapidly It can understand humour It can teach! Efficently! Sensibly! Find the Khan Academy video. It can write code/script good enough to frighten a senior programmer who can see it already is as good as junior coders and some seniors. He's afraid because it is certain to take over HIS job in due time, possibly only months away. An AI bomb has been dropped with GPT-4 and many do not yet realise how life-changing it will be - greater even than the advent of the internet. I give it 5 years to change the efficiency of almost everything tenfold, a hundredfold.
  14. seems there is a new version of newdark out https://www.ttlg.com/forums/showthread.php?t=153456 version 1.29 the hwtl version supports shadowmaps postprocessing effects (bloom etc) and other nifty stuff. this one done by le corbeau himself. the hwtl version gets rather spooky with dynamic shadowmaps on . EDIT: ah just noticed it was posted earlier lol.
  15. Hello and thanks for checking out this post. I'm delighted to announce that version 1.1 of my fan mission "Cole Hurst 1: Eaton" is now available to download and play. This post is spoiler free, so please don't avoid digging into the details below if you are interested. I'm just using the spoiler tags to organize this post a bit. Let me start by saying "thank you" to anyone who has either previously played - or is considering playing this mission. It really means a lot to me. I have been away for a while, but following a round of beta testing that took place some time last year, I've only just recently managed to finish this update. I'm slightly embarrassed by how long it has taken me to complete, but I wanted to make sure that the valuable feedback I received was all properly addressed. Mission description "Tonight, Eaton's wealthiest citizens will gather at Lord Mayor Zelmer's estate to celebrate the city's founding. Nobles, dignitaries, a famed musician, and even the Queen will pass through its gates. While the guests celebrate Eaton's future, Cole Hurst is looking for a way out." For those new to and/or curious about this mission: I guess I would describe it as a traditional heist-style mission - although with a couple of major plot twist along the way. It's a very large map and I think it should take most players at least a few hours to complete. Screenshots Changes in version 1.1 Countless additions and a large amount of smaller tweaks and changes have all made it into this release. I may have already forgot a few things, but here are what I consider to be the main highlights: * New secrets & optional side quests * Story tweaks and reworked readables * Subtitles * Difficulty tweaks and related changes * Stability fixes * Various cosmetic changes * Audio tweaks * TDM version 2.13 now required Contributions and acknowledgments A special thanks to all of those listed below. I'm sincerely grateful for all your contributions! Mission testers and technical support @nbohr1more, @stgatilov, @duzenko, @Acolytesix, @Dragofer, @JackFarmer, @Shadow, @Cambridge Spy, @wesp5, @madtaffer, @prjames, @suzy8track, @datiswous, @boissiere and @Bergante Story Kelly Hrupa Voice actors twhalen2600 (AKA @Benny_the_guard) and Kelly Hrupa
  16. Looks like at least some other Frenchies have access to it: https://www.ttlg.com/forums/showthread.php?t=152974
  17. oh and btw. the original source code is here -> https://github.com/dima424658/darkengine in case someone wants to study it.
  18. Darkmod underutilizes, in my opinion, capabilities for procedural animation. We already do some, like the random head and torso turns that are added on top of existing animations. There's also possibility for separate animation for top and bottom of the character as well as head. There's a missing opportunity for varied facial expressions. I talked about animation blending in this thread. Here's something that for example Thief: Deadly Shadows did. It's swaying side to side while turning. I used Gemini to add code to the tdm_ai_base.script. I don't know if this is the most efficient way of doing it, probably not. Here are the parts added: Gemini came up with the term "banking" which is used in car racing. I don't know if that's what it's called in animation or games. There's a lot of variables that can be tweaked. You can rotate this way any bone you wish. I use 'Origin', 'Spine_Dummy' and 'Neck' bones: You can tweak amount of rotation for each bone. setJointAngle(m_bankingJointHandle, 1, jointRotation * 1); setJointAngle(m_bankingJointHandle1, 1, jointRotation * 0.6); setJointAngle(m_bankingJointHandle2, 1, jointRotation * -1.5); There's also global intensity: (targetBanking = deltaYaw * 1.4;) and attenuation: m_bankingCurrentValue = (m_bankingCurrentValue * 0.95) + (targetBanking * 0.05); modifiers. Gemini also proposed to add an LOD system, which I thought was a great idea. So currently at a distance of 1500 from player the swaying will be disabled. Here are examples, each with slightly different values: And here's comically exaggerated one:
  19. So I had a conversation with Gemini and it told me that in order to get rid of the code from tdm_ai_base.script I can use "scriptobject" inside tdm_ai_humanoid.def. The problem is there can only be one script object, so if I want both banking script and head tracking script, then one will have to inherit from another. So banking now inherits from head_tracking. That seems like a hack. But it prevents this crash: But now that I think of it, people probably already use "scriptobject" for other things. So it will cause conflicts.
  20. ============== -= IRIS =- ============== WELLINGTONCRAB TDM v 2.11 REQ Ver. 1.3 *For Maureen* -=- "Carry the light of the Builder, Brother. Unto its end." -Valediction of the Devoted "What year is this? Am I dreaming?" -Plea of the Thief Dear Iris, I am old and broken. When we were young it felt like the words came easily. Now I find the ink has long dried on the pen and I'm as wanting for words as coin in my purse. I can tell we are nearing the end of the tale; time enough for one more job before the curtain call... ============== -Installation- Requires minimum version of TDM 2.11 **Dev build dev17056-10800 (2.13) fixes several visual effects which have been broken in the mission since the release of 2.11. For that reason playing with that version or later is currently recommended** -Iris does not support mods or the Unofficial Patch- Download and place the following .pk4 into you FMs directory: Iris Download ============== Beta Russian Language Translations by @kalinovka Mirror #1: yandex.ru Mirror #2: Google Drive ============== *Thank you for playing. Iris is a large mission which can either take as quickly or as long as you are compelled to play. I hope someone out there enjoys it and this initial release is not completely busted - I tried the best I could!* *Iris both is and isn't what it seems. If commenting please use spoiler tags where appropriate. If you are not certain if it would be appropriate a good assumption would be to use a spoiler tag* *Support TDM by rating missions on Thief Guild: https://www.thiefguild.com/* ============== WITH LASTING GRATITUDE: OBSTORTTE - Whose gameplay scripts from his thread laid the foundation which made the mission seem like something I could even pull off at all. Also fantastic tutorial videos! DRAGOFER - Who built upon that foundation and made it shine even brighter! And whom also provided immeasurable quantities of help and encouragement the past couple years on the TDM discord. ORBWEAVER & GIGAGOOGA - For generously offering their ambient music up for use. EPIFIRE - Who lent me his fine trash and trash receptacle models. AMADEUS - Who was the first person who wasn't me to play the damn thing and provided his excellent editorial services to improving the readers experience playing TESTERS AND TROUBLESHOOTERS: AMADEUS * DATISWOUS * SPOOKS * ALUMINUMHASTE * JAXA * JACKFARMER * WESP5 * ATE0ATE * MADTAFFER * STGATILOV * DRAGOFER * KINGSAL * KLATREMUS - What can I possibly say? Playing this thing over and over again could not have been easy. Deepest thanks and all apologies. -=THANKS TO ALL ON THE TDM DISCORD AND FORUM=- ==SEE README.TXT FOR ADDITIONAL ATTRIBUTIONS & INFORMATION== HONORABLE MENTION: GOLDWELL - If I hadn't by chance stumbled into Northdale back in 2018/2019 I would probably still be trying to get this thing to work in TDS, which means it probably would not exist - though more details on that in readme. ============== Boring Technical Information: *Iris is a performance intensive mission and I recommend a GTX 1060 or equivalent. I find the performance similar to other demanding TDM missions on my machine, but mileage may vary and my apologies if this prevents anyone from enjoying the mission.* *Iris heavily modifies the behavior of AI in the game, how they relate/respond to each other and the player. So they may act even stranger than they do typically in TDM. Feedback on this is useful - as it can potentially be improved and expanded upon in future patches.* -=- This is my first release and it has been a long time coming! If I forgot anything please let me know! God Speed. 2.10 Features Used:
  21. That mission has custom tdm_ai_base.script file. It's possible to move all related code from that file. There will be one line added to tdm_ai_humanoid.def instead. "Displacement" has custom version of that file too, but that doesn't cause a crash in my tests.
  22. @stgatilov, I've tried to get up to speed on the xgettext/.pot/.po stuff, and the implications of migrating to using that for the core all.lang data (setting aside usage for FM data). In my remarks here, I'm going to use REVALL to refer to my revised/restructured all.lang[English] file. My goals were – to preserve in some form the new manual contextual structuring (order & comments) I developed for REVALL. The .pot/.po format is not ideal for that, being flatter than .json or .xml, but probably close enough. avoid having such contextual structuring accidentally deleted by updates. (That is, don't use standard xgettext to automatically extract and update the .pot file, since this would throw away manual structuring) support the "stays the same" annotations from translators. be likely compatible with editors like poedit. (These would presumably ignore the use of trailing comments. The "po way" of doing things is to have preceding full-line comments, each beginning with "#".) Although TDM engine code would not have to adhere to standard "gettext()" syntax/semantics when parsing a .po file, introducing our own customizations to .pot/.po might well conflict with standard po editors. Anyway, given where we are now with REVALL, I don't think it's viable to use standard (or even customized) xgettext to extracts translatable content and generate a .pot file. Instead, a reasonable, poedit-compliant .pot can be one-time hand-created from REVALL. This would then be used with msgmerge (or more likely from within poedit) to generate language-specific (BUT still utf8) .po files. Consider this 2-line fragment from REVALL: // Used after applying the holy water. Appears also in inventory: "#str_08610" "Holy Water Arrow" Here's what a corresponding .pot entry would look like, where "#." (hash-dot) here indicates a message TO the translators (as if extracted from the source material). Messages FROM the translator (e.g., "stays the same", would be on a preceding line beginning with "# " (hash-space). FORMAT A - #str_id as comment #. Used after applying the holy water. Appears also in inventory: #. "#str_08610" msgid "Holy Water Arrow" msgstr "" // Will be filled in to make language-specific .po FORMAT B - #str_id as key #. Used after applying the holy water. Appears also in inventory: #. "Holy Water Arrow" msgid "#str_08610" msgstr "" // Will be filled in to make language-specific .po With Format A, there is some possibility of multiple meanings for the same msgid. To prevent key collisions, standard Gettext uses an optional msgctxt (message context) attribute. The combination of msgctxt + msgid forms a unique composite key. Probably TDM's Translate() could just look for the preceding #str_id comment. I didn't show reference comments beginning with "#:", to indicate the file(s) and even line numbers where the pseudo-extraction was done from. These could be added with additional work. Also, the REVALL special "//&" notation... I'd have to think further about that.
  23. They don't have NewDark but apparently have their own build based on the old leaked Dark Engine source code. The games aren't ported to KEX, they run 'within' it. KEX is a wrapper that shakes hands with the original engine and injects modern features.
  24. I think you might be right. In discord they said "The remaster runs on Nightdive's own internal Dark engine port - the team doesn't have access to or use any Newdark code. While there will be a modern renderer with many enhancements, a lot of those experiments wouldn't really be in scope."
×
×
  • Create New...