-
Posts
5914 -
Joined
-
Last visited
-
Days Won
95
Everything posted by demagogue
-
I saw that featured on Steam's homepage today and was intrigued. I liked the aesthetic. I didn't really understand the gameplay, but maybe I'll watch a few videos, since it sounds interesting. The concept of a procedural murder/crime & investigation sim sounds pretty fresh; it's a wonder we haven't seen something like it before.
-
Here's a good video of a demo for talking to a ChatGPT NPC in-game. There are bugs to iron out, but I think we've basically arrived, at least at a level functional enough for NPCs.
-
I don't think it's entirely off-base that there's a link between the game being conceived and made largely by map editors and the main antagonists being Builders preaching about good design as a religious sacrament all the time.
-
The current working title is just The Dark Campaign. If you want a little backstory, the idea of this campaign was to introduce all of the major districts and factions of Bridgeport, and give a lot of lore about what's happening in the city and the world. So in that sense it's meant as a kind of ... not official campaign, but the kind of campaign laying down a lot of lore, faction, and setting information on which people can build FMs. But then the story started taking on a life of its own. The concept is the Empire is at war with their neighbors Menoa. In this world, Menoa is an Islamic or Ottoman-like empire counterpart, the Ghazis, to the Catholic-like Builders. (I understand the more official concept of Menoa is different, but either my concept is just different or I'd pick some other empire to do the job.) At the start, the Menoans have Bridgeport surrounded in siege, with constant flaming boulders periodically raining down. So our protagonist Khursand is Pakdamani, which is a counterpart to Persian Zoroasters, with his homeland now fully occupied & harassed by the Menoan Ghazis, although his family has already lived in Bridgeport for several generations, also harassed by Builders but at least not killed or forced to convert (yet). So he's kind of a natural opportunist, no friend of either side, but he speaks both languages of the Empire and Menoans and is willing to work with whoever pays. So the first mission, Shadow of Opportunity, opens with the Menoan district of Bridgeport, where Khursand lives, being walled up into a kind of ghetto to contain them. You've got Menoan friends that want you to help their resistance from the inside, starting with you getting some city plans to the army outside. But as you're getting out, one of the guards they paid off double-crosses you and turns you into the Bridgeport forces. But rather than just executing you, the general gives you the alternative option to work as a double agent on their behalf to bring back intelligence on the Menoan army and do some sabotage on their behalf, which you don't have much choice but to accept. (They're also holding his uncle that raised him hostage.) The next mission has you making contact with the Menoan army and already trying to please both sides in a dangerous tightrope walk, and the story goes on from there.
-
I like the Gershwin tune. I'll have to see about the game.
-
EFX preset spawnarg for Location entities?
demagogue replied to Frost_Salamander's topic in TDM Editors Guild
That'd be a great idea. To dynamically change EFX, we have to know that it's a dynamic feature and not one permanently set during dmap or spawn time. -
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.