Introduction to development

From FA Forever Wiki
Jump to: navigation, search

This document only covers development of the FAF infrastructure.

  • For information about mapping, please look here.
  • For information about modding, please look here.

Source code & version control

Forged Alliance Forever is an open source project. You can find all sourcecode on Github. As the name indicates, Github uses git as version control system. If you want to participate in development, you have to use git and create a Github account (it's free). You can find a small introduction in our Dev School. There are also lots of tutorials on YouTube and other sites.

We strongly recommend to use git on the command line at the beginning. Please do not use the git tools inside your IDE before you have understood the basics of git.

Communication

All developer communication takes place on Slack.

If you want to join us, please contact an administrator/moderator on the forums or in our in-client chat (white names at the top) so that we can invite you to our Slack project.

Since mid-2016 we introduced a conference call every 2 weeks, where developers and moderators talk about the progress. These calls are streamed in our YouTube channel.

Infrastructure overview

If you have looked up our Githube page, you may have noticed lots of sub-projects.

FAF consists of 5 important projects, which reflect the basic architecture:

  • game: Forged Alliance gameplay files (lua)
    • This is the official featured FAF mod
    • This is the right place to work on balancing changes, game-lobby changes, unit behavior fixes/enhancements
    • The game communicates with the client using GPGNet-protocol
  • client: FAF lobby client (python)
    • This is the FAF client featured on the website and the main user interface.
    • Instructions how to set up the client dev environment can be found here
    • There is an experimental Java-client at Downlords client
  • server: FAF lobby server (python)
    • The server is responsible for game hosting, rating calculation and ladder-matchmaking
  • Web api: FAF restful Web-api server (python)
    • The api servers offers servers to authenticated users (via OAuth2)
    • Services are i.e. achievements, map upload, bug reports.
    • As it's open for everybody, the service itself is not restricted to any client.
  • db: FAF sql database (sql)
    • The database is the backend for server and api.


All these projects have a readme which contains information how to use it. For further questions please ask for help in Slack.


Developer tools

The following tools are strongly recommended for development (regardless of your operating system):

  • git
    • Please follow our branching scheme.
    • Linux client should be available in your package manager
    • Windows client
  • docker
  • a good IDE:


Where to begin?

There are lots of starting points for new developers:

  • Pick an issue from any of the git projects and start working on it.
    • We recommend to check that the issue isn't solved already. If someone worked on it, you can usually see referenced commits in the issue history.
    • If the situation is unclear, ask in Slack.
  • Pick a suggestion from the suggestion forum or
  • Bring up any topic in slack and offer to work on that.
    • The devs will give useful hints about your approach and tell you about possible conflicts.

Dev Notes

Installing Luajit and Lupa for building lupa package