Jump to content

Mod of the Month interview with Kamal


Tchos

Recommended Posts

This will be the first in a series of interviews with past Mod of the Month winners here on the Nexus, which should come out weekly until we've caught up with all of the past winners. These will be posted in order of their completion.

 

This interview is with Kamal, for the mod Kamal's Generic Commoner AI. Kamal has produced many mods for Neverwinter Nights 2, including a full-length campaign for players, many area prefabs for modders, and many assorted scripts, systems, and hakpacks.

 

Be sure to vote for your favourites for Mod of the Month. Each person can vote for one mod each month, by clicking the "Vote for me" button on a mod's page.

 

Q: To begin with, I have a few questions about you yourself. Firstly, how should the name Kamal be pronounced?

 

A: It's not so bad, it's "cam-awl". Kamal is a real name for men in the Middle East and the Indian subcontinent. I picked it up because I have several Indian and Pakistani friends from when I lived in Singapore in college, and there are a lot of Indian actors named Kamal, and my real name starts with a K. You can hear it pronounced here.

 

I'm either lazy, or my American accent makes me pronounce it "com-awl", as in communication, or compression.

 

Q: That last example is how I had been pronouncing it, myself. What else can you tell the readers about your own background?

 

A: First, and this is going to sound out of place probably, I suffer from depression and panic attacks. Fortunately for me, the depression is under control and the panic attacks don't affect my day to day life, (Luckily for me, waiting for a flight at an airport is not my day to day life. Flying itself doesn't bother me at all, it's waiting somewhere, especially in lines, and being in a very large crowd). I'm saying this publicly because there was a community member who discovered a blog I keep about my depression and anxiety, and was heartened to know there was another modder out there who was like them.

 

Q: Well, I certainly respect your honesty and that gesture to let others know that they're not alone. Now, in general, what sort of thing do you like in your games?

 

A: What I like in my games depends on the mood I'm in. Sometimes I just want to fire up Torchlight and kill stuff. I like 4x games like Civilization or Endless Space and how the narrative emerges from the game. I like open world games because I like the exploration aspect. When I played Skyrim, I totally ignored the plot to the point I've never seen a dragon other than the required one in the intro, and wandered the gameworld. I didn't like a lot of things about Skyrim, but I did like exploring the gameworld.

 

Q: Variety is always good. What would you say drives your creative works?

 

A: Creatively, in my campaigns I'm trying to explore things others haven't. I did the Neverwinter section of Path of Evil as my first work because there weren't any modules out there I saw that focused on an evil PC and the options they should have. It got a good reception, so I went and made it into a full campaign. Crimmor is focused on the thief class. (I'm not big on the politically correct rename of the class). A couple people played the proof of concept for Crimmor a long time ago, which I knocked together in a month or two after I released Path of Evil, and it got positive feedback as well. For my scripting and other mods I'm just scratching personal itches and releasing things I needed to have anyway for my own campaigns.

 

Q: You've been an active member of the NWN2 community for years. What attracted you to this game, and what do you enjoy most about it today?

 

A: I played PnP DnD from the age of ten or so up through high school. Baldur's Gate 1 was released not long after I'd finished college and lived overseas a couple of years. It was my first DnD computer game, since I didn't have a computer of my own until I was overseas. I played Baldur's Gate 1 to death. I think I beat it without just about every single class. Baldur's Gate 2 was the same. Icewind Dale, Planescape: Torment, etc. I played NWN1, but the story didn't do anything for me. I was excited about the toolset for it, and I tried making a module, but I didn't get far and gave up.

 

In that module you would have been trying to break into Neverwinter during the plague, by going in through the sewers, since the entire city was quarantined. I don't remember why. I wasn't aware of the web community around NWN1. I picked up NWN2 well after release. It was on sale or something. But this time I discovered via the Vault that there were others making content, and decided to give it another shot. Fortunately for me, I found some tutorials via the Vault.

 

As for what attracted me, initially it was just that it was another DnD game and I'd loved Baldur's Gate. In the back of my mind I knew it had a toolset and I figured I would give making a module another shot. Once I went through the game and saw the content, it was all toolset. At first just seeing if I could make an area and not have it look terrible. I really enjoy the creative outlet of the toolset. My parents are both visual artists, professionally. I got none of their talent for painting and such, but the toolset lets me assemble things that I think look good.

 

Now, I think I enjoy pushing the boundaries of what the toolset can do. Or making it do things people didn't think it could do.

 

Q: Now, one of your newest mods, Kamal's Generic Commoner AI, was File of the Month on the Neverwinter Nexus. Could you give a little background on how this mod works, and what kind of modder would benefit most from this system?

 

A: It's not a mod for the end user, it's a mod for someone that is creating adventures. It is designed to make it as easy as possible for the adventure creator to give much more realistic behavior to non-combat NPCs than stock ai. It works entirely via the heartbeat script of the NPC, and a system of waypoints and iPoints which are included for the adventure builder, everything else is handled automatically. A builder can set up an area to use this in thirty minutes, and their NPCs using the heartbeat will set their schedules and carry out activities at locations the builder marks with the waypoints. Because of the way the system it set up, it will handle any amount of NPCs automatically without additional time spent by the builder, all the NPC needs is the heartbeat script, which most builders are going to have on their NPC blueprints anyway. I included what should be a detailed readme for builders to help them set things up in their own adventures.

 

Since it automates and randomizes things, I'd like to mention Apep's randomized commoners. His system handles random names, clothes, voices, hairstyles, faces, etc, on spawning in an area. And each of those can be customized or turned on or off. Assigning his commoner blueprints my ai, you get an area full of randomly detailed people going about virtual lives, automatically, and very quick to set up for the builder.

 

Q: What were the origins of this mod? What was its basis, and how did you develop it from there?

 

A: My next campaign, Crimmor, is set in a large city, much larger than Neverwinter from the main campaign. One of the main goals for Crimmor is that the city actually feels like an actual city, so I wanted to populate that city properly as part of making it feel like an actual city and not just a few merchants standing there and with guards wandering about. In my first module, Path of Evil, that's what I had: merchants standing there and guards patrolling. I had commoners that I set to wander among waypoints, and some commoners just standing around, to simulate the hustle and bustle of a city. But I felt it was pretty obviously faking it. Commoners would reach a waypoint and then just turn around, commoners would be standing next to laundry as if they were doing laundry, even in the middle of the night.

 

I'd seen Uncle FB's code on the Vault for giving individual NPCs schedules, and making them take actions at waypoints. But I knew that doing individual levels like that for a city's worth of people would be basically impossible from a time perspective, and pretty pointless for the majority of NPCs who are just there as background. I realized that if I could make a group of NPCs select an activity, I might be able to take the time required from basically impossible, to very time consuming, but doable.

 

Then I realized it would be a lot better if I could make the NPCs randomly pick an activity instead of having one assigned. If I could do that, it would speed up the implementation a bunch, once it was coded. So I started with Uncle FB's code and figured out that if the NPC was going to be randomly selecting an activity, they'd need to be referring to an object other than themselves, to get their activity from. NWN2 provides the iPoint placeable, which is not visible in game, so those are perfect for things like this.

 

I took Uncle FB's code and gradually started converting it to refer to these iPoints I'd set up, instead of looking for variables on the objects themselves. Naturally, it didn't work at all at first. Then finally I got the NPCs to select an activity from the iPoint, but they all would select the same one. That was actually a happy point, because while it didn't do what I wanted, at least the principle of them drawing from the iPoints worked.

 

So at that point I could get a group of NPCs to go to a waypoint and carry out an activity. It wasn't pretty -- they'd all go to the waypoint I'd set up. I needed them to go to different waypoints so they wouldn't all try to bunch themselves together. I was stuck there for a while, but several community members helped there, with code for picking a waypoint at random from a group of identical waypoints. So with their help I got that working, and my commoners would pick an activity and spread themselves among the waypoints for it.

 

They still picked out the same activity every time. My code for getting a random activity didn't work, and I had to change it, test, change it, test, etc., etc., over and over again, but finally figured it out. Finally my commoners would pick a random activity, move to a random waypoint, and carry it out, most of the time. At that point in time it reached the milestone of being pretty easy to implement for a builder, even if it was still really buggy. Being easy to implement for myself was a major goal. I wanted a system that would be as easy as possible, and handle everything as automatically as possible. That's probably about the point I decided I would set things up for a general release instead of my personal use.

 

I was very lucky in that Uncle FB had provided code for a lot of activities like sitting, smithing, and the like. And Lugaid of the Red Stripes offered to let me use the activities he's worked out for his Dana'an series. So I was fortunate in that I had a library of activities I could assign. Converting the code for Uncle FB's activities to work with the iPoint control system wasn't too bad, because I'd started with Uncle FB's base code to begin with. Lugaid's code is very solid and clean, but it was more troublesome to integrate because they weren't in the style Uncle FB had used, which was what I was used to working with, and some required the use of "partner NPCs", or worked without waypoints, and I had to figure my way around that when the code I was used to looking at didn't do that.

 

With that working, I turned on some code I had included from near the beginning but had not used as I was working on more fundamental parts of the code: time randomization. Without the time randomization, all my NPCs switched activities at the same time. It didn't look right, but it made troubleshooting more basic things easier. The time randomization makes sure there's a different offset to the time they change activity, so the flow of a group of NPCs from activity to activity is smoother.

 

I set about fixing bugs and writing up documentation. It was at that point when I released a proof of concept on Bioware Social as well. Some of the activities the commoners would do worked, but lacked the objects to hold in their hands. The drinking activity for instance. There were no mugs for NPCs to hold. Community member DannJ had just produced a mod that was VFX of everyday objects to assign to creatures to "hold", and that was just the sort of thing I needed, so I added his VFX to the system.

 

Also, I realized that despite all the activities from Uncle FB and Lugaid, there were some activities that weren't covered. I couldn't send the NPC "home" to sleep for instance, so an area filled with these NPCs would be just as full of them at night as it was during the day. By this time I had a pretty good understanding of the code though, and Uncle FB had included some template activities to work from, so adding new activities was not too bad even though the activities I was adding were complex.

 

Bugfixes and documentation later, I finally released.

 

Q: About how long did you work on it? What were the high points and low points of that time? Any "eureka" moments, or seemingly insurmountable barriers?

 

A: I'm working on my Crimmor campaign, and the AI was a necessary (to me) part of that. I've worked on it on and off for about a year, mostly off. I think I spent a few months where I was actually working on it over the course of that time.

 

There was a point where I had to put it down and say I'd come back to it later. Early on I'd spent a lot of time converting the code to the iPoint/waypoint system. And it just didn't work, at all. I knew conceptually it should work, but I didn't understand Uncle FB's code enough to get it to work. I got frustrated and decided I needed to work on other parts of Crimmor, since there was still so much to be done elsewhere it wasn't much use to let a block in this point stop development elsewhere. Months later I felt I'd gotten a lot done elsewhere and it was time to look at the Commoner AI again. And I sat down and diagrammed things out again and walked through the logic patterns of the code. That time it clicked, and I had a "eureka" moment where suddenly my understanding of the code base jumped up significantly. Not long after I was finally able to successfully get my NPCs to pick an activity.

 

Q: You're quite prolific. You've already released two more mods since this one. Would you like to say anything about those?

 

A: The Freesound Project and Kamal's jumping? Freesound was mostly done already, and Jumping was very quick to do. Those were both things I needed for Crimmor. In Crimmor I made a conscious design decision to not use any of the (wonderful) custom tilesets, creatures, placeables etc that the community has made. I wanted to show what the stock game could do visually. But at the same time I was sick of the stock sounds. The toolset's sound palette is not very large -- 250 or so sounds for everything -- so there's a lack of variety for things. Freesound.org is a place where people put sounds they've recorded, and things are licensed under several Creative Commons licenses. So that project was a matter of collecting a bunch of sounds, making blueprints to go with them, and converting the sounds for use by the NWN2 engine, which is very picky when it comes to playing custom sound. Freesound's sounds are generally high quality as well. They care about sound.

 

Freesound.org has a lot of packs of sounds, so collecting sounds was easy. Utilities like a batch file renamer were necessary because NWN2 has a 16 character limit on sound names. With blueprints, I asked for help, but it didn't catch the imagination of anyone with the skill set to automate the blueprints. Making blueprints was time consuming, but basically brainless work. Listening to the sounds and categorizing them was more time consuming, but not mentally taxing work.

 

Freesound was another one of those projects I had to put down and come back to, because I couldn't get the sounds converted to a format NWN2 could do. It was actually you, Tchos, who pointed me to the MP3toBMU utility, which can batch convert. So most of the work for Freesound had been done prior to the Commoner AI release, I had the blueprints and everything ready to go, it was only getting the batch convert to a NWN2 capable format.

 

As for Jumping, I'd gone through several ways of handling jumping in Crimmor already. It's a module for thieves. Being able to climb and vault over things and such was part and parcel of the class in PnP, but jumping, climbing, etc. don't exist in stock NWN2. I first did jumping via conversation on a placeable. It worked, but it wasn't "smooth". The conversation model detracted from how a thief should be able to smoothly and easily move over/around obstacles. I switched to just moving the pc to the destination when they used the placeable. That was "smooth", but there was no element of danger of failure. In the proof of concept for Crimmor, a few people played about a month after I started work on the module, and one of the areas emphasizes the jumping/vaulting as a means to avoid pursuing enemies. Since you couldn't fail a jump, the lack of danger detracted from things. I put jumping aside for a long time while I worked on other things, because it worked even if it wasn't just what I wanted.

 

I recently decided to revisit jumping/vaulting, and was looking for an existing jumping system when I found the Markshire Climbing System. I knew as soon as I tried the demo module for that, that they had a system that both worked, and was suitable for adapting to jumping because they were just sending the PC to a waypoint, and there was no reason for the waypoint not to be somewhere horizontally instead of vertically. The whole process from finding the Markshire system to getting my system published only took about a week. Their logical framework for how climbing should be handled meant I saved a bunch of work and time figuring it out, and they already had code for things like adjusting the difficulty for climbing while in heavy armor, and falling down when you failed. It was a natural fit. If I had tried writing jumping from scratch, it would have taken a lot longer, and not been as full featured.

 

After the experience with the Commoner AI, I knew I wanted things to once again be as simple as possible to implement for a builder. So I took their code and reworked it to calculate falling and difficulty based on the actual map instead of variables assigned by the builder. There's a good chunk of vector math and some other trickery with locations involved to work things out, because NWN2 isn't really aware of the Z axis. but there is a ton less code than the Commoner AI. Once I had the jumping to a waypoint working, making jumps based purely off facing of the player instead of a hardcoded jump to a waypoint took about an hour and worked the very first time. Solving the problem of things being in the way took 2 days, mostly working out how to handle environmental objects with walkmesh cutters, since they don't "exist" in the gameworld, but are visibly there to the player. The whole thing probably took less than 10 hours.

 

Q: Which of your many mods would you consider your best work, or your personal favourite?

 

A: The modder's favorite is always the next one, right? I'd say Crimmor, which includes some mods I've already released.

 

Q: What would you like to see more of from your fellow modders?

 

A: More releasing assets for community use, whether it's areas, or script systems, or custom placeables. I think a lot of people have put out adventures, and feel it would be fine if someone else wanted to use an area from their adventure in their own work, but since it wasn't released separately to say outright it's OK to use it, people don't use it. In Path of Evil about half the areas were prefab areas from the Vault, so I released all my areas to the Vault. And unfortunately when it comes to Persistent Worlds there seems to be a lot of "secret sauce", with the exception of some things like the ADL hak packs and the CSL script package.

 

All the areas and systems and such that get released make it easier for new modders, or for existing ones to add things.

 

Q: I would like to see that, too. I myself have wanted to use some placeables from a module, but didn't do it because there was no note of permission given for that purpose. What are you working on now, or what future plans do you have?

 

A: I've been working on Crimmor, my single player module for solo thieves, for nearly two years, which is about as long as Path of Evil took. Path of Evil had an expansive game world, but Crimmor is set almost entirely within the walls of the city of Crimmor, the second largest city in Amn (and much larger than Neverwinter). You play as a "fixer" for the Shadow Thieves. Think of someone like "The Wolf" from Pulp Fiction.

 

It has a bunch of features, so I'll just list some of them:

 

  • You can complete the entire game, every quest, without killing anyone. There's no xp for killing anyone either.
  • All area sound is custom. (see the Freesound project).
  • All dialog with fellow thieves is entirely in Thieves Cant (I'll be providing a Cant dictionary for players).
  • There's entirely new classes of items.
  • Like any good thief, I have some more tricks up my sleeve. There's things I'm not talking about here and won't release until Crimmor is out, because I want players to have moments where they say "Wait a minute, I can do that?"

Q: Is there anything else you'd like to mention, or say to the readers?

 

A: There's lots of great campaigns out there by other modders for people to play. Newcomers to NWN2 can play original content for a long, long time.

 

Thanks for taking the time for this interview, Kamal. Everyone else, watch for more interviews coming soon!

 

Again, be sure to vote for your favourites for Mod of the Month. Each person can vote for one mod each month, by clicking the "Vote for me" button on a mod's page.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...