Difference between revisions of "ExtendingMultiplayerServer"

From The Battle for Wesnoth Wiki
(My Ideas for Extending the Multiplayer Server)
Line 45: Line 45:
 
==My Ideas for Extending the Multiplayer Server==
 
==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.
 
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.
 
As mentioned by Wesnoth developers in their suggestions for this topic, the basic idea is to study the current multiplayer lobby, come up with tweaks, get them approved and code them! At the moment, the tweaks that are evident to me are:
 
  
*Support for different versions of Wesnoth i.e. different versions would have separate rooms and they could compete there rather than having to download the latest version again
+
Looking into the current wesnoth multiplayer lobby , i find that certain issues have a definite need for remedy !
*Support for different game types eg. Epic games (eg 100x100 maps), fast-turn games, large games and so on. Groupings of game types would enable players to choose games they are interested in faster and more easily
+
 
*Providing proper login authentication similar to IRC
+
====Game Grouping and Layout====
*Player profiles, having info about player details, number of games played , won, lost, best match etc
+
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 :
*Having a multiplayer section on the website detailing player stats, game stats etc.
+
 
*Database for storing player profiles and ranking players based on their game statistics
+
*Unlimited/Limited turn games
*Grouping similar games, maybe making a grid layout rather than the current scroll up/down one
+
*Epic games (eg. 100x100 maps)
*Improved communication system between players i.e. private chat modes etc
+
*Moderate games (eg. 50x50 maps)
*Simple room system similar to IRC, and separate rooms for different wesnoth versions, maybe more rooms for match-making purposes
+
*Quick games (eg. 20x20 maps)
*Filtering mechanism for games interested in i.e. game search system by specifying different criteria such as number of free slots, playing against whom (i.e. Northerners/Elves...), number of players, map size, map terrain, etc.
+
*Games with turn timers , as in turns would have time limits
*Support for other languages for player convenience .
+
*Custom games with mod patches to be downloaded ( elaboration required )
 +
 
 +
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
 +
*Often when a player logs out of the server, he has to log back in with a different ID because the server still has the player nick as active. (Maybe a problem of authentication , but I feel its related)
 +
 
 +
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 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.
 +
 
 +
====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 !
 +
 
  
 +
 
I also think it would also be a good idea to do some online research in the multiplayer lobby to find out what other Wesnoth players think needs improving!
 
I also think it would also be a good idea to do some online research in the multiplayer lobby to find out what other Wesnoth players think needs improving!
  

Revision as of 17:46, 25 March 2008

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 ( elaboration required )

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
  • Often when a player logs out of the server, he has to log back in with a different ID because the server still has the player nick as active. (Maybe a problem of authentication , but I feel its related)

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 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.

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 !


I also think it would also be a good idea to do some online research in the multiplayer lobby to find out what other Wesnoth players think needs improving!

Overview and Estimated Timeline

Page under construction at the moment , rest will be up shortly !