Introduction / "quest manager"

Content and general development discussion, including quest scripts and server code. TMW Classic is a project comprising the Legacy tmwAthena server & the designated improved engine server based on evolHercules.


Forum rules

This forum houses many years of development, tracing back to some of the earliest posts that exist on the board.

Its current use is for the continued development of the server and game it has always served: TMW Classic.

Post Reply
User avatar
Jackie
Peon
Peon
Posts: 6
Joined: 25 Feb 2009, 19:15
Location: Canada

Introduction / "quest manager"

Post by Jackie »

Hi all. :)

I'm making this post on behalf of myself and my two other group members.

All three of us are students from Simon Fraser University (two CompSci majors and one Interactive Arts major). We're taking an "Intro to C/C++" course together and our professor, who's really into open source software, has broken our class into groups and wants us all to work on an open source project.

While the rest of our classmates have chosen to work on Mozilla Firefox as per our professor's suggestion, our group, as you may have already guessed, has chosen to work on TMW. There's a chance you might have seen us (under the names "Jackie", "bishop", or "gcarson") making posts on TMW's Mantis bug tracker recently. Though it might seem odd, those comments are actually going to be reviewed by our professor and we will be graded on them. :p

Our goal is more about learning C++ while interacting with the developer community than it is to make an actual contribution to the TMW client (though we'll try our best!).

Anyway, now that I've gotten that out of the way, I have an actual development-oriented question.

Our group needs a main focus or project. After going through some ideas and taking a look at the "Suggestions" article on the TMW wiki, we thought that perhaps making a "quest manager" (a dialog that tracks which quests are still in progress or completed, etc.) might be a good place to start.

After looking through the client source code, we discovered that the quests all seem to be handled server-side. We downloaded the eAthena server data from the git repository to learn more about how quests work, and observed that in the NPC eAthena quest scripts, there are variables used to denote whether a quest is completed or in progress (i.e. "Bugleg" in vincent.txt, "Scorp" in sandra.txt). Is there any way to extract these variables from the script or access them from the TMW client? Or is there a better way to approach this problem?

That's about it for now. :) Thanks for reading, and we hope to hear from you guys soon.
User avatar
Jaxad0127
Manasource
Manasource
Posts: 4209
Joined: 01 Nov 2007, 17:35
Location: Internet

Re: Introduction / "quest manager"

Post by Jaxad0127 »

Others are looking into a server-based approach: a script that reads the various variables available on the server directly and provides information. I don't know if they're going to do it or not, but such an approach wouldn't require any client-side modifications. Another option is to add an NPC dialog that would interact with the server to get the information. Due to the rather unstructured way scripts on the current server are done, that may be untenable. Altering eAthena for this is not recommended, due to it's quality.

Adding this to the TMWServ (our own custom server; still in development, but close to public beta) and it's client (two separate clients right now, but work is being done to merge them) might be better. It would definately be the best in the long run as we plan to stop using eAthena.
Image
User avatar
bishop
Peon
Peon
Posts: 3
Joined: 27 Feb 2009, 09:00
Location: Vancouver, Canada

Re: Introduction / "quest manager"

Post by bishop »

Thanks for the quick reply Jaxad.

What we have in mind is a quest manager dialog where the player can see the quests they've completed listed by quest-name as part of their character information. Presumably the dialog would have to exist on the client side and the quest completion information on the character server.

We need to start showing some work for our class and would prefer to build a branch that at least has a chance of being merged. Could you or someone you know give us some guidelines? We know eAthena is a "deprecated" aspect of TMW and we're more than happy to work around it.
User avatar
Crush
TMW Adviser
TMW Adviser
Posts: 8046
Joined: 25 Aug 2005, 16:08
Location: Germany

Re: Introduction / "quest manager"

Post by Crush »

So what you want to implement is a quest log dialog? Good idea, TMW could need this.

To avoid any server hacking I would recommend to use some "magic text" commands in the NPC texts which are not showed to the player but invoke the change of a quest state when received by the client.

Please try to keep it in a way that it can be easily changed into a network-message based approach when it is ported to 0.1.0 / TMWServ.

Example for NPC dialog which changes quest variables:

Code: Select all

mes ("__QUEST__|BEGIN|Messenger for Bob and Alice|Bring the message to Alice|__QUEST__");
mes ("__QUEST__|UPDATE|Messenger for Bob and Alice|Bring Alices response to Bob|__QUEST__");
mes ("__QUEST__|COMPLETE|Messenger for Bob and Alice|__QUEST__");
This syntax is just a suggestion. Feel free to change it to something which is easy to parse for you, is easy for the scripters to use and makes false positives unlikely.

Persistent storage could be done client-sided in an XML file.

You might also like to join our IRC channel #tmw-dev on irc.freenode.net and talk this through with our lead programmer Bjørn Lindeijer (nickname b_lindeijer).
  • former Manasource Programmer
  • former TMW Pixel artist
  • NOT a game master

Please do not send me any inquiries regarding player accounts on TMW.


You might have heard a certain rumor about me. This rumor is completely false. You might also have heard the other rumor about me. This rumor is 100% accurate.
User avatar
Jaxad0127
Manasource
Manasource
Posts: 4209
Joined: 01 Nov 2007, 17:35
Location: Internet

Re: Introduction / "quest manager"

Post by Jaxad0127 »

That approach would require updates when the player logs on, so you aren't tied to a specific installation. Since we need to do that anyways, client-side storage could just be dropped completely. Sending discrete (ignored by older clients) information when you login with a character is possible, with updates sent as needed.
Image
Post Reply