Jonathan Wright (Nelno the Amoeba), Ion Storm, AI Programmer
nelno@ionstorm.com, (http://www.ionstorm.com)


Full Update Summary of Update:

Nelno's .plan File

  a
  m
  o
  e
  b
  i
  c

 

  r
  e
  v
  e
  l
  a
  t
  i
  o
  n
  s

January 22nd, 1998 3:30am

The new office...  Incredible.  My cube...   Huge.  I'm becoming anxious.

VenomVermin... cool.  This thing has an original attack that I've never seen in any other game.  The attack was John's idea, which is why he's the man.  I don't think I'd have tried it otherwise, because it wasn't that easy to pull off.  It was well worth it, though.  Hmm... should I be more specific? ;)  Murphy has been doing an excellent job with the animations.

I can't wait to see what other people will do with the functionality we've got in the Daikatana DLLs.  Originally I had thought to distance myself from changing the actual engine, but as time goes on I keep adding new features...  Too bad I can't say what they all are... (must... resist... evil...)

The Time Tombs have opened.  The Shrike is.   Hyperion will rise again.

The current MIDI file is "Flight From Paaren Disen (Jonai's Remembrance)."

January 14th, 1998 6:20pm

What I've been working on:

  • Finalizing AI for each monster.
  • Getting final frame sequences for each monster.
  • Creating "weapons" for each monster (yes, weapons -- in Daikatana every monster's attack is, structurally, a weapon just like the player's weapon, and for good reason).
  • AI tasking system... creatures can remember tasks, put them aside to perform another, then go back to what they were doing before. For example: a monster is following a player, the monster reaches a platform that it must use to get to the player, it determines that in order to use the platform it must press a button, it locates the button and goes to it, wherever it may be, it presses the button, it runs back to the lift, waits for the lift to come down, gets on the lift, rides it up, and resumes following the player. These steps are broken down into tasks: TASK_CHASE, TASK_PLAT, TASK_SWITCH, TASK_RIDEPLAT, etc. As new capabilities are needed, I just add a new task type and tell the AI routines what functions handle that task.
  • More generic AI routines available to any creatures that need them, such as retreating and sniping.
  • Adding AI specific editing functions to Katana Ed.
  • Some other, secret stuff.
November 10th, 1997 9:20pm

Uh... Joey forgot to mention who wrote the camera code in the first place, not to mention who made all the necessary changes to the Quake engine (client and server side) that were necessary to implement a camera as cool as Anachronox now has. No names, but it was a unicellular organism. I wonder if I'll get a special bonus. Yeah, right. ;)

All joking aside, one of the cool things about having two teams using the same engine is the code we can share. It's not doing anything except making both games better.

November 4st, 1997 1:48am

Heh bleh!!

I've just got to say that Anachronox is looking quite bad ass. When people see it they aren't going to believe it is done with the Quake engine. Joey's spline camera is just totally incredible looking (even though I helped a little bit -- ahem). I've never seen another game with camera movement like Anachronox now has.

On the Daikatana side of things: the AI is really starting to come along. I'm getting to the point where I can start coding individual behaviors for certain creature types. The AI I've got in now is very modular and quite tweakable. It's both dynamic (ie. the monsters can learn new levels on the fly) and static (what monsters learn about a level can be saved, modified and restored into the game). Anyone making a Daikatana map will have the option of pre-tweaking the AI in their level (both for artificial deathmatch opponents and for monsters).

The video we showed at the frag was just a taste of what we're working on. Our new skins artist, Ken, is incredible -- I've absolutely never seen textures in any game anywhere that match the stuff he's doing.

I've taken the "sticky" code Noel wrote for DLLs and integrated it into the Quake engine as a hierachial model system. Basically, you can create one model out of many separate parts, which automatically follow the parent around, rotate with it, etc. I've just finished some code for a jointed, track-following turret that uses the system. It's a bit difficult to describe how it works, but it's rather cool.

That's all I'm going to say for now... I can't give away all of our secrets...

November 1st, 1997 7:47pm

Huh... uh... eh.. bluh. Blah bleh bluh ble. Blu-blu-blu blah ble-ble-ble. Bleh.

October 31st, 1997 7:21pm

It's quite impressive how just two people can make their entire organization look so incredibly bad. It's also rather entertaining.

October 1st, 1997 12:42pm

A minor note: DaBug's recent plan update was a joke. No one was supposed to take it seriously... Dabug actually hates me. ;) And as for the Javascript error in this plan -- it only occurs when Quake Finger parses the plan file, not otherwise. The script is entirely correct.

September 30th, 1997 3:20am

I figured it's high time someone updated about what's going on with Daikatana. Well, here it is:

I've spent the last few months working on anything and everything imaginable, but for the most part I've been cramming monsters into the DLL code, first for E3, then for our Eidos milestone, then for ECTS, and now for our second Eidos milestone. INCOMING: Milestones suck. Deadlines are a good thing, but stuffing content in just to have content is a waste of everyone's time and talent.END TRANSMISSION

Here are some hints as to what we're doing and what we've got planned: First and foremost, nothing that is not cool is going to be in our game. When something is not cool, it sucks it down.

Our art team has come up with some very, very cool looking monsters for the game. The operative word is badass. Everything goes through the same process. If it's badass, it stays, if it's not, it is beaten down until it is a slick pile of worthless data, and then we kill whoever did it in the first place. Art, code, maps, people... whatever... that's how it has to be. The models Bryan showed some of us the other day were very, very badass. They will fit into our game nicely.

Kee and I have designed a very extensible DLL interface. Daikatana will use multiple DLLs, and in forseeable cases will automatically register and deal with new DLLs when they are dropped into a particular directory. What I'm saying is Zeus bots vs. Reaper bots without mixing any code. Take your Zeus bot DLL and your Reaper bot DLL, put them in the DLLs directory and watch the Zeus bot die (uhh... wait, I mean, ummm, the Reaper bot, yeah). New weapons can be added simply by dropping a DLL with the required exported functions into the DLL directory and having it work. In most cases, functionality can just be dropped in as a separate DLL, as long as a few standards are maintained. There will also be lots of tailormade AI functions available to anyone who wants to write their own bot. Right now DLLs are written in C and C++. We had plans for allowing any compiler capable of generating a DLL work with Daikatana. However, none of us have the time to try anything else, so it's possible that languages like Delphi and Visual BASIC won't be able to hack it. At this point, if you plan to modify Daikatana's DLL code you should expect to have a firm handle on the C language.

I've added some cool stuff to the Quake engine in the last week (14 hours was my shortest day) and I really wish I could tell what it is, but I can't. One is going to be a very cool and very innovative sword power for the Daikatana. The RPG elements of the game (ie. your character gaining power in various attributes as the game progresses) are basically in -- testing will determine what the final caps on each attribute should be. Noel and I have written a lot of weapons code (about half of our 30 weapons are coded), and each weapon will get at least one more going over to make it qualify for badass before it is done. I've also made some changes to the Quake physics engine which will allow a bit more versatility and realistic interaction of objects. And some minor changes to the sound code. I've done a lot of work to give our mappers complete control over their entities (I even went as far as building my first Quake map last week to test out some ideas), but there is still more that can be done. Suffice to say that entities in general are not as restrictive as they were in Quake.

This week marks the beginning of my all-out assualt on creature AI. I've written in some massive debugging features that will help me add complexity to the AI and sort out any problems that arise. I've also come up with a few ideas to make things smarter. There will be both dynamic and static AI in Daikatana. Dynamic meaning you can stick your creatures on any map and they will find their way around. Static meaning that I have decided to take some steps towards "cheating" that will make the monsters seems much smarter than they could be otherwise. Previously I had been leaning toward a good, non-cheating AI like I strove for with the Zeus bot, that could perform relatively well in any environment that the end-user could throw at it. However, I've come to believe that I would be selling the single and deathmatch play Daikatana short by doing that. Monsters will function at least as well in a standard, bare bones map as any bot available for Quake, but I plan to give map designers a lot of tools for tweaking the performance of the opponents they place in their levels.

Full Plan:

Ion Storm

User Name.........nelno
Full Name.........Jonathan Wright
Description.......AI Dude
Last NT Logon.....Thursday, January 22, 1998 at 22:05
Nelno's .plan File

  a
  m
  o
  e
  b
  i
  c

 

  r
  e
  v
  e
  l
  a
  t
  i
  o
  n
  s

January 22nd, 1998 3:30am

The new office...  Incredible.  My cube...   Huge.  I'm becoming anxious.

VenomVermin... cool.  This thing has an original attack that I've never seen in any other game.  The attack was John's idea, which is why he's the man.  I don't think I'd have tried it otherwise, because it wasn't that easy to pull off.  It was well worth it, though.  Hmm... should I be more specific? ;)  Murphy has been doing an excellent job with the animations.

I can't wait to see what other people will do with the functionality we've got in the Daikatana DLLs.  Originally I had thought to distance myself from changing the actual engine, but as time goes on I keep adding new features...  Too bad I can't say what they all are... (must... resist... evil...)

The Time Tombs have opened.  The Shrike is.   Hyperion will rise again.

The current MIDI file is "Flight From Paaren Disen (Jonai's Remembrance)."

January 14th, 1998 6:20pm

What I've been working on:

  • Finalizing AI for each monster.
  • Getting final frame sequences for each monster.
  • Creating "weapons" for each monster (yes, weapons -- in Daikatana every monster's attack is, structurally, a weapon just like the player's weapon, and for good reason).
  • AI tasking system... creatures can remember tasks, put them aside to perform another, then go back to what they were doing before. For example: a monster is following a player, the monster reaches a platform that it must use to get to the player, it determines that in order to use the platform it must press a button, it locates the button and goes to it, wherever it may be, it presses the button, it runs back to the lift, waits for the lift to come down, gets on the lift, rides it up, and resumes following the player. These steps are broken down into tasks: TASK_CHASE, TASK_PLAT, TASK_SWITCH, TASK_RIDEPLAT, etc. As new capabilities are needed, I just add a new task type and tell the AI routines what functions handle that task.
  • More generic AI routines available to any creatures that need them, such as retreating and sniping.
  • Adding AI specific editing functions to Katana Ed.
  • Some other, secret stuff.
November 10th, 1997 9:20pm

Uh... Joey forgot to mention who wrote the camera code in the first place, not to mention who made all the necessary changes to the Quake engine (client and server side) that were necessary to implement a camera as cool as Anachronox now has. No names, but it was a unicellular organism. I wonder if I'll get a special bonus. Yeah, right. ;)

All joking aside, one of the cool things about having two teams using the same engine is the code we can share. It's not doing anything except making both games better.

November 4st, 1997 1:48am

Heh bleh!!

I've just got to say that Anachronox is looking quite bad ass. When people see it they aren't going to believe it is done with the Quake engine. Joey's spline camera is just totally incredible looking (even though I helped a little bit -- ahem). I've never seen another game with camera movement like Anachronox now has.

On the Daikatana side of things: the AI is really starting to come along. I'm getting to the point where I can start coding individual behaviors for certain creature types. The AI I've got in now is very modular and quite tweakable. It's both dynamic (ie. the monsters can learn new levels on the fly) and static (what monsters learn about a level can be saved, modified and restored into the game). Anyone making a Daikatana map will have the option of pre-tweaking the AI in their level (both for artificial deathmatch opponents and for monsters).

The video we showed at the frag was just a taste of what we're working on. Our new skins artist, Ken, is incredible -- I've absolutely never seen textures in any game anywhere that match the stuff he's doing.

I've taken the "sticky" code Noel wrote for DLLs and integrated it into the Quake engine as a hierachial model system. Basically, you can create one model out of many separate parts, which automatically follow the parent around, rotate with it, etc. I've just finished some code for a jointed, track-following turret that uses the system. It's a bit difficult to describe how it works, but it's rather cool.

That's all I'm going to say for now... I can't give away all of our secrets...

November 1st, 1997 7:47pm

Huh... uh... eh.. bluh. Blah bleh bluh ble. Blu-blu-blu blah ble-ble-ble. Bleh.

October 31st, 1997 7:21pm

It's quite impressive how just two people can make their entire organization look so incredibly bad. It's also rather entertaining.

October 1st, 1997 12:42pm

A minor note: DaBug's recent plan update was a joke. No one was supposed to take it seriously... Dabug actually hates me. ;) And as for the Javascript error in this plan -- it only occurs when Quake Finger parses the plan file, not otherwise. The script is entirely correct.

September 30th, 1997 3:20am

I figured it's high time someone updated about what's going on with Daikatana. Well, here it is:

I've spent the last few months working on anything and everything imaginable, but for the most part I've been cramming monsters into the DLL code, first for E3, then for our Eidos milestone, then for ECTS, and now for our second Eidos milestone. INCOMING: Milestones suck. Deadlines are a good thing, but stuffing content in just to have content is a waste of everyone's time and talent.END TRANSMISSION

Here are some hints as to what we're doing and what we've got planned: First and foremost, nothing that is not cool is going to be in our game. When something is not cool, it sucks it down.

Our art team has come up with some very, very cool looking monsters for the game. The operative word is badass. Everything goes through the same process. If it's badass, it stays, if it's not, it is beaten down until it is a slick pile of worthless data, and then we kill whoever did it in the first place. Art, code, maps, people... whatever... that's how it has to be. The models Bryan showed some of us the other day were very, very badass. They will fit into our game nicely.

Kee and I have designed a very extensible DLL interface. Daikatana will use multiple DLLs, and in forseeable cases will automatically register and deal with new DLLs when they are dropped into a particular directory. What I'm saying is Zeus bots vs. Reaper bots without mixing any code. Take your Zeus bot DLL and your Reaper bot DLL, put them in the DLLs directory and watch the Zeus bot die (uhh... wait, I mean, ummm, the Reaper bot, yeah). New weapons can be added simply by dropping a DLL with the required exported functions into the DLL directory and having it work. In most cases, functionality can just be dropped in as a separate DLL, as long as a few standards are maintained. There will also be lots of tailormade AI functions available to anyone who wants to write their own bot. Right now DLLs are written in C and C++. We had plans for allowing any compiler capable of generating a DLL work with Daikatana. However, none of us have the time to try anything else, so it's possible that languages like Delphi and Visual BASIC won't be able to hack it. At this point, if you plan to modify Daikatana's DLL code you should expect to have a firm handle on the C language.

I've added some cool stuff to the Quake engine in the last week (14 hours was my shortest day) and I really wish I could tell what it is, but I can't. One is going to be a very cool and very innovative sword power for the Daikatana. The RPG elements of the game (ie. your character gaining power in various attributes as the game progresses) are basically in -- testing will determine what the final caps on each attribute should be. Noel and I have written a lot of weapons code (about half of our 30 weapons are coded), and each weapon will get at least one more going over to make it qualify for badass before it is done. I've also made some changes to the Quake physics engine which will allow a bit more versatility and realistic interaction of objects. And some minor changes to the sound code. I've done a lot of work to give our mappers complete control over their entities (I even went as far as building my first Quake map last week to test out some ideas), but there is still more that can be done. Suffice to say that entities in general are not as restrictive as they were in Quake.

This week marks the beginning of my all-out assualt on creature AI. I've written in some massive debugging features that will help me add complexity to the AI and sort out any problems that arise. I've also come up with a few ideas to make things smarter. There will be both dynamic and static AI in Daikatana. Dynamic meaning you can stick your creatures on any map and they will find their way around. Static meaning that I have decided to take some steps towards "cheating" that will make the monsters seems much smarter than they could be otherwise. Previously I had been leaning toward a good, non-cheating AI like I strove for with the Zeus bot, that could perform relatively well in any environment that the end-user could throw at it. However, I've come to believe that I would be selling the single and deathmatch play Daikatana short by doing that. Monsters will function at least as well in a standard, bare bones map as any bot available for Quake, but I plan to give map designers a lot of tools for tweaking the performance of the opponents they place in their levels.