SpriteSheetApplicationSAB

From The Battle for Wesnoth Wiki
Revision as of 03:41, 6 March 2014 by Aishiko (talk | contribs)


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



This is a Summer of Code 2014 student page


Description

Aishiko GSOC 2014 SpriteSheets

My proposal is to take the current functions for drawing sprites and move it to allow for spritesheets, while hiding any of the changes from campaign designers. It should allow for the seemless intergration of spritesheets and allow for a period of conversion from multiple files to sheets.

IRC

Aishiko, Aishiko_laptop

Questionnaire

Posted 28 Feb 2014 1) Basics

1.1) Write a small introduction to yourself.

1.2) State your preferred email address.

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?

I'd like to participate in the summer of code for several reasons, and yes money is one of them. but experience is the biggest one.

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

I am currently studying computer science (read programming) and networking technology. I am a Softmore in both, I am a current student at Sandhills Community College.

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

I currently live on the east coast of the US and can be in IRC pretty much all day, either at home or school, though if at school there will be a delay if in class and not lab.

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

I have no current commitments that would impact my ability to give GSOC 40 hours a week of work and attention. But if an emergency comes up I'll find a way to make up the hours.

2) Experience

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

Mostly personal projects and class projects, in C, C++, C#, PHP, Python, & the Arduino. One of C++ classes was using DarkGTK (yes I know its windows only) but we used SpriteSheets, sprite collision, and mouse interaction.

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

I have in a class environment, but I'm usually the only one left doing the heavy lifting of coding. Though next year I'll be doing the programming capstone class where the class of 1-20 students work together to produce a program for a client, either for the college or for a community member/business. I'm both looking forward to and dreading working on a team, wondering if I'll be able to fit in and create code that is easy to maintain and follow.

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?

I applied last year, however, I wasn't choosen mostly because I lack good writing skills for technical documents. At least that is what I was told.

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

None, I have submitted patches to the linux kernel but, I never bothered to see if they made it in.

2.5) Gaming experience - Are you a gamer?

Sometimes, depends on my mood.

2.5.1) What type of gamer are you?

Casual.

2.5.2) What type of games?

2.5.3) What type of opponents do you prefer?

AI oppenents, I'm not really into the whole competetive thing.

2.5.4) Are you more interested in story or gameplay?

I think BOTH have to be there for a successful game. Though to be honest I'm better at critecing story then gameplay.

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

We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.

I've played Wesnoth for a year or 2, and I play exclusively single player.

2.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for GSoC. If you have gained commit access to our repository (during the evaluation period or earlier) please state so.

commit 5594aeec32d8c8e59c3f3241fbbb68ce9e862474 2/3/2014


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.

3.2) What spoken languages are you fluent in?

English, I can understand a smattering of other languages but not enough to do anything deep or programming specific.

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

3.4) Do you give constructive advice?

I've been told I do on occasion.

3.5) Do you receive advice well?

I do if its construtive and not attacking. If its yelling, screaming, and insults as well, not so much. How its given usually impacts how well I receive it.

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

Given enough time yes, but the painfully obvious ones I usually see right away.

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

I'm usually fairly autonomous, once the design has been decided, and if it doesn't work and needs a change I sometimes seek councel on what way I should go, but sometimes just go ahead and make the change. Examples: 1) The flow needs changing as it doesn't work right, usually I'll seek help figuring it how to change the flow so it does work. 2) An array isn't giving the flexablity needed for a function but a list will, I implement the list instead. And inform whomever needs to know that I have done that change.

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 one from the list, the implementing the SpriteSheets. I would like to concentrate on 2 tasks, 1 getting SpriteSheets to just work in wesnoth, and two, provide a script/tool/utility to allow easy converting from the old single images to the sheet (assuming certian naming conventions are followed).

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

N/A

4.3) Why did you choose this project?

I chosse it because I understand the concepts behind it, and felt it was a task that I could handle. It will also force me to learn and will provide immediate gains to all users when the version that includes the change is pushed out.

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".

I'm still working out a timeline but I would most likely do a commit at least weekly. And break out the commits so that similar changes are only in that commit. Example, comment changes in one, (assuming no code changes), a converted set of sprites (aka the spritesheet) as one, and then code making use of it. After checking to make sure that the spritesheet works, removal of the converted individual sprite image files.

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

At this point I think I would take 1 sprite (character) and create a spritesheet of it, and then test with that one. To allow testing I'd likely have it check for a spritesheet if it finds one it uses that, otherwise it uses the individual sprite images, in this way the game still works, until all the sprites have been turned into spritesheets.

Once I have completed getting a character spritesheet to work, I'd then move on to the map sprites to spritesheets, again using the same methodology of check and if it finds a spritesheet use it otherwise, use the individual images. Though, on the grouping I'm not sure how I'd do that mordante and I'd have to discuss grouping, since a map can have any or all of the different tiles, and they are not chained like the unit/character sprites are, I'd have to group similar tiles together. Like the water images, shorelines, docks, and water villages, as one. The fields, human villages and castles in one. Swamp things together, and so on.

       I've heard that some devs think that a spritesheet might cause issues 
       with larger images that don't fit in a hex, I'll intentional create some 
       sprite sheets just for testing this purpose.  I'll also see about creating 
       some tests to check and see if the performance gains are really showing up.
       

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

Experience, learning to work on a team where most actually pull their own weight and the success of the project as a whole is not on my shoulders. This is too big a project for me to even think of that! and I'd not be able to, not in 3 months.

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

Finding that the community is a non-hostile place to contribute, that individuals are treated with courtsey or the respect they have earned. That I'm encouraged to help other areas of the code, such as, "Aishi, the spritesheets work, do you think you could help with the transistion effects for the map?"


5) Practical considerations

5.1) Are you familiar with any of the following tools or languages?

   Git (used for all commits)
   	I don't get it yet but I'm confident that I can get it.
   C++ (language used for all the normal source code)
   	Its my favourite language and I'm comfortable using the language
   	and looking up what I don't know and making it work.  I'm also not
   	afraid to ask, for help/documentation if I get stuck.
   STL, Boost, Sdl (C++ libraries used by Wesnoth)
   	I've not, YET.  Well I might, I never really looked into where a lib or 
   	function comes from when I use, I'll have to pay a bit more attention 
   	now.  But they are no on my documentation read list, I'm confident
   	that by the time coding begins that I'll be able to leverage them to 
   	obtain results, and be more effienent as I go.  Even going back and 
   	making a section more effient if I realize that I over looked a better 
   	tool then I orginally used.
   Python (optional, mainly used for tools)
   	I'm familiar enough to use it, follow it (assuming good coding 
   	conventions are followed).
   build environments (eg cmake/scons)
   	I tend to use cmake and the gcc compiler, basically I use which ever 
   	build environment I have available and if its a new one I look up (via 
   	the man page or the internet) how to use it, and if the defaults 
   	settings don't work to add flags/options to get it to compile.
   WML (the wesnoth specific scenario language)
   	Absolutely none before now, again on my read list
   Lua (used in combination with WML to create scenarios)
   	None but I don't create senarios at this point, and if its only used 
   	in that context, it shouldn't have any barring on the project(s) I'm 
   	interested in doing at this point. 

5.2) Which tools do you normally use for development? Why do you use them? Kate, as its just what I'm used to, I like how it's mimaliztic and non-intrutsive. Visual Studio for my C# class because that is what they have to work in when I turn it in.

5.3) What programming languages are you fluent in? I'm not sure what you mean by fluent, if you mean know every builtin function and every conseviable combination of calls, I doubt very many could claim to be fluent. However if you mean, comfortable, and able to figure out things you don't knoe, either by looking it up or by context then C (and its children, C++, C#, Arduino) python, and PHP. After being fluent in English doesn't mean you know every word or special rule for the language.

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!


I wouldn't mind and in some cases prefer it. I'm not the most observant when it comes to my email, I usually just get notices and spam that can be ignored (high noise to signal ratio in my mailbox at the moment). Though when expecting something I check it more often at least once a day if not more.

 **************Comments and Suggestions**************
Please place them after this line, all are appreciated and if I can't thank you 

personally (IE you don't attach your name to it, Thank you.