ExtendingMultiplayerServer
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 !