Jump to content

Gameplay programmer application - Melkon


Recommended Posts

Position: Gameplay programmer, i am not really sure i can help in that because i am lack of experience, but i will try to be useful.

Do you understand that Wildfire Games is a non-commercial project, work for 0 A.D. is volunteer, and work is done for free?

Yes

Do you agree to distribute all your work for Wildfire Games under Creative Commons Attribution Share-Alike license?

Yes

Name:

Attila Szenczi (alias Melkon)

Email:

melkonka (at) gmail (dot) com

Skype:

m3ikon

Location:

Hungary

Availability:

I guess about 20h a week, i can guarantee at least 10 in the next 6 month.

Age:

22

Occupation:

Study, hopefully slowly works too.

Skills and Experience:

I am lack of experience, i learn programming in my university.

Motivation:

I want to make games.

Personality:

"Just one more chapter and i go to sleep." :)

Short Essay:

Today, i searched for C++ game projects in google, i saw a topic from last year where you searched for developers, and i am lucky because you still do it. :)

Actually nowadays i work on my first project (http://code.google.com/p/melkontd/), i know it's not a big deal and the code is terrible, i like to join you because i want to improve myself. I always wanted to make games, so when i saw your project it was no question for me that i must try to join you.

Interests and Hobbies:

I really enjoy to play board games, there was a half year when we played through every night. ^_^

I like to read fantasy books, actually i mostly read the same books over and over again. I also like to play table tennis and of course i enjoy to playing video games. When i can go to a concert from some of my favourite band i always go.

I am also a big fan of Trading Card Games, i was a professional HKK (It's a hungarian TCG that started in 1995, a bit similar to MTG) player, i try most online TCG and i can spend alot of time to play with them.

Staff:

No

Community:

(Optional) What communities, websites, or forums do you frequent that relate to your interests and the gaming world?

Favorite Game:

At the moment it's League of Legend, i am not bad in that (statistically i am in the best 2%), and because i really love how Riot improve their game and how they communicate with player base i think it's my overall favourite too.

Work Examples:

As i mentioned before, i am lack of experience, i can only give you that: http://code.google.com/p/melkontd/ i know that's not too much.

Edited by Melkon
Link to comment
Share on other sites

I've just started programming for 0AD too, and it's organised a bit archaic. You just pick a task you'd like to do, work on it and ask for review.

The tasks can all be found on trac: trac.wildfiregames.com/report/1 with some easy ones in this list: trac.wildfiregames.com/report/15

To get to know the code, I propose to also check out the wiki: http://trac.wildfiregames.com/wiki (it also mentions the process for patch submission and reviewing)

And when you have questions, irc://irc.quakenet.org/0ad-dev is a better choice to be as a developer.

Also, if you want to change gameplay, you have to play the game. Just to avoid introducing oddities in the gameplay.

Edited by sanderd17
Link to comment
Share on other sites

Hello, Atilla, glad to have another programmer signing up to help with 0 A.D. (y)

Taking a look at the code, you still have some fields to improve in, but I think you can definitely do it ;)

What I found:

  • Comments - If you're a beginner, then this doesn't make sense, but honestly, you should comment every function of your project with even a brief description - even if the function itself is obvious. This habit has saved me a lot of trouble in the past when I have to edit code I wrote years ago. I suggest you follow the Doxygen commenting style, since that is what we use in 0 A.D. http://en.wikipedia.org/wiki/Doxygen
  • References - You don't seem to use pass-by-reference for objects. In general, it is a good habit to forward structures like Vector2f as 'const Vector2f&', to avoid a copy-constructor. In general, everything bigger than 8 bytes should be passed as a const reference (like Vector3f, which we use a lot). Here's a few articles on const correctness: http://www.parashift...view-const.html.
  • Const Correctness - If you want to write good C++, you must also write your code to be const correct - functions that don't modify object state, should be declared as const and return const reference to a non-POD (plain-old-data) type:
    sf::Vector2i ClickableArea::getChoord1(); // before
    const sf::Vector2i& ClickableArea::getChoord1() const; // after
  • Code Formatting - While this is a philosophical debate at its heart, in general we want code to stick to this standard, which is the most readable: http://trac.wildfire...ions#Formatting
  • Code Quality - You should try to make code simple and readable. Over-complicating code can make it harder to read for others. For example:

This code:


bool Tower::haveValidTarget(std::vector<Minion*> minions)
{
if(true==haveTarget && isInRange(target))
return true;
else
{
for(auto it=minions.begin();it!=minions.end();++it)
{
if(isInRange(*it))
{
target=*it;
return true;
}
}
}
haveTarget=false;
return haveTarget;
}

Could be better written as:


/**
* Updates the current target minion.
* The first minion that appears in range is chosen.
* @param minions Vector of minions
* @return True if a minion is targeted, False if no target.
*/
bool Tower::haveValidTarget(const std::vector<Minion*>& minions)
{
// old target still in range?
if (haveTarget && isInRange(target))
return true; // keep firing at it

// we need a new target:
for (Minion* minion : minions)
{
if (isInRange(minion)) // pick the first minion in range as new target
{
target = minion; // target in sight
haveTarget = true; // you should set this value if you want to use it :)
return true;
}
}
haveTarget = false;
return false; // no targets in sight
}

You should also notice that you made a serious programming error by passing 'std::vector<Minion*>' By-Value. This means it copied the entire vector instead of passing it as a reference 'std::vector<Minion*>&'.

For now I recommend joining the IRC Developer Chat, grabbing a copy of the SVN repository via our Trac and then find yourself a Ticket you feel comfortable with.

Here's our guide for submitting patches: http://trac.wildfire...bmittingPatches

Have fun! (y)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...