Jump to content
The Dark Mod Forums

Search the Community

Searched results for '/tags/forums/code/' or tags 'forums/code/q=/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. If there ever was a common code-style, it is definitely lost forever in the TDM-codebase. It's a huge mess in this regard!
  2. BFG has no Dmap source code... checking RBDoom3BFG. RBDoom3BFG uses the same as vanilla
  3. Perhaps id didn't cared for that loss on accuracy, at lest for Doom 3, is hard for me to believe they did that for lack of knowledge or something but who knows. Is this code still in BFG?
  4. @grodenglaive I think random head turning might be plausible for specific characters, if they're supposed to be paranoid for some reason. But you should let the player know in advance that they're always looking over their shoulders. I don't know if Elsevier has any reasons to be paranoid, but it could be plausible in his case. It could even be one of the reasons why Astrid had a hard time seeing him insert the safe code. The doors thing, at least some interior doors were auto-closing too. I was specifically thinking of the dinning room doors when I wrote that. I think there were more auto-closing interior doors, though. Personally, my potato doesn't have any real issues with performance in this mission. Only on the outside the frame rates drop below 60 sometimes, but never enough to make any noticeable difference to the gameplay. That said, I wonder if you could use double visportals on the outside doors. That might help, as the inner portal should close more often, without needing to close the doors. I use double portals sometimes because of that. But it needs testing to know for sure whether it helps or not. (It also requires adjusting info_locationSeparators, as they can only touch one portal). Also, the big visportal in the water that separates the front yard from the spider area seems to be always open. I wonder if having two visportals in a V shape (from the top view) instead of that one, would help closing it. Or some similar configuration that doesn't interfere with the view from the watchtower.
  5. 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.
  6. In the first post of the other topic Geep proposed: Then Stgatilov's answer: But I think applying subtitles in different languages shouldn't be too hard I would think, but I don't know how the current translation system works. The engine should apply the correct subtitles based on the applied language setting, this doesn't need a whole new language system I think. Not sure who's going to write those subtitles though. I can only do Dutch and English and nobody needs Dutch I think. I suggest further discussion of this to take place in topic https://forums.thedarkmod.com/index.php?/topic/21741-subtitles-possibilities-beyond-211/
  7. As someone who tends to alert guards often and occasionally stir trouble when going through a FM, I noticed some major issues when it comes to AI realism and awareness during combat or when guards face difficult situations. Everything's fine when AI go about their usual patrols... once trouble takes place however, the illusion falls apart as guards act like they're less self aware than a toddler. Indeed AI realism can't be improved past a certain point as there's a limit to the effort the team can put into something so complex... yet I do believe a few improvements can make AI behavior much more realistic and exciting. After analyzing this issue for a long time, I decided to put it all it into a few main points... I apologize for their length as I wanted to go in a bit of detail on each one, hope folks have the time and patience to read them. Biggest issue is AI are unaware of where attacks are coming from. I recently made another thread on how I climbed on a table and blackjacked two guards to death as they sat there doing nothing, something that also happens when shooting them with arrows as guards only explore the nearby area. The issue seems to be that AI don't account for the direction a hit comes from, they only know something hit them but act as if it must be some mystical force of nature: If you're sitting in a parking lot and an asshole neighbor throws a tomato at you from his balcony, you aren't going to cluelessly investigate the road in front of you when the projectile clearly came from behind and hit you in the back of the head, instead you'll storm into the building and start looking for which of the neighbors facing that side of the road may be the culprit. Despite voice barks existing for this exact scenario, we never see AI running to get help from other AI. NPC's will do one of two things: If armed and with enough health they will attack or search for you nearby, if hurt or unarmed flee to a random location. I've never seen an AI consciously run up to another AI asking for help and bringing them to where they spotted me, even when fleeing the AI seems to go to a random location. They don't share knowledge with each other generally speaking: The only awareness AI spread to other AI is alert level, meaning NPC A becomes alert if it sees or hears that NPC B is alert too... beyond that there's no coherence or actual cooperation, the voices may indicate some form of searching together but friendly NPC's are never seen actually engaging. Another big issue is voices being played (or not played) in disconnect with what's actually going on. There are AI voices for most important circumstances but they're very rarely activated: It's a miracle to hear a guard say "someone's been hurt" or "there's a body here" when noticing someone who's unconscious or dead. What seems to happen is if AI was already alerted by another peculiarity such as a noise, they're no longer surprised by anything else and won't play the voices designated for that scenario, so they'll only mention a body if that's the first thing to alert them in any way. Furthermore AI don't actively talk with each other while searching together, everyone acts as if they're on their own and not a team. What happens after a conflict is over. For this discussion I won't focus on better permanent alerts, that has greater difficulty implications and I think I made a separate thread on it a while back. The problem I noticed is once the immediate alert has gone down, AI return to full normality and act abnormally calm: The idle voices change from saying things like "it's a quiet night" to "we've got an intruder" but that's about it. In any realistic scenario even a trained guard would be shocked after being in a fight or finding a body. Below I'll list the immediate improvements I see to those problems, which without having an understanding the code myself am presuming can be changed without too much effort: When an enemy hits the AI with any weapon, the AI should be alert to the estimate location of the shooter. If you're standing atop a tower and fire an arrow at a guard, the guard shouldn't draw his sword and look around their nearby vicinity like a fool, but instead run up to the tower where you're standing granted they can pathfind their way to that location. If the player is far away the destination should be fuzzy and a random location nearby, thus the guard won't run to your exact location but will still climb the stairs and enter a room near it. AI need to learn how to ask for help instead of fleeing to random places when not attacking. If an ally who isn't already alert can be found nearby, the scared AI should explicitly run to their location tell them where you are then have the ally either run to your location (if armed) or go to another ally to get them to your location (if unarmed). Even if an AI is already alert, finding a body or dropped weapon or broken arrow should result in the AI speaking the voice line for that circumstance, only being engaged in combat should suppress it. I'd go further and support repeating those voice lines: A guard yelling "we have a dead body" several times during the first seconds of discovery would make them appear more shocked. Similarly talking to a nearby guard shouldn't be done just once when the two first meet: When multiple AI are searching for you, they should constantly alternate between single voice lines (eg: "I bet you're right over there in those shadows") and looking at another guard to talk to colleagues (eg: "I know I saw him here keep searching"), this would be a huge improvement since guards currently act like they're completely unaware of each other during a coordinated search. Making guards permanently affected after an incident is a trickier one but a few tweaks could improve it. The most immediate solution would be changing the idle animations: Instead of stretching or blowing their noses or eating candy, AI should be seen randomly cowering or face-palming or even playing the scout animation to look around carefully. One suggestion I'd absolutely throw here: If the AI found a dead body from an ally, have them cry occasionally... I think that would be an interesting and unexpected detail, that will also get players to think and feel more about the consequences of their actions and how they affect the world. There are other ones I could get into, but some would be more difficult and likely not worth trying to solve. Most notable and worthy of at least a mention is how AI walk over the bodies of fallen friends as if they're doormats: Obviously there's no way to have them drag bodies to the side, but maybe an avoidance mechanism so they don't look like jackasses trying to profane their dead friends by literally stepping all over them could be a fix for that as well! Let me know what you think of those points and if there are other AI issues you've noticed yourself or better solutions you can think of: I'm not sure if I got everything here but I definitely believe the problems exist and we could make the world more natural and immersive with some simple fixes.
  8. That's because all those guides apparently did not reach the age of web-page-based Code-Reviews via Github, Azure Devops, and the likes... All the people arguing against Hungarian say that you simply don't need it anymore, because your compiler / IDE will tell you what type a variable has (your Pull-Request web-gui will not show you that information) and that Hungarian only makes it harder to read variables (which is not really accurate, as our brain is perfectly capable to read any camel-case variable or function, so why shouldn't it be able to parse the prefix?).
  9. I was wondering if it's possible to make a program that generates a subs file from a folder with a bunch of srt files. I know this is too much to ask for, but I just mention the idea.. The lines are usely: srt "sound/sub-path-to-sound-folder/sound-file-name.ogg" "subtitles/sound-file-name.srt" Edit: I think I already figured it out using Python code. Just putting it here quickly so I can reproduce it later. import os, sys path = "C:/Progs/tdm/fms/mandrasola/sound/sfx/mandrasola/" path_sounds = "sound/sfx/mandrasola/" path_subs = "subtitles/" listfiles = os.listdir(path) for x in listfiles: print("srt " + '"' + path_sounds + x + '"' + ' "' + path_subs + x.removesuffix('.ogg') + ".srt" + '"') Generates: srt "sound/sfx/mandrasola/mandrasola_guard1.ogg" "subtitles/mandrasola_guard1.srt" srt "sound/sfx/mandrasola/mandrasola_guard2.ogg" "subtitles/mandrasola_guard2.srt" srt "sound/sfx/mandrasola/mandrasola_lovell1.ogg" "subtitles/mandrasola_lovell1.srt" srt "sound/sfx/mandrasola/mandrasola_lovell2.ogg" "subtitles/mandrasola_lovell2.srt" srt "sound/sfx/mandrasola/mandrasola_lovell3.ogg" "subtitles/mandrasola_lovell3.srt" srt "sound/sfx/mandrasola/mandrasola_lovell4.ogg" "subtitles/mandrasola_lovell4.srt" srt "sound/sfx/mandrasola/mandrasola_lovell5.ogg" "subtitles/mandrasola_lovell5.srt" srt "sound/sfx/mandrasola/mandrasola_lovell6.ogg" "subtitles/mandrasola_lovell6.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla1.ogg" "subtitles/mandrasola_ludmilla1.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla2.ogg" "subtitles/mandrasola_ludmilla2.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla3.ogg" "subtitles/mandrasola_ludmilla3.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla4.ogg" "subtitles/mandrasola_ludmilla4.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla5.ogg" "subtitles/mandrasola_ludmilla5.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla6.ogg" "subtitles/mandrasola_ludmilla6.srt" srt "sound/sfx/mandrasola/mandrasola_ludmilla_iwarnyou.ogg" "subtitles/mandrasola_ludmilla_iwarnyou.srt" Man this would have saved me so much time yesterday..
  10. The previous reporter who had non-working glasses said game crashes on drop. The same happens for me. As you might guess, most of the code expects the entity of the inventory item to be alive. Anyway, I don't think it is possibled to drop inventory item if it has no entity, because logically it should just put this entity back into the world. If it's dead, it can kill the inv. item, but I don't think it can resurrect the entity.
  11. I have added some notes to 6436 relating to the 'shot from afar' problem. For your main point (1 in your original report) I think that the main aspect of it is that you are (code-wise) literally invisible to the guards. It's as though if there was a real-life invisible man who whacks you on the shoulder from behind, you'd whirl round and there would be no-one there. What would you do?
  12. Hi, this mission is crashing on my system and I cannot go on. Playing "Hidden Hands - The lost citadel" Version 6 on Fedora Linux Version 38. I paste the whole output of the console below. Perhaps someone can find the cause for the crash, that would be very nice [stefan@fedora darkmod]$ ./thedarkmod.x64 TDM 2.11/64 #10264 (1435:10264) linux-x86_64 Jan 30 2023 02:02:43 /proc/cpuinfo CPU frequency: 899.998 MHz 900 MHz Intel CPU with SSE & SSE2 & SSE3 & SSSE3 & SSE41 & AVX found interface lo - loopback Found Intel CPU, features: SSE SSE2 SSE3 SSSE3 SSE41 AVX TDM using AVX for SIMD processing. Found 0 new missions and 0 packages. ------ Initializing File System ------ Current search path: [M] /home/stefan/darkmod/fms/hhtlc [M] /home/stefan/darkmod/fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4 (665 files - 0xf04d8d7e) [C] /home/stefan/darkmod/ [C] /home/stefan/darkmod/tdm_textures_wood01.pk4 (382 files - 0x54c704d0) [C] /home/stefan/darkmod/tdm_textures_window01.pk4 (399 files - 0x50a48869) [C] /home/stefan/darkmod/tdm_textures_stone_sculpted01.pk4 (464 files - 0x3bd63c7c) [C] /home/stefan/darkmod/tdm_textures_stone_natural01.pk4 (141 files - 0x4d0836ff) [C] /home/stefan/darkmod/tdm_textures_stone_flat01.pk4 (302 files - 0x671a22d2) [C] /home/stefan/darkmod/tdm_textures_stone_cobblestones01.pk4 (271 files - 0xc46ab14f) [C] /home/stefan/darkmod/tdm_textures_stone_brick01.pk4 (527 files - 0x1d087cf8) [C] /home/stefan/darkmod/tdm_textures_sfx01.pk4 (69 files - 0x2c673886) [C] /home/stefan/darkmod/tdm_textures_roof01.pk4 (69 files - 0x24547b7) [C] /home/stefan/darkmod/tdm_textures_plaster01.pk4 (142 files - 0x9747529e) [C] /home/stefan/darkmod/tdm_textures_paint_paper01.pk4 (67 files - 0xa4a95a09) [C] /home/stefan/darkmod/tdm_textures_other01.pk4 (127 files - 0x36932451) [C] /home/stefan/darkmod/tdm_textures_nature01.pk4 (286 files - 0x19240606) [C] /home/stefan/darkmod/tdm_textures_metal01.pk4 (509 files - 0x441d098f) [C] /home/stefan/darkmod/tdm_textures_glass01.pk4 (51 files - 0x3f3721e) [C] /home/stefan/darkmod/tdm_textures_fabric01.pk4 (43 files - 0x649daf73) [C] /home/stefan/darkmod/tdm_textures_door01.pk4 (177 files - 0xb0130166) [C] /home/stefan/darkmod/tdm_textures_decals01.pk4 (474 files - 0xe2ff12c6) [C] /home/stefan/darkmod/tdm_textures_carpet01.pk4 (130 files - 0x79bc3d7c) [C] /home/stefan/darkmod/tdm_textures_base01.pk4 (435 files - 0xc07a324) [C] /home/stefan/darkmod/tdm_standalone.pk4 (4 files - 0xb3f36d20) [C] /home/stefan/darkmod/tdm_sound_vocals_decls01.pk4 (32 files - 0x53cda0aa) [C] /home/stefan/darkmod/tdm_sound_vocals07.pk4 (1111 files - 0xa13ec4c2) [C] /home/stefan/darkmod/tdm_sound_vocals06.pk4 (696 files - 0x44c85e78) [C] /home/stefan/darkmod/tdm_sound_vocals05.pk4 (119 files - 0x6cf23214) [C] /home/stefan/darkmod/tdm_sound_vocals04.pk4 (2869 files - 0xd7ec1256) [C] /home/stefan/darkmod/tdm_sound_vocals03.pk4 (743 files - 0xb3f2e0f1) [C] /home/stefan/darkmod/tdm_sound_vocals02.pk4 (1299 files - 0x5092940e) [C] /home/stefan/darkmod/tdm_sound_vocals01.pk4 (82 files - 0xf4d326b2) [C] /home/stefan/darkmod/tdm_sound_sfx02.pk4 (605 files - 0x31673482) [C] /home/stefan/darkmod/tdm_sound_sfx01.pk4 (987 files - 0x97451b7a) [C] /home/stefan/darkmod/tdm_sound_ambient_decls01.pk4 (8 files - 0x9404877c) [C] /home/stefan/darkmod/tdm_sound_ambient03.pk4 (24 files - 0xd28ca9ec) [C] /home/stefan/darkmod/tdm_sound_ambient02.pk4 (163 files - 0x84efad22) [C] /home/stefan/darkmod/tdm_sound_ambient01.pk4 (220 files - 0xee228c81) [C] /home/stefan/darkmod/tdm_prefabs01.pk4 (1017 files - 0x506baa0b) [C] /home/stefan/darkmod/tdm_player01.pk4 (127 files - 0xd983fc45) [C] /home/stefan/darkmod/tdm_models_decls01.pk4 (101 files - 0x146c787) [C] /home/stefan/darkmod/tdm_models02.pk4 (2241 files - 0x42cdbf62) [C] /home/stefan/darkmod/tdm_models01.pk4 (3326 files - 0x829270f2) [C] /home/stefan/darkmod/tdm_gui_credits01.pk4 (49 files - 0xbff51863) [C] /home/stefan/darkmod/tdm_gui01.pk4 (758 files - 0xcbf4fd2d) [C] /home/stefan/darkmod/tdm_fonts01.pk4 (696 files - 0x7c5027bf) [C] /home/stefan/darkmod/tdm_env01.pk4 (176 files - 0x8bd4045b) [C] /home/stefan/darkmod/tdm_defs01.pk4 (194 files - 0xe5f440dc) [C] /home/stefan/darkmod/tdm_base01.pk4 (223 files - 0x9704b43c) [C] /home/stefan/darkmod/tdm_ai_steambots01.pk4 (31 files - 0x26416485) [C] /home/stefan/darkmod/tdm_ai_monsters_spiders01.pk4 (80 files - 0x15c3ef89) [C] /home/stefan/darkmod/tdm_ai_humanoid_undead01.pk4 (55 files - 0x25e463ad) [C] /home/stefan/darkmod/tdm_ai_humanoid_townsfolk01.pk4 (104 files - 0xa6f7c573) [C] /home/stefan/darkmod/tdm_ai_humanoid_pagans01.pk4 (10 files - 0x566fb35a) [C] /home/stefan/darkmod/tdm_ai_humanoid_nobles01.pk4 (51 files - 0x5ca54cab) [C] /home/stefan/darkmod/tdm_ai_humanoid_mages01.pk4 (8 files - 0x5e7a666b) [C] /home/stefan/darkmod/tdm_ai_humanoid_heads01.pk4 (100 files - 0x45ec787e) [C] /home/stefan/darkmod/tdm_ai_humanoid_guards01.pk4 (379 files - 0x9801be8d) [C] /home/stefan/darkmod/tdm_ai_humanoid_females01.pk4 (172 files - 0xc7de4598) [C] /home/stefan/darkmod/tdm_ai_humanoid_builders01.pk4 (91 files - 0x6dea9b57) [C] /home/stefan/darkmod/tdm_ai_humanoid_beasts02.pk4 (229 files - 0x886c9a98) [C] /home/stefan/darkmod/tdm_ai_humanoid_beasts01.pk4 (23 files - 0xba9da54c) [C] /home/stefan/darkmod/tdm_ai_base01.pk4 (9 files - 0x1de319e8) [C] /home/stefan/darkmod/tdm_ai_animals01.pk4 (82 files - 0x6c0fda50) File System Initialized. -------------------------------------- Couldn't open journal files /proc/cpuinfo CPU processors: 2 /proc/cpuinfo CPU logical cores: 4 ----- Initializing Decls ----- WARNING:file materials/puzzle_paintings.mtr, line 228: material 'textures/puzzle/flower' previously defined at materials/puzzle_paintings.mtr:14 WARNING:file sound/ambient.sndshd, line 79: sound 'firstfloor' previously defined at sound/ambient.sndshd:51 WARNING:file sound/soul.sndshd, line 129: sound 'builder_tim_1' previously defined at sound/soul.sndshd:102 WARNING:file sound/video.sndshd, line 12: sound 'main' previously defined at sound/ambient.sndshd:1 ------------------------------ I18N: SetLanguage: 'english'. I18N: Found no character remapping for english. I18N: 1321 strings read from strings/english.lang I18N: 'strings/fm/english.lang' not found. Couldn't exec editor.cfg - file does not exist. execing default.cfg Gamepad modifier button assigned to 6 execing Darkmod.cfg execing DarkmodKeybinds.cfg execing DarkmodPadbinds.cfg Gamepad modifier button assigned to 6 Couldn't exec autoexec.cfg - file does not exist. I18N: SetLanguage: 'german'. I18N: Found no character remapping for german. I18N: 1321 strings read from strings/german.lang I18N: 'strings/fm/german.lang' not found. I18NLocal: 'strings/fm/english.lang' not found, skipping it. ----- Initializing OpenAL ----- Setup OpenAL device and context OpenAL: found device 'ALSA Default' [ACTIVE] OpenAL: found device 'HDA Intel PCH, CS4208 Analog (CARD=PCH,DEV=0)' OpenAL: found device 'HDA Intel PCH, HDMI 0 (CARD=PCH,DEV=3)' OpenAL: found device 'HDA Intel PCH, HDMI 1 (CARD=PCH,DEV=7)' OpenAL: found device 'HDA Intel PCH, HDMI 2 (CARD=PCH,DEV=8)' OpenAL: device 'ALSA Default' opened successfully OpenAL: HRTF is available [ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1) OpenAL vendor: OpenAL Community OpenAL renderer: OpenAL Soft OpenAL version: 1.1 ALSOFT 1.21.1 OpenAL: found EFX extension OpenAL: HRTF is disabled (reason: 0 = ALC_HRTF_DISABLED_SOFT) OpenAL: found 256 hardware voices ----- Initializing OpenGL ----- Initializing OpenGL display ...initializing QGL ------- Input Initialization ------- ------------------------------------ OpenGL vendor: Intel OpenGL renderer: Mesa Intel(R) HD Graphics 615 (KBL GT2) OpenGL version: 4.6 (Core Profile) Mesa 23.1.9 core Checking required OpenGL features... v - using GL_VERSION_3_3 v - using GL_EXT_texture_compression_s3tc Checking optional OpenGL extensions... v - using GL_EXT_texture_filter_anisotropic maxTextureAnisotropy: 16.000000 v - using GL_ARB_stencil_texturing X - GL_EXT_depth_bounds_test not found v - using GL_ARB_buffer_storage v - using GL_ARB_texture_storage v - using GL_ARB_multi_draw_indirect v - using GL_ARB_vertex_attrib_binding X - GL_ARB_compatibility not found v - using GL_KHR_debug Max active texture units in fragment shader: 32 Max combined texture units: 192 Max anti-aliasing samples: 16 Max geometry output vertices: 256 Max geometry output components: 1024 Max vertex attribs: 16 ---------- R_ReloadGLSLPrograms_f ----------- Linking GLSL program cubeMap ... Linking GLSL program bumpyEnvironment ... Linking GLSL program depthAlpha ... Linking GLSL program fog ... Linking GLSL program oldStage ... Linking GLSL program blend ... Linking GLSL program stencilshadow ... Linking GLSL program shadowMapA ... Linking GLSL program ambientInteraction ... Linking GLSL program interactionStencil ... Linking GLSL program interactionShadowMaps ... Linking GLSL program interactionMultiLight ... Linking GLSL program frob ... Linking GLSL program soft_particle ... Linking GLSL program tonemap ... Linking GLSL program gaussian_blur ... Linking GLSL program testImageCube ... --------------------------------- Font fonts/english/stone in size 12 not found, using size 24 instead. --------- Initializing Game ---------- The Dark Mod 2.11/64, linux-x86_64, code revision 10264 Build date: Jan 30 2023 Initializing event system ...873 event definitions Initializing class hierarchy ...172 classes, 1732032 bytes for event callbacks Initializing scripts ---------- Compile stats ---------- Memory usage: Strings: 56, 9048 bytes Statements: 23155, 926200 bytes Functions: 1358, 177432 bytes Variables: 107720 bytes Mem used: 2149432 bytes Static data: 408 bytes Allocated: 1152120 bytes Thread size: 7928 bytes Maximum object size: 816 Largest object type name: speaker_zone_ambient ...6 aas types game initialized. -------------------------------------- Parsing material files Found 0 new missions and 0 packages. Found 42 mods in the FM folder. Parsed 46 mission declarations. No 'tdm_mapsequence.txt' file found for the current mod: hhtlc -------- Initializing Session -------- session initialized -------------------------------------- Font fonts/english/mason_glow in size 12 not found, using size 48 instead. Font fonts/english/mason_glow in size 24 not found, using size 48 instead. Font fonts/english/mason in size 12 not found, using size 48 instead. Font fonts/english/mason in size 24 not found, using size 48 instead. WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'QuitGameDialogAskEverytimeOption' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'ColorPrecision' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'OpenDoorsOnUnlock' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'InvPickupMessages' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'HideLightgem' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'BowAimer' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'FrobHelper' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'showTooltips' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'MeleeInvertAttack' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'MeleeInvertParry' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'SCGeneralBind5' has value count unequal to choices count --- Common Initialization Complete --- ------------- Warnings --------------- during The Dark Mod initialization... WARNING:file materials/puzzle_paintings.mtr, line 228: material 'textures/puzzle/flower' previously defined at materials/puzzle_paintings.mtr:14 WARNING:file sound/ambient.sndshd, line 79: sound 'firstfloor' previously defined at sound/ambient.sndshd:51 WARNING:file sound/soul.sndshd, line 129: sound 'builder_tim_1' previously defined at sound/soul.sndshd:102 WARNING:file sound/video.sndshd, line 12: sound 'main' previously defined at sound/ambient.sndshd:1 WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'BowAimer' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'ColorPrecision' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'FrobHelper' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'HideLightgem' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'InvPickupMessages' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'MeleeInvertAttack' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'MeleeInvertParry' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'OpenDoorsOnUnlock' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'QuitGameDialogAskEverytimeOption' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'SCGeneralBind5' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'showTooltips' has value count unequal to choices count 15 warnings WARNING: terminal type 'xterm-256color' is unknown. terminal support may not work correctly terminal support enabled ( use +set in_tty 0 to disabled ) pid: 4247 Async thread started Couldn't exec autocommands.cfg - file does not exist. Found 0 new missions and 0 packages. Found 42 mods in the FM folder. reloading guis/msg.gui. WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'QuitGameDialogAskEverytimeOption' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'ColorPrecision' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'OpenDoorsOnUnlock' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'InvPickupMessages' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'HideLightgem' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'BowAimer' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'FrobHelper' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'showTooltips' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'MeleeInvertAttack' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'MeleeInvertParry' has value count unequal to choices count WARNING:idChoiceWindow:: gui 'guis/mainmenu.gui' window 'SCGeneralBind5' has value count unequal to choices count reloading guis/mainmenu.gui. WARNING:unknown destination 'FlareBox::rect' of set command at /fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4/guis/map/hhtlc.gui:48 WARNING:unknown destination 'FlareBox::rect' of set command at /fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4/guis/map/hhtlc.gui:53 WARNING:unknown destination 'FlareBox::rect' of set command at /fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4/guis/map/hhtlc.gui:58 WARNING:unknown destination 'FlareBox::rect' of set command at /fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4/guis/map/hhtlc.gui:63 WARNING:unknown destination 'FlareBox::rect' of set command at /fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4/guis/map/hhtlc.gui:68 WARNING:unknown destination 'FlareBox::rect' of set command at /fms/hhtlc/hhtlc_1b4187d3b30d65cf.pk4/guis/map/hhtlc.gui:73 --------- Map Initialization --------- Map: hhtlc ------- Game Map Init SaveGame ------- ---------- Compile stats ---------- Memory usage: Strings: 57, 9144 bytes Statements: 23506, 940240 bytes Functions: 1379, 179716 bytes Variables: 108332 bytes Mem used: 2188540 bytes Static data: 408 bytes Allocated: 1176676 bytes Thread size: 7928 bytes collision data: 1373 models 163204 vertices (5100 KB) 273893 edges (12838 KB) 110189 polygons (8170 KB) 15680 brushes (2322 KB) 138243 nodes (6480 KB) 243924 polygon refs (3811 KB) 58507 brush refs (914 KB) 85771 internal edges 9795 sharp edges 0 contained polygons removed 0 polygons merged 39637 KB total memory used 2123 msec to load collision data. map bounds are (22831.0, 23151.4, 9093.0) 79 KB passage memory used to build PVS 52 msec to calculate PVS 252 areas 598 portals 14 areas visible on average 7 KB PVS data [Load AAS] missing maps/hhtlc.aas48 [Load AAS] loading maps/hhtlc.aas96 done. [Load AAS] loading maps/hhtlc.aas32 done. [Load AAS] missing maps/hhtlc.aas100 [Load AAS] loading maps/hhtlc.aas_rat done. [Load AAS] loading maps/hhtlc.aas_elemental done. WARNING:Couldn't load gui: 'guis/map_of.gui' WARNING:idCollisionModelManagerLocal::LoadModel: collision file for 'models/ritual_hammer2.lwo' contains different model WARNING:idCollisionModelManagerLocal::LoadModel: collision file for 'models/ritual_hammer3.lwo' contains different model WARNING:idCollisionModelManagerLocal::LoadModel: collision file for 'models/ritual_hammer4.lwo' contains different model WARNING:Couldn't load sound 'explosion_all_clear.wav' using default [map entity: atdm_trigger_voice_12] [decl: explosion_all_clear in <implicit file>] [sound: explosion_all_clear.wav] No running thread for RestoreScriptObject(), creating new one. -------------------------------------- ----- idRenderModelManagerLocal::EndLevelLoad ----- 0 models purged from previous level, 2786 models kept. --------------------------------------------------- ----- idImageManager::EndLevelLoad ----- WARNING:Couldn't load image: lights/qc_comj [map entity: light_159] [decl: lights/qc_comj in <implicit file>] [image: lights/qc_comj] WARNING:Couldn't load image: guis/assets/game_maps/map_of_icon [map entity: MapMansion1] [decl: atdm:map_of in def/tdm_shopitems.def] [decl: guis/assets/game_maps/map_of_icon in <implicit file>] [image: guis/assets/game_maps/map_of_icon] 0 purged from previous 219 kept from previous 2070 new loaded all images loaded in 41.8 seconds ---------------------------------------- Linking GLSL program cubeMap ... Linking GLSL program bumpyEnvironment ... Linking GLSL program depthAlpha ... Linking GLSL program fog ... Linking GLSL program oldStage ... Linking GLSL program blend ... Linking GLSL program stencilshadow ... Linking GLSL program shadowMapA ... Linking GLSL program ambientInteraction ... Linking GLSL program interactionStencil ... Linking GLSL program interactionShadowMaps ... Linking GLSL program interactionMultiLight ... Linking GLSL program frob ... Linking GLSL program soft_particle ... Linking GLSL program tonemap ... Linking GLSL program gaussian_blur ... Linking GLSL program testImageCube ... Linking GLSL program depth ... Linking GLSL program interaction_ambient ... Linking GLSL program interaction_stencil ... Linking GLSL program interaction_shadowmap ... Linking GLSL program stencil_shadow ... Linking GLSL program shadow_map ... Linking GLSL program frob_silhouette ... Linking GLSL program frob_highlight ... Linking GLSL program frob_extrude ... Linking GLSL program frob_apply ... Linking GLSL program heatHazeWithDepth ... Linking GLSL program HeatHazeWithMaskAndDepth ... Linking GLSL program heatHaze ... Linking GLSL program heatHazeWithMaskAndBlur ... Linking GLSL program fresnel ... Linking GLSL program ambientEnvironment ... Linking GLSL program heatHazeWithMaskAndDepth ... ---------------------------------------- ----- idSoundCache::EndLevelLoad ----- 394497k referenced 125k purged ---------------------------------------- ----------------------------------- 77079 msec to load hhtlc Interaction table generated: size = 0/512 Initial counts: 6903 entities 665 lightDefs 5265 entityDefs ------------- Warnings --------------- during hhtlc... WARNING:Couldn't load gui: 'guis/map_of.gui' WARNING:Couldn't load image: guis/assets/game_maps/map_of_icon WARNING:Couldn't load image: lights/qc_comj WARNING:Couldn't load sound 'explosion_all_clear.wav' using default WARNING:idCollisionModelManagerLocal::LoadModel: collision file for 'models/ritual_hammer2.lwo' contains different model WARNING:idCollisionModelManagerLocal::LoadModel: collision file for 'models/ritual_hammer3.lwo' contains different model WARNING:idCollisionModelManagerLocal::LoadModel: collision file for 'models/ritual_hammer4.lwo' contains different model 7 warnings Interaction table generated: size = 0/512 Initial counts: 6903 entities 665 lightDefs 5265 entityDefs WARNING:Restarted sound to avoid offset overflow: sound/ambient/environmental/water_pool02.ogg WARNING:Restarted sound to avoid offset overflow: sound/ambient/ambience/silence.ogg WARNING:Restarted sound to avoid offset overflow: sound/ambient/ambience/alien05.ogg Linking GLSL program environment ... The ambient volume is now -1.885291 decibels (range: -60..0), i.e., 87.749992% of full volume. Restarting ambient sound snd_ct_babtistery'(derelict03) with volume -1.885291 signal caught: Segmentation fault si_code 128 Trying to exit gracefully.. ----- idRenderModelManagerLocal::EndLevelLoad ----- 0 models purged from previous level, 2786 models kept. --------------------------------------------------- Regenerated world, staticAllocCount = 0. Getting threadname failed, reason: No such file or directory (2) --------- Game Map Shutdown ---------- ModelGenerator memory: 67 LOD entries with 0 users using 1072 bytes. --------- Game Map Shutdown done ----- Shutting down sound hardware idRenderSystem::Shutdown() ...shutting down QGL I18NLocal: Shutdown. ------------ Game Shutdown ----------- ModelGenerator memory: No LOD entries. Shutdown event system -------------------------------------- Sys_Error: ERROR: pthread_join Frontend failed shutdown terminal support About to exit with code 1
  13. That is interessting. I also do not find hungerian notation helpful in any way. Exactly the opposite in fact. I was doing a lot of functional programming recently, where code is very short and concise. Maybe that's the reason. It is simply not needed there.
  14. I've very rarely seen setter methods which return values (unlike getters which obviously need to return the value they are "getting"). What value should a setter return? The same value it was given as a parameter? That's entirely pointless because the calling code already has that value. It could return the previous value, but such a value isn't necessarily defined (and doesn't appear to be relevant in the case of writing something to a file). Sometimes setters return the object itself, so you can call them in a chain, e.g. myObject.setWidth(60).setHeight(20).setColour(RED); but it's not clear how that would work with writeFloat which isn't an object method to begin with. That's certainly common (and is a convention I use), but not universal. The C++ standard library doesn't use it, for example — to check if a vector is empty you call std::vector<T>::empty(), not isEmpty().
  15. Creating a new thread for this as it was being discussed in an old beta-testing thread starting here: https://forums.thedarkmod.com/index.php?/topic/21822-beta-testing-high-expectations/&do=findComment&comment=490751 I suppose the main questions are: when should this spawnarg be used, if at all? why was it introduced in the first place? Can we get it documented properly on the Wiki so misuse isn't propagated? @stgatilov @Dragofer
  16. Dhewm3: static void WriteFloat( idFile *f, float v ) { if ( idMath::Fabs(v - idMath::Rint(v)) < 0.001 ) { f->WriteFloatString( "%i ", (int)idMath::Rint(v) ); } else { f->WriteFloatString( "%f ", v ); } } Hmm... The original GPL Doom 3 code: static void WriteFloat( idFile *f, float v ) { if ( idMath::Fabs(v - idMath::Rint(v)) < 0.001 ) { f->WriteFloatString( "%i ", (int)idMath::Rint(v) ); } else { f->WriteFloatString( "%f ", v ); } }
  17. Honestly, I wouldn't be so quick to judge here, as noone knows the history of this code-snippet. It might just have been that there were floating-point-quantization errors in dmap and that they wanted to get rid of those by rounding at the desired precision, i.e., 0.001. Also, floating point comparisons with fixed precision like this are not uncommon at all. Some applications simply don't require more accuracy so you skip the very complex "regular" floating point comparison.
  18. Included in the beta for 2.12 is a new companion to security cameras familiar to Thief players: the automatic turret. It will become active as soon as an enemy is detected by a targeted security camera, firing projectiles to fend off the intruder. Similarly to the security camera and the camgoyle sentry, turrets are highly customisable in their behaviour and appearance. There are two main variants of turrets at the moment: the cannon and the flamethrower. Thanks to Goldwell for digging up custom sound effects and Bikerdude for creating the models. Both were originally written as scripts, and meanwhile the cannon has been converted to C++ and integrated into the core assets for 2.12-beta1. One of the aims of the 2.12 beta is to test the readiness of the turret for release, given that it's a brand new and complex entity. The question of whether it's released with 2.12 or pushed back 2.13 is decided based on feedback by testers, so plentiful testing is of the essence and can be posted here. At the time of the 2.12 beta, the flamethrower is available as a script-based downloadable addon [here]. Its mode of action is to fire a lance of fire at its target, a novelty in TDM. While the scripting engine is powerful, there are some significant potential benefits in a C++ version. The main one is access to array variables to store and process data about all emitted flames, which would allow the flamethrower to spray fire in an arc instead of firing a single stream at x position. For this reason the flamethrower isn't offered as a core asset yet. Another feature of 2.12 is the refurbishment of Doom-era code for guided projectiles, tricky for even the nimblest players to dodge. Switching to guided projectiles only requires changing a projectile's spawnclass from idProjectile to idGuidedProjectile, and more spawnargs can be found in the new entity base class for guided projectiles. A guided version of the cannon turret's projectile is available in 2.12-beta1. Work was also done on introducing Thief-style bouncing projectiles but, as a hybrid between projectiles and moveables, these aren't part of 2.12 because changes to existing code at a deeper level are needed.
  19. The "external argument about exact duration" is not removed with double click. There is a setting in OS preferences for setting double-click speed, is there not? The challenge of setting the exact duration is the same for both long-press and double-click frob. Therefore, the confusion is not removed with double click. I tuned the long-press frob to be somewhere between "unintentional long-press frob" and "it being too sluggish." Early player feedback guided the current default value of 200ms -- it was originally 300ms. During more play testing, if players are having trouble, the default can be increased and tested. We need to follow the data from actual play testing. The player can adjust the tdm_frobhold_delay cvar to their liking as well. It's more likely that a player will hold frob while moving an item, because for most items, nothing different or bad happens. It's less likely that a player will unintentionally double-click frob an item during pick up, because they know that would cause them to drop it. Therefore, players are more likely to discover long-press frob to extinguish than double-click frob to extinguish, which is a good thing. We want the player to discover it (if they didn't read the manual or play the tutorial mission). Also, long-press frob is used in other games, such as Fallout 4. Getting double-click frob to extinguish to work well along with drop item would be troublesome, because there would always be a double-click delay before a single-click drop initiates. Long-press frob does not have a drop issue, because the player can long-press frob until they see the candle extinguish or quick-press frob to instantly drop it. To be clear, long-press frob also "does not change existing controls, only adds new meaning for" a longer frob press. This long-press frob proposal has already been play tested and agreed to be a good control scheme by several players. Double-click frob would need new code written, would need to be play tested, and would need to be fine tuned based on player feedback. Another rewrite of the code would be a distraction and may not bring us closer to the goal of "providing a better experience for new players as well as longtime players," especially since one has already been found and proven: long-press frob. For longtime players who are not satisfied with this new control scheme, "tdm_frobhold_delay 0" restores TDM 2.11 behavior. After 7 months of player research, code experiments, early player feedback, adjustments, rewriting code, and more player feedback, I believe long-press frob is good enough, given all of the compromises, imperfections, and its iterative design. It solves the problems stated in the proposal on the first page, and its design goals are met.
  20. Wasn't sure what blind and deaf actually mean to the code: I thought they only offset the alert level increase rate, not what AI does afterward. You're right that it's kind of silly I didn't think to check on higher difficulty settings as they didn't come to mind as a possible factor. I'll do that as well and see which of those points it improves: #1 might be offset by that... I think the others aren't difficulty related and just not implemented, I'll actually check before presuming though.
  21. Hello! Tracking down information on software and plug-ins that work with D3 / TDM can be a tough. So I have created a thread here where people can post what software/ plug-ins/ tutorials or other references they've had success or failure with in TDM. 3DS MAX 2013 64bit .ase - Default .ASE model exporter works. However you have to open the .ase file in text edit and manual change the *BITMAP line on each material to read something like: "//base/textures/common/collision" which allows the engine to read the correct material path. md5.mesh / animation - Beserker's md5 exporter/importers for 3dsmax. http://www.katsbits.com/tools, Importing and exporting works. The model must be textured, UV'd, with a skin modifier attached to the bones to export. PM me (Kingsal) for help with this. Imported models using the script will not be weighted appropriately, so this is not recommended if you are simply trying to edit existing tdm content. (Use blender instead) MAYA 2011 32bit md5.mesh - So far I've not had any luck with Maya 2011. I am using Greebo's MayaImportx86 for Maya 2011. I've got the importer working however I get a "Unexpected Internal Failure(kFailure)" and the import fails. This could be due to something finicky in Maya that I am not doing correctly. Will keep trying.. Blender 2.7 about - Blender is commonly used and pretty well supported on the forums/ wiki. Various versions may work as well - https://www.blender.org/download/ md5.mesh / animation Blender MD5 importer/exporter (io_scene_md5.zip): https://sourceforge.net/projects/blenderbitsbobs/files/ Sotha's guide Blender Male/ Female rigs by Arcturus - Here Edit by Dragofer: more links found in this post.
  22. AI specifically have code to test the attack vector I think, so they should generally know where it came from. They're also supposed to prioritize possible hiding places and investigate them first. If you're playing with AI acuity turned down, it might cause them to lose you in darkness faster. I have them both on Challenging and they go to alert almost instantly even when I'm just a little lit up. It's very challenging on open maps when you are on a balcony.
  23. There was an idea to add two features to GUI scripts (6164). The first one is runScript command, which allows GUI script to call a function from game script. Interestingly, this feature is already supported in the GUI engine, but the game code only processes this command when the player clicks left mouse button on the GUI (i.e. usually it works in onAction handler, but not in namedEvent or onTime handlers). Obviously, ID initially did not envision runScript as a global feature which works the same way everywhere, their idea was that it is context-sensitive, and whoever calls the GUI code can then pull the commands generated by the call and do whatever he wants with them. I'm not sure I really want to change this architecture... Anyway: what are the possible use cases for runScript command? The second feature is namedEvent command, which simply generates/calls a named event with specified name on the whole UI, which can be then handled by matching onNamedEvent handlers. However, this command can be implemented in several ways: Whenever namedEvent command is executed, the named event is processed immediately. The rest of the script (after namedEvent command) is continued only after generated named event is fully processed. Whenever namedEvent command is executed, named event is put into some kind of queue, then the current script continues to execute. The generated named event is executed at some moment later, but surely on the current frame. The point 2 can be further differentiated on the exact order when generated named events are processed. So the first approach is how functions normally behave in normal imperative languages, with a real call stack. The second approach is delayed execution, like what we currently do with "resetTime X; -> X::onTime 0 {...}" combo (at least everywhere in the main menu GUI). My worry with the first approach is that it is an major change for GUI engine with no past experience, and it will probably not match well with the long-established GUI wierdness (I mean e.g. the wierdness that all expressions in GUI script are executed before the script commands start executing). And it would work different both from the "resetTime + onTime 0" combo. On the other hand, the callGui in game scripts do execute named event immediately. And I must admit nested GUI calls could be used to reduce the issues from the GUI weirdness mentioned above. Also, this command exists in Quake 4, but I'm not sure how exactly it works. And it's probably good idea to make TDM work the same way.
  24. I tried to debug this. It turns out that "global variables" includes all immediate values (including string literals which take 128 bytes each) and all global function declarations (4 byte per function, including even engine events). I see 119240 bytes before starting Iris, and 124924 bytes after starting it. On Bakery Job, I see 109680 before starting game, 109700 bytes after starting it. So It seems that core game takes about 110K, but Iris itself takes only about 10K, and the limit is at 196K. Does not sound like a big problem for missions. With addons, you have to compile all of them at once, and perhaps there is a lot of code, so you reach the limit. Ok, let's double MAX_GLOBALS for 2.12.
  25. Thank you! Unfortunately it didn't fix the bug. Not worth it to keep tinkering since stgatilov fixed it on the code side. The next 2.12 beta build will be good to go. I committed this anyway since it has the new subtitles.
×
×
  • Create New...