Jump to content
The Dark Mod Forums

Dragofer

Development Role
  • Posts

    2631
  • Joined

  • Last visited

  • Days Won

    157

Posts posted by Dragofer

  1. I'm very much looking forward to the material editor as I think it would open up a lot of the material system's potential to mappers. It'd be a major improvement over how I imagine most mappers to interact with the materials system, which is to copy an existing material, update the image paths and maybe copy-paste in something one has found in another material.

    I think the main purpose of the editor is to 1) show what options are available, 2) apply them so that the mapper doesn’t have to worry about syntax. In an ideal world it’d also show an accurate preview, but I still think this is of secondary importance given the difficulty of replicating TDM’s rendering in DR and the existence of the new TDM<>DR connection feature. For mappers it’d arguably be even more realistic to view their custom materials ingame in the actual map. But for strict non-mappers there should be at least some preview support.

    Maybe some “basic” or “common” settings can be identified, like diffusemap & normalmap. These are settings that are shown in “basic” mode and that the DR renderer should be able to portray.

    • Like 1
  2. You can actually disable the offset behaviour on an individual basis by doing the clone while you're in 'R'otate mode. I actually almost always clone like this because I want to move the clone in a different direction and sometimes only on one axis.

    As Jonri says, most of the time cloning works without problems, but it's a definitely a boon to be able to track down the cases where it goes wrong.

  3. I think I'd tend towards Thief's approach of making security cameras quite sturdy so that the player either has to invest high-value arrows or find a way to switch them off. Fire arrows are underused in TDM imo. Water arrows are rather abundant in relation to security cameras, so I think they should only temporarily disable them, as a potential extra feature in TDM.

    The idea with making the lens vulnerable to broadhead arrows is interesting, but broadheads come so cheap that the lens would have to be quite hard to hit, which would be frustrating in a similar way to how the blackjack is hard to use reliably for some people. Also, the old security camera has 2 huge lenses, so that would be quite trivial there.

    Regarding technically modifying vulnerability to various weapons, I can give the security camera an own ::Damage method that is passed the reference to the inflicting entity (broadhead, sword etc.), so that's not a problem. The main thing is to come up with a "damage_mult" spawnarg system that lets the mapper tweak these vulnerabilities.

    Also, a damage threshold isn't currently an option because fire arrow splash damage does less damage than a broadhead, but I think that was because the security camera until now used the base idEntity::Damage method, which discards some of the information from the incoming hit (i.e damageScale) and simply just reads the damageDef. I think a threshold isn't really needed anyway if you can use damage_mult spawnargs - the only thing I'm using a damage threshold for is to decide whether or not to flinderize a dead security camera.

    And yeah, this is all customisable, we're talking about establishing the standard TDM behaviour here.

    I'm all for making a turret, btw, especially if someone has a good model and projectiles to work with - but one thing at a time.

  4. I think we should establish a convention for how security cameras can be disabled, damaged and destroyed. My proposal for the default behaviour would be the following:

    - fire arrows: 2 indirect hits would break it, 1 direct hit would obliterate (flinderize) it

    - water arrows: switch the camera off for 10-15s and make it spark. Let 3 shots permanently disable it so it can't be switched back on.

    - sword & broadhead arrows do no damage by default. A stretch goal would be to let a precise shot at the lens make it blind.

    - blackjacks do no damage (they don't seem to damage anything anyway)

  5. Seems odd that the top results check for "0" instead of 0 like most other integer checks.

    Anyway, that's all there is for " == " in the core and FM .gui files. Maybe there's a reason why there's no (non-spawnarg) string-checking in the whole of TDM, such as that it doesn't work.

    Or the string syntax is just completely different from what we expect, but that spawnarg string check suggests otherwise.

  6. 8 minutes ago, Obsttorte said:

    Yeah, but that isn't a string but an integer. From what I can see in the source code strings should be doable, too, and somehow I think I even did that in the past. But either I am mistaken or I use the wrong syntax. However, there is no logical reason why a comparision between strings should not be doable.

    Was just to show how the syntax is for an integer, and that the code should also be able to do a string check in that kind of expression, given the string functions neighbouring the int functions in the code.

    I've done a search of the .gui files and noticed that there are few expressions where both sides of the equals sign are in double quotation marks:

     

    Untitled.jpg.a38c5e4c7752715b13636b783e1b67ff.jpg

    The bottom result seems to check for an empty string, the top results seem to refer to "0" as a string and the music check is probably with strings too. The modes are probably just integers.

  7. 31 minutes ago, Obsttorte said:

    Does anybody know how to compare strings in guis? Or how to find out whether a string is empty? Somehow I neither get it to work nor can I find anything useful on this in the web or the code. The latter implies that it should work, but it doesn't :( Frustrating.

    The best I can offer is this expression I used in Down by the Riverside's campaign briefing:

    if ("gui::CurrentMission" == 1)

    The value for CurrentMission seems to come from player.cpp and Game_local.cpp:

    gui->SetStateInt("CurrentMission", missionNum);

    SetStateInt is defined in UserInterface.cpp. There one also finds GetStateString and SetStateString.

  8. IIRC the spawnargs for a func_pendulum are freq and speed, though "speed" effectively also acts as the swing angle (because the time period is already determined by freq).

    Angles is just a generic spawnarg that describes how an entity is rotated on the horizontal plane.

    Btw, the idea with binding a func_pendulum to a rotated model is to change the direction in which it swings. While the idea with binding a model to a func_pendulum, instead of making the model itself a func_pendulum, is to allow the model to swing from a different origin than its own.

    • Like 1
  9. 8 minutes ago, Frost_Salamander said:

    Yeah I did see that behavior as well actually, but you're right it is a hack.  Does anyone know if that's the only option, or what property of an entity makes doors stop on them?  There must be something about the AI entity that does this...

    It's possible that the AI re-reads the spawnargs for what doors it's allowed to open. You could try adding a frob Response to the key (Entity -> Stim/Response... -> Response) with an effect that sets the canUnlock spawnarg on that AI to -.

     

    1 hour ago, peter_spy said:

    As long as nothing has changed on this during developement lately, the skybox is a sort of subview that is always rendered by default

    In my experience the skybox is only rendered when the player can see an area containing a portal_sky surface, you can see this when standing in a caulk-textured room and opening a door to a portal_sky-textured room. I don't know how GPU memory is handled, though.

  10. 13 minutes ago, VanishedOne said:

    My func_pendulum is silent. Am I overlooking something, or are these spawnargs from the entityDef not actually implemented?

    
    	"editor_snd snd_open"		"sound to play when opening."
    	"editor_snd snd_close"		"sound to play when closing."
    	"editor_snd snd_opened"		"looping sound for it's opened state."

     

    Those look like leftover spawnargs from a door, not something a func_pendulum would have.

    You could just use s_shader, that always plays.

  11. @johlkien
    Good to hear that your integrated GPU also benefited massively from that cvar when it comes to loading times.

    What you could also try is the 140 MB version of The Painter's Wife (aka v1.2, not official yet). It should be almost exactly the same content, just that the archive has been cleaned up and what's left has been compressed or fixed by taking advantage of some recent DarkRadiant fixes.

    Loading times are probably a bit longer because of the extra compression, but maybe the FM performs better because in some regards there's less to hold in memory. You'd have to make a new save, though.

  12. iddevnet.com has gone down at long last, so anyone wanting to learn about the FX system has the following options until we have our own documentation:

    Use the Wayback Machine:
    https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/

    Download the website as a .zip from moddb:
    https://www.moddb.com/downloads/iddevnet-archive

    Download the website as a .zip from the TDM server:
    http://ftp.thedarkmod.com/backup/iddevnet.zip

    • Like 1
  13. @sohda@DestinedWhat I meant was to open the .map in notepad, find the entity with "name" "atdm_teleport_10" and change its "classname" from "atdm:teleport" to "func_remove" so that the entity performs a removal instead of a teleportation when triggered. There's no need to change the scripting.

  14. @johlkien
    Regarding loading times, I have a PC in a similar situation as yours (onboard graphics, loading times longer in 2.09) and found that I could get much faster loading times by applying this with the console:

    image_useNormalCompression 0

    This stops your PC from compressing normalmaps during loading. In theory this should lower your fps if you run out of graphics memory to store all those huge normalmaps, but I didn't notice a difference, only much better loading times.

    • Thanks 1
  15. Generally speaking the FM often uses teleportation entities to "remove" entities by bringing somewhere where they can't be seen anymore, i.e. teleporting AIs behind a house outside of the map boundaries. It'd probably be worth for kyyrma to switch all those teleporters to func_remove, too, so that removed AIs no longer contribute to processing load.

  16. 1 hour ago, stgatilov said:

    Three sets of lockpicks are spread over the map (atdm_playertools_lockpick_triangle_# and atdm_playertools_lockpick_snake_#).

    When you pick any of them, hidden objective "obj15" is fullfilled, which triggers "atdm_teleport_10" entity.
    This entity teleports all lockpicks to some weird place at "4296 -3954 -3".

    When 1 set of lockpicks is taken, the 2 other sets of lockpicks should be removed properly rather than teleporting into the blue room. Looking at the map, I think it's sufficient just to change the classname of "atdm_teleport_10" to "func_remove".

    • Like 1
  17. @Frost_SalamanderYou can view the model in DR's 'Create model' menu to see what material name its surfaces currently use, then create a material definition with the same name that references your custom textures. The diffusemap and specularmap should be .dds in DXT1 with mipmaps (if transparent: DXT5), the normalmap should be .tga without RLE compression.

    @peter_spyYou can rename the materials on an .ase model by opening it in a text editor, but this is not possible with .lwo since the format has compression. But you could work around by using DR to re-export the .lwo as an .ase so its materials can be modified without using a dedicated modelling app.

    • Like 1
  18. @Frost_Salamander
    That sounds lile you're trying to use an .obj, which can't be used in TDM. It works differently for .ase, the model needs to be exported with its surfaces carrying material names corresponding to the material names in TDM including paths.

    So i.e. compass1 or textures/darkmod/wood/boards/rough_wood.

    An alternative is to use a skin to swap out materials on the model.

×
×
  • Create New...