IntenseX

Top  Previous  Next

Aris, the creator of IntenseX, kindly took the time to answer the questions for this month's interview.

 

Q: What new features were added to IntenseX lately? What does the package contain now?

A: The release of IntenseX was caught up between the release of A7, which messed things up a bit. I couldn't release a product based on an outdated version, so I spent a good time upgrading to the Lite-C language and using the new A7 Wed SDK to create a new interface that a non-programmer can use to make games. There's also a new option to create a sample game (shooter, adventure, platform, rpg, ..) and start editing it, if you don’t want to start a project from scratch. Adding IntenseX to your existing project has also become easier than before.

 

IntenseX remains a GameStudio plugin that makes creating games easier and more efficient. It is aimed to overcome several showstopper issues such as the need for advanced AI, pathfinding and such, and also makes it possible to create entire games without writing a single line of code.

 
Q: Can you give us a few more details about Intense Script? Please describe a situation where it will help the users add value to their games.

A: IntenseScript is used to control your game, from the beginning to its end. Scripted events add to the plot of your game and motivate the player to keep going; otherwise no matter how detailed your world is, it will just be a level filled with NPCs. Using IntenseScript, you can control every element of the game like the camera, music, NPC behaviors and so on. So the player might get ambushed in a shooter game, or an in-game cut-scene may show up after you solve a riddle in an adventure game, or maybe the music changes whether the player is in a fight or not. Apart from in-game events, it can also be used to load an introduction movie, start the main menu, or roll the credits when the game is finished. The syntax is extremely simple, and can be written through WED.

 
Q: What is and how will the “configurable npc personalities” feature work?

A: As you may know, IntenseX doesn’t use static Finite State Machines for AI, but a goal oriented solution which creates dynamic behaviors depending on the Goals you provide an npc with. So if I wanted to create a mindless troll, I’d give it the ‘Search and Destroy’ and ‘Guard’ Goals and be done with it. For a friendly AI, I’d also throw in ‘Take Cover’, ‘Pick Up Items’, ‘Follow Leader’ and ‘Talk to Agent’. Every Goal is also linked to a weight value (default=100%), so if the particular friendly AI I added was a coward scientist guy, I’d reduce ‘Search and Destroy’s weight to 70% and increase ‘Take Cover’ to 130%. With that configuration, the npc will be more likely to seek cover when hell breaks lose rather than charge the enemy. There are currently 15 Goals to mix and match and form your own personalities.

 
Q: How will the “body types” feature make our games more interesting?

A: Everyone who tried to code an RPG game can realize the immediate use of the body types feature. The problem arises when you make a plated-armor model to dress your ork villains, and when the player kills them he tries to equip the armor himself. The same armor model won’t fit the thinner and shorter human player and requires a human version of the armor model instead. In IntenseX you can define all possible body types in your game, and later assign an armor model for every one. IntenseX will use the appropriate model, when the item is used by a 7-feet troll, or a 3-feet dwarf.

 

Every body type may also be configured to determine how that npc will search for cover in a ranged battle (mainly used for shooter games). Whereas the troll would need to lie down to get a cover behind a short wall, the 3-feet dwarf may get completely covered behind the same wall while standing up.

 
Q: What about the source code? What does the “Open Source, Closed Source, No DLLs” from your feature table mean?

A: IntenseX is entirely open sourced, for beginners to reflect and veterans to add upon. You may add to the IntenseX code without having to understand how it all works, because IntenseX has been programmed with modularity in mind. In AI for example, someone can write his own Goal having the Npc do something specific and just throw that Goal to the behavior soup the way I explained above.

 

Closed Source means that all your code will compile into an executable, even if you don’t own A7 Pro’s resource feature. Since IntenseX is using Lite-C, the code isn’t left unprotected anymore every time you publish.

 

No DLLs is pretty self explainable. I will never use DLLs with IntenseX because the programmer can’t view / modify their code, and since they tend to get out of date every time a new Gamestudio version is released.

 
Q: How did you implement the “hearing” feature?

A: Every time a sound is played, a c_scan is also emitted, with a radius same as the 3D volume of that sound. Every Npc is sensible to those c_scans, and when one is received, a ‘SenseTrigger’ struct is created, containing information about the location and type of sound that has been heard. Other events that may create a ‘SenseTrigger’ struct appear when the Npc sees something new (if it wasn’t aware it was there, based on its current memory), or when the Npc feels something (like a crowbar bouncing on the back of his head :P ). These new Senses structs are fed to the Npc’s working memory, updating his / her current knowledge of the environment. Next time the Npc will need to make a decision, it will make use of its current memory and may try to investigate those new suspicious sounds he just heard. AI sounds (as I call them), may carry additional parameters in them. When an Npc yells “I just spotted an intruder, help me!” and a friend of his hears this, that AI Sound will carry the pointer of the intruder entity, so the Npc that hears that sound is automatically aware of the intruder as well. The whole ‘Sensing’ system has been directly influenced by the AI of F.E.A.R., produced by Monolith.

 

If a c_scan reaches an Npc, additional c_traces make sure there are no walls between the Npc and the sound origin; otherwise the volume of the AI sound gets reduced to simulate how walls dampen sounds, making it harder to hear.

 
Q: What GameStudio versions will IntenseX support?

A: As I said, I spent a good amount of time making sure IntenseX works perfectly with A7 and makes use of any new features that the latest version has to offer. All A7 editions are supported: Extra, Commercial and Professional. The cheaper editions called lite-C free and lite-C full are not supported since they don’t include WED which is vital for IntenseX.

 

Currently, IntenseX should also work for A6 but I haven’t tried it yet. I will test this before IntenseX is released to let people know, although I will officially support A7 only, and highly recommend anyone that want to use IntenseX to upgrade, since A7 has free physics and bones that IntenseX uses extensively.

 
Q: What advice would you give to a beginner that wants to create his own AI code?

A: I don’t know what the best way to learn is. When I made my first AI, it was just a bunch of "if" instructions nested together which seemed to do the trick. For pathfinding, I used a simple trigonometry formula that I made up with my very poor math skills. It worked for a while, but of course there were problems. There’s a reason why people decide to complicate things by using A*, stack based FSMs and Goal Oriented Action Planning; these are proven algorithms that are guaranteed to work in all situations. So after seeing my home-brewed AI collapse under unforeseen circumstances (my trigonometry formula was no match for mazes and arbitrary geometry), I decided to go by the book the next time.

 

It wasn’t a total failure though because, while working on my amateurish AI, I learned a whole lot that helped me later when I had to convert real algorithms into c-script. I don’t know if I would have had the capacity to understand A* if I hadn’t fiddled around on my own pathfinding solution first. But if you think you’re ready to start serious on AI, here are a few places where you can learn strong AI techniques that you may convert into Lite-C.

 

http://aigamedev.com/ -  Great resource on AI

http://www.gameai.com/ -  A very decent collection of AI articles. Also check the “you know your game is in trouble when…” section

http://ai-depot.com/ -  Another site devoted on AI articles

http://www.ai-junkie.com/ -  Easy to follow tutorials on FSMs, GAs and NNs

http://www.gamedev.net/community/forums/forum.asp?forum_id=9 -  One of the biggest AI forums

http://www.jorkin.com/ -  The creator of F.E.A.R. AI

http://www.ai-blog.net/ -  The cream of Game AI Programmers, chatting it up in a blog

 

Download a movie that shows some of the important IntenseX features by clicking the link below (45 MB):

 

http://aum.conitec.net/intensex.avi

 

Thank you a lot, Aris