Wednesday, April 25, 2012

Google Summer of Code 2012 Accepted Students


Hopefully it's not news that Ryzom Core was accepted into Google Summer of Code 2012. The WorldForge project kindly hosted us and CEGUI under its umbrella. We had the privilege of having a number of great students proposals. Unfortunately as things go we didn't get to accept them all and we had to make a lot of hard decisions. We hope those of you that didn't get accepted join the community and apply next year!

We ended up being able to accept four student proposals and they're great proposals this year!

Ryzom Core GUI Editor


We had one brave student decide to take on this behemoth task. dfighter will be creating a basic GUI editor tool as a plugin to OVQT to create the interface XML files used by Ryzom Core's client. Additionally he will be separating out components of the client (CDB and the Core UI) into NeL for re-use by non-client projects and tools. dfighter began this refactoring process awhile ago and has made substantial progress. dnk-88 will be mentoring him.

Character Achievements


SirCotare comes to us from the Ryzom players community, which is a real treat. His project will bring in-house the character achievements work he has already accomplished using the Ryzom API for the Ryzom Armory. His proposal will be moving the existing achievements system into Ryzom, refactoring it for direct access (bypassing the API), releasing the entire server-side API to AGPLv3 (presently only the client API for PHP is available) and finally improving the "triggers" for achievements to have more flexibility. acemtp will be mentoring him.

Camera Animations and Sound Triggers


Fabien is a student from last year who worked on the guild-based missions code. This year he decided to take on something a little different - but not too different. He was interested in the sound triggers idea which implements a greater ability for content designers to relay requests to play sound effects to the client. The idea adds the ability to play sounds from mission steps, via AI scripts and through the dialog tree system. Looking at what he was going to be working on the idea morphed to bring in more capabilities and thus will introduce rudimentary camera animation that can be scripted in the mission editor. By the end of the project content designers will be able to script miniature cut-scenes as part of their mission tree. He will be mentored by Kaetemi.

Guild Ranks and Management


Zyklon is a new arrival to the Ryzom Core community. He will be adding the ability for guild officers and/or leaders to create arbitrarily named ranks within their guilds. At a functionality level guilds will still maintain the existing grades (leader, high officer, officer, member) but will be able to generate their own internal ranking system (e.g. PFC, Sgt, Cpt, etc). He will be faced with multiple challenges - designing a usable UI, creating an efficient mechanism for synchronizing the guild ranks and more but he will have a great support team - he will be mentored by Ulukyn.

Everyone Else

Again I really wish we had an unlimited number of slots with which to accept students, we had many great proposals. To the students who were not accepted we'd love for you to come join the community and hang out. If you're interested in applying next year this will provide you with many benefits in the application process and will lead to a stronger proposal. Plus we're really fun guys to hang out on IRC with.

Thank you again to everyone who applied and to WorldForge for hosting us again!

Monday, April 16, 2012

An Example of Community

A lot of open source projects that are tightly aligned with a commercial entity often lead people to have an incorrect perception of the community. For example when I was posting around to inform people (students) that Ryzom Core was in Google Summer of Code I naturally posted on the Ryzom player forums. I said something like "ever wanted to add feature XYZ to the game? Now's your chance!" A snarky player replied to me "because we paid you to make it." It is easy to make that assumption but I'd like to take time in this post to point out some of the great things that have come from the community recently.

Improved OSX Builds

One of Ryzom and Ryzom Core's most prolific contributors, kervala, applied a patch provided to us by GelluleX. Kervala and GelluleX's patches and work have reduced a massive amount of warnings that people working on OSX encounter but have also provided us with the ability to build using CLang. This is pretty important for people developing on OSX as CLang/LLVM is Apple's preferred method and they're no longer maintaining GCC. In addition to this you can use CLang on the other platforms we officially support and it provides faster builds, faster code and much more accurate debugging and output.
CLang build on OSX - detailed error messages.
If you want to build using CLang either on OSX or Linux and CMake has not chosen it as your default compiler you can force it to do so using these CMake command line options:

-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++

Sound System Improvements

Kaetemi has been a busy guy working on the sound system over the past couple weeks. He has fixed a number of bugs and problems with the sound system but is planning a three stage re-implementation of the NeL music system. You can link into his detailed information about what he is doing but you can see that he has finished the first stage of the process which included implementing a streaming sound, a sound group controller interface, various performance improvements and bug fixes. In addition he uncovered some substantial fixes to the threading logic. He added thread priority and he fixed the isRunning method which used to have this lovely comment in it:

// TODO : need a real implementation here that check thread status
Long term this implementation will enable a greater ability to use music sources in game. For example for Ryzom players this feature will enable in-game items such as the jukebox in the Pyr bar to actually play back music.

Linux Patching Improvements

Botanic from the Tempest in the Aether project provided a fairly complete patch enabled the built-in client patcher on Linux and OSX. It works as well as it does on Windows and will hopefully be applied very soon. Due to the differences between the three main OSs we support and even between various distributions of Linux the answer of how to universally handle patching is still being discussed.

Tempest in the Aether patching on Linux.


Botanic's patch works wonderfully if the client is installed into the user's home directory - where the user has full privileges to update all of the content. The debate comes in for situations such as distributing the game binary through a package manager or App Store. In the case of Linux the binary is then in an area of the file system which normal users cannot overwrite. In the case of OSX the binary is not allowed to be patched outside of the App Store.

Friday, April 13, 2012

Welcome to the Ryzom Core Developers Blog

One of the problems that Ryzom Core struggles with frequently is the perception that it is dormant and no longer developed. There are a lot of reasons for this throughout the long and tumultuous history of the NeL and Ryzom Core history but the fact of the matter is that we're pretty terrible at two big things: communication and releases.

The group that runs the Ryzom game make their fair share of releases and have a lively mechanism for getting that out. That's part of their business and it is their obligation to their players. Getting releases out is also an obligation to their players. Most people who use Ryzom Core are still running pretty bleeding edge and haven't expressed a need for a regular cyclic release cycle. There hasn't been an outcry of desire for long term stable releases. This just isn't a reality for us right now so we don't bother releasing "early and often" as is so often suggested. This is a big reason why there's a perception that we're dormant - that we don't have very many releases. Our last major release was 0.8.0 and that was probably more than a year ago now.

We also don't have a lot of big "news" to talk about so we very rarely post new items on the Ryzom Core developer site. This means that the new is concise and really limited to big deal items. I think that this is kind of important but it also means that there's only a handful of posts per year. There are a lot of tiny initiatives and efforts that go on behind the scenes. Things that following the commit log and the issue history will tell. Most people won't do this. It's often too difficult to try and troll through the myriad of commits explaining what's been changed and then try to make a summary of what those changes amount to - unless you are one of the people making those changes.

So for these reasons I've decided to make an official Ryzom Core developers blog. Here's a place where myself and other Ryzom Core contributors can come and post updates of projects they're working on, announce new patches that have been applied, provide mini-tutorials or use cases in Ryzom Core or sometimes we might just use it as a sort of bully pulpit just to rant.

This past week a couple big things have come. So in the next day or two expect a post here about what those things are what it might mean to you as someone using the Ryzom Core platform. In about two weeks we'll be able to announce who our Google Summer of Code students are and then we'll take the time to highlight each one of their projects. Hopefully the things you find here are useful, informative and go a long way to proving that Ryzom Core isn't dead or dormant.