From The Battle for Wesnoth Wiki

This page is related to Summer of Code 2012
See the list of Summer of Code 2012 Ideas

This is a Summer of Code 2012 student page



Naman Gupta - Particle Engine

I’m going to be implementing particle engine into existing animation engine. Since Wesnoth current infrastructure uses SDL. I’d be using SDL to make my particle engine. I’m not sure but it’s going to be slow as SDL isn't really designed for particle. I’ll optimize it or Use OpenGL instead.



SoC Application

Submitted to google


1) Basics

1.1) Write a small introduction to yourself.

Hey, I'm Naman Gupta from India. I’m Fast learner, Smiling nature, Ambitious and Never say Never attitude. Eat, don’t sleep, code, play video game pretty much all I do. I love to code. I have been coding since I was in 5th grade. Then After 3 years of casual coding I decided to be a graphics programmer.

1.2) State your preferred email address.

Would be provided in GSoC application

1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?


1.4) Why do you want to participate in summer of code?

So that I could arrange my college fee and buy books. I like taking new challenges. Plus, it’s a perfect platform to improve my coding skills and learn from experts.

1.5) What are you studying, subject, level and school?

I’m currently pursuing B.Tech( Bachelor of technology) in Computer Science and Engineering from Meerut Institute of Engineering and Technology, Meerut, UP, India. I'm presently in 2nd year(4th semester). Subject I have undertaken:- Automata, DBMS, Microcontroller(8086), Industrial sociology, Soft Computing and Computer Organization.

1.6) What country are you from, at what time are you most likely to be able to join IRC?

I from India. Time zone +5:30 GMT. Available on IRC from 9:30AM to 9:30PM Indian time. Time could be made flexible according to the requirement.

1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.

Nope. I’ll try internships in a gaming company if I don't make this one. College starts from august but won't an issue. Other than that I’m committed to Google summer of code.

2) Experience

2.1) What programs/software have you worked on before?

Some causal projects that can be found at my website’s project page

(PS:- Source can also be found)

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

Yes.I have been intern for 2 companies.

My game for iOS is available on App store that I made with a group of 4 members for Version2Games, Hyderabad.

I have also worked with MechMocha(earlier called Hungry games), Gwalior as an intern. Where I made a base engine for an iOS game with group of 3 members using cocos2d. Game is yet to release.

(P.S.:- if needed reference may also be provided)

2.3) 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. This is the first time I'm participating.

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

I have used cocos2d in some of my casual projects and I reported some bugs.

2.5) Gaming experience - Are you a gamer?

Yes, I play lots of Video Games.

2.5.1) What type of gamer are you?

I play when I had to take references. I try to explore all games and judge them. What’s good and what’s bad in a particular game.

2.5.2) What type of games?

Not a particular genre. I play Mindless fun games(Twisted metal), Shooting(Max Paynee), Racing(NFS), Mobile Games(angry birds) etc.

2.5.3) What type of opponents do you prefer?

I prefer AI opponent because each game has its own unique AI behavior that I just love to survey.

2.5.4) Are you more interested in story or gameplay?

Gameplay. but again story can't be ignored either.

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

Yes I came to know about it from one of my friend last year. I did played it for 2 weeks and I have started playing it now. I saw my friend playing multiplayer but I used to play single player.

3) Communication skills

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

Since Kinder Garden till date all our books are in English. We had English as a subject till high school. English is NOT an issue with me. I’m pretty sure I’m fluent.

3.2) What spoken languages are you fluent in?

English and Hindi.

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

Yes, I learned this part during my internship. How interact with people and how to react? I guess I'm pretty good at it.

3.4) Do you give constructive advice?

Yes of course. We used to have mind storming at our colleges, schools and studios. And yes I have given constructive advises there.

3.5) Do you receive advice well?

If they are able to convince me then yes.

3.6) Are you good at sorting useful criticisms from useless ones?

I guess so.

3.7) How autonomous are you when developing ? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want.

In GSoC, time is a major factor. Thus I’d rather discuss then code. 5 min of discussion is better than 5 hours of coding time.

4) Project

4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?

I selected “Implementing Particle Engine into wesnoth animation engine”. I want to make my particle system dynamic and future proof so that it would easy to upgrade if technology changes.

4.2) If you have invented your own project, please describe the project and the scope.


4.3) Why did you choose this project?

It coincides with my major area of interest. That is graphics programming. It would add a good amount of weight to my resume.

4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".
  • March/April :

Make some sample code using SDL, STL, Lua and python. More deeply understand the internal infrastructure of wesnoth. Prepare for My examinations

  • May:

1- 15 May:- Exams

16 – 20 May:- Research more on particle system. Mind storming with mentor on how to approach the problem. Setting up things to code like software and tool.

21 – 31 May:- Setting up repo and version control. Making everything ready. Begin coding. i would have my practical somewhere in middle for random three days but i'd be able to work.

  • June:

1- 10 June:- make the particle system using SDL. Implement emitter and number of particle that would spawn at random location in 3d space . 11 – 20 June:- Implement basic feature on it like size, life time etc using algorithms of data structures.

21 – 30 June:- Integrate it with animation engine of wesnoth

  • July:

1 – 13:- Integrate it with animation engine of wesnoth(Contd.) and make everything right.

14 – 31:- Implement all the remaining feature to the particle engine like transparency, flow/Movement, speed, rotation,color etc.

  • August:

My college would start

1-20:- Documentation and fixing bugs and glitches.

4.5) Include as much technical detail about your implementation as you can.

First I’ll make a basic particle engine using SDL. Some basic implementation like emitter, particle number, size. By making classes, headers, C++ file or libraries.

Then I’ll integrate with present animation engine of wesnoth. I’ll play with the code to make it the way I wanted. Then I’ll implement rest of the features like flow/Movement of particle in free space, velocity, acceleration, transparency, life time etc that would finally make the engine capable of making effects like explosion, fire, galaxy etc.

4.6) What do you expect to gain from this project?

Knowledge and experience working for open source community.

4.7) What would make you stay in the Wesnoth community after the conclusion of GSoC?

Yes, I’d like to be mentor for next GSoC.

5) Practical considerations

5.1) Are you familiar with any of the following tools or languages?
  • Subversion – yes, Git and SVN
  • C++ - Yes. Very efficient.
  • STL – yeah I have used it
  • Boost - No, I have seen it’s code and It was quite understandable.
  • SDL - yeah I have used it.
  • Python – a rough idea
  • build environments (cmake) – Yes, I have compiled some open source code using it
  • WML - No, I saw it's code on your patches website. it's was understandable
  • Lua – No, I have seen it’s code and It was quite understandable
5.2) Which tools do you normally use for development? Why do you use them?

I use Visual Studio, cmake, Direct3D, OpenGL, Ogre3D, Photoshop, 3Ds max(making some artwork) and many others.I use them because they are mostly used in industries.

5.3) What programming languages are you fluent in?

I am quite good in C++/C. My algorithms are pretty strong.

5.4) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail. If you are willing to do so, please do list a phone number (including international code) so that we are able to contact you. You should probably *only* add this number in the application for you submit to google since the info in the wiki is available in public. We will *not* make any use of your number unless some case of "there is no way to contact you" does arise!

Absolutely, no problem.

This page was last edited on 5 April 2012, at 11:55.