Go Back   EQEmulator Home > EQEmulator Forums > General > General::General Discussion

General::General Discussion General discussion about EverQuest(tm), EQEMu, and related topics.
Do not post support topics here.

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 09-23-2014, 04:10 PM
jdoran
Hill Giant
 
Join Date: Jul 2012
Posts: 212
Default Procedural Quest Generation

I haven't discussed this publically in a while, so I would like to take a moment and mention the status of this project.

I recently completed my PhD, with my topic being procedural quest generation. For this I modified EQEmu so that my quest generator could add and remove quests. Since this was on a private server, I was free to make changes to the codebase which might not (read mostly likely not) be agreeable to the EQEmu community. At some point, if there is sufficient interest, I might investigate how to do this in a more agreeable fashion so that the work can be shared.

I am still planning on continuing research along these lines. With a basic functional generator, I am setup to do work in this area. The current crop of quests are OK, but leave a lot to be desired. I am certain that the quality can be greatly increased.

What I did was to study several thousand quests from various MMORPGs and break them down into abstract pieces. I tried to keep track of NPC motivation, and the basic strategies which the quests used. I found many patterns, beyond the basic 'Fed-Ex' quest. But these delivery quests are an excellent example of how patterns can be reused to good effect.

I have a few papers on this subject, as well as my dissertation. There is no need for me to go over it all here. PM me and I'll point anyone to them, or provide copies.

But I would like to mention some of the run-time changes which I think worked out well. Obviously a lot of run-time stuff needed to be done. The generator builds Perl scripts which get dropped into the quests folder, as well has database entries. I am thinking right now of the Perl-callable features.

I added 'micro instancing', which I think is novel. Some content can only be seen by people who are running the quest, or somehow linked. This means if you are grouped, or in a raid with someone running the quest, and this person is at the proper stage in the quest. Otherwise you do not see, nor are affected by the content. This is to keep the world from getting cluttered up by generated content. Examples of this content would be NPCs and buildings. It also extends to dialog with existing NPCs, items on vendors, foragable items.

Destruction of objects (buildings, wagons, chests, etc) was added. This was done by adding invisible proxy NPCs.

Particle effects can be turned on and off at locations in the world.

My quests use the quest task selectors and quest journal. But since they might grow larger than is allowed, only a small set of active quest steps is shown at any time.

Quest-specific loot can be added to a mob when killed by someone running the quest.

Clickable items can be restricted to only work on certain mobs.

Quests can rollback to an earlier state if something unusual happens.

It is also possible to 'lock' mobs so that they cannot be affected by other players. An example of this might be a dragon which is needed by two raids. The first player to engage the dragon would lock the encounter for their raid. This lock is extended to a set of related mobs, so if there are additional mobs in the encounter they could be locked at the same time.

A lot of this was not on live, so might not fit in the scope of what EQEmu is trying to do. Some of it might be downright dumb ideas that needed to be tested.

Finally I should add that in the move to my new job, I lost a few months of work. That is, I don't have the current codebase, but am using an earlier backup. I don't think that will be too bad, since I was mostly writing the dissertation at that time. The other side effect of moving to my new job is that I need to setup a new server, which is doing fine at the moment. And then merge my code.

Anyhow, the point of this post is just to say what I've been working on, and explain some of the oddball questions I may have asked at times.

I am hoping to explore dialog generation in the near future. People have been working on story/dialog generation for decades, and I am wondering if Everquest might provide a narrower scope.
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 08:38 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3