User:Kripsi

From The Battle for Wesnoth Wiki
Revision as of 08:54, 6 May 2014 by Kripsi (talk | contribs) (2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.)


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


Contents

More Detail

My project would involve hooking into the current mechanisms that the AI chooses to run on an aggressive stance and allowing to decide when to press on with an attack and when to defend. The defences would include:

- Swapping out to stronger / healthier units - Form defensive positions around each other to protect or slow the enemy from taking advantage points - Recognise important positions worth fighting for and those to retreat from - Providing a method of counter-attacking when necessary.

IRC

Kripsi

SoC Application

Submitted to google

Questionnaire

1) Basics

1.1) Write a small introduction to yourself.

1.2) State your preferred email address.

heathyboyj@hotmail.co.uk

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

Kripsi

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

A chance to learn and further my experience in the games programming industry, and to possibly learn another language such as Python to add to my skillset.

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

I am studying Computer Games Programming at De Montfort University in Leicester. It is only my first year of studying, but I have achieved just below 100% of the programming marks that have been available to me so far.

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

I am from the UK, but I am usually around a computer most of the time so unless I get a summer job, probably from 10am to whenever I decide to go to bed :)

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

I am on holiday for 7 days in early June, 10th to the 17th.

2) Experience

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

I have not worked on a program or software as such before, however I have spent much time coding for a game called the Discworld MUD, an online text-based game that is over 20 years old. I started coding for it as a player, writing plugins to enhance both my own and other people's game experience, and then became a developer for the game itself and now code new features for people to play.

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

The Discworld MUD has a big team of developers in which I have been a part of for a year or so, and I have worked on a number of projects both solo and with others there.

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?

Not participated before, but looking forward to doing!

2.5) Gaming experience - Are you a gamer?

Yep! Xbox mainly.

2.5.1) What type of gamer are you?

Pretty hardcore. I don't devote my life to playing them though, I much prefer writing them.

2.5.2) What type of games?

Mostly action, adventure or RPG, although I do like to sink my teeth into the odd puzzle or strategy game here and there. I like games were you have to take time to build resources or level characters mostly.

2.5.3) What type of opponents do you prefer?

Smart ones! I like playing someone who provides me a challenge, and when that someone is AI I love it more. The sort that throws you a curve ball once in a while, or learns what you did last time.

2.5.4) Are you more interested in story or gameplay?

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.

I've just started playing it recently, but I'm really enjoying it so far. It's challenging me and a different pace of game to what I've played in recent years. I'm playing single player at the moment, but I imagine being the competitive person I am that I shall move onto multiplayer soon enough.

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 SVN (during the evaluation period or earlier) please state so.

None

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

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'm used to interacting with players from the MUD.

3.4) Do you give constructive advice?

I'd like to think so. I mentor a couple of other developers on the Discworld.

3.5) Do you receive advice well?

Definitely. If you don't, you'll just keep blundering on blindly until you break something.

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

Yes.

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

It depends on the scale of what I'm about to develop. If it's something I can throw together in an hour, I'll probably just dive right in. If it's going to take me a few days, I like to talk it over, write things down, plan it out as to smooth the bumps before I hit them.

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 picked the "AI: Implement a 'total defense' strategy" project. I would like to focus on writing code that causes the AI to react to different scenarios such as location on the map, condition of their units, condition of the enemy units, how the player has positioned their units, time of day, etc.

4.3) Why did you choose this project?

It sounds best suited to the area of game development I would like to go into. I like the idea of being able to challenge players by writing interesting code that keeps them on their toes, and I also have written some AI code for the Discworld, with a goal of making some traditionally weak NPCs be able to stand up to themselves and force players to rethink their stratedy. (This code hasn't gone into game yet but has been playtested, I again can give more detail on this in private conversations).

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

April 23rd to 1 May 20st:

- Familiarise myself with the existing code and WML.

- Evaluate the various AI routines I could look into writing, and which of those would be best

- Plan my project out into stages, referring it back to the mentor to see what they think of and to ask what they suggest in areas where I might not know how to tackle a problem

- Begin a UML Model (still learning this at University, but should have finished my coursework involving UML by then and be more familiar with this)

May 21st - June 9th:

- Begin writing the routines and testing them out in controlled environments. Aim to have a couple of examples of controlled AI tests by the midterm evaluation.

(Holiday from 10th June to 17th June)

June 17th - August 1st:

- Polish up the routines, begin testing them in a full game environment. Start cleaning up the code, writing up documentation.

August 1st - End of Summer

- Bugfixing, testing, more documentation.

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

I don't know enough about the current AI systems, but I would hope to have units interacting with each other to collaborate and provide a strong defense whichever tactic is defined as best for that situation.

I would start the project looking into the current movement systems of the AI, spending some time learning what they already react to and base their actions upon. They obviously don't just charge to the nearest enemy unit, so seeing what they do and where code would need to be added to make them react would be first.

I would then spend the rest of my time writing code to recognise a scenario, how to react to it, how to realise that scenario is over and how to move on for each type of defensive scenario I could come up with.


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

Experience, fun, more C++ knowledge and some knowledge of another language.

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

How good the game is to play with the people I've met, or if the opportunity to continue developing was to arise, how much fun I had doing that and the projects that followed.

5) Practical considerations

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

Subversion (used for all commits)

No, but I've seen it used and could hopefully learn fast/

C++ (language used for all the normal source code)

It's the main language I'm being taught at University, and I have lost one mark out of the 250 I have had available to me so far on that module. I'm not an expert yet, however.

STL, Boost, Sdl (C++ libraries used by Wesnoth)

No, but if it's C++ I can learn fast.

Python (optional, mainly used for tools)

Only experimented with it so far.

build environments (eg cmake/scons) WML (the wesnoth specific scenario language)

No, but again, fast learner. I've used a couple of other specific development languages quickly enough, such as GML or UnrealScript.

Lua (used in combination with WML to create scenarios)

Yes, I've used it in plugins extensively. Not an expert again, but capable.

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

Visual Studio for big projects, Notepad++ for little ones.

5.3) What programming languages are you fluent in?

LPC (fluent) C++ (learning, but quickly) Lua (Not used it for a while, but proficient)

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.

More than happy for this, either via my mobile or via skype.