ExtendingMultiplayerServer

From The Battle for Wesnoth Wiki
Revision as of 18:49, 25 March 2008 by Dudegaurav (talk | contribs) (Player Profiles)

Me

Hi, my name is Gaurav Mitra. I am 21 years old and a 3rd year Software Engineering/Science student at the Australian National University, Canberra. I have been playing Wesnoth for about 2 years now, and its about time I contributed to its development!

Coding Experience

I am proficient in the following programming languages :

  • C
  • C++
  • Java
  • Haskell
  • ADA

I am familiar with Linux environments which is where most of my coding is done. However, one of my home pc's has windows on it where I use Cygwin to compile programs. But I prefer Eclipse for Java and C++ projects. My favourite code editors other than Eclipse are Kate on Linux and Notepad++ on Windows. I have used SVN extensively for coursework and use the Tortoise SVN shell extension in windows for version control. I am also familiar with basic Networking concepts

My teamwork experience is as follows:

  • In my 1st year I worked on a Java version of BlockOut in a team of 4 people
  • I am currently working in a team of 6 on a year long project to develop a Linux Robotic Framework (in C)
  • I have worked in groups of 2-4 for numerous presentations on topics such as AJAX etc

My preferred method of development is Agile and I like working in small groups (eg 2-3 people).

As far as GSoC participation goes, this is my first time! My motivation for participating is mainly to gain experience in developing a professional project and I get to develop Wesnoth which is great! But i intend on going through with Wesnoth development even after its over.

Gaming Experience

I started playing games about 10 years back when I got my first pc. I prefer strategy war games rather than first person ones, hence my interest in wesnoth. My personal favourite game though is Age Of Empires II Conquerors, in which I have a fair bit of multiplayer gaming experience. I also enjoy Rome: Total War. In general I do not favour the AI as an opponent because its moves can be predicted. I find human opponents more unpredictable and hence exciting to fight, which makes me play multiplayer games more often! I also prefer more of gameplay rather than storyline. I'm also very much in contact with a big wesnoth playing community here on ANU campus so I am in constant competition with them via LAN games!

Communication Skills

I speak fluent English , Bengali and Hindi!

Contact Info

> IRC nick: dudegaurav

> Wesnoth Forum : dudegaurav

> Gna : dudegaurav

> Email: dude.gaurav@gmail.com

> Skype name: dude.gaurav, available for voip anytime!

The times that i am awake are generally very flexible, usually I sleep from 15:00 to 21:00 UTC and am available the rest of the time. I will be logged into IRC most of the time but may not be checking it frequently so feel free to email me as i check mail every 30 mins !

My Ideas for Extending the Multiplayer Server

My motivation for choosing this project comes from the fact that I am a fan of multiplayer games and believe that Wesnoth would become more popular with more advanced multiplayer capabilities. I'm also proficient in C++ which helps I guess, and am a quick learner of concepts.

Looking into the current wesnoth multiplayer lobby , I find that certain issues have a definite need for remedy !

Game Grouping and Layout

The games are currently grouped in a simple list format with a scrollbar. It would be pretty inconvenient for a new player entering the server to choose a game of his liking with the current interface. What I propose is to create a Grid Layout , having separate levels for separate types of games . More elaborately, types of games could be categorized in the following ways :

  • Unlimited/Limited turn games
  • Epic games (eg. 100x100 maps)
  • Moderate games (eg. 50x50 maps)
  • Quick games (eg. 20x20 maps)
  • Games with turn timers , as in turns would have time limits
  • Custom games with mod patches to be downloaded i.e. if players have their own versions that they want to play with.

These are the types that come to mind at the moment, but obviously there can be many more depending on player inputs I receive during the project. For each type of game I propose to have a level in the grid interface, with lines clearly demarcating each level. In each level, the games with the most amount of free slots would be displayed first and so on in a horizontal scrolling manner. Players would then be able to choose easily what sort of game they are interested in and join them.


IRC style Room(Hall) System

The current server has a single room interface ,a pretty basic one. Players have the following options that may be disadvantageous in some ways:

  • All chat before a match is public
  • Have to wait for random players to join into a match for it to start
  • Have limited options for challenging other players into matches if they aren’t reading the public chats
  • Players have no way of understanding whether their opponent(s) have left their computer(gone idle) or not in games which do not have turn timers

As solutions to some of these problems, I propose to make a Hall (Room) system which may have the following options:

  • Players can create their own rooms (Halls) , similar to IRC , which would enable them to chat with players of their choice about the matches they want to play within the hall.
  • The Halls would appear in a separate section, “The Halls” section, maybe to the left hand corner of the screen. The exact position of this section in the startup interface is variable.
  • In the Halls section, players could create/delete their own Halls or join other Halls. Probably, buttons for these actions will have to be provided, or maybe a command line “\join” style may be used.
  • A default “Challengers” Hall may be a good idea to start with where players who want a quick random challenge may dwell!
  • Upon creating a Hall, it would appear as another tab with the main room , having similar traits such as the main room. Upon joining a hall , a similar tab would appear containing the hall’s current members and their games
  • Players would be able to create and play games within a Hall. The game might/might not be displayed in the main room, depending on the options specified by the players as they may want a private game with known friends only!

With a Hall system like this, it would be possible for players to:

  • Chat with known friends privately before a game , and then create the game accordingly
  • Have the ability to create halls that may be grouping players with similar common attributes or interests . For example , a Player could create a Hall called “CanberraWarriors” where players from Canberra might join and compete.
  • The scalability of wesnoth to a much larger multiplayer community may be a reality
  • Thinking ambitiously , inter Hall tournaments could be organized where the best players from a hall would compete ! The best players would obviously be chosen from the hall with criteria determined by members of the hall , so no controversies arise from ranking !
  • Possibly in the future , some Halls may even keep a criteria on entry ( this is really thinking way ahead ! ) , such as a player would be granted entry if he played a match with one of the members of the Hall and fared well !

Well , i agree the last 2 points were very far fetched but who knows , anything is possible !

Player Profiles

Any multiplayer game server would have to incorporate player profiles to be popular. At the moment there are various external websites that provide a ladder format for wesnoth players to have profiles and possibly be ranked , for example , ladder.subversiva.org . However, an internal server database containing basic player statistics would be pretty handy in a lot of ways , mainly :

  • Players could have a real time indicator on their profiles if they are online of not , and maybe also have an indicator if they have been inactive(idle) for a certain period of time
  • Players could maintain list of friends(buddies) on their profile and could check quickly whether any buddies are online at the moment
  • Other players could look at fellow competitor’s stats and challenge them to a match maybe


While there is a contention in the fact that people who have been playing for a while and have won many games, will have to start afresh on their profile stats, I feel this problem may have a solution.The current stats from the ladder websites could be ported in to the profiles and players could continue from where they left off on the ladder. This process may be achieved in many ways, either by correspondence with the admins of the ladder websites, or by the players themselves, whichever is feasible.

Login authentication similar to IRC

Speaking to devs in IRC , I heard that login authentication was already under construction . I would be happy to contribute to its development if permitted. One of my own problems with the authentication system that i have encountered is :

  • Often when a player logs out of the server, and if he wants to log back in immediately , he has do so with a different ID because the server still has the player nick as active.

Different Version support

A problem I had encountered earlier when playing from outdated development releases was not being able to connect to the current multiplayer server. A solution for such a problem may be to incorporate such a provision , and then have a version stamp beside the player nick so that other similar players may group together. Possibly , there may be Halls for different versions .

More ambitious goals

  • Game Search system based on criteria - This may only be needed by players if the number of games is seriously large , which may not be the case in the near future.
  • Player ranking system ( **Controvertial!** ) – depends heavily on feedback from players and devs !

Scalability of ideas

The ideas mentioned here , I feel are very much scalable. Mainly ,

  • The Hall system , could support many times the current number of players , without much confusion , as it would be properly categorized. A vast number of player groups would be able to communicate amongst themselves in their private halls , avoiding public chat mayhem .
  • Player profiles could start simply as a statistical database but could grow into a future ranking system which is agreeable to a multitude of players
  • The proposed grid layout could support many more games in an organized fashion than the current layout. Having such a layout in each hall(by default) would make individual halls capable of hosting a large number of games
  • The proposed system of game grouping into types may be extended according to player input

Admin & Moderation

By introducing the ability for players to define their own Halls , a certain moderation factor should also introduce itself. If these ideas are implemented, it would be natural for the devs to assign mods for the server. Mods would have privileges to remove any offensive groups which might have been created. By my initial study of other multiplayer communities, i would possibly discover many more moderation issues involved in my design.


Overview and Estimated Timeline

Overall , my ideas are a starting point upon which I hope to build extensively by further research. Even after GSoC is over I hope to continue to be a Wesnoth developer. By participating in GSoC I hope to contribute to open source development , and more importantly , contribute to Wesnoth ! In the process , I would also significantly develop my coding skills ,my knowledge of networks and possibly my abilty to work in a virtual team environment ! I am very open to criticism and reasonable arguments , hence can only be on the trail of improvement !

My proposed timeline would be :

  • I would start the project by doing research on the wesnoth lobby asking players about improvements that can be made, maybe putting up polls on the wiki page for players to participate in.
  • Then I would research other multiplayer lobbies such as GameSpy , studying their patterns and judging what features would be best for wesnoth. I have already started doing this , and will be editing this page with more suitable details pretty soon.
  • After this stage , during the community bonding period I would give a presentation of my proposed interface for the multiplayer server to my mentors. After incorporating possible changes to my proposal given by mentors , I would start coding. This would possibly be during the last week of april / early may , going by google’s timeline.
  • By July , the mid term evaluations would be submitted.
  • By august the code.
  • By September , everything should be ready to roll !

This is only a rough estimate of the project as i see it now , and many changes in it will be inevitable .


Tips from the wesnoth community

My ideas are very fundamental to say the least, and may have many flaws which I am oblivious to at the moment. All constructive criticism from the devs , or anyone for that matter is more than welcome ! I shall be available on IRC most of the time, but if im not, please list your tips in this section of the page if you want to. Emailing me would be appreciated, but I can understand the trouble one has to go through for that!

Tips from others……….