Aditya Pande Global AI
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 |
Contents
ATTENTION
Incomplete http://wiki.wesnoth.org/index.php?title=SoC2014_Template_of_Student_page&action=submit
Description
Aditya Pande - Global AI for Battle of Wesnoth
I propose to implement global AI using a combination of idea of Quiescence search on game tree with alpha beta pruning along with a few heuristics to make it possible to actually solve this complex game. Also this approach requires an evaluation scheme for the same.
TODO: Write a small (1-4 sentences) description of your proposal here. The idea of using Quiescence search here is different than that in chess engines. Here my idea is to reduce the average branching factor for each choice made by considering the ones which do not affect the game drastically (hence called quiet moves). In this case the braching factor for a unit can be given by
braching factor=Number of attacking moves + Number of Acquire village moves + 1(Represents all Quiet moves).
The idea behind my approach is based on "Wesnoth can be treated much like a continuous game, because many positions tend to be very similar to each other. Additionally, unlike discrete board games, it is not common that a very small wrong move in Wesnoth is disastrous."
TODO: Add more first-level sections to detail your proposal
IRC
adityapande
Questionnaire
'1) Basics
1.1) Write a small introduction to yourself.
Myself Aditya Pande,a third year Bachelor of Engineering in Mechanical Engineer in BITS Pilani India. I am very interested in programming, chess, games, artificial intelligence, game development and machine learning. I am part of the college chess team and I regularly participate in coding competitions to test my skill mainly on SPOJ (http://www.spoj.com/users/adityapande/ )and Codechef(http://www.codechef.com/users/adityapande).
1.2) State your preferred email address.
pandeaditya7@gmail.com
1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?
adityapande
1.4) Why do you want to participate in summer of code?
I want to participate in summer of code this year because:
i) I like programming, solving design problems
ii) I am interested in game development and AI (which this project will allow me to pursue)
iii) I want to do something significant in my summer
iv) I hope that working on an open source project will help me become a professional
v) I want to learn and get an opportunity to get hands on experience
1.5) What are you studying, subject, level and school?
Currently, I am studying B.E. Mechanical Engineering in BITS Pilani. Apart from that I have studied linear algebra, probability and statistics., dicrete optimization, data structures and algoritms, machine learning, design and analysis of algorithms, game trees and related chess engine theory(negamax, alpha-beta search and pruning etc).
1.6) What country are you from, at what time are you most likely to be able to join IRC?
I am from India and I would be able to be online on IRC between 10 am to 6 pm IST
1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
I have no other summer commitments
2) Experience
2.1) What programs/software have you worked on before?
Computer Languages: C(Expert),C++ (Proficient), Python (Proficient), Java, Ruby(Familiar), Django (Proficient), AWK(Familiar), HTML(Proficient), CSS(Proficient), PHP(Basic), CUDA(Basic)
Tools and Systems: Linux, Windows, Codeskulptor( game development IDE for Python), Eclipse, Pygame, Android, MS Visual Studio 2010, OpenGL, Microsoft XNA game engine, Blender and Unity3d game engine
2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)
I have worked on a few projects in teams before:
i) Castle – a Chess Engine(2012)
ii) Smart Media Player(2013)
iii) Parallel implementation of Smith waterman algorithm(2013)
iv) Developed a web site to facilitate data handling and automating the process of the monthly report generation required by CPWD, Mussoorie (2013)
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 because I only came to know of it last year from a college senior but I had pre-occupations mainly because of my CPWD internship
2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
So far I have not been involved in any open source projects
2.5) Gaming experience - Are you a gamer?
Yes I am a gamer and I am a member of my college chess team and I am fond of games be it playing or developing
2.5.1) What type of gamer are you?
I mainly like RPGs, Strategy games (chess and AOE) and a few other sports and racing games.
2.5.2) What type of games?
My favorite games would include chess, AOE, Dragon Age, Lionheart, Assassins Creed, Slay, Cricket etc and by the looks of it Battle of Wesnoth would also join my list(stuck on scenario 9 though)
2.5.3) What type of opponents do you prefer?
I like tough and competitive opponents as I like facing challenges
2.5.4) Are you more interested in story or gameplay?
Mainly gameplay but the story should not be too bad 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.
I have and kind of disliked it for 15 minutes but I kept going as I started to understand the game better but after that I kind of got a hang for it. I played upto scenario 5 in first campaign in about 5 hours and then had to restart due to lack of high level units. I have played for about 10 days and am currently finding my way through at the Valley of Death level.
So far I lean towards the single player as I am having fun with the campaign 1 scenarios. This may change though once I complete the campaign and become better at the game.
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.
TODONo I have not contributed so far but plan on doing so as soon as my semester final exams complete in May beginning.
I have downloaded the source code for the game.
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.
Proficient English speaker.
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.
I am good and I can say this based on my experience with Voobly AOE community
3.4) Do you give constructive advice?
Yes I do
3.5) Do you receive advice well?
Yes
3.6) Are you good at sorting useful criticisms from useless ones?
Yes I generally try to strengthen my weaknesses based on other’s critique and opinion
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 am mostly of the code it and see the result type but I guess it would be helpful for me to learn to discuss with people a bit more to be more productive with respect to open source development
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 did select the “AI: Improve AI by implementing global attack/retreat decision”
4.2) If you have invented your own project, please describe the project and the scope.
[Not applicable]
4.3) Why did you choose this project?
I have selected the project as it interests me the most (my interests include ai, game development and designing algos and heuristics) and I believe it would be challenging and fun for me at the same time. Also I have worked on chess engine development 2 years back and I would love to take this bigger challenge.
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".
Major phases:
preprocessing : study on current ai implementation
implementing my model
Integrating it with the game completely
TODO
4.5) Include as much technical detail about your implementation as you can
TODO
4.6) What do you expect to gain from this project?
I expect to gain:
i) open source development skills
ii) better understanding of articial intelligence and designing ai and heuristics
iii) understanding and experience with boost and sdl libraries
iv) possibly experience in Lua
v) possibly application of machine learning concepts
vi) experience in game development and general programming
vii) something cool for my Resume to get jobs in fields similar to my interests
viii) professional connections with the Wesnoth developer community
ix) satisfaction at having done something cool and big
x) a paycheck from Google
4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?
I would like to continue working for the community as long as I am free and the organization allows me to work on interesting projects I can learn something from.
Some monetary benefits maybe an additional incentive.
5) Practical considerations
5.1) Are you familiar with any of the following tools or languages?Git (used for all commits)
Yes (the basics)
C++ (language used for all the normal source code)
Proficient(5 years experience)
STL, Boost, Sdl (C++ libraries used by Wesnoth)
Yes (only with STL). However I have worked on Matlab for linear algebra,etc. I hope to learn the 2 fairly quickly because I already know something with similar purpose. I have worked on Maple, Matlab and Octave and also on OpenGl, Unity3d, Pygame and Codeskulptor. Furthermore I am looking forward to work on boost and SDL in the near future.
Python (optional, mainly used for tools)
Yes I have worked in Python for about 3 years and have also made few simple 2d games In it using codeskulptor and Pygame
build environments (eg cmake/scons)
Not familiar with cmake or Scons
WML (the wesnoth specific scenario language)
No
Lua (used in combination with WML to create scenarios)
No but I would be able to learn it fairly quickly
5.2) Which tools do you normally use for development? Why do you use them?
I generally prefer C++ and Python as the programming language because of my experience in them. I use Visual Studio and Bloodshed IDE for C++ and Idle for Python.
5.3) What programming languages are you fluent in?
C++, Java and 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!
In general, students should be as verbose as possible in their answers and feel free to elaborate.
I would like to talk with the mentors at phone. My phone number is +91 9799363378.