Categories
advertising Development Update Galactic War Promotion Server Update

FAF Developer Review 2017

Christmas is coming upon and as soon as Santa leaves our chimneys, the year is almost over. So our christmas present to you is a wrap up of all of our progress: Time to take a look at what our developers have achieved this year.

With the new year, Downlord started building a new Java API as a proof of concept for replacement of the current Python API. With the rapid development going and no competing implementation showing up, it became our new API of choice, while the old API is running until everything is ported over (which is finished to 95%).

So what features did it bring along? Well quite a few:

Auto-generated API documentation
Auto-generated API documentation
  • Clan management
  • A huge amount of data queryable by now, such as game results, ratings & leaderboards, maps, mods, ladder scores, coop results, achievements
  • Map & mod upload working again
  • Map, mod & replay reviews as new features
  • A Challonge proxy for our tournament information
  • Auto-deployment for our core featured mods (which especially speeds up the development process for beta & develop)
  • A central authorization platform for other backend servers under development
  • Auto-documenting the available data routes (visit api.faforever.com)

Arkitekt was the first one building his own application on top of the API by querying the game results for calculating results of the ladder week (see ladderstats.fafcasts.com).

As already noted in the API features, Dragonfire has reworked the clan app which is now purely JS-based and doesn’t interact with the database anymore, but purely relies on the API instead. This also brought an enhanced design and less legacy PHP code.

Softly giving eye-cancer to our moderators
Softly giving eye-cancer to our moderators

Along with the API development, a lot of issues popped up in the database. Most of them were data inconsistencies that were caused by missing database constraints. A lot of sanitization was done on the database, which took most of the time during our server updates. Unfortunately, not all users understand that long-term-maintaining a server requires a downtime now and then (actually it’s just 6 times a year).

Early this year, Softly created an avatar management app, which uses our old Python API. Since it was supposed to be a workaround, he made intentionally as ugly as possible. Kudos to him, I couldn’t have done better. Unfortunately, the workaround still lasts, until the last 5% of the API is implemented (a pull request already exists).

In preparation for the server move, we open-sourced plumbing for our server setup in the new faf-stack GitHub project. faf-stack encapsulates all of our running server apps using docker-compose and a consistent structure. But the best of all: by default everything is configured to be run on localhost. This makes starting development for FAF easier than ever before. Just install Docker, check out the git repo and fire up whatever you want. Along with the faf-stack, we tried to improve the test-data in the db repository.

The server move itself went pretty smooth compared to the previous one. There are still issues due to some Docker limitations with Linux file permissions, but it wouldn’t be FAF if nothing would be broken 😉

The move itself was initiated by the withdrawal of visionik as the administrative councilor. Sheeo followed Visionik on his position, while the software councilor position is now shared by Download and Duk3luk3. Since Visionik was the main funder of FAF and paid for the (in the author’s opinion ridiculously overpriced) servers and other services, FAF was now reduced to standard servers which cost less than 100€ per month instead of over 1000€.

Mockup of a reworked tutorials tab by surtsan

The Python client finally went Python 3 and Qt5 thanks to the long-time work of duk3luk3, mazornoob and many others. This leaves 10 years of legacy behind us and improves the developer experience on Windows. If you want to jump in, this wiki article explains how to setup a dev environment. However, this update also had a lot of drawbacks our devs are still chewing on. So the big feature breakthrough is still ahead of us (like the new tutorials tab).

Many many game patches were released (18 patches were released on GitHub, but not all of them made it into production). One of the most useful: mex capping on right click. One of the most hated: The new veterancy system. Not all of these changes were welcome and a huge discussion about the rating system started out. Equilibrium was made a featured mod. That led to quite a roar in the community, which eventually wore out. Since the beginning of December, BHEdit also gathered the status of a ranked mod, so there are now multiple ways to play with rated games. Unfortunately, rating changes of mods require a server restart, which leads to an undesired delay as of now. On a side note, there’s also work happening to make RKS Explosions a ranked mod again, but this won’t make it into 2017.

To reduce the number of downloads with each patch Brutus5000 developed BiReUS as a replacement for the legacy patching mechanism. While the server component seems to be ready, we just implemented it client side in Downlord’s FAF Client. It will still take a lot of developing & testing time before we will consider it stable. More information on that can be found in the devblog.

As there is no active maintainer of the current Python lobby server, Downlord reengineered it Java and went above feature parity. Load tests show that is able to handle way more players than the current server does, with the current roadblock for adoption being ICE support, which the server is built upon. After that, we will be upon to implement new features that are asked for a long time (ladder division already implemented, 2v2 matchmaker could be a choice).

ICE is one of the disappointing topics in 2017. While initial tests looked promising, there is still no stable release and the code was rewritten multiple times. This keeps the connection issues still a hot topic, yet we can’t speed it up since we don’t have any networking experts on the dev team.

The map vault view in the mdoerator client
The map vault view in the moderator client

Though our personal low mark this year was reached when certain members of our community decided to not only ignore rules and circumvent bans by mass registration but also to actively cheat and break other player’s games on purpose. This in return has lead to some protective measures like the 24h waiting time for new accounts.

Just in time, we were able to finally release the long-promised moderator tools, which enabled fast bans and listing of latest registration, so we could deal with the mass registered smurf accounts. With the latest release from this December, the moderator tools finally allow cleaning the map vault.

 

So what are our plans for 2018?

  • Get ICE finalized and deployed on both clients
  • Downlord is going BETA with his Java client
  • The old Python API along with Jeremy will be retired in favor of Java API and the moderator client
  • Bireus as the new patcher

 

The FAForever team wishes everybody happy holidays and a happy new year. We try not to screw up the servers over the holidays, so you can chill out and play some nice games.

 

 

 

 

 

 

 

But wait. We forgot one of the presents, didn’t we?

 

 

 

 

Oh right. Well, g0l0l and Brutus5000 have not forgotten you, so we just want to tease a little bit more for 2018…

 

 

Categories
advertising Development Update Galactic War roadmap

Call for Java Developers

Times change and so does FAF. This is a call to all Java developers, who are hiding in the shadows and want to contribute but were not interested in contributing to the current stack of Python code.

We have a huge pile of new emerging Java projects, that look out for new developers and maintainers. So let me give you a small briefing about the projects:

  • Galactic War backend server will be an integral component of our new GW reboot. Work has “just started” and there is still much to do.
    • Core technologies: Spring Boot, Camunda BPM, Websockets / STOMP, Elide, JPA
    • Interested? Join slack channel #galactic-war
  • Java server is a reimplementation of the current Python lobby server. We hope to improve the development speed, deliver new metrics for our users and finally overwork the network protocol (while staying compatible to the old client protocol).
    • Core technologies: Spring Boot, Spring Integration, JPA
    • Interested? Join slack channel #java-server
  • Java API is supposed to replace the current Python API eventually. The primary focus is to speed up API development for new functionalities, as no current developers wants to work on the Python API any further.
    • Core technologies: Spring Boot, Elide, JPA
    • Side note: There are also approaches to develop a Typescript-based API. We decided that both can coexist together.
    • Interested? Join slack channel #java-api
  • Downlord’s client is an alternative client to the classic python client. This is fancy frontend stuff using JavaFX. It’s already in a working state, but still has a lot of features waiting to be implemented.
    • Interested? Join slack channel #java-client-dev

If you want to join us in Slack, 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.

You can also join us on Discord.

We are waiting for you!
– Brutus5000, Dragonfire

 

Categories
Galactic War Lobby Update

Lobby Update 0.10.105

Join channel.

You are now able to join any registered channel from the lobby.

This include Galactic War channels (if you fight for that faction), as well as language channels.

Test Proxy Server

The proxy server was introduced months ago in order to fix the most resilient connections problems.
It seems that some firewall or antivirus are still creating problems, even with the proxy server.

proxyserverThere is now a new option in your lobby that will test if you have a clean connection to the proxy server.

You can seek help in the tech forum if the test result in some errors or if the test are running correctly but you are still not able to connect.

IF YOU HAVE CONNECTIONS PROBLEMS (in GW or custom), THIS IS PROBABLY A GOOD IDEA TO USE THAT OPTION!

EDIT : There may have a little bug in the test report function. If you don’t see any popup at the end of the test, you can assume that it has failed.

This update also fix some bugs in Galactic War.

 

Categories
Galactic War

Galactic War update – 0.10.104

Most visible change : It comes with a new Galactic map !

The new galactic map
The new galactic map

To accommodate with this new size, several new functions are available on your info panel :

  • Goto planet. Type a planet name to be teleported to it!
  • The biggest the planet, the biggest the map you will play.
  • The overlay display the maximum size for your squad.
  • Click on your attack to automatically center the view on it.
  • All enemy attacks are seen on a new “Planets Under attack” panel. Click on one to center the view on it.

New functions are available in game too !

Auto-recall

Available for everyone. Can be offered.

This item is passive. It allows your Headquarter to track your ACU more precisely. If you have one, you will be recalled immediately and automatically if your ACU is nearly dead, in no time. Sadly, the activation overcharge your recall system, and the item is lost.

Also, your enemy will probably get extra credits for bravery if they make you using it…

Structure reinforcements

Available from rank 2, more options for higher ranks (up to 5). Can be offered.

As you have noticed, some rookies support commanders are helping you in battle. They are able to build units from useless parts of the planets using the credits you’ve gave them.

They are now able to send you Tech 3 engineers to build some structures near the landing zone you’ve defined with the beacon.

You can mix units & structures in the same reinforcement group.

Bug fixes & Changes

  • Reinforcements beacons take 3x more time to build.
  • Reinforcement transports are no longer attacking enemy units, making them unable to drop.
  • Reclaiming or building over planetary defenses is no longer working.
  • Reinforcements arrival and landing zone offsets in order to space out the transports.

Remember to report any bug in the forum!

 

Categories
FA Update Galactic War

Lobby Update – 0.10.98

This update is mostly for Galactic War players.

It solves some UI problems related to GW, as well as better internal functions (for the tournament server), sanity checks (for the proxy server) and code cleaning and libraries updates.

It also remove FreeImage dependencies.
Talking about Galactic War, remember that your help is needed to test the maps!

If you think there is a problem with some maps, please don’t report it in the forum, but instead, be part of the map tester team :
Register to the forum, go on your user panel, and join the “Galactic War Map Testers“ group.

When enough testers have joined, you will have further explanations!