June 15, 2013

"Next gen tracks" sneak preview


Hello my name is Jean-Manuel Clemençon (aka samuncle)
I'm the lead graphics artist.
I have been a contributor for a while but this is my first post.

Graphics is an important aspect in our game and since the last version I worked hard to improve graphics.
I made a new track that shows what I'm planning for the future of supertuxkart and two major improvements.

Old (new) mine

I cleaned up the mesh but the most visible improvement is the new lighting system with several lightmaps (and some dynamic lights). It's also more interactive with a Minecart that can knock the player if he forgot to check the traffic light.






Lighthouse

Lighthouse is a next gen track with around 70 000 poly (the average for a track is 20 000). It's the first track that uses our new vegetation shader for grass animation.

The track has also several animated objects like floating buoys in the sea and a dynamic skybox.

Zen Garden

When I made Zen garden in 2010 supertuxkart didn't support lightmaps. So I added some lights and a sunset. Caves are less empty with little blue fireflies.




 I'm not saying any more, you can discover by yourself ;)

May 28, 2013

Graphics guy saying hi

Greetings all! My name's Lauri (cand), and I'll be working on bringing some graphical improvements to STK this summer.



Here's the initial timeline:

Weeks 1-2: Groundwork (such as a wrapper class to ease loading shaders), glow (including bloom, since it's very similar), and smoothed minimap

Weeks 3-4: Lighting, including rim lighting for the karts

Initial plan is to implement a light prepass system.

Weeks 5-6: MLAA, SSAO

Weeks 7-8: God rays, motion blur

Weeks 9-10: Water

This will include screen-space reflections, simulated caustics, and vertex
animation via scrolling textures.

Weeks 11-12: Grass, and wrapping up


If there's some part of STK that's been poking you in the eye, or some effect you absolutely must have, leave a comment - the plan's not set in stone.

After each period, I'll be posting some comparison shots, before and after, of that period's progress.

Signing out.

Google Summer of Code - Students View

After more than 2 weeks of deliberation and discussions among all mentors and admins we have finally reached a conclusion for GSoC. First of all congratulations to the three selected students:
  • Hilnius: Network Core for SuperTuxkart - implementing network multiplayer but not lobby or rewind
  • Cand: Graphical improvements
  • Uni: Networking lobby
It was a very difficult decision for us to make. For each proposed idea to us we usually had at least two students we would have loved to pick. But we had only three slots (which is for a first time GSoC organisation quite high), so we had to choose. Congratulations to Hilnius, Cand, and Uni.

Unfortunately, this means that we disappointed 75 other students. We would have gladly taken 6 or so more (but it would not have been realistic to try to mentor that many students). We hope that next year we might have more mentors and more slots, and will be able to accommodate more proposals. In case that you are interested in some statistics: here are the number of proposals we got for each of our suggestions, and the average ranking in each category (1 to 5). There were 6 proposals suggesting new things (including one that proposed to make a 3d kart racing game where you have powerups ... hello, did you even play SuperTuxKart??)


We won't have time to give individual feedback to all students, but here are some common issues we noticed in various sections. First of all, it certainly helps if you spell the name SuperTuxKart correct - we saw quite a few variations ;)  But otherwise some comments about frequent problems we noticed:

Patches

While most students had no problems with the patches, we noticed that many of the patches were not tested. A simple example is our suggested patch of replacing printf with Log::warn/error etc calls.
Assuming a patch is correct just because it compiled is not really sufficient. In one case a patch would compile on linux, but not on Windows. Reason were missing parameters in function calls - something that is easy to notice if you verify that your patch works. And people did not notice that e.g. Log::warn would already print "[warn]", so any 'Warning:' included in the text is not necessary and should have been removed. But for the record, we did not really exclude anyone because of those problems, since we stated that we mainly wanted to see that using SVN etc. worked. We did rank someone who attached a patch as image (png) ... quite low, since this showed us that the basics of a versioning system were not fully understood, and this is an essential skill any student needs to have.
Some students surprised us by taking on some rather complex bugs that were in our tracker, so we already have quite a few improvements for the next release because of this.

Battle Mode

The most popular proposal. Many proposals were suffering from missing details, e.g. not explaining what information was exported by blender into SuperTuxKart, and how it was used - they just assumed that there would be a graph. Or missing was just how a target kart or target item were selected, how the AI was meant to drive (i.e. could the existing AI code be used). Some proposals were more research oriented - and while I'd love to do more AI research work, for GSoC we had to accept proposals that had in our opinion more chances of success - last thing we want is to have a good student, with an idea that just doesn't work properly.

Race Verifier

That somewhat simple sounding idea proved to be quite difficult. Many people suggested to just include the stk_config.xml file (careful study of the code would show that also all kart.xml files needed to be included). More advanced proposals suggested to encrypt the file, in order to prevent tampering with the data. While this sounds really convincing, they are all missing the point that if you compile your own sources it is trivial to write into that file whatever you want, and use completely different values in-game. Only a few proposals suggested to actually use STK itself to verify if a race is correct, and only one proposal suggested to analyse statistically what items were collected in a race (this suggestion can easily be improved by just storing the random number seed for each box - from that number the sequence of collected items can be reproduced).
Overall, this project idea had the fewest good proposals in the end. I guess that because it could potentially be a stand-alone program many students either underestimated its complexity, or just missed the point.

Rewind

Many proposals ignored that you need to store the user events, e.g. steering, and firing. When you rewind and replay from a previous state, you still need to fire, accelerate and steer at the right time, otherwise the whole point of rewinding is missed. Better proposals suggested to make other use of the replay data, e.g. to use this data to show a slow-motion shot of finishing the race.

Summary

Some general comments to wrap this up: Similar things can be said for almost any proposal. Generally proposals of people who have spoken to us received much higher rankings. Especially in the section of new proposals that was obvious - if it hadn't been for Hilnius's proposal, its average would have been much lower.

One frequently asked question or concern was that many students had no prior experience to open source development. We made a point of reading first the actual proposal before reading the background of students, but still in general people with more practical experience received better scores. Their proposals were just more complete, i.e. thought out every step of the way to the goal. For any student who might be interested in participating in a future GSoC I would strongly recommend to use the time till then to get more experience - and participating in Open Source would be a very good candidate. While I can't speak for all Open Source projects I know many will welcome new contributions, and will be happy to help anyone who wants to learn and is willing to put effort into this.



May 6, 2013

GSoC - Deadline for Student Proposal

May 3rd was the deadline for all proposals from students who wanted to participate in the 2013 Google Summer of Code. We received an amazing 79 proposals,which kept our mentors certainly very busy. A big thank you  to all our mentors for their tireless and patient work they did over the last two or three weeks. They were constantly answering questions, giving feedback, and helping students to get started. I have over 600 GSoC related emails during those three weeks (not counting those on the google list), and according to my log files talked to more than 30 people in private chats. It got quite frantic towards the end. Here the list of proposals per day:


In contrast to what we heard before the proposals mostly had a rather high quality, we didn't receive many 'spam' proposals (e.g. proposals completely unrelated to SuperTuxKart). Google had changed the number of proposals a student can submit from 20 to 5, and this might be responsible for this: less opportunity for students to 'spam' mentoring organisations with bad proposals (and since it appears we had an above average number of proposals we were even less likely to be targeted by those, since the chances for a bad proposal with us would be even worse).

Some of the proposals were extremely long and detailed (one proposal had 18 pages in an attached pdf file). Not that we expected that much detail in the proposals, but it shows how much effort some students put into their proposal. And most of them also reacted positively to feedback we gave them, so a compliment to the students at this stage as well.

Here some common problems we noticed so far:
  • Not having the right level of description: Stating that you are going to 'write a battle AI using some existing path finding algorithm' isn't really enough to tell us how your code is supposed to work. Path finding was only one part of that project, how does this work with all the other missing parts? On the other hand, a list of function names and parameters does not tell us how those functions are supposed to work together. That part is the important part, we don't need to know about function names here. 
  • Not understanding the project. Many people used encryption/signing to make sure that replay files saved from SuperTuxKart can not be altered, completely forgetting that it's trivial with an open source game to modify the data written before it is signed.
  • Untested patches. Some of the patches appeared to have not been tested, and did not work as expected. If you replace a printf warning message with our new Log::warn(...) interface, you should at least test that this warning works as expected, and not only if it compiles: do something to get this warning printed, and make sure it works as expected.
We are probably not able to provide individual feedback on all proposals, but I intend to write a follow up blog post detailing some of the common problems for certain ideas, and in general some other things we noticed. Hopefully we will be able to publish some of the better proposals as an example for everybody later.

It will be another few days before google lets us know how many slots (students) we are going to get. Then we will be busy for the next two weeks to read and rank 79 proposals, and pick the final selection of students. But one thing is already obvious: we have many more good proposal than we will get slots in the best case.



April 12, 2013

SuperTuxKart participating in GSoC 2013!

We are proud to announce that SuperTuxKart is among the accepted projects into Google Summer of Code 2013! We have already made contact with a lot of excited students, and we look forward to participating with one or more of them during this summer. We will ask Google for three slots, but considering this is our first time participating we may get less.

The official Google Summer of Code page for SuperTuxKart is:
https://google-melange.appspot.com/gsoc/org/google/gsoc2013/supertuxkart

GSoC overview page:
http://supertuxkart.sourceforge.net/GSoC_overview
GSoC ideas:
http://supertuxkart.sourceforge.net/GSoC_ideas

If you are interested, please read through the GSoC pages and contact us as soon as you want to. Please note that we are very busy trying to respond to everybody and it might take a while before you'll get an answer (especially if you contact us by IRC - you might need to ask several times to get an answer there, so please subscribe to our e-mail list and use it instead or in addition if that is more convenient). However, in the end your proposal is what will matter most to us when choosing who we'll work with.

Other news
 
The interview with us for SourceForge's Project of the Month for April is now up for you to read. Hopefully you will find it interesting, and again thanks a lot to everybody who voted for us! Without your help we would not have made it.


Improved Konqi
We have a new version of Konqi in the game, made by betharatux1 with some help and advice from jymis. It really shows that community collaboration pays off; thanks to everyone involved!


Improved Old Mine
Samuncle has been working on the Old Mine track, refining it. The road should feel the same, but textures and topology has been improved.


Improved icons
Courtesy of Totoplus62 and tavariz91 - more nice community collaboration! :)


Do you think Expert difficulty is too easy? Due to popular demand an extra difficulty has been added, where all karts go a little faster (maybe not noticeable), and the AI always try to use skidding whenever it can, no matter where they are positioned relative to you. Possibly other changes may be made in the future, but we will not make challenges for this difficulty; instead it will be unlocked if you manage to do all challenges as Expert.


A lot of code refactoring and bug fixes has been done as well, among others for the camera and rendering. The only change that should be directly visible for the user is that we now support motion blur also while playing multiplayer (splitscreen) games.


Lastly, I'll just quote the log message for revision 12535:
File manager now provides the directory for screenshots and
shader. Location of screenshots is now changed:
windows: %APPDATA%/supertuxkart/screenshots
osx: ~/Library/Application Support/SuperTuxKart/Screenshots
Linux: $HOME/.cache/supertuxkart/screenshots

April 1, 2013

[April's Fools Joke] SuperTuxKart 1337

We are pleased to announce a new edition of STK called SuperTuxKart 1337, or lite, which will be a stripped down version of the game for low-powered devices. We owe Minecraft our gratitude for showing that you can make a modern game with low system resource requirements, and we will therefore have this special edition run on the Java(R) platform under the Cube engine using a wrapper.

Remodelling in progress

More info to come soon.

March 28, 2013

SuperTuxKart applying for Google Summer of Code 2013!

We are proud to announce that for the first time in the project's history, SuperTuxKart has applied for participating in this year's Google Summer of Code (GSoC) program.

So what is this about? From their website:
Google Summer of Code is a global program that offers students stipends to write code for open source projects. We have worked with the open source community to identify and fund exciting projects for the upcoming summer.

In other words, us applying for this program means that potentially we can get one or more students aged 18 or older helping with the code side of STK, if we are among the selected open source projects. The students themselves will receive stipends of up to 5000$ (USD) each for their work, provided by Google, and we as a project can also receive 500$ per student we mentor. It's a huge win-win! They get to improve their programming skills, being helped and mentored by us, and also getting paid and hopefully seeing their work in an upcoming version of SuperTuxKart. We get more developers for the summer we can get exciting and useful code from, and hopefully they'll want to stay with us afterwards as well.

Still unsure of what this is about? Please head over to the GSoC FAQ page, where this concept is explained in detail and probably more clearly than what I've been able to do.

Our GSoC overview and idea pages are here:
supertuxkart.net/GSoC_overview
supertuxkart.net/GSoC_ideas

However, after all this is said and done, we don't know yet if we will be among the chosen projects this year. On April 8 Google will announce which of the applying projects have been selected.

Are you a student wanting to participate with SuperTuxKart as your project? If you already want to get in touch with us, please do! Even if we don't get selected and you want to work on something else this summer, getting to know us and the project won't hurt, and hopefully you'll want to help with this project later.

Are you a programmer but not participating in Google Summer of Code 2013 for various reasons? Please feel free to join up with us any time! We could use more people in all programmer related areas, be it new features, bug fixes, documentation or code cleanup.