Jump to content
The Dark Mod Forums

MirceaKitsune

Member
  • Posts

    1924
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by MirceaKitsune

  1. Oh my, it's already there? I will definitely take a look at it at some point! If it works there should definitely be a menu component so it's accessible to everyone, I didn't even hope it was already implemented to some extent Will need to see how it handles saving and loading while a demo is being recorded. Also what camera modes are supported: The magic I had in mind would be the ability to fly around and see the player, as well as through AI's eyes to experience how they perceived the world and saw you during your run.
  2. Those would need to be recorded and made constant during playback of course. Physics aren't random though right... like if you pick up and throw a vase against a wall, it will always move and roll the same way based on initial velocity? If so I'd presume this could work by merely remembering and simulating identical player key-presses and mouse movements, while using constant values for randoms in AI decision making and other entity scripts to ensure they always do the same things.
  3. As usual this is mainly intended as a discussion and to hear opinions: It's not an expectation that the feature will happen soon or at all. Especially as this would be complicated to achieve, but if it could be done I think it may be a fun capability to consider. The idTech engine had several features that got removed since we aren't using them like multiplayer. One used to be the ability to record a demo of your matches, which makes sense in multiplayer DeathMatch games. Yet recently I started to wonder: How would it be like to have a demo capability designed for TDM? Imagine being able to record your playthroughs or share your recordings for others to watch, for when you'd like to relax watching a FM like a film instead of playing it like a game. You could fly as a detached camera, observing yourself wonder around the map and watching the things you did... or stay in 1st person and see the game play itself like in a Youtube video. The coolest thing would be the ability to see through the eyes of any NPC: Imagine being able to click on a guard in floating camera mode to embody them, seeing through their eyes as they patrol the area and at some point notice the player hiding in a corner through that guard's eyes (even if the AI didn't notice you). The biggest challenge would be a way to record store and reproduce every input from the player, with every AI decision and other entity actions just as they occurred, which includes preserving object physics to represent the exact movements of all entities: Parts of the demo system from Quake would likely need to be reimplemented, wonder how much it knows to handle on its own. Saves and loads would be another tricky one: Each demo should erase what you did after last loading to produce a seamless run... alternatively it could record that as an action and include reloading in the playback. There's probably other challenges but if it's within the realm of possibility, would anyone else use this and think it's worth thinking of?
  4. As long as it's a setting, absolutely! Don't see anything wrong with it and it might help many new players. The approach I find best is to only show each tip once: Give the menu two buttons called "clear tips" and "reset tips". The first disables all tips in case you're an experienced player on a fresh config and don't need them, the second resets them so next time you play all tips will show up again in their relevant circumstance.
  5. I actually thought about it briefly. Biggest problem is the campaign has a finite number of maps listed: I guess I could just list the same map 10 times or something, that would well cover all the options you can get... better off just use the maximum number of runs in which you can achieve every combination! I remember there was a way to remember choices (from special triggers executing) between different campaign levels, though I never used it before. Will look it up and likely use it with that, seems like the best option for what I'm thinking.
  6. A rather unique idea for a possible FM occurred, though doing it right would require something I don't think is possible, none the less I'd like to know what the closest way is. Is there a way to trigger a reset of the map that makes you start from the beginning from within the map itself, storing only information about particular choices you made during the previous run? I don't care if the loading screen shows up again or not, a seamless way where you just reappear at the beginning would be ideal, but I'd rather avoid the briefing screen and having to pick a difficult again as I don't want the restart to be that total. Example: During your first run, you're given an objective to kill an AI which you may or may not complete. Upon reaching the end, instead of the FM ending normally and showing your stats, the screen fades to black and you find yourself at the beginning: Everything is reset, all objectives the AI the loot any items you picked up and so on. Based on whether you completed that objective or not before the reset, certain targets are triggered changing a few things on the map during this run. I case a map reset isn't possible to trigger: Is it at least possible for the FM to store information independently of saves? So you complete the FM normally at first, but next time you choose to play it choices you made during a different playthrough are detected and triggers executed accordingly. I'd rather avoid this method since there's no way to reset it unless you'd manually delete whatever text file is generated in the FM's directory, granted there's a script function allowing this to begin with.
  7. Only now got around to finishing this one. Absolutely loved it: Starts out looking pretty average at first, you can tell it was rough around the edges in places and the first map of the author... then it does a lot of things you don't expect, I absolutely love a FM with surprises! There was just one thing that left me confused once I finished... I know that most likely this was all left open ended on purpose for us to speculate, thus I'm not expecting an answer but if there are probable ones let me know. Other than that... One other thing I wasn't sure about at first but ended up loving...
  8. You must have not played my first (and somehow still last) released FM, on which I spent most of my time making the FPS somewhat acceptable in the outdoor area
  9. Another marvelous FM, I enjoyed every bit of it! Very pleasant city design to explore around, intriguing and interactive story, everything else one would expect. Eager for part two and what else you plan on making
  10. Not that I'm aware of, but try the team spawnarg on the trigger_hurt just in case.
  11. I had a curiosity: Is it possible to define an item that is picked up and used by nearby AI occasionally, without necessarily having to link a path node to it or target it from the AI? For example a wine bottle on a table: The AI picks it up drinks from it and puts it down, while patrolling next to it then resuming their patrol after using it (playing an animation). Looking at the AI prefabs, an AI need to target things such as food items with the "pickup_bottle_pickup" or "eating_apple" spawnargs. Is there a way that's proximity based and doesn't require that?
  12. Interesting, didn't think about that. Yeah the compass uses that trick, I could just use a model of the helmet instead. If it looks good and is worth maybe I'll consider that, though it might be distracting and not make enough sense. The heads are modeled that way: Hoods and helmets are part of the head mesh as they aren't attachments. This is normally a good thing since performance isn't wasted rendering the head or hair under the helmet, but complicates things for my approach as the only way is changing the head models at runtime which may break precaching and stuff. Only a few hats are attached as a separate entities, like the little red hat some merchants wear or the straw hat... those aren't ideal for disguises though and I don't plan on supporting both approaches. Technically I could try attaching the independent helmet model to the player head, but that would surely look awful and clip through the hood and stuff... only right way is to give the player the Citywatch head once that error is fixed. For AI there is no other way apart from also changing the head model: Stealing the helmet from a guard implies taking it off them, which means they need to switch to a helmetless head which can only be done by setting a different head mesh upon frobbing... no idea if that triggers the same crash as the player head, if so I'm out of luck till a dev can take a look at my report. The base disguise system can be used that way too, it's just not the theme I went for by default as I wanted them to be physical wearables. You can define a magical disguise too that implies creating an illusion which tricks other AI into seeing you as one of them. In fact I thought of including one for undead using a magic skull that makes them think you're also dead, might add that in the next version if others think it makes sense and is worth it? Note that the spawnargs are documented via editor vars in case anyone wants to make their own: As long as you have a moveable model and inventory icon it's just a few tweaks to define any disguise. Simply inherit from the base "atdm:playertools_disguise" entity def and customize the team and other spawnargs... remember to use the proper mass / friction / impact sounds. Let me throw them here for anyone who wants a quick preview: atdm:playertools_disguise { "inherit" "atdm:playertool" "editor_usage" "Don't use. This is the base class for disguise inventory items." "editor_usage1" "Individual hats and helmets will derive from this." "scriptobject" "playertools_disguise" "gui" "guis/tdm_hud_disguise.gui" //"model" // to be defined in subclass //"clipmodel" // to be defined in subclass "inv_name" "Disguise" "inv_category" "Disguises" "inv_icon" "" "inv_droppable" "1" "inv_map_start" "0" // Disguise "team" "0" "rank" "0" "personGender" "PERSONGENDER_MALE" "personType" "PERSONTYPE_THIEF" "regen" "0.25" "rate" "0.5" "rate_alert" "0.1" "distance" "500" "speed_move" "1" "speed_turn" "1" "overlay" "" "snd_wear" "player_rustle_short" "snd_remove" "player_rustle_short" "model_head" "head_thief" "skin_head" "" // Disguise editor vars "editor_float team" "The team the player disguises into when the disguise is active." "editor_float rank" "Rank while the disguise is active." "editor_var personGender" "Person type while the disguise is active." "editor_var personType" "Person gender while the disguise is active." "editor_float regen" "The disguise regenerates over time at this rate." "editor_float rate" "The disguise degrades at this rate when the player is seen by a member or ally of the team." "editor_float rate_alert" "The disguise further degrades by this amount when an AI is alert, increases gradually with alert level." "editor_float distance" "Maximum distance at which being seen by the AI can degrade your disguise, offsets with AI visual acuity." "editor_float speed_move" "Movement hindrance while wearing the disguise." "editor_float speed_turn" "Turning hindrance while wearing the disguise." "editor_var overlay" "Overlay image while wearing the disguise." "editor_snd snd_wear" "Sound to play when putting on the disguise." "editor_snd snd_remove" "Sound to play when taking off the disguise." "editor_model model_head" "The player's head changes to this model while the item is worn, can be seen in mirrors." "editor_skin skin_head" "The player's head changes to this skin while the item is worn." }
  13. Biggest problem is a full outfit would require changing the player's body model including the 1st person hands, and I'm having trouble getting even the head to change for mirrors so likely never happening. Unless massive changes are done in the engine to make it possible... meaning never happening The disguise changes the player's team, so all AI on any team will treat you as the team you're disguised as... however only AI on that team or allies of it can make your disguise wear out and risk exposing you. Currently the only risk is AI is seeing you, the bar dropping faster the closer you get to them... that's gradually accelerated by the AI alert level, being seen by an alert AI can immediately break disguises: Technically I could add drawing a weapon or picking locks or stealing, but I'm not sure if the extra complexity is worth it. When putting the disguise on or after being exposed, you do need to wait for the bar to charge back up... if an AI isn't seeing you this takes about 5 seconds on the default helmets. As for the suspicion meter it's universal, making it per-AI would be confusing as the bar needs to switch to represent the closest one... it also didn't make sense because the player's team is universally modified so you can't trick one AI while being known to another, that would require doing it a different way. BTW: Don't be afraid to check out the script if anyone wants... it's surprisingly small, only 148 lines of code were needed! What I'm doing is actually pretty simple, it's mainly the AI sight that's crammed into a longer if statement. Also I commented the important parts to explain what they do. If anyone's curious you can check it out here: https://pastebin.com/7rU6DAAc
  14. Yes: It could then be distributed as a mod that works universally. I may propose it for the modpack! I already did a brief test and it worked: I managed to give the player a guard head while the guard helmet was being worn! But soon after TDM would crash to the main menu, and after a few tweaks to the script even that stopped working and there's only the crash now. Likely some obscure internal issue that can be hopefully tackled in the engine. Thank you, that I shall! And the biggest issue with getting mods to work is the need for a tdm_custom_scripts.script which has been the biggest thorn in the backs of modders: I'd say either execute all scripts automatically the way all files are loaded, or if that's unsafe just allow a script carrying the name of the pk4 to be auto-executed.
  15. I might have played that one and vaguely remember it. I believe the crown is a normal loot item attached to the head, you simply frob to pick it up like everything else. Helmets are part of the head mesh, I need to make the head itself frobable and change its model accordingly... I should get to trying it out at some point and see how that might work. I think I played that one recently. The disguise isn't changed dynamically, it's a story thing with some AI set to be always friendly: This offers a flexible and customizable system to wear disguises in realtime, with the possibility of getting caught if you're seen for too long. Closest system I remember is a FM where you play in a large hotel and there's a needle indicating your suspicion level, bumped when going in other people's rooms and back when returning to a hallway. The disguise changes the team of the player, team relations don't even need to be altered which is great. So if you wear a Citywatch helmet the player goes from team 0 to team 2 then back when removing it or getting caught. This has the added benefit that AI on other teams will also treat you accordingly, so anyone allied to a guard will be fooled by your disguise while enemies of guards but not the player would instead only attack you while you're disguised.
  16. When I was a teen I used to play a game called Hitman: It was also a 3rd person stealth game focused on assassinations and disguises. Its main gimmick was the player stealing an enemy's clothing and dressing up as them to infiltrate, while disguised you avoid acting suspicious or your enemies would realize you're not one of them and your cover is blown. I've thought about attempting something similar in TDM in the past. Since it's impossible to customize the player model 1st person hands, I realized custom outfits are out of the question. Then it dawned on me that I could go for a simplified version, by implying the player only wears a helmet or large hat to disguise theirself, enough so it makes sense and throws the AI off. So I got to work and after 3 days of tweaking I'm ready to share my latest mod: Working disguises How it works: The player can pick up headwear and equip by using the item, making you a member of the target team when active. While worn a bar appears at the top of the screen indicating the status of your disguise: This bar slowly fills up over time... it will drain when a member or ally of the team you're disguised as sees you the closer you get, further draining if the AI is alert. When the strength reaches 0 the disguise deactivates, you must wait for it to reach 1 again for it to be active again. When the disguise is inactive the bar will be gray and the icon black, when active it's colored and the full icon shown to make that clear. By default only helmets for the Citywatch were included thus far, with the normal Citywatch helmet offering less cover whereas the Elite Citywatch disguise gives you a greater distance and time at the expense of a cumbersome overlay. It even changes the player's person type / gender / rank so AI salute you as one of them... unfortunately this doesn't seem to have an effect in practice, maybe it can be investigated why. Further more the item sets a custom head model and skin, so when the player sees theirself in a mirror the hat accurately reflects the associated head... sadly this functionality had to be disabled due to a crash that occurs if you try to modify the model of the player's head causing a -1 model index, I filed a bug report about it and hopefully it can be resolved soon. If enough people like this to motivate me to continue, my plan for the next release is to allow stealing the helmets off guards. This might be tricky as I need to make the head frobable and have it execute my script action, which must change the model of the AI's head to their non-helmet version: Unless the same crash as the player head risks occurring, this should be doable in theory... this would also allow it to be used as an universal mod (with any FM) as you no longer rely on the items being placed by the mapper. Below is the latest version: If you're a mapper maybe add this to your FM and let me know what you think! I'm eager to hear your thoughts and see a field use case, this was only tested in a simple box map not in a practical scenario. As usual copy everything in your FM except tdm_custom_scripts.script you'll need to mix the include line with your existing one. disguises_1.0.pk4
  17. Yes, needs to be switched back and forth in realtime. I just posted my mod so you can check it out here for more info:
  18. Thanks everyone. If all goes well I might have a nice little mod ready by tonight I hope you'll enjoy https://bugs.thedarkmod.com/view.php?id=6326 This bug is currently the last thing limiting me: Please let me know if anyone ever ran into that and knows a workaround or what I'm doing wrong, till whatever causes that can hopefully be fixed. I'm trying to change the player's head and use a custom one for seeing yourself in a mirror, it works but randomly introduces a crashes due to a negative model index.
  19. Fair enough. Trying to think back to when I first discovered TDM, which is already almost a decade ago: I don't remember finding it that difficult, though for the greatest amount of time I played on the easiest AI difficulty for sight and hearing, eventually settling for Forgiving (2nd easiest). Also I still play every FM on its Easy difficulty which is pretty lame, I've been wanting to do Normal and Hard modes of ones I know and hope to get to that once I finish playing with some more modding ideas.
  20. Doing it in DarkRadiant sounds easiest: What's the best texture to put on a bush to screenshot the item behind, is there a fully white or black one by default? Main issue is cutting out the outline and getting the same consistent style across items, but I do lots of editing in Gimp so this shouldn't be a problem. As for the AI vis check it turns out to be a bit more complicated: visScan() only notices the player if they're an enemy to the AI, while the AI is friendly it stops working. findFriendlyAI() does work instead, but the name makes it sound ambiguous to use it to check for the player although it seems to work, also the documentation says it's costly and not to call it each frame which I'd have to do in my case, lastly it only detects the nearest entity so if another ally is standing closer to the AI than the player this won't report them. Am I out of luck with this one and need to not implement the check? I'm not seeing any other way to trace the AI's FOV cone.
  21. Thanks for the feedback. I can see the eye argument, but large movements imply turning either your head or body around... hence I agree this would be best done as a speed based increase so only rapid large movements count. Keeping the mouse still isn't the challenge: The challenge would be that you can't safely turn to look around if you're in a very dangerous situation, you're stuck where the camera was last pointing unless you want to risk drawing that extra bit of attention from an AI searching for you. It's the thrill of an enemy being in the corner of the player's view, but the player has to resist the temptation of looking to see exactly how close they are.
  22. Thanks. Seems it's either visScan() or findEnemy() I can't quite tell what the difference between them is supposed to be. Will give it a try... doing a little experiment that might have fun results! Does anyone have an inventory icon for the Citywatch helmet, or know a FM I can get one from? Doesn't seem like there's one in "hud/inventory_icons" and I'd need it for my little idea.
  23. I have a scripting question I may use for a mod: What is the function to check if an AI is seeing the player, and the extent to which the player is visible in their awareness based on distance from the AI as well as lightgem and any other factors? Till recently I thought this isn't possible, until I played through Iris which found a way: In the FM most AI are friendly unless they see you steal things or pick doors or enter restricted areas, they only become hostile if that AI is looking at the player while being close enough to make out what they're doing. Technically I could dig through its scripts but there's probably a lot bundled together, so if anyone knows I could use a simplified description of that part.
  24. I realized a fun change we could consider for the lightgem, which should also be fairly easy to implement if agreed upon. We know how aside from the amount of light shining on the player, some FM's increase the lightgem based on movement and crouching, you become more visible while walking and especially when running. I'd like to ask if anyone thinks we should additionally support a slight increase to the lightgem based on mouse movement. Explaining how the idea came to mind is the best way to illustrate why I feel it would make the experience more fun. The player often hides in a dark corner waiting for a hostile AI to pass right by as they patrol: In any real scenario you'd be holding your breath as to not make any sound or the slightest movement, even breathing would stand out slightly and could get you spotted. Thus from a perspective of realism, it feels out of place that I can zoom the mouse all over without any consequence... merely turning your head would draw a bit of attention, let alone looking behind which implies the player turning their whole body around. Meanwhile from a gameplay perspective, it could be a welcome challenge having to not move the mouse when a guard is right next to you, keeping your mouse steady similar to how you'd hold your breath as you wait till the danger passes to look away... this would feel more exciting and add a new form of tension, especially as many players complained the AI feels too easy even on the highest difficulty settings. Obviously the increase should be minuscule, possibly just 1 lightgem point: We don't want players feeling they can't look around while hiding, just not doing it too much when an enemy is right in your face. The best way seems like making it based on the movement speed: Moving the mouse very slowly could have no penalty, whereas jerking it suddenly could increase the lightgem by a few points so even in total darkness the AI sees something and may even catch you if you keep looking around rapidly while next to them. Another debate is whether this should be a spawnarg new missions have to configure, similar to some existing visibility properties and lightgem offsets. Personally I'm in favor of defaulting it to a low value, just 1 lightgem point increase if it's fixed or something like 3 if it's speed based. Alternatively we could tie it to the difficulty setting... if it's controversial maybe just implement it as a hidden cvar we can try out? Very curious what you think so let me know your thoughts, I'd definitely like to at least see the concept tested!
  25. Very enjoyable FM overall! I got stuck on the main objective but managed with some hints. Plays well and looks very beautiful: If you noclip you can see several mapping artifacts but it's not a serious issue.
×
×
  • Create New...