New developer documentation and starting points

Hello,

Over the years, I’ve been involved with several of the Graal 1.39 private servers and communities before a legitimate effort to develop a functional gserver (and client application?) were in the works.

It appears this project is seeing quite a bit of activity now, which is exciting.

I’m interested in joining the development efforts, but I’m not sure what documentation or roadmap is available to begin researching.

I found this thread in the FAQ board:

http://forums.graal.in/forums/showthread.php?331-Can-I-help-with-this-project

But the listed link doesn’t really point anywhere other than the main forum index.

Since the codebase is so large, wading through the SVN tree seems infeasible to just jump into.

Can someone recommend a starting point for new developers to help introduce the software design and/or what features are currently being investigated?

Thanks

Unfortunately, the SVN tree is all you got:
http://code.google.com/p/gs2emu/source/browse/#svn%2Fgserver-v2%2Ftrunk

I can give you some hints on how to find things, though:
CString.cpp -> Used extensively for packet functions. readGInt/writeGInt are somewhat important. operator>> overload too.
TServer.cpp -> The server’s main loop can be found in here. TServer::doTimedEvents is a function that is often modded.
TServerList.cpp -> Communication with the list server.
TPlayer.cpp -> Handles all the packets that come from a player. TPlayer::processChat handles player chat (unstick me, etc). TPlayer::msgPLI_LOGIN is where player login starts - continued in TPlayerLogin.cpp (after the list server ok’s the player).
TPlayerProps.cpp -> Handles player props (kinda self explanatory once you see them.)
IEnums.h -> All of the packet IDs can be found here.

I’ve tried to program the server to be fairly easy to understand, and I’ve tried to comment what things are doing. The gserver is fairly mature; not much work has been put into it lately because the only things that are really left to do is serverside npcs. And that requires an npc-server, which many people have tried to do, but could never really finish. NPC-Server code in the gserver is half-finished and gmaps are still kinda busted. Both things which will really require an npc-server before we can bother fixing.

If you need any further help, go ahead and ask. I can point you in the right directions.

Hello ardnew, long time no see! You know billll/demonspit right? You’re that “Uhandled Exception”, right? If you want to join, I’ll need your google account email-adress so I can add you to the repository!