Work on the Ileor Client Library Started

I thought I would post a lit­tle update as I have started work on the client library for Ileor. The idea is to have a sep­a­rate library with a clean inter­face that can be used by a graph­i­cal client to ren­der the game. The client library han­dles all the net­work­ing and sim­ple pro­vides a view of the world to the graph­i­cal client.

I am using an excel­lent signals/slots library called sigslots for the library. It is sim­i­lar to a call­back mech­a­nism and allows the client to reg­is­ter han­dlers for var­i­ous events. It has cer­tainly made the devel­op­ment much eas­ier as I can visu­al­ize the com­po­nents clearly now :-)

The entire view of the world pro­vided by the client library to the graph­i­cal client includes net­work­ing, map infor­ma­tion, player infor­ma­tion, entity infor­ma­tion (eg. NPCs and other play­ers on the map). Sim­ple but def­i­nitely more flex­i­ble that a mono­lithic client.

I how­ever give credit where it is due and it goes to the bril­liant guys over at the World­Forge project. They employ a sep­a­rate library (called Eris) that is used in mul­ti­ple clients which inspired me to design mine sim­i­larly. They also have an insane server design but my skills aren’t as advanced and thus I am stick­ing to my lowly design for now :D . I would def­i­nitely rec­om­mend check­ing out the World­Forge project if you are plan­ning on devel­op­ing an MMO. The var­i­ous parts of the project will give you a good idea of the dif­fer­ent com­po­nents you need to write. Also, their wiki is a trove of infor­ma­tion for MMO developers.

Server Rewrite!

Now that the ini­tial pro­to­type for the server is up and run­ning, I have decided to rewrite it in a more for­mal way. The pro­to­type was writ­ten in a very crude C-style C++ code. To be hon­est, I pre­fer the C style of cod­ing and would use C to write the server code. The prob­lem is that I have writ­ten a cus­tom object-oriented wrap­per around the ENet library in C++ and am forced to use C++.

In order to have a main­tain­able and mod­u­lar archi­tec­ture, I have decided to switch over to an object-oriented approach for the server as well. I cur­rently have the basic net­work­ing up and run­ning in a flex­i­ble design with a publish-subscribe archi­tec­ture for mes­sage handlers.

I am design­ing in a way so that the core of the server and client can be released as open source while allow­ing devel­op­ers to develop pro­pri­etary mes­sage han­dlers for var­i­ous fea­tures. Hope­fully I’ll have a sim­ple imple­men­ta­tion released within a week!

Ileor — More Details

I thought I would write about what exactly our vision for Ileor is at the moment. We are just a pair of geeks work­ing on this on our spare time so we are ini­tially going to be aim­ing rel­a­tively low for it. Here are some of the fea­tures we cur­rently have in mind:

  • Tile based maps (square tiles). I actu­ally like this method as it gives a very sim­ple rep­re­sen­ta­tion of the world. No ugly physics, 3D col­li­sion detec­tion etc.
  • Move­ment within and between maps (we are using two blank test maps for now). We will be using the A* pathfind­ing algo­rithm for move­ment. Por­tals placed on the map will allow for move­ment between maps. Move­ment within maps is cur­rently work­ing using a crude algorithm.
  • Chat. This is pretty much a basic fea­ture in MMORPG’s (per­haps not true for weird, exotic ones, but we’re not going there for now!). We hope to imple­ment pub­lic and pri­vate chats. Most of the frame­work for this is there. This should be up soon!
  • Ini­tially, work with a text client. This just seems the eas­ier way to do things until we have a decently devel­oped server. We will work on a graph­i­cal map edi­tor and client after that. I am going to try for a 3D one, but if it turns out to be too much of a pain, I’ll stick to 2D (SDL looks pretty good and is cross-platform).
  • Sim­ple server archi­tec­ture. This is the most impor­tant goal for us. We do not want to bog our­selves by over-designing every­thing. We are stick­ing to a sim­ple object-oriented design (C++) and using the Enet library for our net­work­ing needs. We are fans of reuse and will stay away from rein­vent­ing wheels and code :-)

That pretty much sums up the ini­tial devel­op­ment goals for Ileor. We will update the mile­stones as we com­plete them! Until then, here is a teaser of what we have work­ing at the moment:

Hello!

Hello and wel­come to the devel­op­ment site for the Ileor MMORPG. The Ileor MMORPG is an effort by two (at the time of writ­ing this) col­lege stu­dents to learn about the devel­op­ment of mas­sively mul­ti­player online games by cre­at­ing a small indie MMORPG. Keep a look­out for devel­op­ment updates!