Jump to content
The Dark Mod Forums


  • Content Count

  • Joined

  • Last visited

Community Reputation

19 Neutral

About jaredmitchell

  • Rank

Profile Information

  • Gender
  • Location
    United States

Recent Profile Visitors

208 profile views
  1. Oh, that's smart! I think that might work. I was assuming prior that the exterior would be part of the off-stage recreation. As for getting the pathfinding working on the exterior, my concern is that the monsterclip brush seems to form collision, not just AAS data, so I don't know if there's a way for the guards on the deck to "sink" through to a lower level when the ship changes locks. I think I can fictionalize reasons why there wouldn't be any crew outside, so I'm not too concerned. Anyways, thank you! I think I have a way forward now.
  2. I've thought about the teleporter idea, but I don't know how viable it is, given that the player can jump off the side of the ship into the water from any point on the top decks. If there's a trigger or set of triggers that could be attached to the ship, and I could get the offset of the player from the ship's center, then maybe. Do they have to be absolutely still while the transition happens? I ask because in the context of the canal, the ship only moves vertically at a couple of different spots. I made a diagram for my design doc: The elevator wiki page is ambiguous, but it gives me the impression that both the AAS solid and AAS obstacle brushes used form an invisible floor at each stop for the AI to walk on. If so, my thinking is that I could just have a few planes of AAS brushes and selectively toggle them as the ship progresses: Is this viable? EDIT: Should mention that the proposed solution above would be paired with AAS obstacle entities lining the perimeter of the ship that would move with it, in order to prevent AI from walking off the sides of the ship or bumping into the walls. I'm assuming you can set the AAS obstacle entities' position, as I've been successful in doing that for the func_liquid volumes that will form the water of the canal.
  3. Hey there, I'm writing this with egg on my face. Basically put, the level I'm currently working on depended on the assumption that I could get AI patrolling and pathfinding on moving platforms. Unfortunately I think I misremembered what TDM can do, as I've quickly found out that monsterclip brushes need to be worldspawn. Does anyone know a way around this, a way to achieve a similar effect, or am I just shit out of luck? The concept of my map centers around a ship moving through a multi-lock canal; the player is supposed to sneak onto the ship while it's moving, steal an item off the ship, and then get back onto shore. My assumption is that having enemies on the boat would require the aas32 data to update. This is the map I've been streaming the making of, if it helps to have a sense of how far in I am. I've been messing around with small experiments in test maps to find a workaround or hack, but I've been unsuccessful. I tried looking at using aas_obstacle brushes, but they only seem to generate walls for AI, and not a walkable surface (despite them being used as such in this example on the wiki). Push comes to shove I can just have the ship docked and static throughout the mission, but I feel like that's not as fun. Any ideas?
  4. As people have mentioned above, the scripting language for idTech4 is pretty similar to C++. However, it and C++ are also close to C#, which I think is an easier language to learn. If you don't mind spending time in another engine, Unity has C# support, plus a ton of video tutorials and a really well-documented set of functions for C#. I mostly say this because the Dark Mod wiki articles are pretty threadbare, and it was easier for me to figure out how scripting for it was different from scripting from other languages. If you want to jump right into TDM scripts, though, I'd be willing to help you through what you specifically want to do, and I'm sure plenty of other people on this site would say the same.
  5. Holy crap, how many open-source versions of immersive sims based on idTech4 are there? Next thing I know you'll tell me there's a Terra Nova one.
  6. Given this community's love for Looking Glass-style games, I recently got Arx Fatalis for free accidentally. I downloaded the demo data from Steam, but had to install the open-source version, Arx Libertatis, to get it to run. I've been playing it for the past couple weeks and the game hasn't stopped me from playing further, which took me a while to realize. I'm wondering if this would work for other people as well. Given that the game's now open-source, you can create mods and compile the level editor yourself, which I figure is also of interest to people here.
  7. Huh, funnily enough I've been working my way through Pathologic the past couple months. I'm playing the original version from 2005, which is a bit tough to understand at points, but I think it's successful at communicating what it wants. I agree with Anderson, play the original, and then we'll all get a chance to contrast it with the remake when that comes out.
  8. Great stuff! This definitely looks like what my Game Art Major classmates were up to. Do you think inefficient meshes are a common problem in TDM? I only took one class in 3D modelling so I'm not the best person to pick that out. I definitely think that would contribute to a lot of the performance issues I have.
  9. Oh, nice work! That GUI scripting looks really intensive!
  10. Alright, once more: I'm trying to figure out a way to pass a variable to another script object, but I can't seem to find a way to do that. Specifically, I need a way to communicate the position of the current entity the player has tied their tether arrow to, preferably to my player script object. Using callFunction() on an entity doesn't allow me to pass any arguments to the function called (as far as I can tell), so I tried implementing some functions in a map script so that I could use callGlobalFunction(), which at least allows me to pass an entity. However, given that I have functions like this: //functions in my map script. currentTiePos is a vector variable defined earlier void setTiePos(entity tie) { currentTiePos = tie.getWorldOrigin(); sys.println("Global setTiePos"); } vector getTiePos(entity something) { sys.println("Global getTiePos"); return currentTiePos; } I thought that this would be a functional workaround. While setTiePos() works as intended, whenever I try to call getTiePos() via callGlobalFunction() to assign a vector, the Dark Mod launcher flags this as an error. I think it's likely because a string is used to access a function in callGlobalFunction(), so the interpreter can't check that the corresponding function returns the proper data type. So, does anyone know how I can either pass a value to another script object, or get a value from a global function? Thank you again for your help!
  11. In AAA studios now, a growing trend in the workflow is to give the entire level to an environment artist to decorate; the bulk of the level will be made up of one giant static mesh, with scattered objects around to decorate with. While this is great to allow the artist to create something that looks believable, it allows for less tweaking by the level designer (i.e. if some cover or something similar needs to be moved a few units). I had a professor in college who worked at id, and apparently the workflow there was to create a blockout in 3DSMax with the appropriate dimensions for everything, and then just give it to an artist. I did a design test with a company that asked me to do the same.
  12. Damn, Judith, that's a hell of a quote. Oddly enough, though, it seems like developers releasing mod tools seems to be much more of a rarity these days. This could be a function of the aforementioned complexity increase of level design (as well as, presumably, the increased complexity of certain developers' engines and editors), but I think is more a result of prevalence of engines like Unity and Unreal. This is probably both due to more developers using them, since proprietary engines are difficult and costly to make, as well as more hobbyists using them, since they provide way more freedom and are often more user-friendly. I've started to notice, though, that the lack of more recent mod tools is also going to be an issue for aspiring devs. I wanted to focus specifically on level design in college, but a lot of the more prevalent level editors (Hammer, Radiant) are starting to age and be seen as less relevant. When I told my friends that I wanted to make a level for a particular game, they would ask me why I didn't just make something in Unity or Unreal. This is despite needing to define the systems of a game first before I could build levels for it, or choosing from a scant offering of mod-compatible games built on those engines. I think the new DOOM's Snapmap is a pretty good compromise here: create an in-game level editor that automates a lot of the more complex aspects of level design. Unfortunately it feels too restrictive to me, but it's a good starting point, I think.
  13. So, you want the windowDef holding your map image to render a specific section of the material? That's an interesting problem to tackle. I'm not the most experienced with the GUI scripting system, but looking here, it seems like using the matscalex and matscaley properties might be the way to go for the scaling, at least. So, something like: windowDef MapviewerWindow { rect 3,-8,580,350 visible 1 background "guis/assets/mainmenu/lumi-tooltipblueback" } windowDef MapViewerMapZoomIn { rect 370,124,40,40 visible 1 bordersize 1 bordercolor 1,0,0,1 forecolor 0,0,1,1 text "+" textscale 0.8 textalign 1 onAction { set "MapviewerWindow::matscalex" "MapviewerWindow::matscalex + 0.2" set "MapviewerWindow::matscaley" "MapviewerWindow::matscaley + 0.2" } } windowDef MapViewerMapZoomOut { rect 453,125,40,40 visible 1 bordersize 1 bordercolor 1,0,0,1 forecolor 0,0,1,1 text "-" textscale 0.8 textalign 1 onAction { set "MapviewerWindow::matscalex" "MapviewerWindow::matscalex + 0.2" set "MapviewerWindow::matscaley" "MapviewerWindow::matscaley + 0.2" } } Note that I'm not 100% confident you can call variables you're trying to set as arguments (i.e. the "MapviewerWindow::matscalex + 0.2" statements), but in the format of this scripting language there's not really a way to use a += or -= statement. Try that and see if it works.
  14. ...well, this is embarrassing. Turns out the issue was I forgot to give a new name for the #ifndef and #define preprocessor commands in my script. Whoops. Everything works as expected now. Thank you all for being patient with me.
  15. I made a copy of the player script to edit its logic and put it in the script folder of my mission files. It's included in the tdm_custom_scripts.script file that I used, which has been working with the other script objects that I've written. That was a good suggestion. I tried it, but alas, that did not solve my problem. My problem is that I similarly made a copy of the player entityDef file, and told it to use my custom player script object. However, when the map loads, it doesn't seem to recognize my script, and just prints an error to the console.
  • Create New...