User:YoungWolf
Contents
Overview
The Total Defense Strategy Google Summer of Code project which I propose is to give the player an option to chose whether he would wish to play against an attacking opponent or a defending one. Since the code for an aggressive opponent already exists it would require little tweaking just to make it more dangerous and hence the project would mainly focus on creating ,from scratch, a defensive strategy for the AI which will be based on profiling the player's playing style and each AI learning and countering the player's favored strategies.
Defensive Algorithm Description
The AI is already aware of all possible counterattacks the user might make to a particular move but does not use this information. The initial idea was to let the AI see all the possible moves it can make and all of their counterattacks as well and then judge based on these counterattacks which moves to avoid(as in which moves would lead to a devastating counterattack). However this would lead to a huge amount of processing for the AI to do for each move and this strategy does not take into account the possibility of traps which use bait to lure the AI into making a mistake.
A better idea was to reduce the processing the AI needed to do by making it learn and remember the moves the user makes and which strategies a user employs and then to counter them. For example if a user prefers orc grunts then the AI would know that after playing a few scenarios with the user and in the next game would be ready with a few more archers or another example might me if a user prefers to capture villages first then the AI could predict to a good degree of certainty where the user will be placing his units.
This project would create a very useful defensive strategy for the AI as the strategy will change according to the way the user plays and an AI's constantly evolving strategy will keep players interest in the game. However this is also a very ambitious project and to be honest I would require lots of help from the community.
IRC
YoungWolf
Questionnaire
1) Basics
1.1) Write a small introduction to yourself.
I am a 21 year old Indian student currently pursuing Computer Science Engineering. I am in my Third year, and my research interests include machine learning, parallel programming and AI. I don't have any experience in the open source community - but I think GSoC is a great platform and Battle for Wesnoth is a great community to help me get started. I love reading(mainly fantasy but also some science fiction) and playing video games(My all time favorite is Dragon Age Origins but currently me and my friends have started playing Battle for Middle Earth 2 on LAN).
1.2) State your preferred email address.
nimitmalhotra[at]gmail[dot]com
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?
YoungWolf
1.4) Why do you want to participate in summer of code?
Like I have said I have no experience in the open source community but I am very eager to contribute. The GSoC is a great platform to help me get started as it will provide me with a project I am interested in, a mentor to guide me and something great to do in the summers.
1.5) What are you studying, subject, level and school?
I am studying Computer Science Engineering in LNMIIT(The LNM Institute of Information Technology). I am currently in my third year of study(going on to fourth next sem). My subjects of choice are Machine learning and parallel programming(I have some past experience in some small parallel programming projects).
1.6) What country are you from, at what time are you most likely to be able to join IRC?
I am from India(GMT +5:30), I will most likely be on IRC - 12 noon to 12 midnight local time( 6:30 am to 6:30pm GMT ).
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
My end semester exams are going on right now(1st week may) and apart from that I have no other commitments. I am not planning to take any vacations.
2) Experience
2.1) What programs/software have you worked on before?
I have worked on some projects in school like on automatic parallel programming(trying to create a more efficient hybrid model of shared memory and shared network Parallel Programming). I have worked on small games like Sudoku solvers as well as worked on back end(database) support for an E-Commerce website.
I have done an intern at IIIT-H(International Institute of Information Technology, Hyderabad where I worked on Parallel Programming)
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)
All my software have been developed as a team effort.
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 will be my first GSOC.
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 am not involved in any open source development projects.
2.5) Gaming experience - Are you a gamer?
Yes, I love Gaming.
2.5.1) What type of gamer are you?
I am a bit of an obsessive gamer - I do not leave a game until it is completed.
2.5.2) What type of games?
As many types as I can get my hands on. In Strategy I have played, Rise of Nations, Age of Empires, Battle for middle earth, Command and conquer and more. In RPG I have played Dragon Age 1 and 2, Elder Scrolls 4 and 5, Baldur's gate, Mass Effect and more. In FPS I have played Call of Duty, Battlefield, Far Cry, Crysis etc.
2.5.3) What type of opponents do you prefer?
I prefer if my opponents make me think of different ways to defeat them. I don't like games in which I can just run in with all I've got and win on my first play through.
2.5.4) Are you more interested in story or gameplay?
Story definitely for me - I can compromise on gameplay but the story has to be top notch, This is one of the reasons the Dragon age series is my all time favorite game - the storyline of that series really grips you and it has a lot of depth.
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 have only recently started playing(about 2 weeks) and only started on single player. But I have got the feel of the game and plan on playing it much more intensively once my End Sem Exams are over.
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.
I have not sent any patches yet, but am planning to send in at least a couple before the GSoC project begins.
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.
I have been speaking English my entire life and I am more comfortable in it than I am in my mother tongue.
3.2) What spoken languages are you fluent in?
English, 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.
I am an active member on a number of forums - the most on asoiaf.westeros.org where I am known as Barty and have more than 800 posts. So I would say that I can definitely interact with with a new community.
3.4) Do you give constructive advice?
When I can. It's a lot harder than people think to differentiate constructive advice from just stating the obvious.
3.5) Do you receive advice well?
I try to understand the reason behind every piece of advice I receive and tend not to just follow it blindly and I try not to reject any advice just because I don't like the sound of it.
3.6) Are you good at sorting useful criticisms from useless ones?
I welcome criticism and I personally believe I can sort the useful kind from the useless.
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
When coding - I start even when I have the basic idea of what I want to do, while coding I try to iron in the details as I think them up. It involves a risk of not working out perfectly but I seem to prefer this method since keeping all tiny kinks of a project straight in your head(before you start coding) is pretty tough(at least for me) and once you start thinking you've thought of everything the project requires then you stop thinking about adding in new features and the developmental process stops - leaving you doing only coding and not developing.
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 the project involving improving the AI to add a total defense strategy.
4.2) If you have invented your own project, please describe the project and the scope.
-
4.3) Why did you choose this project?
This project caught my eye as soon as I read it. I chose it because it seems to be very interesting and has a lot of room for creativity and independent thought.
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 will finish coding in the basic idea by end of July. After that(August - September mid) I will be spending most of my remaining time in debugging and improving the algorithm. In my experience Debugging normally takes as much time as coding the idea in the first place (if you're lucky). Last couple of weeks of September I'll spend trying out the improved AI and completing the documentation.
4.5) Include as much technical detail about your implementation as you can
My code would be implemented entirely in C++. I would use a decision tree and some learning algorithms to help the AI decide and predict the user's next moves - getting some background information from the user profile which will store the user's units and moves. Once the background information has been filled (after a few trial games) the user's favored moves and units will be known and the Decision tree will use this info to predict the user's next moves. The more games the user plays the more attuned the AI will get to handling the user's strategies. Like I said I like to start coding the basic idea before putting in the finer technical details so I don't currently have much more technical information than that.
4.6) What do you expect to gain from this project?
I expect to gain experience in the open source community and learn much more about machine learning and Artificial Intelligence than I know currently. I also expect I would learn a lot from the experienced mentors who will be guiding me in the finer details of coding for large organizations.
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?
As long as I continue to play the game I will be an active member of the community(and I plan to play this game a lot - especially if it's AI uses my algorithm). If selected then I hope that after doing 3-4 months of work in this community that I will be a part of the community completely and would love to stay on and work on more projects(not related to GSOC)
5) Practical considerations
5.1) Are you familiar with any of the following tools or languages?
Git (used for all commits)
I’ve used Git a couple of times and would say I am familiar with it
C++ (language used for all the normal source code)
I have used C++ nearly for 4 years now and am comfortable using it.
STL, Boost, Sdl (C++ libraries used by Wesnoth)
I have used the STL libraries extensively but I do not have much experience in Boost and Sdl
Python (optional, mainly used for tools)
I have basic knowledge of python and have used it to make a few minor programs
build environments (eg cmake/scons)
I have used cmake before on multiple projects and am familiar with it
WML (the wesnoth specific scenario language)
No prior experience
Lua (used in combination with WML to create scenarios)
Am learning Lua as I work on a few patches for my GSoC application
5.2) Which tools do you normally use for development? Why do you use them?
I prefer Eclipse for Java and C++. Most of the time I use Eclipse but have also worked on Net Beans and Code::Blocks.
5.3) What programming languages are you fluent in?
Java, C++, C and a bit of Python.
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 do not have a problem with my mentor calling me on telephone. I will provide my number on the Google application.