User:Rsyh93

From The Battle for Wesnoth Wiki


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



This is a Summer of Code 2013 student page


Contents

Proposal is still being edited.

Description

rsyh93 - AI Recruitment Restructuring

I want to make a recruitment algorithm that is able to integrate with the unit movement AI that puts more emphasis on the usage of the units and their place on the overall strategy (e.g. scouts in early game - transition as more information becomes revealed for counter recruitment) The algorithm will recruit somewhat slowly and cautiously, implementing a generic unit set for the beginning (modifying depending on terrain) then putting more emphasis on the late-game, when the game is more developed and explicit unit purposes become more apparent.

IRC

rsyh93

Questionnaire

Basics

Write a small introduction to yourself.

Hi. My name is Young. I was from South Korea, but moved to the United States when I was little. I've been glued to computers since I was one or two years old, according to my parents. I'm a jack of all trades with them: I know the basics of programming, managing systems, networking, troubleshooting. Other than that, my hobbies include tennis, Starcraft (like the professional scene), and enjoy hanging with friends.

State your preferred email address.

rsyh93 [at] gmail [dot] com

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

rsyh93

Why do you want to participate in summer of code?

I've always been interested in programming since I was young. I'm also passionate about free/open source software, but I wasn't sure how I should get involved. I feel that the Google Summer of Code program is a great merger of my two interests and, to be honest, a great way to get paid for contributing.

What are you studying, subject, level and school?

Currently I'm a first-year community college student about a semester away from an associate degree. I'm planning on pursuing a Computer Science degree once I transfer to a university. As for courses, the most recent Computer Science course I enrolled in was the Data Structures course from my college, and before that I took multiple programming classes in high school and was also a student helper for the programming class afterwards.

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

I'm on the United States East coast and will mostly be available in the evening local time: around 6PM-11PM GMT-5 (11PM-4AM GMT)

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

I do not have any commitments for the summer.

Experience

What programs/software have you worked on before?

I've scripted a couple extensions for VLC Media Player for Google Code-in:

- http://addons.videolan.org/CONTENT/content-files/140700-wikipediaextension.lua
- http://addons.videolan.org/CONTENT/content-files/140696-lyricsextension.lua

Other than that, most of my programming experience has been in classrooms with Java: using the JGame engine in high school and with Swing in college.

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

I've worked on team projects in high school in making a game with JGame, as well as in college, doing the same with Swing. Most of it was done in person, so I have little experience with online interaction with a team project.

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 time participating in Google Summer of Code

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

No. The most I've worked on are a couple extensions for VLC Media Player (See above).

Gaming experience - Are you a gamer?

What type of gamer are you?

I consider myself to be a casual gamer: I prefer not to purchase games until they go on sale, and then barely play them after purchase, with certain exceptions.

What type of games?

I love all kinds of games, but prefer role-playing games or strategy games, especially those with a competitive aspect. My current favorite game is Starcraft II.

What type of opponents do you prefer?

Are you more interested in story or gameplay?

It depends on the game.

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

I've played Wesnoth for only a couple of weeks. I've played through the tutorial as well as some of the Heir to the Throne campaign, and several 1v1 and team games with AI. I haven't played online yet, hoping to learn a bit of strategy before I do.

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.

None so far.

Communication skills

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

English is my preferred language. It's been my main language since I moved to the United States when I was seven. I am able to write college essays or discuss politics in English.

What spoken languages are you fluent in?

English, also conversational in Korean and Spanish.

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

I have little experience interacting with other players, but in general I tend to be relatively friendly, regardless of the person.

Do you give constructive advice?

I give positive and honest criticism. Whether it is taken as constructive advice is up to the person, as sometimes I tend to to word sentences awkwardly.

Do you receive advice well?

I like to think that I do. I'd like to say yes, but I'm not aware whether I do or not.

Are you good at sorting useful criticisms from useless ones?

I'm not quite sure.

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 would prefer to have complete and detailed knowledge of the problem I am trying to fix. Once I understand the problem, I am mostly able to effectively work on my own.

Project

Did you select a project from our list

Yes. I would like to do the AI Recruitment Algorithm refactoring project.

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

N/A

Why did you choose this project?

It seemed like a fun mix of strategy and coding. I like learning strategies and gambits and was already planning on learning some for playing online. Plus, I have some experience making game AI - we had a competition in my high school class. I was involved in it far more than I should have for a simple school project.

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

May - Read through current implementation of recruitment, modifiable parameters; - Play Wesnoth - see how current AI reacts to various strategies - Try to reproduce various limitations stated on project page (multiple leaders, counter-recruiting, etc.)

Early June - Modify current recruiting algorithm to get a feel for coding practice - Experiment with WML, Lua

Mid/Late June - Plan and Create a bare-minimum algorithm, implementing recruiting strategies for multiple leaders, recruit lists, and unit-task assignment

July - Add map analysis, counter-recruitment - Test task-centric unit recruitment, counter-recruitment; integrate map analysis with task-centric recruitment - Begin adding extensible WML parameters

August - Try to reproduce optimum recruitment strategies with algorithm, make finishing modifications to basis code - Test algorithm on variety of maps; compare with current algorithm - Documentation for code

Include as much technical detail about your implementation as you can

What do you expect to gain from this project?

I want to learn a lot more about game programming and C++ and its libraries in general. I also want to learn how to interact in an open source community and how to submit patches. Basically, I want to learn everything. Luckily, I'm pick things up quick.

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

I've only played for a couple weeks, but like it a lot. It's a brilliant game: it reminds me a bit of the Civilization games, but it's free (both beer and speech) and scriptable. Also, I tend to keep close with my pet projects.

Practical considerations

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

   +Git (used for all commits)
    Familiar with using it for getting code, mostly. Haven't used it for commits.
   +C++ (language used for all the normal source code)
    Familiar with the syntax and features of the language, but little experience with stdlibs.
   +STL, Boost, Sdl (C++ libraries used by Wesnoth)
    Can create a basic game in SDL. No experience with STL or boost.
   +Python (optional, mainly used for tools)
    Much experience with python, used it mostly in conjuction with Google App Engine for web applications.
   +build environments (eg cmake/scons)
    None...
   +WML (the wesnoth specific scenario language)
    No experience, but seems simple enough.
   +Lua (used in combination with WML to create scenarios) 
    Created VLC extensions and managed config scripts for multiple applications in lua.

Which tools do you normally use for development? Why do you use them?

I dual-boot Windows and Linux, so I go between using Visual Studio 2012 and vim. VS is very convenient to use, as I mostly used a fully-fledged IDE in school (mostly eclipse), but I've gotten very used to vim and its keybindings, and gotten very fond of it since I'm learning more and more about it, almost enough to mimic the features I want from my IDEs.

What programming languages are you fluent in?

I'm fluent in Java, Python, and Lua. I'm experienced with C and C++, but I feel I need a bit more experience with the standard libraries.

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!

No reservations at all.

This page was last edited on 3 May 2013, at 18:55.