-
Posts
5906 -
Joined
-
Last visited
-
Days Won
95
Everything posted by demagogue
-
I really knew that & shouldn't have said it, but thank you for correcting that. Oh wow, how did I not hear about EV_GetLocation() before? That's great! As for the performance part, stgatilov makes a good point. If you want to keep running track of the AI's location, you have to keep the script running in a loop, which can really eat up up cycles. (Performance was one of our big concerns with the Location script itself because of that.) One thing I'd think about is having the script or EV_GetLocation function called only when an AI is ready to make a bark, and it quickly gets its location from there and makes the bark, and then it's done. Then it's only a one-shot script or function call, which is always better if you can do it. The catch there is I think that'd call for a custom AI script. The issue is if the a future version of the game ever updates that AI script, the custom scripts won't be updated in that version. But since AI scripts should be self-contained, I mean changes almost always take deprecated old stuff into account so it doesn't break old FMs, a custom AI script shouldn't break the FM with new versions of the game. Those AI just won't have any new bells or whistles, which may still be worth it. Or you just quickly add the new things in and kick out a new version if you need to. Of course another option is that new functionality is added to the core game itself with some new spawnargs added to AI, where barks can be made Location specific. For that matter, the AI scripts might be updated to be more friendly to adding barks to existing AI generally, now that we have a good text-to-voice app to make them. Then all mappers get the ability to do this. That might be nice, if it isn't a big performance hit or otherwise troublesome.
-
Why are there no more new fan missions in the missions section ?
demagogue replied to ^^artin's topic in Fan Missions
My old answer to this question used to be, well, you know, you could always make a quick FM for everybody to solve that problem. A person could make a contest sized FM in like 1~2 weeks. -
This is the first idea that comes to me. The easiest thing you can getkey from the AI is the literal xyz coordinate location. So you could have a script make a simple distance check from that to the player's position via good old Pythagoras's Theorem. If you trigger a "nearby" state at a distance that's close enough, that will probably put them in the same room or anyway nearby. And you can get the player's location, so you can still modulate the barks based on that. In the background of what you're talking about is that with the new text-to-voice AI they have now, we can make new barks that sound exactly like the original voice actor. That makes it possible to add to existing AI barks, so we can make convo barks in the same voice as the system barks, or we can make new system barks, etc. I think there's a lot of good potential with that for unique and more interesting AI interactions in FMs.
-
Part of the location system is a script hook, where you can trigger a script based on location. But of course it's geared to the player's location. But it itself is just a script, so it's easy to just make a new copy, keep just what you need, change the variable names, and instead of a player location check at the top, you make an AI location check. And then you can have that new location script trigger a AI-location-script to keep track of the AI's location. (I tend to use the spawn args of dummy objects to hold data like this, but however you want to do it.) Then have it or another script trigger the barks based on that location value. And because it's all being done by script, you can package it with your FM to work. No sourcecode change necessary. The catch is, I don't know if id4's location system even recognizes AI. I think it may only be able to send back the player's location. If that's so, either you have to then change the source code for it to track AI location (which might give a performance hit?). Or another way is what I originally did for the location system, which was to use trigger brushes (the "object inside boundary" trigger brush type) at the entrances of locations and let those trigger the script that does the work. That should work but is more fiddly since you have to make sure the AI can't break its logic going back and forth many times. It's definitely possible. (Anything is technically possible. It's an open source game.) It might take some work to make it robust and not fiddly. Edit: A thing to keep in mind is that most AI are mostly frozen when you're not near them anyway. If I were trying something like this, I'd just use the location system for the player as usual, so it's the AI barking differently based on the player's location, not the AI's location, and then just design the level so that works out properly. (Most AI that the player will ever hear will be in the same location as the player. So the player location is a fine proxy.) Then you can just use the current Location system script as I mentioned at the top.
-
I've been watching too many quantum physics videos. I thought you were gonna talk about the collapse of quantum wave functions. But anyway, Tels made an algorithm that made a procedural dungeon for his own TDM branch. I don't know what the relationship was to this algorithm, but the result sort of looked like this.
-
Check this reddit post - "AI Speech Synthesis for FMs"
demagogue replied to Hooded Lantern's topic in Fan Missions
The value is that authors can make their own dialog instantly, listen to it, change it instantly, and go through 20 iterations in a half hour, and do it all night long. In particular, you can keep doing takes of the same line until it gets the prosody how you like it. You also only need about 1 minute of a sound clip to make a perfect rendition of a person's voice. And it doesn't even have to really be a good voice actor. You can use your own voice or family members, etc. The system makes it sound good as far as voice acting. Using a real person is great, but it can't really compete. -
Dark Mod AMA on Reddit this Saturday (1/28) at 3 PM CET / 9am EST
demagogue replied to demagogue's topic in The Dark Mod
I remember reading about Spar talking about the S/R system in the dev forum, which was interesting for me. (This would probably have been years after it all happened because I was a latecomer too, although IIRC he was still around then, but I was really absorbed with reading old threads anyway.) Unlike many of us, he'd never made FMs for Thief. So his knowledge of Thief's S/R system came from the reports of people that had come from Thief mapping, and he did his best to reproduce what they were saying. He was a bit worried about if it would meet mappers' expectations. But the system he made was pretty cool, and I think even a bit more intuitive than Thief's system. (They ended up not too far apart anyway.) But it made me think sometimes not knowing exactly what a thing is, but having a vision for it can be liberating... because you can follow the vision without being bound to the past. I guess that's not such a big insight into him. He had a thoughtful leadership style, and I guess no more or less human than any of us. The lesson I got from that story kind of stuck with me though. -
Check this reddit post - "AI Speech Synthesis for FMs"
demagogue replied to Hooded Lantern's topic in Fan Missions
Yes, if we did this we'd just have our own voice actors contribute their voice. The old way was concatenation. You have the voice actors say literally every possible phoneme and transition in English, and if possible in multiple ways apiece, and then the program knits them together. I think I read that can take more than 6 hours of recording. But I believe newer systems can take a good stretch of recorded speech from a person and generate the phonemes itself. That would be a great project for us if someone wants to take it on. There may also be some open source voice models out there at this point, but you'd have to make very sure they're consistent with our CC license. -
Dark Mod AMA on Reddit this Saturday (1/28) at 3 PM CET / 9am EST
demagogue replied to demagogue's topic in The Dark Mod
Madtaffer, could you repost this question on the Reddit thread here? That way it will be seen and answered in the right place. -
Some people have been asking about my FM, so I wanted them to have access to a version without the glitch mentioned above (i.e., the pagan woman model that clipped so it looks like she's laying in the sky above Harlan's house). This and it's time that that glitch was fixed anyway. So I made a really quick fix. Basically I opened the .map file and just deleted the pagan woman reference directly. I renamed the file to end with "np" (for "no pagan"). Is it possible for someone to replace the previous version with this one on the download mirrors so it's available in the in-game downloader, etc.? Cheers. (I tested it to confirm the fix.) And this post can also be a general announcement that the glitch was fixed. Here's the link to the new file: https://drive.google.com/file/d/1-tgN1gyUoYd8qACZ61bd7qHcZAxpAwCN/view?usp=sharing
-
This is a bit late notice (apologies for that), but there's an announcement to be made. I saw it wasn't in this subforum yet, so I'm posting it now so you can all see it. This Saturday (Jan. 28), tomorrow, The Dark Mod team is going to participating in an "Ask Me Anything" (AMA) session on the PCGaming Reddit page starting from 3pm CET / 9am EST. Edit: Here is the official AMA thread! https://www.reddit.com/r/pcgaming/comments/10nfcwj/hello_we_are_the_international_development_team/ They told us it should be stickied and open for questions all day long, so if you see this much later, you can still take a look and participate. Many of your favorite TDM team members ought to be there. (I plan on being in around the background at least.) I think there will be a lot of talk about the inner workings of TDM's development, so if you've ever been curious how TDM got made, why certain decisions were made, what are some interesting stories from the inside, or you're just interested in how games are made generally, I think you'll get something out of it. I think we can also use this thread as a follow up, if you want to talk more about anything brought up in the AMA, post it here and we can have our own little discussion too. I haven't asked anybody else if that's a good idea, but I think it's a good idea, so I'm running with it. Hope everyone interested and available can make it! Cheers!
-
It's an uptick in the number of FMs released one way or the other anyway. Great to see! I hope we can continue the momentum this year too.
-
I'm sure plenty of players check the console sometimes, so it'd be a great easter egg for that type of player. Obviously it shouldn't be done as a normal game mechanic, but you weren't proposing that.
-
General question about doing the Fan Missions alphabetically
demagogue replied to evildiesel's topic in Fan Missions
If I were doing this, I would play them chronologically, so you could get a feel for the state of the art when an FM dropped. And over time the field generally gets better, so it won't be as hit or miss. Also of course it naturally keeps you from inadvertently playing FMs out of order. -
Python scripting: convert pitch,yaw,roll to rotation matrix?
demagogue replied to Brendon Chung's topic in TDM Editors Guild
This is an irrelevant aside but... That wiki article had one of the most enlightening things I've been wanting to know about for a long time in it an almost throwaway little aside in the 2nd paragraph of https://en.wikipedia.org/wiki/Euler_angle s#properties ... which after a little following up through some of the linked wiki pages is (I think; it's nuanced math, so I'm never entirely sure) that the quantum spin of a particle is a feature of a 3D rotations in a 4D rotation space, which (again if I understand it) is very close to our Euclidian intuitions that contiguous bodies rotate together (in S^3 space), except the rotation space it actually fills up (RP^3) has these isolated 0D points that also "have rotation". I'd been trying to figure out since forever what quantum spin really was because it's crazy at face value. But seeing it as just a natural & necessary property of rotation symmetry, which is all a particle is (Poincare symmetries), somehow makes me feel better about it. It isn't so unintuitive and arbitrary seeming now. I mean imagining how space really works is still odd, but it fits the math of everything else happening in a particle like a champ, and word on the street is that spatial relations are a property of symmetry relations & not the other way around anyway. It's just funny that I'd find it in a thread following up on a game coding question of all things, after trying to understand it through so many other routes after countless direct searches and reading tutorials. Okay, sorry for the aside. I felt moved to say something to someone about it. -
That's a fair reason for a person to not pay attention to the Stealth Score, but I think it still has value. Regarding the FM-size issue, we moved it to an additive system so it goes up forever for that reason. It's like golf. Big FMs can have big par values, and small FMs can have a small par value. I even tried to get the community to come up with par values for every FM to standardize it, and I still think that's a fun idea. The value of having the code tell you something you probably already know is because then the game is officially registering your victory, which for some people gives a nice feeling of recognition for their effort, and for others, it allows them to post a screenshot of the Score to verify their accomplishment, e.g., in a ghosting run tread. But it's a small part of the stat screen, so no real bother to anyone anyway. I agreed with all of that. I'm all for more discussion of issues an author might not have thought about. In that respect it's a kind of extended beta-testing, which is a really important part of the process making a map, and no reason in principle it can't continue even after it's been released. It's just changing something without their input that crosses the line.
-
The problem is alert attribution. A mere alert state elevation, e.g., the guard seeing non-player enemy, should NOT count towards the player's Stealth Score! Don't do that! If the stealth score registration applies only to guards seeing absence markers, then I think there are good arguments on both sides whether a guard alert should register against the player. It's in a similar category as AI seeing blood, bodies, and weapons. But in this case I think it's okay to count to the stealth score because other AI can kill other AI, but other AI do not steal, so unlike the other examples, the absence marker is uniquely the player's fault in the game. So making only that count to the stealth score is fair I think. But yes, some bark or other indication would also be fair. Re: the proposal for the spawnarg for guard's noticing loot being removed, I think it should not be removed IMO because now you're directly contradiction a design decision made by an author. You can criticize the author and say that's a stupid mechanic, sure, or there are cases where there are bugs and the design intention isn't be followed that should be fixed to meet the intention, but I think intentional design decisions that work as intended should never be changed because authors should have absolute autonomy over their own design. Edit: Informing authors that that mechanic can ruin ghosting runs, which many players value, and then leaving it up to them to decide whether or not to change it for that reason, that's a valid thing to try to do IMO, as long as its the author's final decision what to do. Edit2: There is an argument there to leave it alone too. It punishes the player by putting the guard on alert to create more challenge, but it doesn't count to the stealth score so people can still do ghosting runs & be validated for them according to traditional ghosting rules, which have never counted stolen loot to a ghosting bust. So that's the argument to tolerate guards going on alert seeing stolen loot but it not counting to the stealth score. And it's a good argument IMO, since the stealth score has always been linked to people caring about ghosting attempts, or how close they can get to it, and it follows the rules better. Don't fix what isn't broken.
-
I guess I'll put this here for the record for now. There's a console command to turn on text on the screen that shows the AI state, including stims, their current alert state, the ramp down, etc. If we were trying to properly debug this, one of the first things we'd do is turn that on and make a video reproducing the bug. There's also a debugging way to turn on the stealth score as well, so you can see what it's doing at the same time. Then it's just a matter of paying close attention the values in line with the events in the video, and that often gives enough clues about what's happening in the code to track the problem down. If you wanted to track it down, you'd look up the commands to do that. Short of that, you could just make a regular video reproducing the bug and we could go from there.
-
Oh I left out a part I was going to mention that might explain that. The alert has to be attributable to the player. Stims carry an attribution tag. Obviously the player shouldn't be penalized for a guard seeing another enemy. But part of that IIRC is if there's something like a body or a blood stain or a weapon, etc., that the AI sees, there's nothing tagged to the object that's connected to the player. And it's not something you can even easily hack as an attribution system is, well, an attribution system. This may explain what you were seeing. It could be something else, but that's what occurs to me. (The cascade effect was solved by clever coding, and it definitely counts towards stealth score. So that wouldn't be the source of that problem at least.)
-
In the stats screen, there is a little arrow at the bottom and if you click it, it takes you to a new page that actually breaks down your stealth score into exactly which alerts were added. It's what thebigh said. The AI have a 5-state alert system, so there's just a multiplier for each level. Level 1 was left off because it's just too sensitive. In some FMs it's already busted right when the FM starts, and it kind of defeats the purpose of a score if a perfect is impossible just because of the mission design. And it's also following traditional ghosting rules. The basic rule is, you're busted if someone "knows a person was there", which only starts from level 2. One of the goals was to allow players to say they ghosted a mission when they get a 0 stealth score. One interesting tidbit behind the scenes was that it's actually pretty complex to design the system because alerts usually don't occur once. It's usually a cascade of dozens of alerts as an AI in pursuit keeps seeing you in front of him. So we (I say we but grayman did most of the heavy lifting, but we had a lot of back and forth discussion about how to make it work) had to design it so an alert was like a discrete event. An alert only counts the highest peak. So it doesn't add the progression through levels 1, 2, 3 if it hits 4. It just counts "4" as the highest hit. And AI have to completely ramp down and stay ramped down for some time period, and then be retriggered from an unalerted state for it to count as a new alert, otherwise it's treated as the "same alert". I learned a lot about designing real world systems for code to handle it in a sensible and satisfying way from grayman for this project. What a hero. I can't say enough good things about him.
-
What you described is standard practice in the industry. You're supposed to start with rough brushwork first, laying out the entire level in a rough block form, see if it works, change what you need to, and then you take progressive passes developing and later detailing each area with modular set piece meshes or more detailed brushwork absent that.
-
A Halloween theme would be awesome but it's admittedly tight. You could do a three or five room contest and get a good number of entries that fast though.
-
Just in terms of the raw tech, human brains still have ~8 orders of magnitude more nodes or multiplications (10K vs 1Q synapses I think it was), even assuming you equated nodes between neural nets, which is misleading, but it still handwaves at the distance artificial neural nets lag behind in pure information terms. We're still in earthworm territory and need high end graphics cards to crunch that much. That's not a mysterian argument, but it has a similar punchline. When your model lags that far behind, it may as well be magic what the brain can do in comparison. It's interesting that you can do (what seem to us like) really high level things, like this procedural art, chess engines, and probably music and other forms soon, with an earthworm sized brain; but really (what seem to us like) simple things, like ordering lunch at a fast food joint or other open ended things, run into the AI Complete problem, i.e., you can't even do the most simple operation unless you have full human-level cognition and world knowledge.
-
From what I've been reading in the AI lit, the next step is rapidly integrating new information into the network weights with some tricks to avoid the so-called catastrophic forgetting problem, more in the Grossbergian version of neural nets to get a little technical about it, more in the way human memory actually works. Humans also don't save visual images verbatim either, but they're procedurally recreated in memory on demand. Basically what it means is you can get your local AI to look at a work of art or music and it'll recalibrate its weights so it can "recall" it later based on some lightweight cue like "that painting I uploaded on (date & time)". I mean the user doesn't even have to know it's not a direct save and it got embedded in AI weights. ------- I remember in high school and college reading the claptrap from some futurists about the coming Singularity, and laughing it off, not even whether we were actually approaching it, but that the very idea itself felt kind of too outlandish to buy. But now I'm starting to get a sense of what it might actually be like to reach that point, when AI have integrated knowledge way beyond what humans can follow, and humans having direct and instant access to it, they just take it for granted like it was an extension of themselves. Or something like that. I'm still not sure how it may play out if at all.
-
I can imagine when this tech goes into the third dimension it'll be a big sea change. I can even imagine in the future the tech procedurally generating the gameplay along with it, so you can just generate a whole game world, characters, & gameplay. I don't know if the tech for storytelling will be up to scratch on the large scale, it's lagging so far, but on the small scale I could see it convincing enough. ----- What's been striking me most is that there's just such a flood of it. I have my folders of AI art... Actually I started them like 10 years ago, but I only ever collected a few things more for the gimmick of it than it actually looking good. But now I've already got masses of really interesting works in them and find masses more every day. But I think there's a point where there's just too much. That's what I think is going to be the big issue on the social and economic level. There's so much that one can only take so much in, and what does that do for anyone or anything else that wants to squeeze into that space.