MultiplayerInterface

From The Battle for Wesnoth Wiki

Basics

My name in Jarek Fuks. I live in Poland in Olawa. I use jarek102 at gmail as my email adress the same goes to IRC and forums. I study Computer Science at Wroclaw University; i'm at 4th year I like Wesnoth so, I'd like to improve it. By participating in Google Summer of Code I'd like to achieve much more new experience especially interacting with big project community and meeting some new people. Gaining new programming skills is also important as well as good money for good job.

Experience

  • What programs/software have you worked on before?

I was working in wevo (library of evolutionary algorithms written in java). I've got also some IM experience, because I had been involved in creating BSJabber which was actually XMPP client app (in C++ and GTK). Currently I'm working on comercial CMS system - YaCMS (along with lisu and some other guys). I coded a lot of small apps like film library.

  • Have you developed software in a team environment before? (As opposed to hacking on something on your own)

90% of apps I have written in my life were a team work (bigger or smaller).

  • Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?

No.

  • What development model would you use (e.g. keywords: V-model, XP programming, agile programming, iterative; with the help of prototyping, formal specifications, tests, etc).

I like XP with unit tests. I usualy write with lisu or PrzemekZ (which is most bugless and make code much more clean)

  • Open Source
    • Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.

I was active developer of initial version of wevo, now I'm not active but still involved. I've also taken part in odinah but project wasn't really released, because of one of our co-workers.

  • Gaming experience
    • Are you a gamer? If so...

Yes

    • What type of gamer are you?

Night.

    • What type of games?

I prefer strategy and RPG games. I've played between the others Neverwinter Nights, Gothic, Down of War, Civilization,Heroes of Might and Magic, and of course Battle for Wesnoth.

    • What type of opponents do you prefer?

Human (also multiplayer campaigns are good ;)

    • Are you more interested in story or gameplay?

Rather story.

    • Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.

I was playing wesnoth about year ago for some time (2-3 months). Equally singleplayer and multiplayer.

Communication skills

  • Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.

I'm rather good in written English.

  • Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.

I'm calm and don't have problems with others.

  • Do you give constructive advice?

I've got many ideas, most constructive.

  • Do you receive advice well?

I think so.

  • Are you good at sorting useful criticisms from useless ones?

It takes some time, but yes. Usually I analize arguments to decide if it is constructive. I often consult it with my friends too.

Extending the Multiplayer server

As a general idea I consider two ways of improving wesnoth multiplayer part. First is to integrate multiplayer part with jabber and the other one is to improve existing infrastructure.

Jabber integration

XMPP (jabber) is IM protocol with extensibility as primary goal. It is well standarized and documented.

I think to replace whole text communication part with jabber.

  • There are ready to use libraries and servers
  • It'll ease extending multiplayer lobby and friend system.
  • Jabber servers are very scalable and well tested under high stress


  • Users system: Every user that has an account on jabber could use it with wesnoth. Using this schema we would achieve:
    • simple way to register and authenticate users (which actually doesn't overload server because jabber servers are very efficient)
    • user profile system
    • posibility to communicate with world around (e.g. good friend system)
    • anonymus users would be solved as transport (foreign IM protocol handler)
  • Rooms
    • implemented as jabber conferences
    • with each room there would be asociated separate game lists
    • in the main room there will be hidden list of all games in all rooms

native implementation

  • Users system: Users can set password for their account. They can also remember it in their game a safe way.
    • simple user profile system (we don't want to overload server)
  • Rooms
    • with each room there would be asociated separate game lists
    • in the main room there will be hidden list of all games in all rooms

Interface

  • filters in lobby
    1. number of players
    2. state of game
    3. map size
    4. teamplay type
    5. map name / type
    6. add-on name
    7. map settings
    8. language
  • integration with add-on server
  • quick game (join first free game)
  • WML themes?
  • searching

Server side

  • using multiple servers (for groups of rooms?) - distributed server design for scalability
  • statistics
  • (native) separate chat server?

Project questions

  • Why did you choose this project?

Like I've sad before I like wesnoth, so I would like to improve it. I got solid knowledge about newtoking so extending multiplayer suites me best. Besides I have to mention that wesnoth has strong and mature community in which I'd like to participate. There is one more reson - two friends of mine have applied in so we had a great chance to help each other in projects.

  • Include an estimated timeline for your work on the project
    • April 1 - April 14: Getting familiar with with code, writing some patches. Getting to know with community (idleing on IRC,playing multiplayer ^_^).
    • April 14 - May 26: Community Bonding Period - Deciding about basic design, getting know mentor and community ecpectations.
    • May 26 - July 14: Students are coding for their GSoC projects. July 14 is also final date to submit mid-term evaluation. I'd like to archeve:
      • Final design of project. (making consensus about features to include and changes to be made with community, designing interfaces(if needed), presenting done researhe)
      • Themeing multiplayer lobby.
    • July 14 - August 18: Real coding. Code should be functional for it will be delivered in the next Wesnoth development release

Include as much technical detail about your implementation as you can

Jabber integration

Jabber server

Client would connect to jabber server and join some rooms (conferences) or apply some filters to find game. With each room there'll be associated games. When new game is created jabber server will send wesnothd server address.

Changes need to be done to jabber server:

  • extend conferences to include wesnoth games
  • make games new beeing (like users) to have global game list and so
  • add support for wesnoth versioning (use proxy/redirect...)
  • extend user profiles to have wesnoth specific data

wesnothd server

In future wesnoth server wouldn't handle chating at all

Changes need to be done:

  • remove unneeded code
  • add user auth with jabber server

wesnoth client

Need to add some jabber library, redesign user interface and add feauters.

To integrate jabber client side I can use:

  • gloox
    • requires GnuTLS/OpenSSL, LibIDN
    • ported to MacOS X, Windows, SkyOS, Syllable, Windows CE
    • gloox is licensed under the GNU General Public License v2
  • oajabber
    • requires xerces-c, oapr (nspr, gsasl)
    • seems portable
    • licensed under the terms of the GNU Lesser General Public

Needed to be done:

  • user profiles
  • game filters
  • chating and conferencing

Thinks to solve

  • anonymus users
    • create per game installation/machine acount
    • extend jabber server to have anonymus users


* What do you expect to gain from this project?
* What would make you stay in the Wesnoth community after the conclusion of SOC?

Practical considerations

  • Are you familiar with any of the following tools?
    • Sub­­version - Yes
    • C++ - Yes
    • Python - No
  • Which tools do you normally use for development? Why do you use them?

I use Eclipse. It is very comfortable environment and i write programs faster :). Debug is very easy. Code formating and quick fix extremely speeds up coding and debug.

  • What programming languages are you fluent in?
    • Java
    • Perl
    • C#
    • PHP
    • C++ (as I've mentioned before)
  • What spoken languages are you fluent in?
    • English
    • Polish
  • At what hours are you awake (please specify in UTC)

9 AM - 12 PM

  • Would you mind talking with your mentor on telephone / internet phone?

I don't mind.

This page was last edited on 20 March 2013, at 23:53.