Getting Started

Discussion of all aspects of the game engine, including development of new and existing features.

Moderator: Forum Moderators

User avatar
Pentarctagon
Project Manager
Posts: 5496
Joined: March 22nd, 2009, 10:50 pm
Location: Earth (occasionally)

Re: Getting Started

Post by Pentarctagon »

Then ask, either on the wesnoth-dev irc, or here on the forums, or on the mailing list. I'm not a developer myself, but I'm pretty sure nobody is going to bite your head off for asking "I want to code X feature, is that alright?"
99 little bugs in the code, 99 little bugs
take one down, patch it around
-2,147,483,648 little bugs in the code
Cryonic
Posts: 1
Joined: May 20th, 2017, 8:03 pm

Re: Getting Started

Post by Cryonic »

Hey everyone,

I've just stumbled upon Battle for Wesnoth while I was looking for open source projects. Given that I'm a very passionate gamer and strategy games are some of my favorites, I felt the urge to take a look inside and what I saw was really nice.

I'm currently doing a Master in Computer Science, so I do have some experience in development (mainly Java, but some smaller things in other languages as well), although I haven't dabbled in game development yet. I'm not sure about the hurdles to join development here. I've only worked a bit with C++ in one project and am currently getting into Python. I'm willing to learn though and I'm very much a "hands-on + self-taught" guy, so I think I could be of help.

The question I have before I get invested and take a closer look is: Do you even need a developer that has to learn the necessary skills in C++ (and co.) while contributing, or is it more of a hassle and probably too much for me, before I've spent enough time with the necessary languages for this project?
User avatar
Celtic_Minstrel
Developer
Posts: 2158
Joined: August 3rd, 2012, 11:26 pm
Location: Canada
Contact:

Re: Getting Started

Post by Celtic_Minstrel »

While someone with much C++ experience is great to have, we're certainly also willing to accept people who need to learn as they go (I believe at least one of the current core developers is such a person; I won't name names in case I'm wrong). I suggest simply joining the #wesnoth-dev IRC channel and asking around.
Author of The Black Cross of Aleron campaign and Default++ era.
Former maintainer of Steelhive.
User avatar
Pentarctagon
Project Manager
Posts: 5496
Joined: March 22nd, 2009, 10:50 pm
Location: Earth (occasionally)

Re: Getting Started

Post by Pentarctagon »

There's also #development on Wesnoth's Discord, but there's a bridge-bot, so either should be fine. Never mind, apparently there isn't.
99 little bugs in the code, 99 little bugs
take one down, patch it around
-2,147,483,648 little bugs in the code
User avatar
egallager
Posts: 568
Joined: November 19th, 2020, 7:27 pm
Location: Concord, New Hampshire
Contact:

Re: Getting Started

Post by egallager »

Iris wrote: July 25th, 2015, 2:17 am You’ve come here either after reading our latest news post or because you saw this thread crop up in the forum index under the Developers’ Discussions section, which is now open for a limited time to posts from regular users.

So, you probably want to help develop Wesnoth but don’t know where to start. In that case, you have three options:
Once you know what you want to work on, you should get familiarized with Git and clone the Wesnoth source code repository, which contains all contents and history of mainline Wesnoth, including the game engine itself. Note that it’s a large download (approximately 2 GiB). If you require the ability to pause and resume your download, you should ask shadowm (either on IRC or via forum PM) for help with obtaining access to our downloadable Git snapshots.

Code Documentation

After obtaining a clone of the repository, you will most certainly want to refer to our existing code documentation for help:

WML and Lua:
C++:

Communication & Current Developers

Wesnoth’s source code documentation is most certainly incomplete, in large part due to an over-abundance of undocumented legacy code from retired developers which no-one has ever fully understood nor wanted to examine and document. Although the situation right now isn’t the best, we still have people able to help you with any questions you might have about a particular part of Wesnoth. The following information is also relevant for WML and Lua coders.

You will find all these people idling in our IRC channel, #wesnoth-dev @ irc.freenode.net at different times of day. Don’t have an IRC client? Here is a convenient webchat link you can use. The channel is logged at irclogs.wesnoth.org, so even if someone isn’t around you can still reach them by leaving your message prefixed with their nick like so: shadowm: Hi; in turn, you will also be expected to search the logs for any mentions of your nick made while offline. You may also use forum PMs for communication, but be aware that our primary discussion medium for mainline development has always been IRC and some of these people rarely (if ever) use the forums.

There is also a #development channel on Wesnoth's Discord, for those who prefer to communicate using that platform.

So, without further ado and in no particular order, here is our list of active developers, all ready to help you with your inquiries and pull requests:

shadowm:
For several years, she has been the sole maintainer of the add-ons client and server (campaignd). She’s also worked extensively with GUI2 in the past, converting and adding dialogs, and improving existing ones. She also understands our UI design practices best at the moment. Other than that, she does not really have a specific focus on any particular aspect of the game but she’s generally able to answer any question and point people in the right direction. Finally, although she works primarily on Debian GNU/Linux, she is also able to test Windows-oriented patches and has in fact contributed code for that platform on several occasions.

gfgtdf:
One of our most recent additions, he and iceiceice did a large amount of work on fixing various MP and replay mode bugs so that we could have version 1.12.x out before the end of 2014. His work continues in 1.13.x by fixing various bugs left from GSoC 2014, as well as implementing miscellaneous Lua and WML API features. His platform of choice is Windows and he, like aquileia below, can help you with any Visual C++-related problems.

aquileia:
Also a Windows-based developer, he maintains our Visual C++ project files and development kits.

vultraz:
He’s still learning C++, but he has a great deal of experience using WML and Lua, and generally has the right idea when it comes to critiquing UI design. He also uses Windows and builds Wesnoth with Code::Blocks and GCC.

zookeeper:
His “WML Wizard” title is not just for show. Among the current active developers, he has been around the longest and understands our WML/Lua API design best, and even maintains the majority of the mainline campaigns. He does not do C++, but if you intend to add new WML or Lua features or need help using the existing ones, you should definitely ask him for help and comments. His platform of choice is Windows.

Elvish_Hunter:
Like shadowm above, he does a bit of everything without a particular focus. His most recent work revolves around adding new image path functions and maintaining GUI.pyw, his GUI front-end for wmllint and wmlindent.

loonycyborg:
Although he is our Windows packager, he works primarily on Linux. Still, he is able to answer any kind of questions about our official Windows packaging process and also maintains our SCons build recipe.

mattsc:
Part of our Apple OS X packaging team, he is our resident AI expert and should be able to answer most of your AI-related questions, even if he doesn’t have much time at the moment.

ancestral:
Also part of our Apple OS X packaging team, he should be able to help you build Wesnoth if you are an OS X user.

Ivanovic:
Our internationalization manager and translation coordinator. Up until version 1.12.1 he also served as Wesnoth’s release manager. He uses Linux.

bumbadadabum:
For the past few years, he's been doing a variety of things, mostly focusing on campaign maintenance and lua code.


About the Code Base

Wesnoth’s code base comprises more than just the C++ game engine (wesnoth). A large amount of low level functionality, including the WML parser and preprocessor, is shared with the Wesnoth multiplayer server (wesnothd) and the add-ons server (campaignd). Mainline and user-made content maintenance also relies heavily on Python-based tools which are also part of the mainline code base: wmlindent, the WML indentation fixing script used to enforce a single indentation style across all mainline campaigns and MP scenarios; and wmllint, the WML code checker which is in charge of both updating existing WML whenever changes in syntax or semantics are added to a new version, and guarding against common code mistakes and typos in translatable strings.

Note that although the game engine itself is written in C++ (C++03, to be specific), most WML action tags as of 1.13.1 are implemented in Lua to varying extents. Going forward, we would like to delegate more and more tasks to Lua rather than hard-code them in order to enable content creators to do more with Wesnoth’s engine.

Wesnoth leverages functionality from the C++ standard library and Boost for its foundations, and uses SDL 1.2.x and its companion libraries (SDL_image, SDL_mixer) for implementing game functionality. Pango and Cairo are used for text rendering in GUI2 and a few other places, and SDL_ttf is used in legacy GUI code. The code base is cross-platform by design and it’s constantly tested on Linux, Microsoft Windows, and Apple OS X.


EDIT 2016-08-31: Moved from Developers’ Discussion to Coders’ Corner as part of restoring the group restrictions on the former. ― shadowm
Some of the developers here are no longer active; time to update this post? (Since it's still pinned at the top of this forum and all) Also, the SDL part is outdated, too, as is the version of C++ used...
Pentarctagon wrote: May 20th, 2017, 9:09 pm There's also #development on Wesnoth's Discord, but there's a bridge-bot, so either should be fine. Never mind, apparently there isn't.
Now there is.
User avatar
Pentarctagon
Project Manager
Posts: 5496
Joined: March 22nd, 2009, 10:50 pm
Location: Earth (occasionally)

Re: Getting Started

Post by Pentarctagon »

Unstickied, with links to where that information is maintained now.
99 little bugs in the code, 99 little bugs
take one down, patch it around
-2,147,483,648 little bugs in the code
shevegen
Posts: 497
Joined: June 3rd, 2004, 4:35 pm

Re: Getting Started

Post by shevegen »

SDL2 was mentioned here a few years ago. Since Iris wrote something
on the blog in regards to SDL-related changes, I took the liberty to
just link it in here, for those who are interested in whatever is used by
wesnoth:

https://irydacea.me/blog/2021/11/10/wes ... tion/#full

See the part about SDL_ttf for instance.

(Personally I don't really know any of the differences, be it SDL1,
SDL2, godot or whatever. But for some it may be an interesting
read nonetheless - after all this is the Coder's Corner here!)
Post Reply