Jump to content
System downtime for updates - Sunday 13 July 2025 ×
The Dark Mod Forums

MirceaKitsune

Member
  • Posts

    2256
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by MirceaKitsune

  1. Getting to try realtime reflective floors in practice. Took me well over an hour to figure it out but the setup for a complex shader is ridiculously simple, all you need to do is add a "mirrorRenderMap 256 256" with a "blend add" to any material. FPS is reduced a bit of course but no big deal in a closed space, I'll improve it from the lighting which I abused a bit in this scene.
  2. Yes, it's entity.setSkin("your_skin_here") if you're using scripting. There's also a way without scripts: Place two entities with the same model at the same location and rotation, give one the initial skin and the other one the new skin, give the first entity spawnarg "hide 0" and the second one "hide 1", trigger them both to make the switch. The downside is this requires placing two entities on the map, the upside is the new skin is then precached which may be faster and avoids stuttering when changing them.
  3. Lit / unlit glass signs and neon anvil. They aren't perfect, but for something that adds a touch of cyberpunk to the steampunk I think they work pretty well.
  4. Was wondering something about lights: Is it possible to make a light that toggles itself when frobbed? All examples of toggleable lights rely on an external flame entity being attached which I don't want to do in my case; I'd like the light entity itself to be frobable and turn on or off when frobbed, no attachments. In addition: Are breakable lights a thing that still works? I tried setting the spawnarg "health 5" on my light entity, but no matter how much I hit it with the blackjack or sword it won't turn off. Do I need to set a custom scriptobject perhaps? For the record my custom lights in cause inherit from "atdm:static_electric_light_lit_base".
  5. Neon Builder sign. Looks pretty good with the bright orange, kinda like molten iron which gets the point across. decorative/signs/sign_hanging_builder_symbol_neon_lit { model "models/darkmod/decorative/signs/hanging_builder_symbol.lwo" "tdm_hammer_small_bronze1" "textures/darkmod/window/lamp_glass_lit_opaque_colorme" } decorative/signs/sign_hanging_builder_symbol_neon_unlit { model "models/darkmod/decorative/signs/hanging_builder_symbol.lwo" "tdm_hammer_small_bronze1" "textures/darkmod/window/lamp_glass_unlit_opaque_shadowcasting" } atdm:hanging_builder_symbol { "inherit" "atdm:static_electric_light_lit_base" "editor_displayFolder" "Lights/Model Lights, Static/Switchable/Electric/Signs" "editor_usage" "Neon sign, hanging builder symbol." "model" "models/darkmod/decorative/signs/hanging_builder_symbol.lwo" "skin" "decorative/signs/sign_hanging_builder_symbol_neon_lit" "skin_lit" "decorative/signs/sign_hanging_builder_symbol_neon_lit" "skin_unlit" "decorative/signs/sign_hanging_builder_symbol_neon_unlit" "_color" "1 0.5 0" "texture" "lights/biground1_squarelamp_snd" "s_shader" "light_flicker_104" "light_center" "12 0 -32" "light_radius" "128 128 128" "noshadows_lit" "1" }
  6. Don't know if it's a dumb idea or not, but I for one kinda like my steampunk neon signs. I'll probably mention them in the shop keeper's book, how neon signs are all the rage and everyone's buying them. Wish I could reskin more of the default models to get even more designs, was lucky it happened to work out with this one, even if the chain shining is a little meh. No custom assets needed, just the def and skin. If anyone else wants them here's the one for the sheep logo, easy to produce and customize the rest of them from there. decorative/signs/sign_half_round_neon_sheep_lit { model "models/darkmod/decorative/signs/sign_half_round_01.ase" "textures/darkmod/metal/flat/iron_rough_ns" "textures/darkmod/window/lamp_glass_lit_opaque_colorme" "sign_half_round_wine" "tdm_sign_shield_sheep" } decorative/signs/sign_half_round_neon_sheep_unlit { model "models/darkmod/decorative/signs/sign_half_round_01.ase" "textures/darkmod/metal/flat/iron_rough_ns" "textures/darkmod/window/lamp_glass_unlit_opaque_shadowcasting" "sign_half_round_wine" "tdm_sign_shield_sheep" } atdm:sign_neon_sheep { "inherit" "atdm:static_electric_light_lit_base" "editor_displayFolder" "Lights/Model Lights, Static/Switchable/Electric/Signs" "editor_usage" "Neon sign, sheep." "model" "models/darkmod/decorative/signs/sign_half_round_01.ase" "skin" "decorative/signs/sign_half_round_neon_sheep_lit" "skin_lit" "decorative/signs/sign_half_round_neon_sheep_lit" "skin_unlit" "decorative/signs/sign_half_round_neon_sheep_unlit" "_color" "0.5 0.5 0.5" "texture" "lights/biground1_squarelamp_snd" "s_shader" "light_flicker_104" "light_center" "0 0 -24" "light_radius" "128 128 128" "noshadows_lit" "1" }
  7. I'll need to look into it for that FM. Need to prepare a bit to run a proper comparison. Saw the tone mapping and fire glow on Youtube, definitely hoping they can make it into vanilla.
  8. Oh hey, I can see myself from here! To my surprise the screen can film itself too with at least one level of recursion, very well designed. Isolated room so don't worry about performance, overall this will be neat to have.
  9. I can see that. Wonder if Z-fighting between brushes should be handled differently than between models and patches: Brushes are meant to be merged by dmap, other forms of geometry are often intended to interact more freely. This makes me wonder if it's logical to treat brush intersections in particular as the issue, maybe have a separate debug mode for catching them. Like a heatmap style render where normal geometry appears green, Z-fighting between non-brush geometry is yellow, Z-fighting between brushes is red... maybe blue for backfaces and anything else one may or may not want to make sure doesn't show up during a normal run.
  10. I now wonder if Z-fighting should still be considered an issue the author has to find and solve. Especially with modules aligned in some positions, it happens so often it's often hard to address correctly. Wouldn't it be better to handle this by mixing the surfaces in a better looking way, perhaps use a separate debug mode for creators who want to catch and avoid it?
  11. Not that off-topic but found this the best section for the question. Was wondering if a feature could be supported for this forum: The ability to schedule posts so they appear at a later date as if posted then. The reason is for fan missions created for a particular date or event: You may finish it earlier and want to post it then, but you also want it to appear on the day that FM is scheduled for. It would then be helpful if instead of the "Submit Topic" button, the forum gave you a "Schedule" button with a calendar to submit the topic but have it appear at that day and hour. Example: You made a Halloween mission you want to post on Halloween. You've finished it a week earlier and have the post written. But because you want to post it on October 31, you need to keep everything in notepad and remember to paste it into the forum on that specific date. It's not a big deal but being able to schedule could better help with timing FM releases.
  12. I had an interesting idea in regard to how the TDM engine handles Z-fighting. It comes after my last FM where people reported terrain patches that were too flat causing visible Z-fighting with the ground brush: It seemed weird as both surfaces had the same shader and their mapping lined up, therefore even if the surfaces overlapped the same pixels should have been fighting with no visible artifacts. Turns out the engine makes it so even if the material and its relative mapping is identical, the surface also becomes brighter whenever there's overlapping. I was wondering if unless we're stopped by deep limitations in OpenGL, there is at least a way to get rid of this brightening effect. If we have the ability to control how Z-fighting is handled, I had an idea which could turn it into a great feature available in other engines: My suggestion is to mix the colors on all material maps, so instead of randomly adding them together we settle for the average of all Z-fighting surfaces per pixel. The reason this would implement an useful feature is if we could do it per map, we'd have support for mixing the albedo + normal + specular maps on multiple surfaces in realtime, something not currently possible unless done by the texture or material. Imagine a graffiti drawing on the wall: We could deliberately have the decal perfectly overlap the surface of the brush instead of having it suspended a bit in front... doing so would cause both the albedo / specular / normal maps to be combined, lighting would then follow the bump map of both the brick as well as the decal so both produce depth on top of each other on what would still appear to be a single surface. Even if my particular idea isn't possible, it would be nice if we could at least get rid of the brightening; Z-fighting would still occur, but at least it wouldn't be as obvious if you don't look closely.
  13. Had my own fun with the new turrets already. They should be featured in the new FM I'm working on. Figured I'd post this here as well for the fun of it.
  14. Those work, will add multiple of them if no one knows how the AI type condition is supposed to work.
  15. https://wiki.thedarkmod.com/index.php?title=Objectives ai_type Type of AI: human, beast, undead, steambot, etc. (reads m_AIType in the SDK, which is set by the "type" spawnarg on idActors. Not sure if this is implemented yet). SDK Name: SPEC_AI_TYPE Specifier Argument Type Expected: int Sounds like it's meant to be there in some form but it's confusing how it works, I likely misunderstood what it says and / or there's a case of incomplete documentation. It suggest the word human, but then says the type is int... I should try 0 to see if human is the first, if not I'll try all of the first numbers. I can't find a "type" spawnarg on any AI, nor the atdm:ai_humanoid or atdm:ai_humanoid_newskel definitions... there is personType but I think that's something else. And yes, I'll add those to invert it from success to fail, just wanted to figure out why the condition is misfiring first. Edit: Using 0 in that condition still causes it to activate when killing either humans or horses, using 1 causes it to no longer activate when striking either. Seems like it's either broken or the value that needs to be used not documented in detail. What do other FM's use to have no kill objectives but only for human AI so it excludes animals / undead / machines / etc?
  16. Running into an issue with objectives. I want to make an objective that requires not to kill any people regardless of team. I set type to "AI is killed", kill target to "Any AI of specified type", its value to "human". Out of curiosity I tried to see what happens if the player kills a horse with their sword: It turns out that also triggers the objective. Is AI type meant to be set to a value other than human for this condition, or am I running into a bug with the development version? Here's a screenshot of the configuration. The objective is meant to be failed but for now it succeeds, I'm setting the kill to success to test what triggers it so I can easily debug such inconsistencies. Why would this trigger if you harm a horse?
  17. I'm not 100% sure if this is what I'll use right now, but it's something I might do and should definitely know for later. Is it possible to have a trigger update the contents of a readable, particularly when completing an objective, as to add new content? The goal is to have a journal in the world updated when the player completes an objective. I could just duplicate the whole readable and replace the book, that is less than ideal as it needlessly duplicates the original writing and any changes need to be copied to all versions. Is there a way to only replace the contents of a particular page in a readable and / or add an extra page?
  18. Yes, that worked! I had to pick them up again and rub the items all over the place till they finally snapped in place. If there's going to be a bugfix update, I'd check about making the objective brushes just a little larger / taller, considering the collisions of the skeletons get in the way and make it hard to place them at just the right spot without a little floating. But now I can continue the rest of the level tonight and see what's next!
  19. Oh, so if a path_corner targets an entity other than another path_* node, the AI reaching this corner will trigger this entity like pressing any button? This should be good perfect in that case, just never had to use this circumstance before so I wasn't sure. I generally only use scripts for complex circumstances when I really need to, there are ways without one in this case. Also for this particular FM, I'm challenging myself to see how much complexity I can achieve without using any custom scripts, mostly to try something new and see / showcase the power of the default entities when used right. That would probably make the AI complain about an item having been stolen, the goal is to have them look for the player... also it would rely on them seeing that exact spot. The alarm approach seems best now that I know how it's supposed to be triggered by paths. Edit: Can confirm the path setup works! If you have a guard walk across a series of path_corner's then connect the last one to a light, the lamp turns off then the guard gets there.
  20. Thanks. Definitely should be, I put them as close as the collisions would allow me. Sounds like I may have found a glitch in this case. Images to double-check I did do everything right:
  21. Am on the second level now. Agreed the change of pace is better and I like how the themes are alternated. So far I'm stuck on a puzzle where I'm sure I must have done things right.
  22. Got a question about AI paths: Is it possible to make an AI become alert after running to a certain location? I have a chain of path_corner entities with "run 1" so the guard barges into the room... once he gets there I want him to draw his sword and search as if he knows someone is there, meaning an alert level 4 which isn't attributed to the player when counting stealth score. I looked and there doesn't seem to be a dedicated path for that: Closest is path_attack but I don't want the guard to know where the player is just that the intruder is in the area. If there's no way without a script I'll just use an alarm entity without audio... this will require the atdm:start_alarm to be triggered by the guard reaching that area, in which case how do you make a path_corner trigger another entity when an AI reaches it or have a trigger_once only activate when touched by a particular AI?
  23. Couldn't resist capturing a few temporary circumstances that emerged from me testing the new turret in an alarm protected shop. Enjoy
  24. Update: Even now my elevator isn't working as intended. The AI is now able to ride it if the elevator is already on the same floor as itself, but not if the AI has to call it from another floor. The AI will (usually) find the button, call the elevator, but once the elevator arrives it still sits there forever and won't proceed inside. The issue seems to be the doors. The elevator has a sliding door attached to itself that only opens once the elevator has reached a floor, as well as there being a door on every floor that only opens when the elevator is at that floor. All those doors are meant to be opened by the elevator only, as such they're "frobable 0" and "ai_should_not_handle 1", so the player can't open it normally and the AI doesn't open the elevator doors with their bare hands either. Does anyone know what I could do? Is there perhaps a way to make the collisions of some doors ignored by AI, so even if a solid door is closed AI will proceed to walk through it like it's not there? The AI waits for the elevator to come down / up anyway, this should fix the issue without making them walk in place against the door. Note that while the door that moves with the elevator is of course transparent, the static floor doors do close their visportal like other doors, so you can't see inside rooms the elevator isn't at through the transparent glass outside. This should help to visualize my setup which is one I have on multiple maps in various forms:
  25. I'll try making a test map with the drunk AI door issue and post it on the bug tracker. In the meantime I just did my own elevator riding AI. The setup was a lot more complicated than initially expected, AI won't automatically know how to ride an elevator just because the player does. Only the elevator prefab helped me figure out why nothing I did worked. For anyone else who has an elevator that works for the player but not for AI, you must take those additional steps: The most important part is a special brush similar to visportals, all sides nodraw but give the top face the texture "textures/editor/aassolid". This is what got it working for me; I figure it's required for dmap to know how to treat all of the virtual floors where the elevator goes as solid else there's no pathfinding there. You then need to cover the floors at each position in yet another brush, but make this one an an entity called func_aas_obstacle. Give all of them a "start_on 0" except 1 for the one at the ground floor. Each atdm:mover_multistate_position needs to target this entity alongside the doors, so when the elevator reaches that position it turns those AAS obstacles on or off accordingly. Not sure what this one is for and if it will work without them, I figure it's like a realtime monster_clip as to not confuse the path finder. Lastly don't use a standard atdm:mover_button like I did: Even the buttons need to be a special entity called atdm:mover_elevator_button. Each one must have either the spawnarg "fetch 1" or "ride 1", the former for buttons used to call the elevator and the later for the buttons inside the elevator used to pick your floor.
×
×
  • Create New...